Эксперт всегда покупает или продает.... - страница 2

 
Nextor писал(а) >>
Неужто прям никто не знает в чем проблема??

Проблема в индикаторе. Вам нужен именно этот ASCTrend?

 
Figar0 >>:

Проблема в индикаторе. Вам нужен именно этот ASCTrend?

ДА!

 

Все просто, у вас индикатор типа ZigZag и значение переменным на покупку ордеров у вас присваивается не в цикле а обоим сразу тоесть у вас true будет как для buy так и для sell поскольку покупка осуществляется по проверке условия if (Total==0 && Opn_B==true) где total количество ордеров и первым у вас buy стоит соответственно sell не выполняется никогда пропробуйте поменяйте вот это:

if (Total==0 && Opn_B==true) // Открытых орд. нет +
{ // критерий откр. Buy
RefreshRates(); // Обновление данных
SL=Bid - New_Stop(StopLoss)*Point; // Вычисление SL откр.
TP=Bid + New_Stop(TakeProfit)*Point; // Вычисление TP откр.
Alert("Попытка открыть Buy. Ожидание ответа..");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//Открытие Buy
if (Ticket > 0) // Получилось :)
{
Alert ("Открыт ордер Buy ",Ticket);
return; // Выход из start()
}
if (Fun_Error(GetLastError())==1) // Обработка ошибок
continue; // Повторная попытка
return; // Выход из start()
}
if (Total==0 && Opn_S==true) // Открытых орд. нет +
{ // критерий откр. Sell
RefreshRates(); // Обновление данных
SL=Ask + New_Stop(StopLoss)*Point; // Вычисление SL откр.
TP=Ask - New_Stop(TakeProfit)*Point; // Вычисление TP откр.
Alert("Попытка открыть Sell. Ожидание ответа..");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP);//Открытие Sel
if (Ticket > 0) // Получилось :)
{
Alert ("Открыт ордер Sell ",Ticket);
return; // Выход из start()
}
if (Fun_Error(GetLastError())==1) // Обработка ошибок
continue; // Повторная попытка
return; // Выход из start()
}


на вот это


if (Total==0 && Opn_S==true) // Открытых орд. нет +
{ // критерий откр. Buy
RefreshRates(); // Обновление данных
SL=Bid - New_Stop(StopLoss)*Point; // Вычисление SL откр.
TP=Bid + New_Stop(TakeProfit)*Point; // Вычисление TP откр.
Alert("Попытка открыть Buy. Ожидание ответа..");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//Открытие Buy
if (Ticket > 0) // Получилось :)
{
Alert ("Открыт ордер Buy ",Ticket);
return; // Выход из start()
}
if (Fun_Error(GetLastError())==1) // Обработка ошибок
continue; // Повторная попытка
return; // Выход из start()
}
if (Total==0 && Opn_B==true) // Открытых орд. нет +
{ // критерий откр. Sell
RefreshRates(); // Обновление данных
SL=Ask + New_Stop(StopLoss)*Point; // Вычисление SL откр.
TP=Ask - New_Stop(TakeProfit)*Point; // Вычисление TP откр.
Alert("Попытка открыть Sell. Ожидание ответа..");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP);//Открытие Sel
if (Ticket > 0) // Получилось :)
{
Alert ("Открыт ордер Sell ",Ticket);
return; // Выход из start()
}
if (Fun_Error(GetLastError())==1) // Обработка ошибок
continue; // Повторная попытка
return; // Выход из start()
}


и у вас будут одни продажи:)

 
проблему понял. только одно не ясно,как сделать чтоб значения переменных присваивались в цикле?? мне сама идея не вполне ясна.
 

то есть надо организовать цикл например на 2 последних бара, и чтоб на этих барах сравнивались условия на покупку и продажу??


Я чисто теоритически не могу понять. Ведь значения параметров up и down не могут быть одинаковыми на одном и том же баре,то есть получается всегда будет либо Opn_B = true, либо Opn_S = true. В соответстии с этим и приказы на покупку или продажу будут выполнятся по критериям. Ведь не может же не с того ни с сего одновременно Opn_B и Opn_S принять значения true. И если такая аномалия возможна,то объясните,как??

 
void Zigzag()
{
int i,j;
double zz;
for(i=0;zz==0;i++)
{
zz=iCustom(NULL,0,"ZigZag",12,5,3,0,i);
if(zz!=0)
{
zzbar=i;
zzp=zz;
}
}
return;

}


а затем проверять больше или меньше текущая цена zzp если больше покупаем меньше продаем

 
а не стоп я недоконца разобрался в коде прошу прощения счас подумаю еще есл ичтото придумаю отпишу
 

у меня парамерт up или down (в вашем случае zz=iCustom(NULL,0,"ZigZag",12,5,3,0,i)) равны 0 (при сравнении up и down с EMPTY_VALUE) или 2147483647. Так что я не могу значение парамаетра сравнивать с ценой.


и вообще,я написал в самом индикаторе

Alert("значения параматра UP",buf0[1]);

Alert("значения параматра Down",buf1[1]);


и он выдает мне

2147483647

вообще не могу въехать,как он работает.......

 
Atis >>:
а не стоп я недоконца разобрался в коде прошу прощения счас подумаю еще есл ичтото придумаю отпишу
буду надеяться и верить......
 
Atis писал(а) >>
а не стоп я недоконца разобрался в коде прошу прощения счас подумаю еще есл ичтото придумаю отпишу

Голову сломаете) Я тоже сначала на советник подумал, есть там пару моментов, но по идеи они не должны быть критичны. Там какая-то ерунда с индикатором, посмотрите что с содержимым его буферов творится, какой-то это индикатор мудренный, не зря в его комментариях Komposter упомянут, минут 10 смотрел на его код, потом плюнул..)

Причина обращения: