Функция Расчёта Цены Безубытка - страница 4

 
Вот это прикольная штучка :) Надо бы реализовать такую =))
 
Noterday:
Вот это прикольная штучка :) Надо бы реализовать такую =))

Кто мешает?

:D)))

 
Данный скрипт выполняет расчет уровня без убытка (без учета свопа). Возможность выбирать тип ордеров, а так же возможность включения в уровень без убытка последние (до первого прибыльного) закрытые убыточные позиции. Для правильной работы с учетом закрытых сделок необходимо наличие истории во вкладке терминала "История Счета". История должна быть отсортирована по цене закрытия ордера.
Файлы:
sredina_1.mq4  5 kb
 

Ищите . да взыщется вам.... эта штучка по запчастям мною по форуму раскидана, ну или в кодебейзе в лок енд пипсах моих ... теме то пару лет точно...

 
xrust:

Ищите . да взыщется вам.... эта штучка по запчастям мною по форуму раскидана, ну или в кодебейзе в лок енд пипсах моих ... теме то пару лет точно...

20 бакинских - это нормальная цена для психологического комфорта ленивого. :D))

Разве нет?

 

Ну если прет сделать самому, то это неперебьеш ничем.... особенно желание халявы ( скорей всего не в этом случае), теме реально пару лет. сам задавал такие вопросы на форуме, в результате сам и написал...

 
keekkenen:
сколько заплатили.. за инструкцию ?

Нискока, зайдите по ссылке и скачайте!

А купил как и у xrust, тока за 19,84 *)

Жду торгов, поюзаю.

 
Ищу код безубытка по истории. мож у кого есть. поделитесь.
у меня есть код безубытка, но он работает изходя из открытых ордеров.
у меня советник закрывает убыточную при противоположном сигнале, и открывает по сигнал. и вот нужно что бы этот код безубытка запомнил сколько в минусе и передал информацию дальше, что бы второй и т.д. ордера уже видели на графике линию нуля по прибыли с учетом предыдущих убытков. Стопов у советника нету. а значит закрытие минусовой сделки не по стоплоссу.
 

Вот может кому пригодится, функция расчитывает уровень безубытка отдельно для Buy - Sell а так же общий уровень безубытка

Берем возвращаяемое значение

 

//+------------------------------------------------------------------+
//| Функция расчитывает цену безубытка сети ордеров                  |
//| в заданном направлении                                           |
//+------------------------------------------------------------------+
double PriceBE(int dir)
   {  
   double BEPrice   =0;
   double MyBEPrice =0;
   double BuyLots   =0;
   double SellLots  =0;
   double BuyProfit =0;
   double SellProfit=0;
   double BuyLevel  =0;
   double SellLevel =0;
   double tp =0;
   if(OrdExist(OP_BUY)>0||OrdExist(OP_SELL)>0)
      {
      for(int i=OrdersTotal(); i>=0; i--)
         {
         if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
         if(OrderMagicNumber() != MagicNumber && OrderSymbol()!=Symbol() ) continue;
         if(OrderType()==OP_BUY)  
            {
             BuyLots=BuyLots+OrderLots();
             BuyProfit=BuyProfit+OrderProfit()+OrderCommission()+OrderSwap();
           
            }
         if(OrderType()==OP_SELL)  
            {
             SellLots=SellLots+OrderLots();
             SellProfit=SellProfit+OrderProfit()+OrderCommission()+OrderSwap();
            }
         }
      }
   double TickValue=MarketInfo(Symbol(),MODE_TICKVALUE);
   if (BuyLots>0 )           BuyLevel=NormalizeDouble(Bid-(BuyProfit/(TickValue*BuyLots)*Point),Digits); else BuyLevel=0;
   if (SellLots>0 )          SellLevel=NormalizeDouble(Ask+(SellProfit/(TickValue*SellLots)*Point),Digits); else SellLevel=0;
   if ((BuyLots-SellLots)>0) BEPrice=NormalizeDouble(Bid-((BuyProfit+SellProfit)/(TickValue*(BuyLots-SellLots))*Point),Digits);
   if ((SellLots-BuyLots)>0) BEPrice=NormalizeDouble(Ask+((BuyProfit+SellProfit)/(TickValue*(SellLots-BuyLots))*Point),Digits);
   if(dir==OP_BUY)   MyBEPrice=BuyLevel;
   if(dir==OP_SELL)  MyBEPrice=SellLevel;
   if(dir==-1)       MyBEPrice=BEPrice;
   
   return(NormalizeDouble(MyBEPrice,Digits));
   }

//+------------------------------------------------------------------------------------------+
//| Функция возвращает количество ордеров заданного направления                              |
//+------------------------------------------------------------------------------------------+
int OrdExist(int direction)
{
int OrdCount=0;
if (OrdersTotal()>0)
   {
   for(int i=0; i<=OrdersTotal(); i++)
      {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderMagicNumber() != MagicNumber && OrderSymbol()!=Symbol()) continue;
      if (OrderType()==direction) OrdCount++;
      }
   }
return (OrdCount);
}
 
if (OrdersTotal()>0)
   {
   for(int i=0; i<=OrdersTotal(); i++)
      {
Зачем это писать????????????????????????????????????????????????????????????????????????????
   for(int i=0; i<OrdersTotal(); i++)
      {
Причина обращения: