на паре предполагается работа нескольких советников ( или так сказать с разными критериями входа и выхода) и они могут выставлять отложенные и рыночные ордера.,на которые ругается данный советник.
atlantic:
на паре предполагается работа нескольких советников ( или так сказать с разными критериями входа и выхода) и они могут выставлять отложенные и рыночные ордера.,на которые ругается данный советник.
вставил строку extern int Magic = 111; // Мэджик ордера
вставил в блок учета ордеров выделено красным
//--------------------------------------------------------------- 4 -- // Учёт ордеров
Symb=Symbol(); // Название фин.инстр.
Total=0; // Количество ордеров for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров: if (OrderSymbol()!=Symb || Magic!=OrderMagicNumber())continue; // Не наш фин. инструм , не наш ордер if (OrderType()>1) // Попался отложенный
{
Alert("Обнаружен отложенный ордер.",Symb," Эксперт не работает.");
return; // Выход из start()
}
Total++; // Счётчик рыночн. орд if (Total>1) // Не более одного орд
{
Alert("Несколько рыночных ордеров. Эксперт не работает.");
return; // Выход из start()
}
Ticket=OrderTicket(); // Номер выбранн. орд.
Tip =OrderType(); // Тип выбранного орд.
Price =OrderOpenPrice(); // Цена выбранн. орд.
SL =OrderStopLoss(); // SL выбранного орд.
TP =OrderTakeProfit(); // TP выбранного орд.
Lot =OrderLots(); // Количество лотов
}
}
//--------------------------------------------------------------- 5 --
в блоке закрытия ордеров выделено красным
//--------------------------------------------------------------- 6 --// Закрытие ордеров while(true) // Цикл закрытия орд.
{
if (Tip==0 && Cls_B==true) // Открыт ордер Buy..
{ //и есть критерий закр Alert("Попытка закрыть Buy ",Symb," ",Ticket,". Ожидание ответа..");
RefreshRates(); // Обновление данных
Ans=OrderClose(Magic,Lot,Bid,2); // Закрытие Buy if (Ans==true) // Получилось :)
{
Alert ("Закрыт ордер Buy ",Symb," ",Ticket);
break; // Выход из цикла закр
}
if (Fun_Error(GetLastError())==1) // Обработка ошибок continue; // Повторная попытка return; // Выход из start()
}
if (Tip==1 && Cls_S==true) // Открыт ордер Sell..
{ // и есть критерий закр Alert("Попытка закрыть Sell ",Symb," ",Ticket,". Ожидание ответа..");
RefreshRates(); // Обновление данных
Ans=OrderClose(Magic,Lot,Ask,2); // Закрытие Sell if (Ans==true) // Получилось :)
{
Alert ("Закрыт ордер Sell ",Symb," ", Ticket);
break; // Выход из цикла закр
}
if (Fun_Error(GetLastError())==1) // Обработка ошибок continue; // Повторная попытка return; // Выход из start()
}
break; // Выход из while
}
//--------------------------------------------------------------- 7 --
и в блоке открытия ордеров выделено красным
//--------------------------------------------------------------- 8 --// Открытие ордеров while(true) // Цикл закрытия орд.
{
if (Total==0 && Opn_B==true) // Открытых орд. нет +
{ // критерий откр. Buy
RefreshRates(); // Обновление данных
SL=Bid - New_Stop(StopLoss)*Point; // Вычисление SL откр.
TP=Bid + New_Stop(TakeProfit)*Point; // Вычисление TP откр. Alert("Попытка открыть Buy. ", Symb ," Ожидание ответа..");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP,"EMA",Magic,0,Blue);//Открытие Buy if (Ticket > 0) // Получилось :)
{
Alert ("Открыт ордер Buy ", Symb," по цене ",Ask," ", 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. ", Symb ," Ожидание ответа..");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP,"EMA",Magic,0,Red);//Открытие Sell if (Ticket > 0) // Получилось :)
{
Alert ("Открыт ордер Sell ", Symb ," по цене ",Bid," ",Ticket);
return; // Выход из start()
}
if (Fun_Error(GetLastError())==1) // Обработка ошибок continue; // Повторная попытка return; // Выход из start()
}
break; // Выход из while
}
//--------------------------------------------------------------- 9 -- return; // Выход из start()
}
//-------------------------------------------------------------- 10 --
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
ну понятно,ищем тренд,ждем "конца" сороса,и лузера с милионом.
а всетаки как убрать проверку то? или 20$ только решает проблему ?
Так зачем же Вы хотите убрать учет открытых ордеров?
Не исключаю, что именно этот вопрос многих ставит в тупик.
на паре предполагается работа нескольких советников ( или так сказать с разными критериями входа и выхода) и они могут выставлять отложенные и рыночные ордера.,на которые ругается данный советник.
В приведенном советнике Ковалева нет магика.
Введите магик и избавитесь от проблемы.
подскажешь как их воткнуть в данный советник?
В двух словах не смогу.
Откройте любой готовый советник из базы и посмотрите, где устанавливается магик.
Найдите в готовом советнике OrderMagicNumber(), рядом увидете магик. Все пишут его по-разному (MagicNumber или Magic, или mn, или как-то еще).
Когда идентифицируете магик, поиском пробегите по всем магикам советника. Это поможет понять, где и как ставить магик.
Разобраться несложно.
И как бы его модифицировать, чтобы он приносил прибыль ?
хелп!!!
На тесте с начала этого года 22 сделки было (последних), на более же длинной истории следующее:
Посмотрите,скажите что не так сделал.
вставил строку extern int Magic = 111; // Мэджик ордера
вставил в блок учета ордеров выделено красным
в блоке закрытия ордеров выделено красным
и в блоке открытия ордеров выделено красным
правильно или нет?