[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 530

 

...ve bir karar verin - işte sizin için "Köylüler" şubesinin ILANINS'lerinden birinin kod bölümü - piyasa emirlerinin ortalama fiyatının ve PriceTarget'ın hedef fiyatının hesaplanması - bu kullanılan seviye + TP . TR zaten sizin takdirinize bağlı - ayrıca ihtiyaçlarınıza göre düzenleyin:

 total=CountTrades();
      AveragePrice = 0 ;
       double Count = 0 ;
       for (cnt= OrdersTotal ()- 1 ; cnt>= 0 ; cnt--) 
        {
         OrderSelect (cnt,SELECT_BY_POS,MODE_TRADES);
         if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=MagicNumber) continue ;
         if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) 
           {
             if ( OrderType ()==OP_BUY || OrderType ()==OP_SELL) 
              {
               AveragePrice+= OrderOpenPrice ()* OrderLots ();
               Count+= OrderLots ();
              }
           }
        }
       if (total> 0 ) AveragePrice= NormalizeDouble (AveragePrice/Count, Digits );
       if (NewOrdersPlaced) 
        {
         for (cnt= OrdersTotal ()- 1 ; cnt>= 0 ; cnt--) 
           {
             OrderSelect (cnt,SELECT_BY_POS,MODE_TRADES);
             if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=MagicNumber) continue ;
             if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) 
              {
               if ( OrderType ()==OP_BUY) 
                 {
                  PriceTarget= AveragePrice + TakeProfit * Point ;
                  BuyTarget=PriceTarget;
                  Stopper=AveragePrice-Stoploss* Point ;
                  flag=TRUE;
                 }
              }
             if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) 
              {
               if ( OrderType ()==OP_SELL) 
                 {
                  PriceTarget= AveragePrice - TakeProfit * Point ;
                  SellTarget = PriceTarget;
                  Stopper=AveragePrice+Stoploss* Point ;
                  flag=TRUE;
                 }
              }
           }
        }
       if (NewOrdersPlaced) 
        {
         if (flag == TRUE) 
           {
             for (cnt= OrdersTotal ()- 1 ; cnt>= 0 ; cnt--) 
              {
               OrderSelect (cnt,SELECT_BY_POS,MODE_TRADES);
               if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=MagicNumber) continue ;
               if ( OrderSymbol ()== Symbol () && OrderMagicNumber () == MagicNumber) OrderModify ( OrderTicket (),AveragePrice, OrderStopLoss (),PriceTarget, 0 , Yellow );
               NewOrdersPlaced = FALSE;
              }
           }
        }
     }
   return ( 0 );
  }
//???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

int CountTrades() 
  {
   int count= 0 ;
   for ( int trade= OrdersTotal ()- 1 ; trade>= 0 ; trade--) 
     {
       OrderSelect (trade,SELECT_BY_POS,MODE_TRADES);
       if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=MagicNumber) continue ;
       if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber)
         if ( OrderType ()==OP_SELL || OrderType ()==OP_BUY) count++;
     }
   return (count);
  }

Bu işlev yerine NewOrdersPlaced () ve OrderModify ()

Kullandığınız çizginin çizim (sergileme) düzeyine sahip olacaksınız - tüm mozaik sizin elinizde - düzenleme.

 
Roman. :

İşte kod bölümüm - bu belirli Uzman Danışmanın (büyüye göre) art arda kaybedilen işlemlerin toplam kaybını hesaba katmaktan sorumlu. Ağ Çığ versiyonum için yaptım - ihtiyaçlarınıza göre düzenleyin - kod yorumlanır ...

genel değişkenler

Kodun bu bölümünden sonra, bu Uzman Danışmanın zaten açık olan siparişleri arasında geçiş yapar ve toplam kârlarını hesaplarsınız. Sonra bu değeri bir değişkenle karşılaştırın

ve bir karar ver.

'Yineleme' - değişken tanımlanmadı D:\ïðîãgrámmy\MetaTrader 4 - RoboForex\experts\NewCobWebPivot.mq4 (204, 3)
'Yineleme' - değişken tanımlanmadı D:\ïðîãgrámmy\MetaTrader 4 - RoboForex\experts\NewCobWebPivot.mq4 (234, 17)
 
belck :
'Yineleme' - değişken tanımlanmadı D:\ïðîãgrámmy\MetaTrader 4 - RoboForex\experts\NewCobWebPivot.mq4 (204, 3)
'Yineleme' - değişken tanımlanmadı D:\ïðîãgrámmy\MetaTrader 4 - RoboForex\experts\NewCobWebPivot.mq4 (234, 17)

 double   Level_new,  PointValue,
        lots;                       // вспомогательная переменная для расчета нового размера лота при очередной итерации
int Iteration, Counter_Loss, Ticket_at_history; // счетчик для подсчета последовательного убытка позиций колен лавины
//bool Flag_Counter_Loss = false;
double Current_Loss, Sum_Loss;     // текущий и суммарный убыток
 

Yuri Reshetov'un önceki bölümde size sunduğu basit yola bakın. sayfa.

Size uymuyorsa, mozaiği size sunulan kod bölümlerinden toplayın.

Ayrıca bu konuda baykuş kodunu tam olarak incelemek faydalı olabilir - son mesajımdan itibaren - kullanılan seviye SELYAN şubesinden Double_Minus_1 ILANIN'dir. Onu kemiklerinden sökerseniz, sorununuzun çözümü daha net hale gelecektir, IMHO. Bir çizgi çizerseniz, burada zaten nesnelerle çalışabilmeniz gerekir. BÖYLE şeyler, IMHO, "orta seviyenin özel (programcısı)" hemen ve küstahça çözülmez ... :-)

Fragmanda kullanılan ortalama ve ayardaki baykuş kodu + TR.

Dosyalar:
 
Roman. :

benimle skype üzerinden iletişime geçebilirsiniz: avto-kişisel-plus
 
Reshetov :
Bu bir hata değil. Günlükteki hatalar sarı simgeler yerine kırmızı ile işaretlenmiştir.

O zaman neden çalışmıyor?
 

Burada skype'ım yok.


Basitleştirilmiş bir versiyonda deneyin, Yuri Reshetov'un ön sayfada size nasıl önerdiğini görün - benimkinden hemen sonra onun kodunu yazın.

Yorumlarla birlikte kodun tamamına bakın:


 double   Level_new,  PointValue,
        lots;                       // вспомогательная переменная для расчета нового размера лота при очередной итерации
int Iteration, Counter_Loss, Ticket_at_history; // счетчик для подсчета последовательного убытка позиций колен лавины
//bool Flag_Counter_Loss = false;
double Current_Loss, Sum_Loss;     // текущий и суммарный убыток


int start()     // -----------------------СТАРТ ЭКСПЕРТА--------------- 
{
//---------------------расчет по истории ордеров номера очередной итерации----------------------------------------------- 
  Iteration = 0 ; // зануляем инерации перед их учетом в цикле по истории
  Sum_Loss = 0 ;   // суммарный убыток по этим итерациям

datetime 
Time_at_History_Current = 0 ,
Time_at_History_Previos = 0 ;     
 
 if ( OrdersHistoryTotal () != 0 )
   {
     for ( int counter = OrdersHistoryTotal ()- 1 ; counter >= 0 ; counter--)
      {
       OrderSelect (counter, SELECT_BY_POS, MODE_HISTORY);
       if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
         {
           if ( OrderType () == OP_BUY || OrderType () == OP_SELL)
            {
             if ( OrderProfit () < 0 ) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера
                                   // для последующего его анализа при подсчете количества итераций
                {
                 double lastLoss = OrderProfit ();
                 Sum_Loss=Sum_Loss+lastLoss;   // считаем общий убыток по закрытым подряд убыточным ордерам
                 Time_at_History_Current = OrderCloseTime ();
                } 
             
             //Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));
             //Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
             
             if (Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
               {
                Time_at_History_Previos = Time_at_History_Current ;
                Iteration++;
                 //Print("Iteration at History в условии сравнения  = ",  Iteration);
               }   
             else // они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
               {
                 if ( OrderProfit () >= 0 )
                   break ;
               }
            }
         }
      }
   }

if (Sum_Loss < 0.0 ) { // Имеем убыток по закрытым позам
   if (( AccountEquity + Sum_Loss) >= AccountBalance ) { // Достигли безубытка
     // Здесь какой-то код, который необходимо выполнить при достижении безубытка
  }
}


} // Конец старт
 
Roman. :

Skype'ım yok.


Basitleştirilmiş bir versiyonda deneyin, Yuri Reshetov'un ön sayfada size nasıl önerdiğini görün - benimkinden hemen sonra onun kodunu yazın.

Yorumlarla birlikte kodun tamamına bakın:



'TotalCloseProfit' - değişken tanımlanmadı D:\ïðîãrámmy\MetaTrader 4 - RoboForex\experts\NewCobWebPivot.mq4 (251, 24)
 
belck :
'TotalCloseProfit' - değişken tanımlanmadı D:\ïðîãrámmy\MetaTrader 4 - RoboForex\experts\NewCobWebPivot.mq4 (251, 24)

Zaten düzelttim - tekrar deneyin.
 

Önemli olan - burada kullanılan seviye aşıldığında yapılacak işlemler için KODUNUZU girmeyi unutmayın:

 if (Sum_Loss < 0.0 ) { // Имеем убыток по закрытым позам
   if (( AccountEquity + Sum_Loss) >= AccountBalance ) 
  { 

     // Достигли безубытка
     // Здесь какой-то код, который необходимо выполнить при достижении безубытка


  }
}