bool busy=false;
int start()
{
int counted_bars= IndicatorCounted ();
if (counted_bars< 0 ) return (- 1 );
limit= Bars -counted_bars+ 1 ;
limit= MathMin (bBars- 1 , limit);
if ( IndicatorCounted ()> 0 ) limit= 1 ;
FileWrite(han, TimeToStr ( TimeCurrent (), TIME_MINUTES | TIME_SECONDS ), Bars , IndicatorCounted ());
FileFlush (han);
//if(busy=false) return(0);
for (i= 0 ; i<limit; i++)
{
busy= true ;
FileWrite(han, TimeToStr(TimeCurrent(), TIME_MINUTES|TIME_SECONDS), DoubleToStr(i, 0), DoubleToStr(IndicatorCounted(), 0));FileFlush(han);
Здесь идут сложные вычисления которые занимают минуты 3
}
busy=false;
}
M1 grafiğine atıyorum. Gösterge, sözde hesaplamaları gerçekleştirerek terminal ile birlikte asılı kalır. 15 dakika sonra zorla kapatıyorum, günlüğü açıyorum ve şunu görüyorum:
Göstergenin ilk kez hesaplayana kadar yeni gelen kenelere (mantıksal olarak) tepki vermediği ortaya çıktı. ANCAK! Oluştururken, terminale IndicatorConted()'in zaten 0'dan farklı bir değer atanması gerektiğini söylemeyi unutuyor. Yani, bir yanlış hesaplama için sıraya giren yeni gelen kenelerin, IndicatorCounted()???
Meşgul değişkeni aracılığıyla kontrol etmeye çalıştı (yorumlanan satır - aynı sonuç).
Ne oluyor? Sistemin IndicatorCounted() öğesine yeni bir değer yazmak için zamanı yok mu? Yani, uyku () gibi bir şey mi yapmanız gerekiyor? Göstergede imkansız olduğunu biliyorum) Veya yeni bir tick geldiğinde, eskisi henüz hesaplamaları bitirmediği için IndicatorCounte()'nin hala sıfıra eşit olduğunu hatırlar ve zamanı geldiğinde IndicatourCounted()=0'ın eski değerine göre saymaya başlar. ?
peace1984 : Bu benim ilk deneyimim, kesinlikle yargılamayın :)
Dürüst olmak gerekirse, bana öyle geliyor ki, test eden kişi değişkenin geçmiş değerini - son testten - hatırlıyor. Nasıl - HZ, bilgi almak için çok az zaman var. Belki bir terminal hatası. Sadece koda bir yorum ekledim ve değerleri günlüğe çıkardım. Her yeni test çalıştırmasında, önceki testin değerinin sys değişkeninde depolandığı ortaya çıktı. Bir çeşit incir. Belki başkası görür, belki gözlerim bulanık...
AlexeyVik : Bu herşeyi açıklıyor. Bu kod gibi bir şeye, bu cevap gibi bir şeye ... ha ?
Mesele şu ki, kodun geri kalanı önemli değil. Hatanın özü bu parçada açıklanmıştır. Genel olarak, insanları büyük bir gönderiyle korkutmaktan korktum. Ve böylece patlattı.
Kısaca şu şekilde formüle edilebilir: Göstergenin hesaplanması uzun bir süre için (bir dakikadan fazla) hesaplanırsa, IndicatorCounted() sürekli olarak 0 döndürür.
artmedia70 : Dürüst olmak gerekirse, bana öyle geliyor ki, test eden kişi değişkenin geçmiş değerini - son testten - hatırlıyor. Nasıl - HZ, bilgi almak için çok az zaman var. Belki bir terminal hatası. Sadece koda bir yorum ekledim ve değerleri günlüğe çıkardım. Her yeni test çalıştırmasında, önceki testin değerinin sys değişkeninde depolandığı ortaya çıktı. Bir çeşit incir. Belki başkası görür, belki gözlerim bulanık...
Sadece satırı unuttun
int sys=(Sys< 0 )? 0 :Sys;
gösterge özellikleri tekrar çağrıldığında yürütülmez.
Tam olarak araştırmadım, ama belki istenen sonuç bu şekilde elde edilir?
externint Sys= 0 ;
int sys; // изменено
double opb;
double ops;
double cb;
double cs;
double lot;
double next_order;
int i= 0 ;
int x;
double max;
double min;
int ticket;
int tip;
int count;
bool res;
double bal;
double sl;
datetime d;
double N;
//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
sys=(Sys< 0 )? 0 :Sys; // добавлено
bal= AccountBalance ();
return ( 0 );
}
gösterge özellikleri tekrar çağrıldığında yürütülmez.
Tam olarak araştırmadım, ama belki istenen sonuç bu şekilde elde edilir?
Temelde bir danışman. Ama HZ, deneyler için zaman yok. Yazdığım gibi tüm danışmanlarım var, çalışıyorlar. Bu saçmalığı test cihazında izlemek gerekli olacak. Zamanı geldiğinde.
Mesele şu ki, kodun geri kalanı önemli değil. Hatanın özü bu parçada açıklanmıştır. Genel olarak, insanları büyük bir gönderiyle korkutmaktan korktum. Ve böylece patlattı.
Kısaca şu şekilde formüle edilebilir: Göstergenin hesaplanması uzun bir süre için (bir dakikadan fazla) hesaplanırsa, IndicatorCounted() sürekli olarak 0 döndürür.
Evet, mesele bu değil. Kimsenin tam gizli kodunuza ihtiyacı yok. Sadece bu yanlış anlaşılmanın olacağı eksiksiz bir test kodu parçası yazın. Ve bu yüzden
Hangi programcıdan geldiğini bilmiyorum ama burada bir şeyler çok yetersiz yazılmış... Size bir taş atılmamış. Sen de diğerleri gibi kodu aldın ve düzenlemeye çalıştın...
counted_bars değişkeni, son gösterge çağrısından bu yana değişmeyen çubukların sayısına eşitse (ilk satır)
if(counted_bars < 0) tarafından kontrol edilmesinin nasıl sıfırdan küçük olabileceğini asla anlayamayacağım...
Ayrıca, saçmalık, ama bunu çözmek için şimdiden tembelim ...
artmedia70 : Temelde bir danışman. Ama HZ, deneyler için zaman yok. Yazdığım gibi tüm danışmanlarım var, çalışıyorlar. Bu saçmalığı test cihazında izlemek gerekli olacak. Zamanı geldiğinde.
Evet, tabii ki danışman. Sonra başka bir soru ortaya çıkıyor, danışman neden grafikte bir bodrum göstergesi olarak göründü? Ancak özü değiştirmez, hem göstergeyi hem de danışmanı yeniden başlatırken, global düzeydeki değişkenler yeniden başlatılmaz ve satır int sys=(Sys<0)?0:Sys; gerçekleştirilmez.
Selamlar! :)
Yaklaşık olarak aşağıdaki gösterge kodu vardır:
M1 grafiğine atıyorum. Gösterge, sözde hesaplamaları gerçekleştirerek terminal ile birlikte asılı kalır.
15 dakika sonra zorla kapatıyorum, günlüğü açıyorum ve şunu görüyorum:
Göstergenin ilk kez hesaplayana kadar yeni gelen kenelere (mantıksal olarak) tepki vermediği ortaya çıktı. ANCAK! Oluştururken, terminale IndicatorConted()'in zaten 0'dan farklı bir değer atanması gerektiğini söylemeyi unutuyor.
Yani, bir yanlış hesaplama için sıraya giren yeni gelen kenelerin, IndicatorCounted()???
Meşgul değişkeni aracılığıyla kontrol etmeye çalıştı (yorumlanan satır - aynı sonuç).
Bu şekilde denedim:
Doğal olarak, bu sefer her şey doğru çalıştı:

Ne oluyor? Sistemin IndicatorCounted() öğesine yeni bir değer yazmak için zamanı yok mu? Yani, uyku () gibi bir şey mi yapmanız gerekiyor? Göstergede imkansız olduğunu biliyorum)
Veya yeni bir tick geldiğinde, eskisi henüz hesaplamaları bitirmediği için IndicatorCounte()'nin hala sıfıra eşit olduğunu hatırlar ve zamanı geldiğinde IndicatourCounted()=0'ın eski değerine göre saymaya başlar. ?
Genel olarak, nasıl olunur? )
Selamlar! :)
Yaklaşık olarak aşağıdaki gösterge kodu vardır:
Bu benim ilk deneyimim, kesinlikle yargılamayın :)
Bu herşeyi açıklıyor. Bu kod gibi bir şeye, bu cevap gibi bir şeye ... ha ?
Mesele şu ki, kodun geri kalanı önemli değil. Hatanın özü bu parçada açıklanmıştır.
Genel olarak, insanları büyük bir gönderiyle korkutmaktan korktum. Ve böylece patlattı.
Kısaca şu şekilde formüle edilebilir: Göstergenin hesaplanması uzun bir süre için (bir dakikadan fazla) hesaplanırsa, IndicatorCounted() sürekli olarak 0 döndürür.
Dürüst olmak gerekirse, bana öyle geliyor ki, test eden kişi değişkenin geçmiş değerini - son testten - hatırlıyor. Nasıl - HZ, bilgi almak için çok az zaman var. Belki bir terminal hatası. Sadece koda bir yorum ekledim ve değerleri günlüğe çıkardım. Her yeni test çalıştırmasında, önceki testin değerinin sys değişkeninde depolandığı ortaya çıktı. Bir çeşit incir. Belki başkası görür, belki gözlerim bulanık...
Sadece satırı unuttun
gösterge özellikleri tekrar çağrıldığında yürütülmez.
Tam olarak araştırmadım, ama belki istenen sonuç bu şekilde elde edilir?
Sadece satırı unuttun
gösterge özellikleri tekrar çağrıldığında yürütülmez.
Tam olarak araştırmadım, ama belki istenen sonuç bu şekilde elde edilir?
Mesele şu ki, kodun geri kalanı önemli değil. Hatanın özü bu parçada açıklanmıştır.
Genel olarak, insanları büyük bir gönderiyle korkutmaktan korktum. Ve böylece patlattı.
Kısaca şu şekilde formüle edilebilir: Göstergenin hesaplanması uzun bir süre için (bir dakikadan fazla) hesaplanırsa, IndicatorCounted() sürekli olarak 0 döndürür.
Evet, mesele bu değil. Kimsenin tam gizli kodunuza ihtiyacı yok. Sadece bu yanlış anlaşılmanın olacağı eksiksiz bir test kodu parçası yazın. Ve bu yüzden
seçilen satırı zarem yaptığınızda??? Telepatlar yardım etmeyecek, sadece ölümlüler ve hatta daha fazlası ...
Daha sonra bu kısım
Hangi programcıdan geldiğini bilmiyorum ama burada bir şeyler çok yetersiz yazılmış... Size bir taş atılmamış. Sen de diğerleri gibi kodu aldın ve düzenlemeye çalıştın...
counted_bars değişkeni, son gösterge çağrısından bu yana değişmeyen çubukların sayısına eşitse (ilk satır)
if(counted_bars < 0) tarafından kontrol edilmesinin nasıl sıfırdan küçük olabileceğini asla anlayamayacağım...
Ayrıca, saçmalık, ama bunu çözmek için şimdiden tembelim ...
Sadece satırı unuttun
gösterge özellikleri tekrar çağrıldığında yürütülmez.
Tam olarak araştırmadım, ama belki istenen sonuç bu şekilde elde edilir?
bunu denedim.. çalışmıyor..
Temelde bir danışman. Ama HZ, deneyler için zaman yok. Yazdığım gibi tüm danışmanlarım var, çalışıyorlar. Bu saçmalığı test cihazında izlemek gerekli olacak. Zamanı geldiğinde.
bunu denedim.. çalışmıyor..
Kodu EA'larda yeniden derledim ve çalıştırdım. Bir yorumda Sys parametresini değiştirdiğinizde bu değer değişir.