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
Zihinsel olarak , aktarımın kodun geri kalanını çalıştırmadan hemen yapılması gerektiği varsayılır. Böyle?
Aslında, TesterStop() testi hiç durdurmaz!
Zihne göre, kodun daha fazla yürütülmesini durdurmanız gerekirse, sadece return yazmanız yeterlidir ve devamı olmayacaktır. Ve TesterStop() ve ExpertRemove()
Ve ikinci fark edilen söve şu ki
tester_stop = false ;
tamamen yersiz.
Zihne göre, kodun daha fazla yürütülmesini durdurmanız gerekirse, sadece return yazmanız yeterlidir ve devamı olmayacaktır. Ve TesterStop() ve ExpertRemove()
Ve ikinci fark edilen söve şu ki
tamamen yersiz.
Bir sonraki olay OnTick() ?
OnTick()'ten nereden çıkabilirsiniz?
Neden yerinde değil? TesterStop() çalışırsa , yürütmenin bu satıra ulaşmaması bekleniyordu.
Bir sonraki olay OnTick() ?
OnTick()'ten nereden çıkabilirsiniz?
Neden yerinde değil? TesterStop() çalışırsa, yürütmenin bu satıra ulaşmaması bekleniyordu.
Nereye gidileceği ve neye devam edileceği geliştiricinin işidir.
Bu kodda, TesterStop() 'un yürütülüp yürütülmediğinden bağımsız olarak tester_stop bayrağı false olarak ayarlanacaktır.
Nereye gidileceği ve neye devam edileceği geliştiricinin işidir.
Bu kodda, TesterStop()'un yürütülüp yürütülmediğinden bağımsız olarak tester_stop bayrağı false olarak ayarlanacaktır.
Yani ben zaten bunu anladım)))
Soru şu - ne yapmalı? Test nasıl durdurulur? özellikle. Geliştiriciler, OnInit'te () INIT_PARAMETERS_INCORRECT kullanırsanız neredeyse yemin eder ve bu, genetiği omuz bıçaklarına koyar.
Bir çözüm bulundu, yakın zamana kadar hiçbir sorun yoktu. Ve şimdi ... sadece korkunç)))
Yine de OnTick()'ten nereden çıkabilirsiniz?
Yani ben zaten bunu anladım)))
Soru şu - ne yapmalı? Test nasıl durdurulur? özellikle. Geliştiriciler, OnInit'te () INIT_PARAMETERS_INCORRECT kullanırsanız neredeyse yemin eder ve bu, genetiği omuz bıçaklarına koyar.
Bir çıkış yolu buldum, ancak son kez sorun yoktu. Ve şimdi ... sadece korkunç)))
Peki, sorunun ne olduğunu anlarsan?
TesterStop yürütüldükten sonra tüm kodlar yürütülmez. Yani, işin derhal durdurulması sağlanacaktır. Ayrıca, tester_stop bayrağına odaklanarak ayarlamak zaten mümkündür ...
Ve başka bir soru: Ne tür bir sayı buldunuz? Eksi bir sürü dokuz, nedir bu? Fazladan hemorajik olmaya mı çalışıyorsun? Burası gerçekten korkutucu hale geldiği yer...
Peki, sorunun ne olduğunu anlarsan?
TesterStop yürütüldükten sonra tüm kodlar yürütülmez. Yani, işin derhal durdurulması sağlanacaktır. Ayrıca, tester_stop bayrağına odaklanarak ayarlamak zaten mümkündür ...
Ve başka bir soru: Ne tür bir sayı buldunuz? Eksi bir sürü dokuz, nedir bu? Fazladan hemorajik olmaya mı çalışıyorsun? Burası gerçekten korkutucu hale geldiği yer...
Eksi bir sürü dokuz - bu, çıkışın tam olarak TesterStop () tarafından yapıldığını belirlemek içindir. Bunu yalnızca INIT_PARAMETERS_INCORRECT yerine kullanıyorum. Bu nedenle, ondan sonraki her şey gerekli değildir. Ve şimdi tüm kodun yürütüldüğü ve bir sıfıra bölme hatasının ortaya çıktığı ortaya çıktı. Doğal olarak, dizinin boyutu 1 ise, ikincisinin değeri eksi birincisinin değeri her zaman sıfır olacaktır! Ve bu pervazdan , ah, üzgünüm, yanlış anlaşılmalara karşı sigortalı değildim.
İade eklemeye çalıştım ... Sadece biraz yanlış yerde))):
Sonunda:
sadece çıldırmak)))
Büyük bir TEŞEKKÜR EDERİM!!!
Eksi bir sürü dokuz - bu, çıkışın tam olarak TesterStop () tarafından yapıldığını belirlemek içindir. Bunu yalnızca INIT_PARAMETERS_INCORRECT yerine kullanıyorum. Bu nedenle, ondan sonraki her şey gerekli değildir. Ve şimdi tüm kodun yürütüldüğü ve bir sıfıra bölme hatasının ortaya çıktığı ortaya çıktı. Doğal olarak, dizinin boyutu 1 ise, ikincisinin değeri eksi birincisinin değeri her zaman sıfır olacaktır! Ve bu pervazdan , ah, üzgünüm, yanlış anlaşılmalara karşı sigortalı değildim.
İade eklemeye çalıştım ... Sadece biraz yanlış yerde))):
Sonunda:
sadece çıldırmak)))
Büyük bir TEŞEKKÜR EDERİM!!!
Teşekkürler, anladım zaten. Ama bu sorunu çözmez. MQL_TESTER_STOP sabiti veya dönüşü void'den bool'a değiştirerek çözülebilir.
Beklenmedik bir karar Alexey Viktorov tarafından önerildi. TesterStop()'tan sonra dönüşü kullanırsanız, her şey normale dönmüş gibi görünüyor. Bu kişisel olarak nasıl ve neden oluyor, yetişemiyorum ... Yine de ...
Buradan, bu noktayı belgelere ekleyin veya void'i bool olarak değiştirin.
not 2085'te bu sorunla karşılaştım. Ondan önce hiçbir sorun yoktu. Bana göre bu bir şey ifade ediyor mu? )))
Sergey, bunda beklenmedik bir şey yok. Aksine, her şey doğal ve tutarlıdır. Farklı durumlar var. Bazen danışman bitmeden olayın işlenmesini tamamlamak gerekir, bazen de sizin durumunuzda olduğu gibi acilen tamamlamanız gerekir. Bu nedenle, geliştiricilerin önünde, yapılacak doğru şeyin ne olduğu, kesin olarak kesintiye uğratılması, yürütmeyi tamamlaması gerekenlerden memnuniyetsizlik alması veya olay işlemenin tamamlanmasından sonra durması sorusu ortaya çıkıyor. Aynı zamanda, herhangi bir programcının cephaneliğinde bir geri dönüş ifadesi vardır ve zorla sonlandırılan hiçbir şey yoktur.
Ve void türünü hangi amaçla bool olarak değiştirmeniz gerekiyordu, çünkü yine programcının cephaneliğinde TesterStop()'tan önce veya sonra değiştirilebilen statik değişkenler var ve prensipte her şey istediğiniz gibi olacak. Ve nedense onu örneğimden attın.
Sergey, bunda beklenmedik bir şey yok. Aksine, her şey doğal ve tutarlıdır. Farklı durumlar var. Bazen danışman bitmeden olayın işlenmesini tamamlamak gerekir, bazen de sizin durumunuzda olduğu gibi acilen tamamlamanız gerekir. Bu nedenle, geliştiricilerin önünde, yapılacak doğru şeyin ne olduğu, kesin olarak kesintiye uğratılması, yürütmeyi tamamlaması gerekenlerden memnuniyetsizlik alması veya olay işlemenin tamamlanmasından sonra durması sorusu ortaya çıkıyor. Aynı zamanda, herhangi bir programcının cephaneliğinde bir geri dönüş ifadesi vardır ve zorla sonlandırılan hiçbir şey yoktur.
Ve void türünü hangi amaçla bool olarak değiştirmeniz gerekiyordu, çünkü yine programcının cephaneliğinde TesterStop()'tan önce veya sonra değiştirilebilen statik değişkenler var ve prensipte her şey istediğiniz gibi olacak. Ve nedense onu örneğimden attın.
Alex, yardımın için çok teşekkür ederim.
Geliştiricilerin karşılaştığı soruyu anlıyorum, bu yüzden böyle bir çözüm öneriyorum. Duruma uygun şekilde cevap verebilmek için.
Statik değişkenlere ve "attığım" örneğinize gelince ... Üzgünüm, ama ne hakkında olduğunu tam olarak anlamıyorum. Sakıncası yoksa açıkla.
Ve biraz hoşgörü ve sabır istiyorum. Şimdi çok kötü bir yaşam durumum var, çünkü çok sinirliyim (bunu anlıyorum ama şu ana kadar bu konuda hiçbir şey yapamam) ve dikkatli değilim.
Ve burada, genel olarak, yanlış anlamalar kayıyor. Kafa dönüşü...
Misal:
Kodumdan, dizinin son değeri eksi dizinin ilk değeri erken sıfırsa, sonucun -999999999999.88 olması gerektiği görülebilir.
Ve optimize ederken aşağıdaki sonucu alıyorum:
9587 - 10000 hiçbir şekilde sıfıra eşit değildir ve sonuç -999999999999.88'dir. Nasıl?!?!? zaten tıkandım...
Alex, yardımın için çok teşekkür ederim.
Geliştiricilerin karşılaştığı soruyu anlıyorum, bu yüzden böyle bir çözüm öneriyorum. Duruma uygun şekilde cevap verebilmek için.
Statik değişkenlere ve "attığım" örneğinize gelince ... Üzgünüm, ama ne hakkında olduğunu tam olarak anlamıyorum. Sakıncası yoksa açıkla.
Ve biraz hoşgörü ve sabır istiyorum. Şimdi çok kötü bir yaşam durumum var, çünkü çok sinirliyim (bunu anlıyorum ama şu ana kadar bu konuda hiçbir şey yapamam) ve dikkatli değilim.
Ve burada, genel olarak, yanlış anlamalar kayıyor. Kafa dönüşü...
Misal:
Kodumdan, dizinin son değeri eksi dizinin ilk değeri erken sıfırsa, sonucun -999999999999.88 olması gerektiği görülebilir.
Ve optimize edildiğinde aşağıdaki sonucu alıyorum:
9587 - 10000 hiçbir şekilde sıfıra eşit değildir ve sonuç -999999999999.88'dir. Nasıl?!?!? zaten tıkandım...
Bunun iyi mi yoksa kötü mü olduğunu bilmiyorum ama asla tüm kodu incelemem, bu yüzden statik bir değişkenden bahsettim. Ve tester_stop bayrağının programın farklı bölümlerinde kullanıldığına bakılırsa, bu bayrak global değişkenler düzeyinde bildirilmelidir.
Bu nedenle, örneğimden bayrağın değerindeki değişikliği düşüncesizce "attığınız" onaylandı.
İşte kullanım
if (tester_stop) return (- 99999999999. 99 );
Ve görünüşe göre bu bayrak ya hiç değişmiyor ya da değişikliğin olması gerektiği yerde sağlanmadığı için değişmiyor.
Bazen danışmanın bitiminden önce olayın işlenmesini tamamlamak gerekir.
Aynı zamanda, herhangi bir programcının cephaneliğinde bir geri dönüş ifadesi vardır ve zorla sonlandırılan hiçbir şey yoktur .
Bu bağlamda bir kontrol yapamaz mıyız?