Установка StopLoss и TakeProfit - страница 2

 
timbo:
И хорошо бы сделать нормалайз для рассчитанных стопа и тейка. .. На всякий случай... Во избежание, так сказать...


Кстати... вопрос о "правильности" или что эффективней...

Есть ли какая разница в "машинном плане" этих варинтов одного и того же?


TakeProfit = NormalizeDouble(Ask+25*Point, Digits);
ticket=OrderSend( Symbol(), OP_BUY,1,Ask,3,Bid-25*Point,

TakeProfit,"My order",0,Green);

или так:

ticket=OrderSend( Symbol(), OP_BUY,1,Ask,3,Bid-25*Point,

NormalizeDouble(Ask+25*Point, Digits),"My order",0,Green);

 
scorpionk:

У меня тут возникла пробелема при задании параметров StopLoss и TakeProfit при открытии ордера.

делаю переменную в которой хранится значения в пунктах (ну как все наверное) ), затем при открытии ордера пишу например Ask - StopLoss * Point

привожу кусок кода открытия позиции

Price_open = NormalizeDouble(Ask, Digits);
cmd = OP_BUY;
// расчитываем цены ограничителей
if (StopLoss > 0)
  StopLoss = Bid - StopLoss * Point;
if (TakeProfit > 0) 
  TakeProfit = Ask + TakeProfit * Point;
...
ticket = OrderSend(Symbol(), cmd, Lots, Price_open, SlipPage, StopLoss, TakeProfit, 0, magik);

StopLoss у меня стоит 30 пунктов, но реально он выставляется 35 на позиции а TakeProfit наоборот уменьшается на 5 пунктов и становится 25 (установленное тоже 30)

Использование ф-ии NormalizeDouble не меняет ситуацию, и с ней и без нее такое происходит. Однако не на всех открываемых позициях

Подскажите где "собака порылась", на что обратить внимание чтобы все таки понять почему так происходит


Чуть было не запарил, когда писал ответ.

Если Вы хотите, чтобы при закрытии ордера получили прибыль или убыль в точности с TakeProfit или StoppLoss, то используйте при расчетах Ask, как послветовали Vinin или m_a_sim:

StopLoss = Ask - StopLoss*Point
 
TakeProfit = Ask + TakeProfit*Point
Причина обращения: