mql5 - son işlemden bu yana belirli bir süre sonra dikey çizgi - sayfa 4

 
renatmt5 :
Bu arada eklediğiniz korumada şu nokta var. Değişkenlerin sıfıra eşit olduğu doğru değeri hesaplamadan önce 1-2 dakikalık bir gecikmem olduğundan, hızlı bir güncelleme için mevcut zaman dilimini başka bir zaman dilimine değiştiriyorum - değerler hemen yeniden hesaplanıyor. Muhtemelen, bu prensibe göre bir tür yazılım koltuk değneği yapmak mümkün mü?

"Koltuk" kelimesinden nefret ediyorum.


Her şeyi önceden düşündüm ve sorman çok iyi oldu. LastProfitForPeriod'u void'den bool'a yapmak gerekiyor. Ve herhangi bir hata varsa - örneğin, tarih alınmadı veya başka bir şey varsa, o zaman bir daire içinde false vb.

Yani bir dakika kaybı olmayacak.

 

"Yanlış" alırsak - zamanı sıfırlayın :

   double profit_last_day= 0.0 ,profit_last_deal= 0.0 ;
   if (!LastProfitForPeriod(profit_last_day,profit_last_deal))
     {
      ExtLastMove= 0 ;
       return (rates_total);
     }

   Comment ( "Profit last day: " , DoubleToString (profit_last_day, 2 ), "\n" ,
           "Profit last deal: " , DoubleToString (profit_last_deal, 2 ));


Sürüm 1.003

 
Vladimir Karputov :

"koltuk değneği" kelimesinden nefret ediyorum.


Her şeyi önceden düşündüm ve sorman çok iyi oldu. LastProfitForPeriod'u void'den bool'a yapmak gerekiyor. Ve herhangi bir hata varsa - örneğin, tarih alınmadı veya başka bir şey varsa, o zaman bir daire içinde false vb.

Yani bir dakika kaybı olmayacak.

"Değnek değneği" ile ilgili olarak - evet, bu kelimede programlamaya karşı bir tür dikkatsiz tutum var :)

Evet, kayıp dakikanın etkisi senaryonun v.3'ünde gitmişti.

 
renatmt5 :

"Değnek değneği" ile ilgili olarak - evet, bu kelimede programlamaya karşı bir tür dikkatsiz tutum var :)

Evet, kayıp dakikanın etkisi senaryonun v.3'ünde gitmişti.

Bu bir gösterge :)

 
Vladimir Karputov :

Bu bir gösterge :)

Evet, bu doğru - hala kafam karıştı.

 

son işlemin kapanışına göre zaman ofsetini hesaplamak için bir blok ekledi. Gelecekte satırı dengelemek için last_time ve n'yi kullanmaya çalıştığımda, derlerken bir hata alıyorum :(

.....

                    {

                     last_time=deal_time;

                     profit_last_deal=full_profit;

                    }

                 }

        }

     }

//-------------//     

// MY CODE     //   

//-------------//

if (profit_last_day<= 0 && profit_last_deal<= 0 ){ uint n= 60 * 60 * 24 ;}

else if (profit_last_day> 0 && profit_last_deal<= 0 ){ uint n= 60 * 60 * 2 ;}

else { uint n= 60 * 60 * 1 ;}

//-------------//     

// MY CODE END //   

//-------------//

   return ( true );

  }

.......
 
Her nasılsa kompakt olmayan kod parçasını yapıştırıyorum :)
 
Bir ObjectCreate (chart_ID, name, OBJ_VLINE , sub_window, time, 0) oluştururken, anladığım kadarıyla zaman değerini TimeCurrent() değil, last_time geleceğe bir nokta ile ofset olacak şekilde değiştirmem gerekiyor n'ye eşittir.
Veya nesneyi belirli sayıda çubukla ileri/geri hareket ettirme işlevi olabilir mi? Nasıl daha iyi? Ve sonra itiraf ediyorum, şimdiye kadar bağımsız girişimlerim başarılı olmadı :(
 
renatmt5 :
Bir ObjectCreate (chart_ID, name, OBJ_VLINE , sub_window, time, 0) oluştururken, anladığım kadarıyla zaman değerini TimeCurrent() değil, last_time geleceğe bir nokta ile ofset olacak şekilde değiştirmem gerekiyor n'ye eşittir.
Veya nesneyi belirli sayıda çubukla ileri/geri hareket ettirme işlevi olabilir mi? Nasıl daha iyi? Ve sonra itiraf ediyorum, şimdiye kadar bağımsız girişimlerim başarılı olmadı :(

Satır bir kez oluşturulur - OnInit() içinde.

Sonra sadece hareket ediyor - VLineMove

 

Kod parçasının son satırında değişiklik yapmamız gerektiğini doğru anlıyor muyum (özellikle zaman=0)?

 //+------------------------------------------------------------------+ 
//| Move the vertical line                                           | 
//+------------------------------------------------------------------+ 
bool VLineMove( const long    chart_ID= 0 ,   // chart's ID 
               const string name= "VLine" , // line name 
               datetime      time= 0 )       // line time 


Yoksa VLineMove hala bir yerde başlatılması gereken (örneğin OnCalculate 'de) ve gelen parametreleri ona ileten bir fonksiyon mu?
tamamen kafam karıştı :)