Скажите, как получить згачение прибыли в пунктах. А то сначала
я так получал
потом как поменял пару, уже это выражение врет.
- Интересное и Юмор
- Бесплатный тренинг по MQL4
- Профит не в пунктах. Вопрос.
sultan:
Скажите, как получить згачение прибыли в пунктах. А то сначала я так получал
Скажите, как получить згачение прибыли в пунктах. А то сначала я так получал
(OrderProfit()/OrderLots()/10)потом как поменял пару, уже это выражение врет.
Т.к. стоимость пункта у пар различается, для корректности нужно делить на
MarketInfo( | Symbol(), MODE_POINT); |
scorpionk:
цена открытия - цена закрытия по модулю и разделить на Point
тоесть где то так наверное MathAbs(OrderOpenPrice()-OrderClosePrice())/Point
я имел ввиду прибыль для действующего ордера, т.е. не для закрытого
goldtrader:
Т.к. стоимость пункта у пар различается, для корректности нужно делить на
не получается у меня. Выражение Т.к. стоимость пункта у пар различается, для корректности нужно делить на
MarketInfo( | Symbol(), MODE_POINT); |
OrderProfit()/OrderLots()*MarketInfo(Symbol(),MODE_POINT)в момент при прибыли -5 пункт (пара EURGBP) дает значение -0.0102, когда мне нужно просто -5
может мне вот это
MarketInfo(Symbol(),MODE_PROFITCALCMODE)использовать? Только незнаю, параметры (Способ расчета прибыли. 0 - Forex; 1 - CFD; 2 - Futures) куда писать? Так MarketInfo(Symbol(),MODE_PROFITCALCMODE,0) ошибку дает
int start() { double pips; int total=OrdersTotal(); for (int i=total-1;i>=0;i--) { if (OrderSelect(i,SELECT_BY_POS)) { if (OrderType()!=OP_BUY && OrderType()!=OP_SELL) continue; double pnt=MarketInfo(OrderSymbol(),MODE_POINT); if (OrderType()==OP_BUY) pips=(OrderClosePrice()-OrderOpenPrice())/pnt; if (OrderType()==OP_SELL) pips=(OrderOpenPrice()-OrderClosePrice())/pnt; Alert("Прибыль в пунктах для ордера #",OrderTicket()," = ",pips); } } return(0); }
Вам же уже подсказали. Наверно смущает функция OrderClosePrice - так вот, она возвращает текущую цену и всё считается правильно. Скрипт тому подтверждение.
Xupypr:
Думаю излишни проверки на тип ордера, взять по модулю и все, зачем
лишнии телодвижения.)
int start() { double pips; int total=OrdersTotal(); for (int i=total-1;i>=0;i--) { if (OrderSelect(i,SELECT_BY_POS)) { if (OrderType()!=OP_BUY && OrderType()!=OP_SELL) continue; double pnt=MarketInfo(OrderSymbol(),MODE_POINT); if (OrderType()==OP_BUY) pips=(OrderClosePrice()-OrderOpenPrice())/pnt; if (OrderType()==OP_SELL) pips=(OrderOpenPrice()-OrderClosePrice())/pnt; Alert("Прибыль в пунктах для ордера #",OrderTicket()," = ",pips); } } return(0); }
Вам же уже подсказали. Наверно смущает функция OrderClosePrice - так вот, она возвращает текущую цену и всё считается правильно. Скрипт тому подтверждение.
у меня еще один вопрос
int chetchik() { int cnt; for(cnt=OrdersTotal()-1;cnt>=0;cnt--) { if (OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()!=Symbol()) continue; if (OrderType()==OP_BUY) { buyOrders++; TicketbuyOrders=OrderTicket(); } if (OrderType()==OP_SELL) { sellOrders++; TicketsellOrders=OrderTicket(); } if (OrderType()==OP_BUYSTOP) { buystopOrders++; TicketbuystopOrders=OrderTicket(); } if (OrderType()==OP_SELLSTOP) { sellstopOrders++; TicketsellstopOrders=OrderTicket(); } } } return(buyOrders,sellOrders,buystopOrders,sellstopOrders,TicketbuyOrders,TicketsellOrders,TicketbuystopOrders,TicketsellstopOrders); }функция chetchik() вроде правильно, но при компиляции ругается, что в строке return не хватает скобки
А сколько у Вас функция возвращает значений. Судя по return получается
7, а вернуть может только одно. Если больше, то нужно делать или
по ссылке, или через глобальные переменные (переменные, доступные
в любом месте программы)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь