Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Sporadik hataların %95'i başlatma hataları veya bunların eksikliği ile ilgilidir. Yani bir kod parçası yardımcı olmayacak, ama her şeyi vermeyecek çünkü paranoya. ;-)
Sebep, tezahür yerinden çok uzakta aranmalıdır ve aftarın geliştiriciler için infaz talep etmesi daha kolaydır. Bu kesinlikle yardımcı olacaktır.
// Gerçek yardım edecek mi falkov ? :)
Süper! Bu yardımcı olmalı gibi görünüyor! :)
Başlatmayı aptalca HER YERDE VE HER ZAMAN yapıyorum! Birkaç satırdan sonra bile bir değişkene bir değer atadım. Kendim için bir demir kural belirledim - bir değişken bildirirken, onu sıfır veya boş bir dize ile başlatmak aptalca :)
Paranoya konusunda kesinlikle haklısın!
Metadriver, sen bir Şamansın!
Süper! Bu yardımcı olmalı gibi görünüyor! :)
Başlatmayı aptalca HER YERDE VE HER ZAMAN yapıyorum!
inanmıyorum! Bu sefer kesinlikle kaçırdım. :)
// Gerçekten tekrar kontrol edin, kodun tamamına bu açıdan bakın.
// Kişinin kendi esneme algısını filtreleyebilen "HER YERDE VE HER ZAMAN" inancıdır, çünkü "HER ZAMAN...!!" :))
:)
inanmıyorum! Bu sefer kesinlikle kaçırdım. :)
// Gerçekten tekrar kontrol edin, kodun tamamına bu açıdan bakın.
// Kişinin kendi esneme algısını filtreleyebilen "HER YERDE VE HER ZAMAN" inancıdır, çünkü "HER ZAMAN...!!" :))
Şaman diyorum! Hafta sonu boyunca tüm danışman dosyalarını kontrol ettim (birkaç bin satır). Gerçekten de, eski kütüphanelerde iki veya üç başlatılmamış değişken buldum.
Benim kuralım , işlev gövdesinin başında TÜM değişkenleri bildirmek (bu her zaman böyle olmuştur) ve bunları hemen başlatmak (muhtemelen geçen yıl)
Kendimi bir çaydanlık olarak görmüyorum - yüzden fazla farklı dizin / senaryo / danışman yazıldı :)
Sonra buzda balık gibi dövüşüyorum - yerini belirleyemiyorum! İşte, kendini vur!
Bu arada kod şu:
//Найти первое adblArray_Short х adblArray_Long ПОСЛЕ (позже) intShift_PastSearch (поиск от intShift_PastSearch до нулевого бара)
void FindCrossArrays_PastThisShift(structS & structSled) {
datetime adtmDTM[];
int intShift=0;
if(structSled.intShift_PastSearch>_cintBarsAmountForCalc) {return;}
else if(structSled.intShift_PastSearch<=0) {return;}
ArrayResize(adtmDTM,structSled.intBarsAmountForCalc);
ArrayInitialize(adtmDTM,0);
ArraySetAsSeries(adtmDTM,true);
CopyTime(structSled.strSymbol,structSled.enumTF,0,structSled.intShift_PastSearch+1,adtmDTM);
intShift=structSled.intShift_PastSearch;
▼ - вот здесь ошибка - array out of range in '_indMyAO_from_SetPeriod.mq5' (390,37)
while(structSled.adblArray_Short[intShift]==structSled.adblArray_Long[intShift] && intShift>1) {intShift--;}
if(structSled.adblArray_Short[intShift]>structSled.adblArray_Long[intShift]) {
while(structSled.adblArray_Short[intShift]>structSled.adblArray_Long[intShift] && intShift>0) {intShift--;}
if(intShift>0) {
structSled.intRet_FindingDirection=-1;
structSled.intRet_FindingShift=intShift;
}
else {
structSled.intRet_FindingDirection=0;
structSled.intRet_FindingShift=intShift;
}
}
else if(structSled.adblArray_Short[intShift]<structSled.adblArray_Long[intShift]) {
while(structSled.adblArray_Short[intShift]<structSled.adblArray_Long[intShift] && intShift>0) {intShift--;}
if(intShift>0) {
structSled.intRet_FindingDirection=1;
structSled.intRet_FindingShift=intShift;
}
else {
structSled.intRet_FindingDirection=0;
structSled.intRet_FindingShift=intShift;
}
}
structSled.dtmRet_FindingDTM=adtmDTM[structSled.intRet_FindingShift];
return;
}
//-------------------------------------------------------------------------------------------------
hmm, neden sınır dışı diziyi kontrol etmiyorsunuz intShift=structSled.intShift_PastSearch;
intShift'iniz dizinin dışındaysa, while(structSled.adblArray_Short[intShift]==structSled.adblArray_Long[intShift] && intShift>1) {intShift--;}
hemen bir hataya neden olur, çünkü kod soldan sağa yürütülecek ve structSled.adblArray_Short[intShift] öğesine && intShift>1'den önce erişilecektir.
intShift=structSled.intShift_PastSearch'ten sonra bir kontrol koyun; ve sonra dizi sınırların dışındaysa çıktı alın, ardından Print(Yaşasın! İşe yaradı!);
bunun gibi bir şey
Biliyor musun, adını bu formda derlemeye çalıştım, çok yemin ediyor.
' PositionGetInteger ' - sabit beklenen order.mq5 65 44 Sabit kelimesini görüyorum. Ama neye ihtiyacı var? İlk satırdaki fonksiyon üzerindedir.
Ve bunun gibi diğer tüm değişken bildirimleri için, ancak işlevi yardıma göre ilan ettim mi?
'price' - order.mq5 65 92 parametresi için varsayılan değer eksik