Price_open = NormalizeDouble(Ask, Digits); cmd = OP_BUY; // расчитываем цены ограничителей if (StopLoss > 0) StopLoss = Ask - StopLoss * Point; if (TakeProfit > 0) TakeProfit = Bid + TakeProfit * Point; ... ticket = OrderSend(Symbol(), cmd, Lots, Price_open, SlipPage, StopLoss, TakeProfit, 0, magik);
Попробуйте так.
Price_open = NormalizeDouble(Ask, Digits); cmd = OP_BUY; // расчитываем цены ограничителей if (StopLoss > 0) StopLoss = Ask - StopLoss * Point; if (TakeProfit > 0) TakeProfit = Bid + TakeProfit * Point; ... ticket = OrderSend(Symbol(), cmd, Lots, Price_open, SlipPage, StopLoss, TakeProfit, 0, magik);
Попробуйте так.
Опять неправильно - если покупаем нужно покупать по Ask (что и
сделано), но всегда закрываем по Bid. Таким образом код должен
быть:
Price_open = NormalizeDouble(Ask, Digits); cmd = OP_BUY; // расчитываем цены ограничителей if (StopLoss > 0) StopLoss = Bid - StopLoss * Point; if (TakeProfit > 0) TakeProfit = Bid + TakeProfit * Point; ... ticket = OrderSend(Symbol(), cmd, Lots, Price_open, SlipPage, StopLoss, TakeProfit, 0, magik);
А поясните мне смысл параметра SlipPage. я немного не уловил каким его лучше ставить и что от него зависит
А поясните мне смысл параметра SlipPage. я немного не уловил каким его лучше ставить и что от него зависит
Это проскальзывание в пунктах, при исполнении ордера.
slippage | - | Максимально допустимое отклонение цены для рыночных ордеров (ордеров на покупку или продажу). |
Price_open = NormalizeDouble(Ask, Digits); cmd = OP_BUY; // расчитываем цены ограничителей if (StopLoss > 0) StopLoss = Ask - StopLoss * Point; if (TakeProfit > 0) TakeProfit = Bid + TakeProfit * Point; ... ticket = OrderSend(Symbol(), cmd, Lots, Price_open, SlipPage, StopLoss, TakeProfit, 0, magik);
Попробуйте так.
Опять неправильно - если покупаем нужно покупать по Ask (что и сделано), но всегда закрываем по Bid. Таким образом код должен быть:
Price_open = NormalizeDouble(Ask, Digits); cmd = OP_BUY; // расчитываем цены ограничителей if (StopLoss > 0) StopLoss = Bid - StopLoss * Point; if (TakeProfit > 0) TakeProfit = Bid + TakeProfit * Point; ... ticket = OrderSend(Symbol(), cmd, Lots, Price_open, SlipPage, StopLoss, TakeProfit, 0, magik);
Люди, вы чего друг друга путаете? :o
Если покупаем, то всегда по Ask. Это цена открытия позиции. Поэтому и StopLoss будет разницей Ask и заданного количества пунктов:
StopLoss = Ask - StopLoss*Point TakeProfit = Ask + TakeProfit*PointДля Sell то же самое, только с Bid!!!!
А разница у человека в 5 пунктов - это его спрэд.
Price_open = NormalizeDouble(Ask, Digits); cmd = OP_BUY; // расчитываем цены ограничителей if (StopLoss > 0) StopLoss = Ask - StopLoss * Point; if (TakeProfit > 0) TakeProfit = Bid + TakeProfit * Point; ... ticket = OrderSend(Symbol(), cmd, Lots, Price_open, SlipPage, StopLoss, TakeProfit, 0, magik);
Попробуйте так.
Опять неправильно - если покупаем нужно покупать по Ask (что и сделано), но всегда закрываем по Bid. Таким образом код должен быть:
Price_open = NormalizeDouble(Ask, Digits); cmd = OP_BUY; // расчитываем цены ограничителей if (StopLoss > 0) StopLoss = Bid - StopLoss * Point; if (TakeProfit > 0) TakeProfit = Bid + TakeProfit * Point; ... ticket = OrderSend(Symbol(), cmd, Lots, Price_open, SlipPage, StopLoss, TakeProfit, 0, magik);
Люди, вы чего друг друга путаете? :o
Если покупаем, то всегда по Ask. Это цена открытия позиции. Поэтому и StopLoss будет разницей Ask и заданного количества пунктов:
StopLoss = Ask - StopLoss*Point TakeProfit = Ask + TakeProfit*PointДля Sell то же самое, только с Bid!!!!
А разница у человека в 5 пунктов - это его спрэд.
Вроде всегда было одно провило. Есть цена открытия, есть цена закрытия. Открылись по одной, а все остальное считаем по другой.
StopLoss = Ask - StopLoss*Point TakeProfit = Ask + TakeProfit*Pointтак правильно
Сразу после открытия Профит=-1*Спред. Поэтому, если хотите, что в момент срабатывания тейка или стопа разница в пипсах была именно такая, какая вы задали в параметров, то нужно делать так, как я уже упомянул выше. А если хотите что-нибудь другое, делайте что хотите.
Нужно еще иметь ввиду, что чарт строится по Bid и соответсвенно визуально Ask находиться на 1 спред выше графика - и все закрытия шортов и открытия лонгов тоже вычерчиваются на спред выше.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
У меня тут возникла пробелема при задании параметров StopLoss и TakeProfit при открытии ордера.
делаю переменную в которой хранится значения в пунктах (ну как все наверное) ), затем при открытии ордера пишу например Ask - StopLoss * Point
привожу кусок кода открытия позиции
StopLoss у меня стоит 30 пунктов, но реально он выставляется 35 на позиции а TakeProfit наоборот уменьшается на 5 пунктов и становится 25 (установленное тоже 30)
Использование ф-ии NormalizeDouble не меняет ситуацию, и с ней и без нее такое происходит. Однако не на всех открываемых позициях
Подскажите где "собака порылась", на что обратить внимание чтобы все таки понять почему так происходит