// ф-ция minri, доработанная мной ///////////////////////////////////////////////////////////////////////////////// /**/ double lotlib_LotCost ( string _Symbol ) ///////////////////////////////////////////////////////////////////////////////// { if ( MarketInfo ( _Symbol, MODE_BID ) <= 0 ) { return(-1.0); } double Cost = -1.0; string FirstPart = StringSubstr( _Symbol, 0, 3 ); string SecondPart = StringSubstr( _Symbol, 3, 3 ); double Base = MarketInfo ( _Symbol, MODE_LOTSIZE ) * MarketInfo ( _Symbol, MODE_POINT ); if ( SecondPart == "USD" ) { Cost = Base; } else { if ( FirstPart == "USD" ) { Cost = Base / MarketInfo ( _Symbol, MODE_BID ); } else { if ( MarketInfo( "USD" + SecondPart, MODE_BID ) > 0 ) { Cost = Base / MarketInfo( "USD" + SecondPart, MODE_BID ); } else { Cost = Base * MarketInfo( SecondPart + "USD", MODE_BID ); } } } return( NormalizeDouble(Cost, 2) ); }Для бай-позиций:
OrderProfit() = lotlib_LotCost( OrderSymbol() ) * OrderLots() * (OrderClosePrice() - OrderOpenPrice());
Для селл-позиций:
OrderProfit() = lotlib_LotCost( OrderSymbol() ) * OrderLots() * (OrderOpenPrice()-OrderClosePrice());
Для подсчета свопа надо использовать MarketInfo( OrderSymbol(), MODE_SWAPLONG ) и MarketInfo( OrderSymbol(), MODE_SWAPSHORT ) и умножать его на
количество "ночевок" позиции (не забывая про "тройную
ночь").
komposter:
Для подсчета свопа надо использовать MarketInfo( OrderSymbol(), MODE_SWAPLONG ) и MarketInfo( OrderSymbol(), MODE_SWAPSHORT ) и умножать его на количество "ночевок" позиции (не забывая про "тройную ночь").
спасибо огромное, опробую!
Для подсчета свопа надо использовать MarketInfo( OrderSymbol(), MODE_SWAPLONG ) и MarketInfo( OrderSymbol(), MODE_SWAPSHORT ) и умножать его на количество "ночевок" позиции (не забывая про "тройную ночь").
в строчке
double Base = MarketInfo ( _Symbol, MODE_LOTSIZE ) * MarketInfo ( _Symbol, MODE_POINT );не понял, зачем умножать на
MarketInfo ( _Symbol, MODE_POINT );
Не помню =)
Сделай тестового эксперта, который будет принтить профит по моей формуле.
Потом убери *Point и сравни =)
Сделай тестового эксперта, который будет принтить профит по моей формуле.
Потом убери *Point и сравни =)
убрал. Считает правильнее :)
max_cpr:
убрал. Считает правильнее :)
убрал. Считает правильнее :)
Господа, мне для поднятой темы на 'Уровень безубытка цены для множества ордеров' нужно как база то же самое, посчитать профит позиции для любой цены. Всё-таки (пока не проверял) формула в lotlib_LotCost верна, или требует доработки?
chv:
Господа, мне для поднятой темы на 'Уровень безубытка цены для множества ордеров' нужно как база то же самое, посчитать профит позиции для любой цены. Всё-таки (пока не проверял) формула в lotlib_LotCost верна, или требует доработки?
Насколько я знаю, формула правильная.Господа, мне для поднятой темы на 'Уровень безубытка цены для множества ордеров' нужно как база то же самое, посчитать профит позиции для любой цены. Всё-таки (пока не проверял) формула в lotlib_LotCost верна, или требует доработки?
А проверить сложно? ;)
Почему мой код считает не правильно?
double profit_1, profit_2; void start() { double tickvalue = MarketInfo(Symbol(), MODE_TICKVALUE); for(int i = OrdersTotal()-1; i >= 0;i--) { if(!OrderSelect(i,SELECT_BY_POS)) continue; if(OrderSymbol()!=Symbol() || OrderType() >= 2) continue; if(OrderType() == 0) { profit_1 += (OrderClosePrice() - OrderOpenPrice())/Point*tickvalue*OrderLots() + OrderSwap(); profit_2 += OrderProfit()+OrderSwap(); } if(OrderType() == 1) { profit_1 += (OrderOpenPrice() - OrderClosePrice())/Point*tickvalue*OrderLots() + OrderSwap(); profit_2 += OrderProfit()+OrderSwap(); } } Alert(profit_1," ",profit_2); } //комиссий нет, пара евро-доллар?
fore-x:
Почему мой код считает не правильно?
Формулы у Вас странные. Может попытаетесь в одном значении считать прибыль
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Но только без использования собственно OrderProfit().. Хотя бы даже и без учета свопов и комиссий. Хотя лучше, конечно, с ними.
Может кто уже решал задачку, чтоб не изобретать очередное двухколесное чудо?