Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Неужто прям никто не знает в чем проблема??
Проблема в индикаторе. Вам нужен именно этот ASCTrend?
Проблема в индикаторе. Вам нужен именно этот 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. И если такая аномалия возможна,то объясните,как??
{
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
вообще не могу въехать,как он работает.......
а не стоп я недоконца разобрался в коде прошу прощения счас подумаю еще есл ичтото придумаю отпишу
а не стоп я недоконца разобрался в коде прошу прощения счас подумаю еще есл ичтото придумаю отпишу
Голову сломаете) Я тоже сначала на советник подумал, есть там пару моментов, но по идеи они не должны быть критичны. Там какая-то ерунда с индикатором, посмотрите что с содержимым его буферов творится, какой-то это индикатор мудренный, не зря в его комментариях Komposter упомянут, минут 10 смотрел на его код, потом плюнул..)