MT4 kilitleniyor, tekrar start() işlevini çağırmıyor - sayfa 3

 
mt4forum :

Hayır, uyku() veya mesaj kutusu() kullanmıyorum, ancak MyInit() işlevinde yaklaşık 5 saniye süren çok iş yapıyorum.

Bunu günlük dosyasında görebilirsiniz:

2013.11.15 14:35:32 Test azaltıldı 1180990: USDJPY M15 DebugStart: InitialHistoryGapClosed
2013.11.15 14:35:32 Test azaltıldı 1180990: USDJPY M15 DebugMyInit başlıyor: <---------- iş başlıyor
2013.11.15 14:35:32 Test azaltıldı 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 1 nach CreateHistory()
2013.11.15 14:35:33 Test azaltıldı 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 2 nach CreateHistory()
2013.11.15 14:35:34 Test azaltıldı 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 3 nach CreateHistory()
2013.11.15 14:35:35 Test azaltıldı 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 4 nach CreateHistory()
2013.11.15 14:35:35 Test azaltıldı 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 5 nach CreateHistory()
2013.11.15 14:35:36 Test azaltıldı 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 6 nach CreateHistory()
2013.11.15 14:35:37 Test azaltıldı 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 7 nach CreateHistory()
2013.11.15 14:35:37 Test azaltıldı 1180990: USDJPY M15 DebugMyInit dönüş InitialMyInitCalls: 0 IndexCount: 8 <---------- çalışma biter
2013.11.15 14:35:37 Test azaltıldı 1180990: USDJPY M15 DebugStart: InitialGapFound'da son dönüş

Ama bu neden MT4'ü bundan sonra bir döngüye soksun?

Olmaz, ancak arayüz ipliğini bozarsınız ve MT4 kilitlenir. . . EA'da yaptığınız şeyi yapamaz mısınız?
 
Hepiniz sonsuz döngülerden bahsediyorsunuz ama kimse CreateHistory()'nin ne yaptığını merak etmiyor. Günlük çıktısına göre yalnızca son start() çalışmasında görünür.
 
Ovo :
Hepiniz sonsuz döngülerden bahsediyorsunuz ama kimse CreateHistory()'nin ne yaptığını merak etmiyor. Günlük çıktısına göre yalnızca son start() çalışmasında görünür.
Bir tür geçmiş kaydetme işlevi olduğunu varsaydım. . . OP göstermek istiyorsa, yapacaktır. . . Yapmadığını varsayıyorum ve yapsa bile muhtemelen ona yardım etmemize yardımcı olmayacak. En hızlı yol, birisinin ona yeni bir çift gözle bakabilmesi için kodunu göndermesidir. . . .
 
RaptorUK :
Bir tür geçmiş kaydetme işlevi olduğunu varsaydım. . . OP göstermek istiyorsa, yapacaktır. . . Yapmadığını varsayıyorum ve yapsa bile muhtemelen ona yardım etmemize yardımcı olmayacak. En hızlı yol, birisinin ona yeni bir çift gözle bakabilmesi için kodunu göndermesidir. . . .

Sorun değil, sonsuz döngünün terminalin askıda kalmasının tek nedeni olmayabileceğini belirtmek istedim. Özellikle komut dosyası bazı dosyaları değiştirirse.
 

mt4forum 2013.11.16 11:14


Ama bu neden MT4'ü bundan sonra bir döngüye soksun?

Günlük dosyanıza bakılırsa, zaten bir döngüdeymiş gibi görünüyor. 8'e ulaştıktan sonra ne olacak? Bir döngüde miydi, o döngüden çıktığını nereden biliyorsun? init() işlevine döndü mü?

Print("Başlat Başlat"); ve günlük dosyasında hiç görünmediği için start() işlevine hiç girmedi. Bu, init() işlevinden hiç çıkmadığını gösterir. Daha fazla Print() ifadesi koyun ve daraltın.

 

Öncelikle göstermiş olduğunuz yoğun ilgi için teşekkür eder, geç cevabım için kusura bakmayın.

Aşağıdaki girdilerde farklı yorumlara değineceğim.

 
RaptorUK :
Olmaz, ancak arayüz ipliğini bozarsınız ve MT4 kilitlenir. . . EA'da yaptığınız şeyi yapamaz mısınız?

Programı EA olarak çalıştırdım. Ya askıda kalıyor ya da MT4'ü çöküyor.

 
mt4forum :

Programı EA olarak çalıştırdım. Ya askıda kalıyor ya da MT4'ü çöküyor.

Herkesin yardım etme şansının yüksek olması için kodunuzu göndermeniz gerektiğini düşünüyorum. . .
 
Ovo :
Hepiniz sonsuz döngülerden bahsediyorsunuz ama kimse CreateHistory()'nin ne yaptığını merak etmiyor. Günlük çıktısına göre yalnızca son start() çalışmasında görünür.

CreateHistory() çok iş yapar. Döviz çiftleri ve zaman dilimleri arasında dolaşır ve çevrimdışı grafikler oluşturur.

Ancak günlük dosyası doğru şekilde tamamlandığını gösteriyor.

 
SDC :

Günlük dosyanıza bakılırsa, zaten bir döngüdeymiş gibi görünüyor. 8'e ulaştıktan sonra ne olacak? Bir döngüde miydi, o döngüden çıktığını nereden biliyorsun? init() işlevine döndü mü?

Print("Başlat Başlat"); ve günlük dosyasında hiç görünmediği için start() işlevine hiç girmedi. Bu, init() işlevinden hiç çıkmadığını gösterir. Daha fazla Print() ifadesi koyun ve daraltın.

8'e ulaştıktan sonra doğru şekilde init()'e döner.

Günlük dosyasındaki aşağıdaki satır bunu gösterir. "DebugMyInit return ...", MyInit() içindeki son hata ayıklama satırıdır.

2013.11.15 12:33:22 Test azaltıldı 395052: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 8

Günlük dosyasını oluşturmak için kendi yazdırma işlevimi kullanıyorum. Print("Start Started") bu günlük dosyasına yazdırmıyor.

Giriş

2013.11.15 12:33:22 Test azaltıldı 395052: USDJPY M15 DebugStart: InitialGapFound'da son dönüş

init() işlevinden çıktığını gösterir.

Hata ayıklama işlevimin tüm bilgileri doğru bir şekilde günlüğe kaydettiğine güvenebilirsem, günlük dosyası bize, son start() çalışmasından sonra,

start() çıkılır ve tekrar çağrılmaz. İşte sorun bu.