Конечно, не проходит ))) Устанавливать нужно минимальными не SL, TP и TS, а значение Stop Level. Да и не один раз при запуске программы, а на каждом тике:
digits = (int) SymbolInfoInteger(symbol, SYMBOL_DIGITS); point = SymbolInfoDouble(symbol, SYMBOL_POINT); tickSize = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE); ask = SymbolInfoDouble(symbol, SYMBOL_ASK); bid = SymbolInfoDouble(symbol, SYMBOL_BID); spread = ask - bid; stopLevel = MarketInfo(symbol, MODE_STOPLEVEL) * point; if (stopLevel == 0) { if (!isECN) stopLevel = NormalizeDouble(2 * spread, digits); } else stopLevel = NormalizeDouble(stopLevel + tickSize, digits);isECN - должен быть доступным для настройки пользователю. Есть счета типа "true ECN", на которых действительно нет никаких ограничений на минимальные расстояния, т. е. стопы/профиты/отложки можно ставить внутри спреда.
Спасибо. но у Вас та же конструкция что и у меня, только Вы умножили при мин стопе = 0 просто на спред*2, но как известно на многих брокерах мин стоп = 3 спреда, почему Вы сделали 2?
проверку на мин стоп проверяю на каждом тике.
StopLevel не поможет, так как тоже возвращается ноль, использую разницу Ask-Bid
и для мин стопа тоже
Всем привет, друзья!
есть такая особенность маркета: нужно проверять все значения на мин стоп.
Если значение переменной меньше чем мин стоп то присваивать мин стоп, чтоб не было ошибки 130.
Сейчас же в 90 % брокеров спред и минстоп плавающий и выдают 0 .
есть такая конструкция кода, присваивающая всем переменным значения мин стопа.
но она в маркете более не проходит, потому что теперь везде мин стоп = 0 ,
кто как справляется с этой бедой?
Как вариант самому ввести ограничение на минимальный размер стопа. Например в OnInit() проверять если пользователь указал стоп меньше 2-х пунктов выдать предупреждение и вернуть код возврата INIT_PARAMETERS_INCORRECT.
Еще вариант вообще не давать пользователю возможность управлять размером стопа, а вычислять его динамически в эксперте исходя из торговых условий.
Как вариант самому ввести ограничение на минимальный размер стопа. Например в OnInit() проверять если пользователь указал стоп меньше 2-х пунктов выдать предупреждение и вернуть код возврата INIT_PARAMETERS_INCORRECT.
Еще вариант вообще не давать пользователю возможность управлять размером стопа, а вычислять его динамически в эксперте исходя из торговых условий.
согласен - не давать управление, но Вы же знаете как этого требуют по типу: хочу задать свой стоп. сделайте настройку.
а насчет вывод сообщения - спасибо подумаю.
так как брокер заявляет мин стоп равным нулю, то ничего больше не остается, можно подобрать множитель, если спреда не достаточно
нда, это только для маркета - а вот универсальности тут нет для люого брокера
получается чтобы в маркете приняли - нужно сделать мин стоп на 3 спреда,
но по сути это неправильно - так как если у брокера минстоп = 1 спреду - то пользователь не сможет поставить меньше 3 спредов.
Засада.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет, друзья!
есть такая особенность маркета: нужно проверять все значения на мин стоп.
Если значение переменной меньше чем мин стоп то присваивать мин стоп, чтоб не было ошибки 130.
Сейчас же в 90 % брокеров спред и минстоп плавающий и выдают 0 .
есть такая конструкция кода, присваивающая всем переменным значения мин стопа.
но она в маркете более не проходит, потому что теперь везде мин стоп = 0 ,
кто как справляется с этой бедой?