Обычно так "[Invalid S/L or T/P] " бывает, если стопы заданы меньшего размера, чем это допускаюп правила ДЦ.
Вопрос снят, вроде. Спасибо, Rosh. Помог его скрипт:
//+------------------------------------------------------------------+
//| 130Research.mq4 |
//| Copyright © 2005, MetaQuotes Software Corp. |
//| http://www.metatrader4.com/ru/forum/7293/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link "http://www.metatrader4.com/ru/forum/7293/"
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
bool TestFinished=false;
int tries=5;
int i,ticket;
int StopL=MarketInfo(Symbol(),MODE_STOPLEVEL);
int Spread=MarketInfo(Symbol(),MODE_SPREAD);
double StopLoss;
string Comm;
//----
if (tries<=Spread) tries=Spread+1;
Print("Начинаем проверку на ",Symbol());
Print("Спред=",Spread," StopLevel=",StopL);
while(!IsStopped()&&!TestFinished)
{
RefreshRates();
Comm=DoubleToStr(i,0)+" пункт";
StopLoss=NormalizeDouble(Ask-(StopL+i)*Point,Digits);
Print("Попытка покупки со стопом StopLevel+",i,"пунктов");
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,StopLoss,0,Comm,0,0,Blue);
if (ticket<0)
{
Print("Неудача с ошибкой номер ",GetLastError());
}
else
{
Print("Ордер в покупку вроде открыт со стопом StopLevel+",i,"пунктов, ошибка=",GetLastError());
TestFinished=true;
}
i++;
if (i>=tries) TestFinished=true;
Sleep(5000);
}
Print("Проверка покупок завершена");
i=0;
TestFinished=false;
while(!IsStopped()&&!TestFinished)
{
RefreshRates();
Comm=DoubleToStr(i,0)+" пункт";
StopLoss=NormalizeDouble(Bid+(StopL+i)*Point,Digits);
Print("Попытка продажи со стопом StopLevel+",i,"пунктов");
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,StopLoss,0,Comm,0,0,Red);
if (ticket<0)
{
Print("Неудача с ошибкой номер ",GetLastError());
}
else
{
Print("Ордер в продажу вроде открыт со стопом StopLevel+",i,"пунктов, ошибка=",GetLastError());
TestFinished=true;
}
i++;
if (i>=tries) TestFinished=true;
Sleep(5000);
}
Print("Проверка продаж завершена");
//----
return(0);
}
//+------------------------------------------------------------------+
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Тестирую своего советника на демо. Всё было бы хорошо, но из за постоянных ошибок типа:
при трейлигне
2008.02.06 21:41:15 '781884': modification of order #20008316 sell 0.10 #ISRG at 306.93 sl: 307.12 tp: 301.97 -> sl: 306.58 tp: 0.00 failed [Invalid S/L or T/P]
2008.02.06 21:41:14 '781884': modify order #20008316 sell 0.10 #ISRG at 306.93 sl: 307.12 tp: 301.97 -> sl: 306.58 tp: 0.00
2008.02.06 21:41:12 '781884': modification of order #20008316 sell 0.10 #ISRG at 306.93 sl: 307.12 tp: 301.97 -> sl: 306.58 tp: 0.00 failed [Invalid S/L or T/P]
2008.02.06 21:41:12 '781884': modify order #20008316 sell 0.10 #ISRG at 306.93 sl: 307.12 tp: 301.97 -> sl: 306.58 tp: 0.00
и при открытии позиций
2008.02.06 21:48:44 '782581': order sell 0.25 #ISRG opening at 309.50 sl: 309.65 tp: 304.50 failed [Invalid S/L or T/P]
2008.02.06 21:48:44 '782581': instant order sell 0.25 #ISRG at 309.50 sl: 309.65 tp: 304.50
2008.02.06 21:43:25 '782581': order buy 0.25 #ISRG opening at 307.77 sl: 307.62 tp: 312.77 failed [Invalid S/L or T/P]
2008.02.06 21:43:23 '782581': instant order buy 0.25 #ISRG at 307.77 sl: 307.62 tp: 312.77
весь результат тестирования сводится на нет. Почему возникают такие ошибки? Как от них избавиться или хотя бы значительно сократить?
Трейлинг стоп взят у KimIV'a.
Вот функция открытия позиции:
S/L = 10 (минимальный на инструменте).