MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1594

 
законопослушный гражданин :

Teşekkür ederim

ancak bu fonksiyonda: double GetProfitFromStart()

sarı sadece fonksiyonun adı, doğru anladım mı?

ve prensipte herhangi bir şey olabilir mi?

Evet, bunu netleştirmek için bu şekilde adlandırdım Kar Al (al) Kar (kar) Baştan (baştan)
 
MakarFX :
Evet, bunu netleştirmek için bu şekilde adlandırdım Kar Al (al) Kar (kar) Baştan (baştan)

teşekkür etmek.

Uzman onay işlevinde

void OnTick() - kod satırının şu olduğu ortaya çıkıyor: if(CountOrders()==0&& ObjectGetInteger (0,"lab_Button",OBJPROP_STATE)) danışmanın ilk başlatılması sırasında yalnızca ilk sıranın başlatılması değil ,

ama aynı zamanda sipariş şu koşulla kapatıldıktan sonra her başlatma:

 if (GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*- 1 )
     {
       if (IsTesting())
        {
         CloseOrder(); ObjectSetInteger ( 0 , "lab_Button" , OBJPROP_STATE , false );
        }
       else
        {
         CloseOrder();
}
}

Doğru şekilde anladım?

 
MakarFX :

tüm kârsız siparişlerdeki kaybın boyutu

Sanırım yine yanlış anladım.

veya her kârsız için kayıp miktarı

ya da tüm kaybedilen siparişlerdeki toplam kayıp...


Yalnızca bir kez yazdırmanız gerekiyorsa, bunu bir komut dosyası biçiminde yapmak daha iyidir.

gerekli değil, yapabilirsin

Kodunuz yardımcı oldu, şimdi aynı mesajlar 100 kez değil, yalnızca 4-10 kez veriliyor. Başka bir ifade eklemeniz gerekebilir.
 
Petronet :
Kodunuz yardımcı oldu, şimdi aynı mesajlar 100 kez değil, yalnızca 4-10 kez veriliyor. Başka bir ifade eklemeniz gerekebilir.
Kod nasıl ve nerede yazılır?
 
законопослушный гражданин :

teşekkür etmek.

Uzman onay işlevinde

void OnTick() - kod satırının şu olduğu ortaya çıkıyor: if(CountOrders()==0&& ObjectGetInteger (0,"lab_Button",OBJPROP_STATE)) danışmanın ilk başlatılması sırasında yalnızca ilk sıranın başlatılması değil ,

ama aynı zamanda sipariş şu koşulla kapatıldıktan sonra her başlatma:

Doğru şekilde anladım?

Bunlar EA'yı başlatmak için koşullardır, if( if ) (CountOrders()==0( sipariş yok )&& ObjectGetInteger (0,"lab_Button",OBJPROP_STATE))( ve düğmeye basıldığında ), o zaman ticaret yapabilirsiniz

 
MakarFX :
Kod nasıl ve nerede yazılır?
Kod, EA'nın int start() işlevinin gövdesine eklenir. Boş bir değişken oluşturan başka bir ifade eklendi, veri çoğaltma durdu, ancak İKİ negatif kâr arka arkaya geldiğinde, veri çoğaltması 10 ve 2-3 kez gerçekleşiyor. Aynı bilgiyi 100 kez veren orijinal döngümü yorumladı. Senin işçin.
 int start()
  {
  
   //for (int trade = OrdersHistoryTotal() - 1; trade >= 0; trade--) 
   //{
     //if ( OrderSelect(trade, SELECT_BY_POS,MODE_HISTORY)) 
     //{
         //old_order_type = OrderType();
         //if ( OrderProfit()<0 ) //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком
         //{
                 //Print("Закрылись с минусом:", OrderProfit());
                 //break; //прекращаем поиск
         //}
         
     //}
     //break;
   //}
  
   for ( int pos= 0 ; pos<OrdersHistoryTotal(); pos++)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if (OrderSymbol()== _Symbol )
           {
             if (OrderCloseTime()>=TimeStart)
              {
               if (OrderProfit()< 0 ) {cnt=OrderProfit();
               Print ( "ордера с минусом" , cnt); TimeStart= TimeCurrent (); cnt= 0 ;}
               else gg=gg+ 1 ;
              }
           }
        }
     }
 
Petronet :
Kod, EA'nın int start() işlevinin gövdesine eklenir. Boş bir değişken oluşturan başka bir ifade eklendi, veri çoğaltma durdu, ancak İKİ negatif kâr arka arkaya geldiğinde, veri çoğaltması 10 ve 2-3 kez gerçekleşiyor. Aynı bilgiyi 100 kez veren orijinal döngümü yorumladı. Senin işçin.
 // это в глобальные переменные
datetime TimeStart; 

// это в init()

TimeStart=Time[ 0 ];

Kaybedilen bir ticaret gerçekleştiğinde bir kez yazdırılır

 
Herkese merhaba, Cuma günü saat 20:30'da pozisyonları kapatmak için bir fonksiyon ekledim

Ancak danışman, Cuma olduğunu görmüyor ve her gün pozisyonları kapatıyor.

böyle duruyor

 input bool      UseTimeLimitClose           = true ;     // -- Funktion ein/ausschalten --
enum daysOfWeek 
   { 
     Monday = 1 , 
     Tuesday = 2 , 
     Wednesday = 3 , 
     Thursday = 4 , 
     Friday = 5
   };
input   daysOfWeek closday          =     5 ;             // -- Handel bis Tag --
input int     Close_Hour            =   20 ;             // -- Handel bis Uhrzeit Std.--
input int     Close_min             =   30 ;



void OnTick () 

 if (UseTimeLimitClose)
     {
       MqlDateTime TimeNow;
       TimeToStruct ( TimeCurrent (),TimeNow);
       if   ( TimeNow.day_of_week >= closday  && TimeNow.hour >= Close_Hour && TimeNow.min >= Close_min  ) 
       {
          CloseAllPositions();
       }     

 
Eugen8519 :
Herkese merhaba, Cuma günü saat 20:30'da pozisyonları kapatmak için bir fonksiyon ekledim

Ancak danışman, Cuma olduğunu görmüyor ve her gün pozisyonları kapatıyor.

böyle duruyor

 void OnTick () 

 if (UseTimeLimitClose)
     {
      if   ( TimeDayOfWeek(TimeCurrent()) ==closday   && TimeHour(TimeCurrent()) >= Close_Hour && TimeMinute(TimeCurrent()) >= Close_min  ) 
       {
          CloseAllPositions();
       }     
 

Lütfen bana bunu harici bir değişkene nasıl koyacağımı söyler misiniz?

 double levelss[ 7 ] = { 0 , 0.236 , 0.382 , 0.5 , 0.618 , 1 , 1.618 }; // Уровни Fibo