[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 33

 
xruss >>:
а на мой доп вопрос не знаете ответа?

на счет условия ниже можно, а на счет функции оьновления данных - я ей не пользуюсь, так что подсказать не могу.

P.S. я такой же новичек..

 
xruss писал(а) >>
а кто-нибудь знает - приемлем ли такой порядок перечисления условий через несколько (&&) в одной строке оператора if()?

Приемлимо, хотя я поставил бы еще скобки - операции имеют разный приоритет у разных языков - что бы не думал о мелочах - что то типа:

if ((Max_price_1>EMA20_Open) && (Min_price_1>EMA20_Open) && (Heiniken_Red>Heiniken_Blue))
   {
    Opn_B=true;
   }
 
zfs >>:

Ищешь среди ближайших x соседей значений индикатора максимумы и сравниваешь их

как выглядит функция поиска 2х последних максимумов на RSI ?

кто нибудь может показать в виде кода?

 
xruss писал(а) >>

...(а обновлять с помощью RefreshRates() обязательно?)...

Для чего нужен RefreshRates? Дело в том, что после прихода нового тика встроенные перемнные (типа Ask, Bid и т.д.) читаются и подаются функцию start(). Если у вас start едет слишком долго, то можеть прийти новый тик, но переменные не обновятся. Тогда и нужно вызывать RefreshRates.

Когда start едет слишком долго? Обычно тогда, когда выполняется торговая операция - имеется сетевой обмен, трябуется разрешения сервера на операции, ожидается ответ. Так что обычно RefreshRates пользуют когда на одном тике открывается/закрывается более чем 1 ордер. Ставят между операциями.

 
amur писал(а) >>

как выглядит функция поиска 2х последних максимумов на RSI ?

кто нибудь может показать в виде кода?

Как бы не странно, задачка не проста. Формально нужно идти назад и искат такие точки, что бы:

y(x-1)<y(x) и y(x)>y(x+1)

Но это найдет локальные экстермумы, а это немного не то - результат вас не обрадует.

 
Itso >>:

Как бы не странно, задачка не проста. Формально нужно идти назад и искат такие точки, что бы:

y(x-1)<y(x) и y(x)>y(x+1)

Но это найдет локальные экстермумы, а это немного не то - результат вас не обрадует.

я примерно так же думаю, но смущает некоторые мысли: как будет 1й максимум отличить от 2го,

потому что под данное условие подходит как и под первый максимум, так  ипод  2й и 3й....

 
amur писал(а) >>

я примерно так же думаю, но смущает некоторые мысли: как будет 1й максимум отличить от 2го,

потому что под данное условие подходит как и под первый максимум, так ипод 2й и 3й....

Могу порекомендовать поискать и почитать про ZigZag (литература - море). Я бы порекомендовал Рошевский зигзаг - 'Zigzag R'

 
Itso >>:

Могу порекомендовать поискать и почитать про ZigZag (литература - море). Я бы порекомендовал Рошевский зигзаг - 'Zigzag R'

Спасибо.Посмотрю.

Посмотрел....(((  ничего толком не понял... массив заполнился, потом функция шифт непонятно что именно делает. 

 
amur писал(а) >>

Спасибо.Посмотрю.

Посмотрел....((( ничего толком не понял... массив заполнился, потом функция шифт непонятно что именно делает.

В том то и дело - материя достаточно сложна - но этот зигзаг работает без ошибки. Казется можете его использовать для RSI

 
amur >>:

как выглядит функция поиска 2х последних максимумов на RSI ?

кто нибудь может показать в виде кода?

Примерно так:

bool exit_for=false;
int max_1=0;int max_2=0;
for(int k=0;k<Bars;k++)
{
	if(	iRSI(Symbol(),0,rsi_period,PRICE_CLOSE,k)<iRSI(Symbol(),0,rsi_period,PRICE_CLOSE,k+1)
		&& iRSI(Symbol(),0,rsi_period,PRICE_CLOSE,k+1)>iRSI(Symbol(),0,rsi_period,PRICE_CLOSE,k+2) 	)
	{
		//Если это первый максимум:
		if(max_1==0)
			max_1=k+1;//Записываем номер бара экстремума
		else
		//Если первый найден, записываем второй
		{	
                        max_2=k+1;
                        exit_for=true;
                } 
	}
        //Выход из цикла, когда найдены оба максимума
        if(exit_for==true)k=Bars+1;  
}
Причина обращения: