1. стоп-ордера устанавливаются только ЗА пределами спреда
2. стоп-ордер на покупку всегда на цене ASK, на продажу - BID
3. дополнительно, на форексных кухнях, чтобы не пипсовали, придумали такое понятие как Stop Level, минимальный размер стоп-лосс ордера, он ДОЛЖЕН быть больше спреда, поэтому если отрытие на покупку по ASK, то стоп-лосс ставится ниже BID, и наоборот
код без проверки, за точным названием констант - в Google и документацию
string symbol = Symbol(); double ask = SymbolInfoDouble(symbol, SYMBOL_ASK); double bid = SymbolInfoDouble(symbol, SYMBOL_BID); double step = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE); double stopLevel = SymbolInfoDouble(symbol, SYMBOL_TRADE_STOPS_LEVEL); // Buy double buyPrice = ask; // покупаем по цене ВЫШЕ спреда double buyStop = bid - step; // стоп-лосс на нижней границе спреда минус 1 пункт double buyProfit= ask + step; // тейк-профит на 1 пункт выше верхней границы спреда buyStop = MathMin(buyStop, bid - stopLevel); // проверяем, что стоп-лосс точно НИЖЕ разрешенного дилером OrderSend( ... ORDER_TYPE_BUY ... ) // Sell double sellPrice = bid; // продаем по цене НИЖЕ спреда double sellStop = ask + step; // стоп-лосс на верхней грнице + 1 пункт double sellProfit= bid - step; // тейк-профит на 1 пункт ниже спреда sellStop = MathMax(sellStop, ask + stopLevel); // проверяем, что стоп-лосс точно ВЫШЕ разрешенного дилером OrderSend( ... ORDER_TYPE_SELL ... )
Andy Sanders:
SYMBOL_TRADE_STOPS_LEVEL | Минимальный отступ в пунктах от текущей цены закрытия для установки Stop ордеров | int |
int
SYMBOL_TRADE_STOPS_LEVEL | Минимальный отступ в пунктах от текущей цены закрытия для установки Stop ордеров | int |
int
Указывает количество Point . Нужно записать так :
double stopLevel = _Point*SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL);
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Хочу создать ордер Sell Stop, для этого использую CTrade, по логике (моей, она может быть не верной) чтобы выставить данный ордер, создаем условие где bid должен быть больше price. Отсюда Take Profit = price - тейкпрофит в пунктах и Stop Loss = price + стоплос в пунктах (значения в пунктах вводятся потому считаю от цены открытия price).
По итогу получаю invalid price или invalid stops. Если не трудно приведите пример конкретно для SellStop().
Спасибо за уделенное внимание, понимаю что вопрос возможно слишком простой и очевидный, но за сутки так и не понял в чем ошибка.