Nasıl kodlanır? - sayfa 308

 

Merhaba Mladen,

Stokastikte sizin tarafınızdan yapılmış bir koda rastladım. Ancak, onu sistemlerime taktığımda hiçbir şey olmuyor. Ne işe yaradığını seninle kontrol edebilir miyim?

http://www.forexmt4.com/mt_yahoo/Color%20Stochastic%20v1 [1].04.mq4

Saygılarımızla

teras

 

...

Burada yayınlananlardan bazılarını deneyin: https://www.mql5.com/en/forum/175297/page3

Veya burada: https://www.mql5.com/en/forum/177239/page2

Test edildi ve çalışıyorlar

tkuan77:
Merhaba Mladen,

Stokastikte sizin tarafınızdan yapılmış bir koda rastladım. Ancak, onu sistemlerime taktığımda hiçbir şey olmuyor. Ne işe yaradığını seninle kontrol edebilir miyim?

http://www.forexmt4.com/mt_yahoo/Color%20Stochastic%20v1 [1].04.mq4

Saygılarımızla

teras
 

Bu tuhaf.

Asma kilit konusunu biraz daha detaylı inceledim. Görünüşe göre bu benim UAC (Kullanıcı Hesabı Denetimi ) ayarlarımla ilgili, bu yüzden windows7 kontrol panelime girdim ve UAC'yi tamamen kapattım. Yeniden başlattığımda asma kilidin dosyadan ayrıldığını fark ettim. Açtım ve bu forumda yayınladığım dosyayla aynı. Aslında aynı dosya olmasına rağmen son birkaç haftadır yazdığım koddan tamamen farklı. Tüm kodlama çalışmalarımı kaybettiğimi sanıyordum. UAC'yi tekrar açtım ve yeniden başlattım, asma kilit geri dönmüştü ve yazdığım kod tekrar normale dönmüştü.

Ama sonra kodu derlemeye çalıştım ve bir sürü hata alıyor. Ancak aldığı hatalar bu koddan değil, UAC'yi kapattığımda tamamen farklı kod - Bunu biliyorum çünkü sadece diğer kodda yazılan değişkenleri alıyor.

Sanırım yeni bir EA açmam ve tüm bu kodu manuel olarak yazıp kaydetmem gerekecek.

 

...

Windows 7'de olağan bir sorundur (koruması ile birlikte)

Windows 7 altında bundan kaçınmanın en basit yolu, metatrader'ı C'den farklı bir bölüme kurmaktır ve bu tür hiçbir sorununuz olmayacaktır.

crsnape@btinternet.com:
Bu tuhaf.

Asma kilit konusunu biraz daha detaylı inceledim. Görünüşe göre bu benim UAC (Kullanıcı Hesabı Denetimi) ayarlarımla ilgili, bu yüzden windows7 kontrol panelime girdim ve UAC'yi tamamen kapattım. Yeniden başlattığımda asma kilidin dosyadan ayrıldığını fark ettim. Açtım ve bu forumda yayınladığım dosyayla aynı. Aslında aynı dosya olmasına rağmen son birkaç haftadır yazdığım koddan tamamen farklı. Tüm kodlama çalışmalarımı kaybettiğimi sanıyordum. UAC'yi tekrar açtım ve yeniden başlattım, asma kilit geri dönmüştü ve yazdığım kod tekrar normale dönmüştü.

Ama sonra kodu derlemeye çalıştım ve bir sürü hata alıyor. Ancak aldığı hatalar bu koddan değil, UAC'yi kapattığımda tamamen farklı kod - Bunu biliyorum çünkü sadece diğer kodda yazılan değişkenleri alıyor.

Sanırım yeni bir EA açmam ve tüm bu kodu manuel olarak yazıp kaydetmem gerekecek.
 

Sonunda düzgün çalışan bir EA elde ettim. Tam olması gerektiği gibi çalışıyor - Kodumu not defterine kopyaladım, UAC'yi çevirdim ve ardından yeni bir EA dosyasına yapıştırdım. Ve fonksiyonlarımın neden işe yaradığını çözdüm - normalleştirilmiş bir çiftin içine bir int değişkeni koymuştum. Bunu yapamayacağımı bilmiyordum ama şimdi anlıyorum - bunu anlamam sadece bir haftamı aldı! :/

Her neyse, şunu yazdım:

if (VariableRisk == true) Risk = GetRiskShort (LastOpenTicket, RiskShort);

if (DeğişkenRisk == yanlış) Risk = StatikRisk;

Ve bu şekilde kısaltılıp kısaltılamayacağını merak ediyordunuz?

if (DeğişkenRisk == doğru)

{

Risk = GetRiskShort (LastOpenTicket, RiskShort);

başka Risk = StatikRisk;

}

Ayrıca şunu da yazdım:

//--- Uzun olduğunda kar al pozisyonunu hesaplama işlevi

double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)

{

çift TPPriceUzun = 0;

if (AutoCalcTakeProfit == doğru)

{

Yenileme Oranları();

TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);

Print("Başarıyla hesaplanan kâr pozisyonunu alın");

dönüş (TPPriceLong);

}

if (AutoCalcTakeProfit == yanlış)

{

Yenileme Oranları();

TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);

Print("Statik kar al pozisyonu başarıyla hesaplandı");

dönüş (TPPriceLong);

}

}

Ve bu şekilde kısaltılıp kısaltılamayacağını merak ediyordunuz?

//--- Uzun olduğunda kar al pozisyonunu hesaplama işlevi

double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)

{

çift TPPriceUzun = 0;

Yenileme Oranları();

if (AutoCalcTakeProfit == doğru)

{

TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);

Print("Başarıyla hesaplanan kâr pozisyonunu alın");

başka TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);

Print("Statik kar al pozisyonu başarıyla hesaplandı");

dönüş (TPPriceLong);

}

Ve son bir soru, EA'ma biraz daha esneklik sağlamak için zaman çerçevelerimi harici değişkenler olarak tanımlamak istiyorum. Sinyal çizelgem D1 olacak ve tetik çizelgem H4 olacak. Yani harici değişkenler altında bunu yapabilir miyim:

harici int SignalChart = PERIOD_D1;

extern int TriggerChart = PERIOD_H4;

Ve sonra örneğin şunu yaparak referans verin:

SlowMACurrent = iMA(Symbol(), SignalChart, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

 

Bu kısım hakkında:

Ardından, örneğin şunu yaparak referans verin: SlowMACurrent = iMA(Symbol(), SignalChart, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

Evet, bu onu kullanmanın %100 doğru bir yoludur (kapalı bir çubuk kullandığınız noktaya kadar (bu örnekte shift 1 olarak ayarlanmıştır) ve testte kapalı bir çubuk kullanarak bundan kaçınacaksınız. çok zamanlı çerçevelemede açık çubuğu kullanmanın olağan tuzağı)

crsnape@btinternet.com:
Sonunda düzgün çalışan bir EA elde ettim. Tam olması gerektiği gibi çalışıyor - Kodumu not defterine kopyaladım, UAC'yi çevirdim ve ardından yeni bir EA dosyasına yapıştırdım. Ve fonksiyonlarımın neden işe yaradığını çözdüm - normalleştirilmiş bir çiftin içine bir int değişkeni koymuştum. Bunu yapamayacağımı bilmiyordum ama şimdi anlıyorum - anlamam sadece bir haftamı aldı! :/

Her neyse, şunu yazdım:

if (VariableRisk == true) Risk = GetRiskShort (LastOpenTicket, RiskShort);

if (DeğişkenRisk == yanlış) Risk = StatikRisk;

Ve bu şekilde kısaltılıp kısaltılamayacağını merak ediyordunuz?

if (DeğişkenRisk == doğru)

{

Risk = GetRiskShort (LastOpenTicket, RiskShort);

başka Risk = StatikRisk;

}

Ayrıca şunu da yazdım:

//--- Uzun olduğunda kar al pozisyonunu hesaplama işlevi

double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)

{

çift TPPriceUzun = 0;

if (AutoCalcTakeProfit == doğru)

{

Yenileme Oranları();

TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);

Print("Başarıyla hesaplanan kâr pozisyonunu alın");

dönüş (TPPriceLong);

}

if (AutoCalcTakeProfit == yanlış)

{

Yenileme Oranları();

TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);

Print("Statik kar al pozisyonu başarıyla hesaplandı");

dönüş (TPPriceLong);

}

}

Ve bu şekilde kısaltılıp kısaltılamayacağını merak ediyordunuz?

//--- Uzun olduğunda kar al pozisyonunu hesaplama işlevi

double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)

{

çift TPPriceUzun = 0;

Yenileme Oranları();

if (AutoCalcTakeProfit == doğru)

{

TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);

Print("Başarıyla hesaplanan kâr pozisyonunu alın");

başka TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);

