Использую такую функцию поиска точки безубытка открытых позиций, работает много лет без вопросов.
//+---------------------------------------------------------------------+ //| Zero_Level.mq5 | //| Copyright © 2007, Xupypr | //| MQL5 Version Copyright © 2024, Boshetunmay | //+---------------------------------------------------------------------+ // Функция вычисляющая уровни безубытка, на покупку, на продажу с учетом накопленных свопов. double Zero_Level(string symb="", int op=-1, int mn=-1) { if(symb=="0") symb=_Symbol; double TickValue=SymbolInfoDouble(symb,SYMBOL_TRADE_TICK_VALUE); double BuyLots=0; double SellLots=0; double BuyProfit=0; double SellProfit=0; double BuyLevel=0; double SellLevel=0; int Total=PositionsTotal(); for(int i=Total-1; i>=0; i--) { if(po.SelectByIndex(i)) { if(po.Symbol()!=symb) continue; if(po.Magic()!=mn) continue; if(po.PositionType()==OP_BUY && (op<0 || po.PositionType()==op)) { BuyLots+=NormalizeDouble((po.Volume()),2); BuyProfit+=NormalizeDouble((po.Profit()+(po.Commission()*2)+po.Swap()),2); } if(po.PositionType()==OP_SELL && (op<0 || po.PositionType()==op)) { SellLots+=NormalizeDouble((po.Volume()),2); SellProfit+=NormalizeDouble((po.Profit()+(po.Commission()*2)+po.Swap()),2); // Print(SellLots); // Print(SellProfit); // Print(TickValue); } } } double Price=0; if(BuyLots>0) BuyLevel=NormalizeDouble(SymbolInfoDouble(symb,SYMBOL_BID)-(BuyProfit/(TickValue*BuyLots)*SymbolInfoDouble(symb,SYMBOL_POINT)),(int)SymbolInfoInteger(symb,SYMBOL_DIGITS)); else BuyLevel=0; if(SellLots>0) SellLevel=NormalizeDouble(SymbolInfoDouble(symb,SYMBOL_ASK)+(SellProfit/(TickValue*SellLots)*SymbolInfoDouble(symb,SYMBOL_POINT)),(int)SymbolInfoInteger(symb,SYMBOL_DIGITS)); else SellLevel=0; if((BuyLots-SellLots)>0) Price=NormalizeDouble(SymbolInfoDouble(symb,SYMBOL_BID)-((BuyProfit+SellProfit)/(TickValue*(BuyLots-SellLots))*SymbolInfoDouble(symb,SYMBOL_POINT)),(int)SymbolInfoInteger(symb,SYMBOL_DIGITS)); if((SellLots-BuyLots)>0) Price=NormalizeDouble(SymbolInfoDouble(symb,SYMBOL_ASK)+((BuyProfit+SellProfit)/(TickValue*(SellLots-BuyLots))*SymbolInfoDouble(symb,SYMBOL_POINT)),(int)SymbolInfoInteger(symb,SYMBOL_DIGITS)); // Print(SellLevel); return(Price); }
Использую такую функцию поиска точки безубытка открытых позиций, работает много лет без вопро
что такое op и mn?
Понял смысл, но как по мне вариант с расчётом из таких составляющих как цены открытия и обьем лота получше будет, просто не могу понять где ошибка
Доброго времени суток. Проблема у меня возникла следующая: есть открытые позиции Sell, мне нужно найти такой объём следующей позиции Sell, чтобы точка безубытка была выше уровня в -120 пунктов от текущей цены, но почему то когда я рассчитываю функцию, точка безубытка опускается все ниже. Не могу понять в чем проблема(
У вас два условия: если lot > 0.02 и второе условие если lot > 0.01
А если lot == 0.01 тогда что делать???
Невнимательно посмотрел.
По любому, зачем такие или какие то другие условия тут нужны? Просто собираем объёмы, цены открытия и из них вычисляем среднюю цену открытия. А потом считаем где будут безубыток при указанном объёме позиции…
У вас два условия: если lot > 0.02 и второе условие если lot > 0.01
А если lot == 0.01 тогда что делать???
Невнимательно посмотрел.
По любому, зачем такие или какие то другие условия тут нужны? Просто собираем объёмы, цены открытия и из них вычисляем среднюю цену открытия. А потом считаем где будут безубыток при указанном объёме
я рассчитываю среднюю цену открытия на каждую позицию объёмом 0.01, и просто если объём больше, то делю его на равные доли по 0.01 и вычисляю среднюю))))
я рассчитываю среднюю цену открытия на каждую позицию объёмом 0.01, и просто если объём больше, то делю его на равные доли по 0.01 и вычисляю среднюю))))
Нет необходимости делить объёмы. Ведь в рынке в данный момент столько сколько есть. И все эти позиции всем объёмом дают прибыль или убыток. Вот ко всему объёму и надо колдовать дополнение…

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Доброго времени суток. Проблема у меня возникла следующая: есть открытые позиции Sell, мне нужно найти такой объём следующей позиции Sell, чтобы точка безубытка была выше уровня в -120 пунктов от текущей цены, но почему то когда я рассчитываю функцию, точка безубытка опускается все ниже. Не могу понять в чем проблема(