OpenPosition() для MQL5 - страница 4

 
Prival:

вот опытным путем подобрал

2010.07.24 01:19:24 Trades '104021' : failed instant buy 1.00 EURUSD at 1.29104 sl: 1.29036 [No prices]
2010.07.24 01:19:23 Trades '104021' : instant buy 1.00 EURUSD at 1.29104 sl: 1.29036
2010.07.24 01:19:19 Trades '104021' : failed instant buy 1.00 EURUSD at 1.29104 sl: 1.29037 [Invalid stops]

получается что срабатывает при 68, это 50+спред сейчас аск 1.29104 бид 1.29086 

SYMBOL_TRADE_STOPS_LEVEL - Минимальный отступ в пунктах от  текущей цены закрытия для установки Stop ордеров

 

правильно ли я понял, что хотя я покупаю по аску (ордер бай) стоп лосс я должен рассчитывать по биду ?

 

Ну да, если у тебя Buy-позиция закрывается по bid,  то и StopLoss должен быть расчитан от bid'а
 

Prival:

правильно ли я понял, что хотя я покупаю по аску (ордер бай) стоп лосс я должен рассчитывать по биду ?

Вот пример открытия позиции в MT4 на MQL4:

ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-25*Point,Ask+25*Point,"My order #"+counter,16384,0,Green);
Тут мы видим, что для Buy цену открытия и TP мы считаем по Ask, а SL на основе Bid.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
Interesting:

Вот пример открытия позиции в MT4 на MQL4:

Тут мы видим, что для Buy цену открытия и TP мы считаем по Ask, а SL на основе Bid.

СТОП, СТОП. Вспомним теорию : позиция закрывается противоположной сделкой а значит все команды на закрытие должны быть отличны от команд на открытие. Открываемся мы по Ask , значит закрытие будет по Bid и совершенно не важно будет ли это закрытие по ТП или по СЛ.

Для проверки чтоб не запутаться просто вспомните что рынок против вас а значит открытие будет по худшей из двух цен (Ask, Bid) закрытие же будет противоположно открытию. Вкратце так.

 
Urain:

СТОП, СТОП. Вспомним теорию : позиция закрывается противоположной сделкой а значит все команды на закрытие должны быть отличны от команд на открытие. Открываемся мы по Ask , значит закрытие будет по Bid и совершенно не важно будет ли это закрытие по ТП или по СЛ.

Для проверки чтоб не запутаться просто вспомните что рынок против вас а значит открытие будет по худшей из двух цен (Ask, Bid) закрытие же будет противоположно открытию. Вкратце так.

Если немного подумать, то математика (по идеи) должна быть токая

Открытие позиции

производится по цена открытия (Open-price), которая определяется: для Buy по цене Ask-price, для Sell по цене Bid-price.

В момент открытия автоматом "начисляется" убыток, в размере спереда.

TP и SL

Для Buy считаем так - TP-price = Open-price + (TP * Point) и SL-price = Open-price - (SL * Point);

Для Sell считаем так -  TP-price = Open-price - (TP * Point) и SL-price = Open-price + (SL * Point).

Уровень БУ

Для Buy БУ наступает когда цена Bid-price достигает цену Open-price (компенсируется убыток по спреду, начисленный при открытии);

Для Sell БУ наступает когда цена Ask-price достигает цену Open-price (компенсируется убыток по спреду, начисленный при открытии).

Уровень TP

Для Buy закрытие по TP наступает когда цена Bid-price достигает цену TP-price (компенсируется убыток по спреду + профит TP);

Для Sell закрытие по TP наступает когда цена Ask-price достигает цену TP-price (компенсируется убыток по спреду + профит TP).

Уровень SL

Для Buy закрытие по SL наступает когда цена Bid-price достигает цену  SL-price

Для Sell закрытие по SL наступает когда цена Ask-price достигает цену  SL-price


 
Interesting:

Если немного подумать, то математика (по идеи) должна быть токая

Открытие позиции

производится по цена открытия (Open-price), которая определяется: для Buy по цене Ask-price, для Sell по цене Bid-price.

В момент открытия автоматом "начисляется" убыток, в размере спереда.

TP и SL

Для Buy считаем так - TP-price = Open-price + (TP * Point) и SL-price = Open-price - (SL * Point);

Для Sell считаем так -  TP-price = Open-price - (TP * Point) и SL-price = Open-price + (SL * Point).

Уровень БУ

Для Buy БУ наступает когда цена Bid-price достигает цену Open-price (компенсируется убыток по спреду, начисленный при открытии);