Print("Statik kar al pozisyonu başarıyla hesaplandı");

dönüş (TPPriceLong);

}

Ve son bir soru, EA'ma biraz daha esneklik sağlamak için zaman çerçevelerimi harici değişkenler olarak tanımlamak istiyorum. Sinyal çizelgem D1 olacak ve tetik çizelgem H4 olacak. Yani harici değişkenler altında bunu yapabilir miyim:

harici int SignalChart = PERIOD_D1;

extern int TriggerChart = PERIOD_H4;

Ve sonra örneğin şunu yaparak referans verin:

SlowMACurrent = iMA(Symbol(), SignalChart, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
 

Merhaba, 4059 hata kodunu alıyorum:

[TD]Test modunda işleve izin verilmiyor.

ERR_FUNC_NOT_ALLOWED_IN_TESTING[/TD]

4059

Bir arama yaptım ama ne anlama geldiği hakkında daha fazla bilgi bulamıyorum?

 

Bu parabolik sar göstergesine aşağıdaki kodları eklemeye yardımcı olabilir misiniz?

Pip:
Teşekkürler Mladen,

Anlamak için yazınızı tekrar okuyacağım, dürüst olmak gerekirse, okurken biraz kayboldum ama büyük olasılıkla benim cehaletim oyuna giriyor. Sorularım olursa yayınlarım.

Teşekkürler dostum.

Şerefe,

pip

Sevgili arkadaşım,

BU PARABOLİK SAR uyarısı parabolic_alert_mod.mq4 GÖSTERGESİNE AŞAĞIDAKİ KODLARI EKLEMEYE YARDIMCI OLABİLİR MİSİNİZ?

EA aramıyorum. Mümkünse, en azından göstergeye SHIFT seçeneğini ekleyin.

harici çift TakeProfit = 50;

harici çift Lot = 0.1;

harici çift TrailingStop = 30;

harici çift SAR_Adım = 0.02;

harici çift SAR_Maksimum = 0,2;

dış çift Shift=1;

Dosyalar:
 

...

joelnelson

TakeProfit, Lots ve TrailingStop'un parabolik sar'ların nasıl hesaplandığıyla hiçbir ilgisi yoktur (bu parametreler, çalışmasında sar kullanan bir EA'dan açıkça alınmıştır). Yani bir EA aramıyorsanız, bu parametreleri anlamlı bir şekilde eklemek mümkün değildir.

Ayrıca. parametrelerdeki kayma, test edilen çubuğa atıfta bulunur (hareketli bir ortalama genellikle kaydırılabileceğinden parabolik SAR kaydırılmaz) Bu parametreler muhtemelen yerleşik bir sar'a bir çağrı içindir ve yerleşik sar aşağıdaki forma sahiptir

double iSAR([/TD] [TD] string sembolü, int zaman çerçevesi, double adım, double maksimum, int shift)

Shift 1 bu durumda parabolik sar'ın ilk kapalı çubuğunun değerini test etmek için mans

joelnelson:
Sevgili arkadaşım,

BU PARABOLİK SAR uyarısı parabolic_alert_mod.mq4 GÖSTERGESİNE AŞAĞIDAKİ KODLARI EKLEMEYE YARDIMCI OLABİLİR MİSİNİZ?

EA aramıyorum. Mümkünse, en azından göstergeye SHIFT seçeneğini ekleyin.

harici çift TakeProfit = 50;

harici çift Lot = 0.1;

harici çift TrailingStop = 30;

harici çift SAR_Adım = 0.02;

harici çift SAR_Maksimum = 0,2;

dış çift Shift=1;
 

...

Bu hata bazı işlevler tarafından döndürülebilir.

Testte bu hataya neden olabilecek işlevler şunlardır:

Pazar Bilgisi

Mesaj Kutusu

GönderFTP

Posta göndermek

Pencere Görünür

Pencere Bul

Pencere tutacağı

Bu nedenle, yukarıdaki işlevlerden bazılarına yapılan bir çağrı bu hataya neden oldu.

crsnape@btinternet.com:
Merhaba, 4059 hata kodunu alıyorum: [TD]Test modunda işleve izin verilmiyor.
ERR_FUNC_NOT_ALLOWED_IN_TESTING[/TD] 4059
Bir arama yaptım ama ne anlama geldiği hakkında daha fazla bilgi bulamıyorum?