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

 
artmedia70 :

Sorun değil: Kendinden sonra çöpü temizlemek bir görgü kuralıdır...

Sadece bu bağlamda, şu anda "çöpün" temizlenmesi gerektiğinin nasıl belirleneceği veya tam tersi: bu çöp değil - bu, daha fazla hesaplama için gerekli verilerdir.

Anladığım kadarıyla, deinit()'te kendinizden sonra temizlemeniz gerekiyor, ancak... sadece bir ticaret enstrümanının tablosu silindiğinde değil, Uzman Danışman ondan kaldırıldığında değil, aynı zamanda çalışan TF'de de yürütülüyor. değişti. Bu durumda, TF için birikmiş tüm veriler kaybolacak ve önceki zaman dilimine dönerken EA, sıfır dizi ile tekrar çalışmaya başlayacaktır. Danışmanın parametrelerinden herhangi birini değiştirdiğinizde de aynısı olacaktır.

Bazı durumlarda "çöp toplamanın" karmaşık bir mantıksal süreç olduğu ve bir dizinin boyutunda basit bir değişiklik olmadığı ortaya çıktı.


Zor değil. Döngüde dizi, değerlerle başlatıldı. Sonra ortaya çıkan diziyle çalıştık. İş bitince sıfır boyuna yapıyoruz. Şüpheniz varsa, bu kodun sonunda return(0)'dan hemen önce yapılabilir.
 

Lütfen bana günlük dosyasını okumak için kodun aşağıda olduğunu söyleyin. Tarihe göre geçerli günlük dosyası otomatik olarak okunur ve yazdırılır.

Neresi:

 while (result> 0 ) {

dosya parçalardan birleştirilir. Ama tüm dosyaya ihtiyacım yok, sadece son satıra ihtiyacım var. Düzeltmeme yardım et lütfen.

 void ReadWrite() {
   string tekTime=TimeStr1(CurTime(), 1 );
   string path= TerminalPath ()+ "\\logs\\" +tekTime+ ".log" ;
   string title= "Чтение из файла" ;
   string msg;
   int result;
   int handle=_lopen(path, 4 );
   if (handle< 0 ) {
      msg= "Ошибка открытия файла" ;
       //MessageBox(msg,title,MB_OK|MB_ICONERROR);
       Print (msg);
       return ;
   }
   result=_llseek (handle, 0 , 0 );
   string buffer= "" ;
   //string char="x                      ";
   string char = "x                                                                                                                                                                                                                                                         " ;
   int count= 0 ;
   result=_lread (handle, char , 250 );
   while (result> 0 ) {
      buffer=buffer+ char ;
       char = "x                                                                                                                                                                                                                                                         " ;
      count++;
      result=_lread (handle, char , 250 );
   }
   result=_lclose (handle);
   msg= StringTrimRight (buffer);
   //MessageBox(msg,title,MB_OK|MB_ICONINFORMATION);
   Print (msg);
}

//------------------расчет времени----------------
string TimeStr1( int taim, int tip)
{
   string sTaim;
   string sTaim1,sTaim2,sTaim3;
   if (tip== 1 ) 
   {
       int GD= TimeYear (taim);                  
       int MN= TimeMonth (taim);                  
       int DD= TimeDay (taim);  
      
      sTaim1 = DoubleToStr (GD, 0 );
       if (MN< 10 ) sTaim2 = StringConcatenate (sTaim2, "0" + DoubleToStr (MN, 0 ));
       else sTaim2 = StringConcatenate (sTaim2, DoubleToStr (MN, 0 ));
       if (DD< 10 ) sTaim3 = StringConcatenate ( "0" , DoubleToStr (DD, 0 ));
       else sTaim3 = DoubleToStr (DD, 0 );
      sTaim=sTaim1+sTaim2+sTaim3;
   }
   return (sTaim);
}
 
drknn :

Zor değil. Döngüde dizi değerlerle başlatıldı . Sonra ortaya çıkan diziyle çalıştık. İş bittiğinde sıfır uzunlukta yapın . Şüpheniz varsa, bu kodun sonunda return(0)'dan hemen önce yapılabilir.

anlaşılmadım.

Konuşma bağlamında (eğer bu konuşmanın ön koşullarını doğru anladıysam), döngü danışmanın kendisinin işidir . Sonuçta, her seferinde, bir onay işaretinin ortaya çıkmasıyla, yeni bir değer yazma ihtiyacına bağlı olarak dizi artar veya değişmeden kalır.

İşin bittiği nasıl belirlenir ve örneğin sadece bir kişi zaman dilimini değiştirmez? Evet, en azından tesadüfen... Bu deinit()'e neden olacak ve tüm veriler kaybolacak. EA, yeni TF'de ( yeni döngü ) elde edilen değerlere dayalı olarak bunları yeni bir şekilde biriktirmeye ( dinamik bir diziye yazmaya) başlayacaktır.

ben bu konuda.

 
artmedia70 :

anlaşılmadım.

Konuşma bağlamında (eğer bu konuşmanın ön koşullarını doğru anladıysam), döngü danışmanın kendisinin işidir . Sonuçta, her seferinde, bir onay işaretinin ortaya çıkmasıyla, yeni bir değer yazma ihtiyacına bağlı olarak dizi artar veya değişmeden kalır.

İşin bittiği nasıl belirlenir ve örneğin sadece bir kişi zaman dilimini değiştirmez? Evet, en azından tesadüfen... Bu deinit()'e neden olacak ve tüm veriler kaybolacak. EA, yeni TF'de ( yeni döngü ) alınan değerlere dayalı olarak bunları yeni bir şekilde biriktirmeye (dinamik bir diziye yazmaya) başlayacaktır.

ben bu konuda.

Ayrıntılara girerseniz, bu işlevi kullanabilirsiniz. Sıfırlamanın nedenini size söyleyecektir.
 

Terminalin bir özelliğini fark ettim. Sipariş karı hesaplaması OrderSwap()'ı hesaba katmaz.


Yani, bir siparişi kârla kapatmak için aşağıdaki formülü kullanmanız gerekir:

(OrderProfit()+OrderSwap()+OrderCommission())>0

Hiç bir komisyonla çalışmadım ve komisyon demoda kullanılmadığı için hesapta kontrol edemiyorum.

Hesaplarım doğru mu?

 
Zhunko :
Ayrıntılara girerseniz, bu işlevi kullanabilirsiniz. Sıfırlamanın nedenini size söyleyecektir.

çok doğru... :)

Onu unuttum. Şimdi, kusursuz kullanma alışkanlığımla, bom kullanımı...

 
artmedia70 :

ObjectGetValueByShift() size yardımcı olmak için

Ve onunla orada nasıl çalışacaksın - sadece sen biliyorsun ...


Teşekkürler, nazik insan!
 
İki soru.

1. double abc[10] dizisine double ab=a*b ilk ve sonraki değişkenleri nasıl yazılır/girilir?
2. Onbirinci değişken diziye nasıl yazılır, ilki silinir?

Değişkenlerin diziye yazılma sırası (doğrudan veya ters) önemli değildir. Aritmetik ortalamayı belirlemek için dizideki değişkenlere ihtiyaç vardır.
 
İnsanlar bana bekleyen bir siparişin çoğunu değiştirmenin mümkün olup olmadığını söyleyebilir mi?
 
Parn25 :
İnsanlar bana bekleyen bir siparişin çoğunu değiştirmenin mümkün olup olmadığını söyleyebilir mi?


Numara

değiştirilebilecek her şey burada açıklanmıştır https://docs.mql4.com/en/trading/OrderModify