Как вариант - можно хранить где-нибудь ticket этой сделки. А потом выбрать ордер по этому тикету и функцией ордер профит узнать ее прибыль.
favoritefx писал (а):
Как вариант - можно хранить где-нибудь ticket этой сделки. А потом выбрать ордер по этому тикету и функцией ордер профит узнать ее прибыль.
Я решил написать функцию таким образом :Как вариант - можно хранить где-нибудь ticket этой сделки. А потом выбрать ордер по этому тикету и функцией ордер профит узнать ее прибыль.
( функция должна определять кол-во лотов в зависимости от того как закрылась позиция)
только она не работает , что-не то
Это моя первая ф.. C утра сижу .....ь
int Lots()
{
if(OrderSelect(OrdersHistoryTotal( )-1,SELECT_BY_POS, MODE_HISTORY)==false) return(-1);
if(OrderType()==OP_BUY)
{if(OrderTakeProfit()>0 && OrderTakeProfit()<=OrderClosePrice()) Lot=1;
else Lot=Lot+1;}
if(OrderType()==OP_SELL)
{if(OrderTakeProfit()>0 && OrderTakeProfit()>=OrderClosePrice()) Lot=1;
else Lot=Lot+1;}
return(Lot) ;
}
Если кто поможет буду багодарен !
Для начала, вставляйте код с помощью кнопки !
Вот так.. ;)
Вот так.. ;)
int Lots() { if(OrderSelect(OrdersHistoryTotal( )-1,SELECT_BY_POS,MODE_HISTORY)==false) return(-1); if(OrderType()==OP_BUY) {if(OrderTakeProfit()>0 && OrderTakeProfit()<=OrderClosePrice()) Lot=1; else Lot=Lot+1;} if(OrderType()==OP_SELL) {if(OrderTakeProfit()>0 && OrderTakeProfit()>=OrderClosePrice()) Lot=1; else Lot=Lot+1;} return(Lot) ; }
Вы проверяете, закрылась ли сделка по TakeProfit и если профит, то
Lot=1, иначе Lot=Lot+1 !?????
Где проверка на закрытие по StopLoss ?
Должно быть примерно так.. (код не проверял!)
Где проверка на закрытие по StopLoss ?
Должно быть примерно так.. (код не проверял!)
int Lots() { if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)==false) return(-1); if(OrderType()==OP_BUY) { if(OrderTakeProfit()>0 && OrderTakeProfit()<=OrderClosePrice()) { //если закрылись по тэйку } if(OrderStopLoss()>0 && OrderStopLoss()>=OrderClosePrice()) { //если закрылись по стопу } } if(OrderType()==OP_SELL) { if(OrderTakeProfit()>0 && OrderTakeProfit()>=OrderClosePrice()) { //если закрылись по тэйку } if(OrderStopLoss()>0 && OrderStopLoss()<=OrderClosePrice()) { //если закрылись по стопу } } return(Lot) ; }
Я так делаю удвоение лота при предыдущем стопе:
datetime oot; double stp=MarketInfo(Symbol(), MODE_LOTSTEP); double dLot=MarketInfo(Symbol(), MODE_MINLOT); int h=HistoryTotal(), i, k, np; for (i=0; i<h; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (oot<OrderOpenTime()) { oot=OrderOpenTime(); np=i; } } } } } if (OrderSelect(np, SELECT_BY_POS, MODE_HISTORY)) { // нормализация if (stp>0 && stp<1) k=1/stp; else if (stp>=1) k=1; else k=10; if (OrderProfit()<0) dLot=MathRound(2*OrderLots()*k)/k; }
Всех отозвавшихся благодарю!
Начинаю копаться
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Кто может, подскажите.
Как узнать результат предыдущей сделки
Сработал профит или лосс?
Заранее с уважением и с рождеством.......