Для Sell БУ наступает когда цена Ask-price достигает цену Open-price (компенсируется убыток по спреду, начисленный при открытии).

Уровень TP

Для Buy закрытие по TP наступает когда цена Bid-price достигает цену TP-price (компенсируется убыток по спреду + профит TP);

Для Sell закрытие по TP наступает когда цена Ask-price достигает цену TP-price (компенсируется убыток по спреду + профит TP).

Уровень SL

Для Buy закрытие по SL наступает когда цена Bid-price достигает цену  SL-price

Для Sell закрытие по SL наступает когда цена Ask-price достигает цену  SL-price


Вот вы опять котлеты с мухами, открытие идёт по худшей из двух цен, закрытие по противоположной открытию цене.

помоиму довольно простая формула.

ЗЫ соответственно установка СЛ и ТП идёт от цены противоположной цене открытия.

 
  if(UsersOrderType=="Buy") // Будем открывать Buy
  {
    Ticket=OrderSend(Symbol(),0,Lots_New,Ask,2,SLline,TPline,"",MN);
  }
  if(UsersOrderType=="Sell") // Будем открывать Sell
  {
    Ticket=OrderSend(Symbol(),1,Lots_New,Bid,2,SLline,TPline,"",MN);
  }

при

  //Если линия стопа ниже середины между Ask и Bid то...
  if(CurrentValue<(Ask+Bid)*0.5)
  {//...имеем дело с длинной позицией----------
    if(Bid-CurrentValue<stoplevel)
    {
      CurrentValue=Bid-stoplevel;
    }
    //Обработаем линию стопа
    UsersOrderType="Buy";
    ObjectMove("SignalLineSL",0,1, CurrentValue);//Передвинем SL на нормализованное значение уровня SL
    SLline     =CurrentValue;                    //Нормализовано. Ценовое значение уровня стопа
    StopLoss   =Bid-SLline;                      //Нормализовано. Абсолютная величина расстояния от SL до ask/bid
    SL         =StopLoss/Point;                  //Относительный размер SL в пунктах

    //Обработаем линию профита
    TakeProfit =NormalizeDouble(StopLoss*ProfitRatio,Digits);//Нормализовано. Абсолютная величина расстояния от TP до ask/bid
    TP         =TakeProfit/Point;                            //Относительный размер TP в пунктах
    TPline     =Ask+TakeProfit;                              //Нормализовано. Ценовое значение уровня профита
    ObjectMove("SignalLineTP",0,1, TPline);                  //Передвинем TP на нормализованное значение уровня TP
    //------------------------------------------
  }
  //----------------------------------------------------------
  else
  {//...имеем дело с короткой позицией---------
    if(CurrentValue-Ask<stoplevel)
    {
      CurrentValue=Ask+stoplevel;
    }
    //Обработаем линию стопа
    UsersOrderType="Sell";
    ObjectMove("SignalLineSL",0,1, CurrentValue);//Передвинем SL на нормализованное значение уровня SL
    SLline     =CurrentValue;                    //Нормализовано. Ценовое значение уровня стопа
    StopLoss   =SLline-Ask;                      //Нормализовано. Абсолютная величина расстояния от SL до ask/bid
    SL         =StopLoss/Point;                  //Относительный размер SL в пунктах

    //Обработаем линию профита
    TakeProfit =NormalizeDouble(StopLoss*ProfitRatio,Digits);//Нормализовано. Абсолютная величина расстояния от TP до ask/bid
    TP         =TakeProfit/Point;                            //Относительный размер TP в пунктах
    TPline     =Bid-TakeProfit;                              //Нормализовано. Ценовое значение уровня профита
    ObjectMove("SignalLineTP",0,1, TPline);                  //Передвинем TP на нормализованное значение уровня TP
    //------------------------------------------
  }

так я делал на MQL4


то есть, если открыли по bid, SL считаем от ask а TP от bid.

  И соответственно  наоборот.

 
Urain:

Вот вы опять котлеты с мухами, открытие идёт по худшей из двух цен, закрытие по противоположной открытию цене.


Ну хоть на счет цен открытия пришли к единому мнению. :)

А вот теперь обсудим этот диалог и те цены которые там указаны...


На мой взгляд:

1 - это цена открытия - Open-price (раз это Sell-Limit значит по Bid-price)

2. SP = 100/1000 пп от цены открытия - SL-price

3. TP = 500/5000 пп от цены открытия - TP-price

Причина обращения: