Ошибки, баги, вопросы - страница 619

 
-Alexey-:

Сейчас для МТ4 409 bild функцию учета минимального стоп-левел пишу. Для ордера buy тестер считает корректными минимальные значения от Bid, а для ордера Buy limit тестер считает корректными минимальные значения от Ask. По логике, операции происходят - похожие покупка. Вопрос - это так задумано, или нужно писать в СД?

всегда было, есть и будет бай от Аск.

доказательства есть кроме слов?

 
-Alexey-:

Сейчас для МТ4 409 bild функцию учета минимального стоп-левел пишу. Для ордера buy тестер считает корректными минимальные значения от Bid, а для ордера Buy limit тестер считает корректными минимальные значения от Ask. По логике, операции происходят - похожие покупка. Вопрос - это так задумано, или нужно писать в СД?

В принципе логично) стоп сработает по Bid, отложенник открывается по Ask.

sergeev:

всегда было, есть и будет бай от Аск.

Для покупок минимальное растояние до sl берётся от бид, сколько себя помню всегда так было)
 
sergeev:

всегда было, есть и будет бай от Аск.

доказательства есть кроме слов?


Торговая операция в обоих случаях от ASK, а вот уровень стопа отсчитываться, насколько я понимаю, должен от BID, т.к. он относится к операциям закрытия - продажи, что и проходит в тестере для ордера BUY. А для ордера BUY LIMIT почему-то считается от ASK. Пример:

bool first_run=true;
int init()
{
   return(0);
}
int deinit()
{
   return(0);
}
int start()
{
   if (first_run==true)
   {
      string _Symbol=Symbol();
      int _Digits=MarketInfo(_Symbol, MODE_DIGITS);
      double Point_size=MarketInfo(_Symbol, MODE_POINT);
      double Min_stop_distanse=MarketInfo(_Symbol, MODE_STOPLEVEL)*Point_size;
      double Min_freeze_distanse=MarketInfo(_Symbol, MODE_FREEZELEVEL)*Point_size;
      double Spread=MarketInfo(_Symbol, MODE_SPREAD)*Point_size;
      Print("Spread="+Spread);
      double _Order_price;
      double _Order_sl;
      double _Order_tp;
      double _Order_lot;
      _Order_lot=MarketInfo(_Symbol, MODE_MINLOT);
      /* highest accepted level for buy limit order */
      double _Upper_bound_for_buy_limit=NormalizeDouble(MarketInfo(_Symbol, MODE_ASK)-Min_stop_distanse, _Digits);
      /* defining orders price */
      _Order_price=_Upper_bound_for_buy_limit; /* ASK */
      _Order_sl=NormalizeDouble(_Order_price-Min_stop_distanse, _Digits); /* ASK-STOPLEVEL */
      _Order_tp=NormalizeDouble(_Order_price+Min_stop_distanse, _Digits); /* ASK+STOPLEVEL */
      /* sending buy limit order */
      OrderSend(_Symbol, OP_BUYLIMIT, _Order_lot, _Order_price, 0, _Order_sl, _Order_tp, NULL, 0, 0, Green);
      first_run=false;
   }
   return(0);
}

Результат:

2012.01.08 14:39:04    2011.06.03 01:43  test EURUSD,M1: Spread=0.00020000

2012.01.08 14:39:04    2011.06.03 01:43  test EURUSD,M1: open #1 buy limit 0.01 EURUSD at 1.4478 sl: 1.4474 tp: 1.4482 ok

 
код неправильно вставили.
 
Swan:
Для покупок минимальное растояние до sl берётся от бид, сколько себя помню всегда так было)

уточните сначала.

речь идет про стопы в бай ордерах или про отложенный бай ордер?  а то щаз разговор пойдет глухого со слепым.

 
sergeev:

код неправильно вставили.
Что делать теперь? :) Вроде выделил и нажал "Код", а оно вон как вышло...
 
-Alexey-:
Что делать теперь? :) Вроде выделил и нажал "Код", а оно вон как вышло...

можно пост удалить и попытаться заново по нормальному. хотите поговорить про это? или про вашу проблему со стопуровнем?

 
sergeev:

можно пост удалить и попытаться заново по нормальному. хотите поговорить про это? или про вашу проблему со стопуровнем?

Получилось с кодом. Про стоп-уровни. Писать в СД или так задумано, что в buy limit ордере BID стоп-левел считается от ASK цены ордера. Если так, то почему в BUY ордере считается наоборот?
 
-Alexey-:
что в buy limit ордере BID стоп-левел считается от ASK цены ордера. Если так, то почему в BUY ордере считается наоборот?


начнем по порядку. Второй класс школы.

А. Стоплос и Тейкпрофит в ордерах люди отсчитывают от его цены открытия. Это ж и понятно, что если хочешь 100 пунктов, то надо закрыться в профите на 100 пунктов от цены открытия.

Б. На установку СЛ/ТП/ОТЛОЖКИ влияет так называемый стопуровень. То есть вы не можете поставить стоплос/тейкпрофит/отложку на расстоянии ближе чем СтопЛевел от ЦЕНЫ ИСПОЛНЕНИЯ

Из этого делаем следующие выводы.

1. Когда открываете рыночный ордер, то СЛ/ТП вы должны ставить с учетом стопуровня от текущей цены, по которой стоп срабатывает. Для баев стопы срабатывают по Биду, значит стопуровень учитываем от текущего бида. То есть СЛ/ТП вы как обычно откладываете от открытия ордера (ведь вам надо 100 пунктов), но обязательно с учетом положения Бида и размера стопуровня.

2. Когда открываете отложку, то как и полагается сама отложка должна быть не ближе на стопуровень от цены, по которой она срабатывает. То есть для Байстоп/Байлмимит отмеряем стопуровень от Аска. То есть вы ставите отложку на той цене где вам надо, но обязательно с учетом расстояния стопуровня от Аска.

Но при этом внимание!:  стоплос и тейкпрофит в отложке спокойно отмеряем от цены открытия ордера!!! не от Аска, а от цены открытия ордера!  Так как этим двум отложкам (СЛ/ТП) текущие цены не мешают. Им мешают только расстояния до будущего сработавшего ордера. То есть СЛ/ТП в отложке вы ставите с учетом расстояния стопуровня от цены открытия этой отложки. И Бид/Аск здесь уже не при чем.

Запомнили?

 
sergeev:

Но при этом внимание!:  стоплос и тейкпрофит в отложке спокойно отмеряем от цены открытия ордера!!! не от Аска, а от цены открытия ордера!  Так как этим двум отложкам (СЛ/ТП) текущие цены не мешают. Им мешают только расстояния до будущего сработавшего ордера. То есть СЛ/ТП в отложке вы ставите с учетом расстояния стопуровня от цены открытия этой отложки. И Бид/Аск здесь уже не при чем.

Запомнили?

Запмнить-то запомнил, но понять не могу. Ясно ведь, что отлженный Buy Limit ордер открывается тогда, когда его уровня достигает цена Аск. Следовательно, в этот момент текущая цена Бид находится на недопустимом расстоянии от СЛ(исполняемый также по Бид), отмеренного ранее как цена исполнения(т.е. Аск в момент исполнения)-стоплевел. Единственное, чем это можно попробовать объяснить, тем, что заранее неизвестно, какова будет цена исполнения Бид в момент исполнения. Если так задумано - ок, все ясно, спасибо за развернутый пост.
Причина обращения: