Попробуйте проверить историю на ECN-счетах. Будете удивлены.
Далеко не всегда есть цена, соответствующая заявленному ТР или SL. В итоге рыночный ордер будет закрыт по действующей рыночной цене, а не по заявленной. Проскальзывание называется. ))
сейчас проверил на ECN-счете, действительно удивлен
OrderClosePrice() = 1,10837 OrderStopLoss()=1,10836 OrderComment()= [sl]OrderClosePrice() = 1,10837 не равен OrderStopLoss()=1,10836 но терминал пишет OrderComment()= [sl]
откуда терминал знает что было событие OrderStopLoss() ???
это очередной баг? , или неисправимый баг - это фича
сейчас проверил на ECN-счете, действительно удивлен
OrderClosePrice() = 1,10837 OrderStopLoss()=1,10836 OrderComment()= [sl]OrderClosePrice() = 1,10837 не равен OrderStopLoss()=1,10836 но терминал пишет OrderComment()= [sl]
откуда терминал знает что было событие OrderStopLoss() ???
это очередной баг? , или неисправимый баг - это фича
Сервер закрывает стоплосс с проскальзыванием и добавляет комент [sl]. Вроде давно так уже, а возможно и всегда так было. Ecли при открытии ордера отправляется комент, то к нему в начале добавляется тоже [sl]. Например [sl]myea
Vladimir Zubov: Сервер закрывает стоплосс с проскальзыванием и добавляет комент [sl]. Вроде давно так уже, а возможно и всегда так было. Ecли при открытии ордера отправляется комент, то к нему в начале добавляется тоже [sl]. Например [sl]myea
я понимаю , что сегодня жарко , но не до такой же степени
т.е если сова купила , поставила комент "куплено", то к этому коменту в начало добавится [sl]? хотя позиция еще не закрылась
pako: а понимаю , что сегодня жарко , но не до такой же степени
//+----------------------------------------------------------------------------+//| Автор : BeerGod |//+----------------------------------------------------------------------------+//| Версия : 29.01.2015 |//| Описание : Возвращает флаг торговли c отбором |//| по комментарию в закрытом ордере [sl]. 0 небыло 1 была |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| comm - комметарий в закрытом ордере |//+----------------------------------------------------------------------------+int isLossLastPos(string sy="", int op=-1, int mn=-1, string comm ="")
{
datetime t=0;
int i, j=-1, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderSymbol()==sy || sy=="")
{
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if (op<0 || OrderType()==op)
{
if (mn<0 || OrderMagicNumber()==mn)
{
if (OrderComment()==comm || OrderComment()==SL+comm )
{
if (t<OrderCloseTime())
{
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderProfit()!=0) return(1);
}
return(0);
}
//End
У меня такая функция безошибочно определяет был стоп или нет в независимости насколько было проскальзывание при закрытии.
мне это понятно, а понятно ли это вашему терминалу?
купили по 1,5; ТП поставили 1,6 ; Бид зацепил 1,6; ECNсчет + проскальзывание + расширенный спред, закрылись по цене 1,597, что будет написано в терминале? OrderClosePrice() = 1,597 OrderTakeProfit()=1,6???OrderComment()= "тп"
терминал должен закрыть позицию по событию ТП, если OrderClosePrice() = 1,597 не равен OrderTakeProfit()=1,6 -----> значит события ТП не было , почему закрылись?
терминал закрыл позицию по событию ТП OrderClosePrice() = 1,597 ; равен OrderTakeProfit() = 1,597 ; OrderComment()= "тп"
Take Profit - это лимитный ордер, который исполняется по цене, не хуже заявленной. Т. е. при таком профите закрытие может быть по цене 1.6 или выше, но никак не ниже. Stop Loss - это стоповый ордер, который исполняется по цене, не лучше заявленной. При указании стопа 1.6 для длинной сделки цена закрытия будет 1.6 или меньше.
Игорь Герасько: Take Profit - это лимитный ордер, который исполняется по цене, не хуже заявленной. Т. е. при таком профите закрытие может быть по цене 1.6 или выше, но никак не ниже. Stop Loss - это стоповый ордер, который исполняется по цене, не лучше заявленной. При указании стопа 1.6 для длинной сделки цена закрытия будет 1.6 или меньше.
Попробуйте проверить историю на ECN-счетах. Будете удивлены.
Далеко не всегда есть цена, соответствующая заявленному ТР или SL. В итоге рыночный ордер будет закрыт по действующей рыночной цене, а не по заявленной. Проскальзывание называется. ))
сейчас проверил на ECN-счете, действительно удивлен
OrderClosePrice() = 1,10837 OrderStopLoss()=1,10836 OrderComment()= [sl] OrderClosePrice() = 1,10837 не равен OrderStopLoss()=1,10836 но терминал пишет OrderComment()= [sl]
откуда терминал знает что было событие OrderStopLoss() ???
это очередной баг? , или неисправимый баг - это фича
сейчас проверил на ECN-счете, действительно удивлен
OrderClosePrice() = 1,10837 OrderStopLoss()=1,10836 OrderComment()= [sl] OrderClosePrice() = 1,10837 не равен OrderStopLoss()=1,10836 но терминал пишет OrderComment()= [sl]
откуда терминал знает что было событие OrderStopLoss() ???
это очередной баг? , или неисправимый баг - это фича
Сервер закрывает стоплосс с проскальзыванием и добавляет комент [sl]. Вроде давно так уже, а возможно и всегда так было. Ecли при открытии ордера отправляется комент, то к нему в начале добавляется тоже [sl]. Например [sl]myea
я понимаю , что сегодня жарко , но не до такой же степени
т.е если сова купила , поставила комент "куплено", то к этому коменту в начало добавится [sl]? хотя позиция еще не закрылась
а понимаю , что сегодня жарко , но не до такой же степени
я понимаю , что сегодня жарко , но не до такой же степени
т.е если сова купила , поставила комент "куплено", то к этому коменту в начало добавится [sl]? хотя позиция еще не закрылась
мне это понятно, а понятно ли это вашему терминалу?
купили по 1,5; ТП поставили 1,6 ; Бид зацепил 1,6; ECNсчет + проскальзывание + расширенный спред, закрылись по цене 1,597, что будет написано в терминале? OrderClosePrice() = 1,597 OrderTakeProfit()=1,6??? OrderComment()= "тп"
терминал должен закрыть позицию по событию ТП, если OrderClosePrice() = 1,597 не равен OrderTakeProfit()=1,6 -----> значит события ТП не было , почему закрылись?
терминал закрыл позицию по событию ТП OrderClosePrice() = 1,597 ; равен OrderTakeProfit() = 1,597 ; OrderComment()= "тп"
У меня такая функция безошибочно определяет был стоп или нет в независимости насколько было проскальзывание при закрытии.
так определяю, была-ли последняя позиция закрыта по СЛ
но я спросил, как определяет терминал , что закрылись по СЛ
именно как определяет?, не то что пишет в логи
по вашей фукции, если был СЛ и OrderProfit()==0, так называемый БУ ??
Take Profit - это лимитный ордер, который исполняется по цене, не хуже заявленной. Т. е. при таком профите закрытие может быть по цене 1.6 или выше, но никак не ниже. Stop Loss - это стоповый ордер, который исполняется по цене, не лучше заявленной. При указании стопа 1.6 для длинной сделки цена закрытия будет 1.6 или меньше.
купили по 1,5; ТП поставили 1,6 ; Бид зацепил 1,6; ECNсчет + проскальзывание + расширенный спред, закрылись по цене 1,6001 OrderClosePrice() = 1,6001 OrderTakeProfit()=1,6 OrderComment()= "тп"
т.е в данном случае если OrderClosePrice() >= OrderTakeProfit() ----> то закрылись по ТП
а если ТП был "0 " , OrderClosePrice() = 1,6001 ; >= OrderTakeProfit() =0 ----> то закрылись тоже по ТП ???
купили по 1,5; ТП поставили 1,6 ; Бид зацепил 1,6; ECNсчет + проскальзывание + расширенный спред, закрылись по цене 1,6001 OrderClosePrice() = 1,6001 OrderTakeProfit()=1,6 OrderComment()= "тп"
т.е в данном случае если OrderClosePrice() >= OrderTakeProfit() ----> то закрылись по ТП
а если ТП был "0 " , OrderClosePrice() = 1,6001 ; >= OrderTakeProfit() =0 ----> то закрылись тоже по ТП ???
Нет, поскольку ТП=0 )))
Нет, поскольку ТП=0 )))
т.е "0" не меньше 1,6001 иначе закрылись бы по ТП:))