Hatalar, hatalar, sorular - sayfa 1781
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Kararsız yürütme
Eylemlerin sırası: 'Test_s.ex5' Komut Dosyasını M15 grafiğine birkaç kez ekleyin (EURUSD sembolü)
Sonuç:
2017.02.05 15:17:59.076 OnStart 1. kez katıldı
2017.02.05 15:18:03.293 OnStart 2. kez katıldı
2017.02.05 15:18:07.760 OnStart 3. kez katıldı
2017.02.05 15:18:07.778 OnInit
2017.02.05 15:18:07.781 AçıkDeinit:1
2017.02.05 15:18:16.891 OnStart 4. kez katıldı
Katılma sonuçları farklıdır. Sonucun rastgele olması dışında farklılık göstermemeleri bekleniyordu: OnInit\OnDeinit ile satır 1. kez ve belki de 10. kez görünebilir.
void OnInit () { Print ( __FUNCTION__ ); }
void OnDeinit ( const int reason ) { Print ( __FUNCTION__ , ":" , reason ); }
int OnCalculate ( const int , const int , const int , const double & [] ) { return 0 ; }
#import "..\\Experts\\Test.ex5"
void OnInit ();
#import
void OnStart ()
{
Print ( __FUNCTION__ );
OnInit ();
}
uzman dosyası ekte (aslında kitaplık olarak kullanılıyor), kod burada https://www.mql5.com/en/forum/1111/page1801#comment_4059227
Benim hatam mı yoksa terminalin mi hatası bilmiyorum.
5. işarette{
double A= 1.11111 ;
double B= 1.11111 ;
double C= 1.11111 ;
long CalcX=
NormalizeDouble (A, Digits )* MathPow ( 10 ,( Digits + 1 )* 3 - 1 )+
NormalizeDouble (B, Digits )* MathPow ( 10 ,( Digits + 1 )* 2 - 1 )+
NormalizeDouble (C, Digits )* MathPow ( 10 ,( Digits + 1 )* 1 - 1 );
Print ( "CalcX=" ,CalcX);
}
CalcX=1111111111111111104 beklenen değeri yazdırır CalcX=1111111111111111111
Grafik periyodunu değiştirirken yanlış fonksiyon çağrıları sırası
sıralama:
Bir grafiğe gösterge eklemenin ve bir göstergeyi grafikten çıkarmanın eşzamanlı olmayan işlemler olduğunu burada eklemek kalır.
Ayrıca, zaman çerçevesi değiştirilirken, gösterge bu zaman çerçevesinden hemen boşaltılmaz. Yeni bir zaman diliminde göstergenin yeni bir kopyası oluşturulurken. Yapıcı-yıkıcınızda baskılar görüyorum, yıkıcının hemen çağrıldığını varsayıyor musunuz? Hayır hatalısın. Yıkıcı, gösterge boşaltıldığında çağrılır ve gösterge boşaltıldıktan sadece birkaç saniye sonra gösterge boşaltılır.
Günlükleri göster. Zamanı görmek için.
Bir grafiğe gösterge eklemenin ve bir göstergeyi grafikten çıkarmanın eşzamanlı olmayan işlemler olduğunu burada eklemek kalır.
Ayrıca, zaman çerçevesi değiştirilirken, gösterge bu zaman çerçevesinden hemen boşaltılmaz. Yeni bir zaman diliminde göstergenin yeni bir kopyası oluşturulurken. Yapıcı-yıkıcınızda baskılar görüyorum, yıkıcının hemen çağrıldığını varsayıyor musunuz? Hayır hatalısın. Yıkıcı, gösterge boşaltıldığında çağrılır ve gösterge boşaltıldıktan sadece birkaç saniye sonra gösterge boşaltılır.
Adımlar arasında yeterli zaman geçtiği varsayılır (grafik periyodundaki değişiklikler)
2017.02.05 19:49:49.984 I::I->M5 #adım 1: ekle
2017.02.05 19:49:49.984 OnInit->M5
2017.02.05 19:51:39.853 I::I->M15 #adım 2: değişim periyodu M5 ->M15
2017.02.05 19:51:39.853 OnInit->M15
2017.02.05 19:53:29.813 OnDeinit->M15:3 #adım 3: değişim periyodu M15->M30
2017.02.05 19:53:29.813 I::~I->M15
2017.02.05 19:53:29.864 I::I->M30
2017.02.05 19:53:29.864 OnInit->M30
2017.02.05 19:54:03.245 OnDeinit->M30:3 #adım 4: değişim periyodu M30->H1
2017.02.05 19:54:03.245 I::~I->M30
2017.02.05 19:54:03,286 I::I->H1
2017.02.05 19:54:03.286 OnInit->H1
2017.02.05 19:55:02.984 I::I->H4 #adım 5: değişim periyodu H1 ->H4
2017.02.05 19:55:02.984 OnInit->H4
2017.02.05 19:55:02.984 OnDeinit->H1:3
2017.02.05 19:55:02.984 I::~I->H1
2017.02.05 19:55:50.697 I::I->D1 #adım 6: değişim periyodu H4 ->D1
2017.02.05 19:55:50.697 OnInit->D1
2017.02.05 19:55:50.697 OnDeinit->H4:3
2017.02.05 19:55:50.697 I::~I->H4
2017.02.05 19:56:11.122 OnDeinit->M5: 1 #adım 7: sil
2017.02.05 19:56:11.122 I::~I->M5
2017.02.05 19:56:11.122 OnDeinit->D1:1
2017.02.05 19:56:11.123 I::~I->D1
Eşzamansızlık yalnızca bir adımdaki farklı işlev çağrıları sırasını etkiler (3 ve 5 numaralı adımlarda görüldüğü gibi)
Gördüğünüz gibi, ilki (adım #2: iki satır çıktı) hariç, grafik periyodundaki tüm sonraki değişiklikler beklendiği gibi gerçekleşir (3. adıma benzer: dört satır çıktı). Ve neden harita periyodunun ilk değişikliği diğerlerinden farklı olsun? Nasıl daha iyi/daha kötü? Neden 2. adımdaki (ve yalnızca ondan gelen) iki eksik çıktı satırı 7. adıma geçti (kırmızıyla vurgulanmıştır)?
Benim hatam mı yoksa terminalin mi hatası bilmiyorum.
CalcX=1111111111111111104 beklenen değeri yazdırır CalcX=1111111111111111111
Adımlar arasında yeterli zaman geçtiği varsayılır (grafik periyodundaki değişiklikler)
2017.02.05 19:49:49.984 I::I->M5 #adım 1: ekle
2017.02.05 19:49:49.984 OnInit->M5
2017.02.05 19:51:39.853 I::I->M15 #adım 2: değişim periyodu M5 ->M15
2017.02.05 19:51:39.853 OnInit->M15
2017.02.05 19:53:29.813 OnDeinit->M15:3 #adım 3: değişim periyodu M15->M30
2017.02.05 19:53:29.813 I::~I->M15
2017.02.05 19:53:29.864 I::I->M30
2017.02.05 19:53:29.864 OnInit->M30
2017.02.05 19:54:03.245 OnDeinit->M30:3 #adım 4: değişim periyodu M30->H1
2017.02.05 19:54:03.245 I::~I->M30
2017.02.05 19:54:03,286 I::I->H1
2017.02.05 19:54:03.286 OnInit->H1
2017.02.05 19:55:02.984 I::I->H4 #adım 5: değişim periyodu H1 ->H4
2017.02.05 19:55:02.984 OnInit->H4
2017.02.05 19:55:02.984 OnDeinit->H1:3
2017.02.05 19:55:02.984 I::~I->H1
2017.02.05 19:55:50.697 I::I->D1 #adım 6: değişim periyodu H4 ->D1
2017.02.05 19:55:50.697 OnInit->D1
2017.02.05 19:55:50.697 OnDeinit->H4:3
2017.02.05 19:55:50.697 I::~I->H4
2017.02.05 19:56:11.122 OnDeinit->M5:1 #adım 7: sil
2017.02.05 19:56:11.122 I::~I->M5
2017.02.05 19:56:11.122 OnDeinit->D1:1
2017.02.05 19:56:11.123 I::~I->D1
Eşzamansızlık yalnızca bir adımdaki farklı işlev çağrıları sırasını etkiler (3. ve 5. adımlarda görüldüğü gibi)
Gördüğünüz gibi, ilki (2. adım) hariç, grafik periyodundaki sonraki tüm değişiklikler beklendiği gibi gerçekleşir (3. adıma benzer şekilde). Ve neden harita periyodunun ilk değişikliği diğerlerinden farklı olsun? Nasıl daha iyi/daha kötü?
M5 grafiğinde bazı göstergeler var. Zaman çerçevesini M5'ten M15'e değiştirirken, aynı göstergenin ikinci bir kopyası oluşturulur. Her iki göstergeye de bir komut gönderilir - ilki M5 Deinit'te, ikincisi M15 Init'te. Aynı zamanda, bu komutlardan hangisinin diğerinden önce yürütüleceği önceden bilinmiyor - burada farklı iplikler arasında klasik yarışlar var.
Bundan sonra, ilk gösterge için kullanım sayacı azaltılacaktır. Kullanım sayacı sıfırlandıktan birkaç saniye sonra gösterge tablodan kaldırılacaktır. Bu durumda, bu göstergenin global nesnelerinin yıkıcıları çağrılır.
tekrar açıklamaya çalışacağım
M5 grafiğinde bazı göstergeler var. Zaman çerçevesini M5'ten M15'e değiştirirken, aynı göstergenin ikinci bir kopyası oluşturulur. Her iki göstergeye de bir komut gönderilir - ilki M5 Deinit'te, ikincisi M15 Init'te. Aynı zamanda, bu komutlardan hangisinin diğerinden önce yürütüleceği önceden bilinmiyor - burada farklı iplikler arasında klasik yarışlar var.
Bundan sonra, ilk gösterge için kullanım sayacı azaltılacaktır. Kullanım sayacı sıfırlandıktan birkaç saniye sonra gösterge tablodan kaldırılacaktır. Bu durumda, bu göstergenin global nesnelerinin yıkıcıları çağrılır.
Zaman çerçevesini M5'ten M15'e değiştirirken, ilk göstergeye (ve sadece ona - bu durumda M5) hiçbir M5 Deinit komutunun gönderilmediğini ve şu ana kadar grafikten boşaltılmayacağını iddia ediyorum (ve bunu kontrol etmeyi öneriyorum). kullanıcı uzmanı siler
'Test_i.ex5' içindeki yapı I hariç tutulursa (etkilemez), çıktı basitleştirilir:
2017.02.05 20:49:06.842 OnInit->M5
2017.02.05 20:49:21.253 OnInit->M15 (*) dönem değişikliği M5 -> M15: gösterge M5 yüksüz değil
2017.02.05 20:56:40.001 OnDeinit->M15:3 periyot değişikliği M15 -> M30: gösterge M15 hemen boşaltılır
2017.02.05 20:56:40.132 OnInit->M30
(*) üzerinden 5 dakikadan fazla zaman geçti ve M5 göstergesi boşaltılmadı
Uzmanı grafikten çıkarma
2017.02.05 20:57:35.176 OnDeinit->M5:1 göstergesi M5 yalnızca uzman silindikten sonra kaldırılır
2017.02.05 20:57:35.177 OnDeinit->M30:1
tekrar açıklamaya çalışacağım
M5 grafiğinde bazı göstergeler var. Zaman çerçevesini M5'ten M15'e değiştirirken, aynı göstergenin ikinci bir kopyası oluşturulur. Her iki göstergeye de bir komut gönderilir - ilki M5 Deinit'te, ikincisi M15 Init'te. Aynı zamanda, bu komutlardan hangisinin diğerinden önce yürütüleceği önceden bilinmiyor - burada farklı iplikler arasında klasik yarışlar var.
Bundan sonra, ilk gösterge için kullanım sayacı azaltılacaktır. Kullanım sayacı sıfırlandıktan birkaç saniye sonra gösterge tablodan kaldırılacaktır. Bu durumda, bu göstergenin global nesnelerinin yıkıcıları çağrılır.
Bill Williams tarafından göstergeleri kurarken hatalar
fraktalları koy - koy
AO koy - ADX koy
1031 inşa
Önemli ondalık basamak sayısı iki katına çıkarsa > DBL_DIG=15 , o zaman olağan kurallar - çalışmaz
Ve hangileri çalışıyor?
Yardım, uzun süre için maksimum değerin 9223372036854775807 olduğunu söylüyor - açıkçası buna ulaşamıyorum.