Nasıl kodlanır? - sayfa 301

 

Merhaba Mladen,

Açıklama için teşekkürler, ancak ilk kapalı çubuk değeri ile ne demek istiyorsunuz? İlk kapalı çubuk değeri mi yoksa mevcut çubuklar mı yoksa sonrası mı? O zaman akım+0 veya akım+1'in anlamı ne olacak?

Saygılarımızla

teras

mladen:
teras

MODE_MAIN, stokastik çizginin değerini okuduğunuz anlamına gelir. MODE_SIGNAL, stokastik sinyal çizgisinin değerini okuduğunuz anlamına gelir.

SHIFT itibariyle: her indccator (özel olanlar bile) için aynıdır. Örnek olarak : SHIFT=0 mevcut çubuk değeri anlamına gelir, SHIFT=1 ilk kapalı çubuk değeri anlamına gelir ve bu böyle devam eder...
 

...

teras

Mevcut çubuk tanım gereği hala kapalı bir çubuk değil

Geçerli çubuktan önceki ilk çubuk, ilk kapalı çubuktur

tkuan77:
Merhaba Mladen,

Açıklama için teşekkürler, ancak ilk kapalı çubuk değeri ile ne demek istiyorsunuz? İlk kapalı çubuk değeri mi yoksa mevcut çubuklar mı yoksa sonrası mı? O zaman akım+0 veya akım+1'in anlamı ne olacak?

Saygılarımızla

teras
 

Merhaba Mladen,

Yani şunu söylemekte haklı mıyım:

akım+0, 0 değeriyle aynıdır,

akım+1, 1 değeriyle aynıdır,

akım+2, 2 değeriyle aynıdır,

ve benzeri ..... SHIFT için?

Örneğin:

iStochastic(BOŞ, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, Geçerli + 1); iStochastic ile aynıdır(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 1);

Bunu söylemekte haklı mıyım?

Saygılarımızla

teras

mladen:
teras

Mevcut çubuk tanım gereği hala kapalı bir çubuk değil

Geçerli çubuktan önceki ilk çubuk, ilk kapalı çubuktur
 

...

teras

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 0 ); şu anki

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 1 ); ilk kapalı (önceki)

...

...

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, Çubuklar- 1 ); grafikteki en eski

Not: Bu gönderide barlar hakkında daha fazla bilgiye sahipsiniz: https://www.mql5.com/en/forum/173124

tkuan77:
Merhaba Mladen,

Yani şunu söylemekte haklı mıyım:

akım+0, 0 değeriyle aynıdır,

akım+1, 1 değeriyle aynıdır,

akım+2, 2 değeriyle aynıdır,

ve benzeri ..... SHIFT için?

Örneğin:

iStochastic(BOŞ, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, Geçerli + 1); iStochastic ile aynıdır(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 1);

Bunu söylemekte haklı mıyım?

Saygılarımızla

teras
 

Merhaba Mladen,

Her zamanki gibi büyük yardım için teşekkürler!

Saygılarımızla

teras

mladen:
teras

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 0 ); şu anki

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 1 ); ilk kapalı (önceki)

...

...

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, Çubuklar- 1 ); grafikteki en eski

Not: Bu gönderide barlar hakkında daha fazla bilgiye sahipsiniz: https://www.mql5.com/en/forum/173124
 

Birkaç sorun

Hepinize merhaba,

Kodumu test ettim ve neredeyse orada. Bana yardımcı olabileceğinizi umduğum birkaç sorum var.

Bunu int init() içine koydum:

if (Çubuklar < D1FastMAPeriod || Çubuklar < D1SlowMAPeriod)

{

Alert("HATA- GÜNLÜK ÇİZELGEDE SMA HESAPLAMAK İÇİN YETERSİZ ÇUBUKLAR");

dönüş(0);

}

SlowMAPeriod 200'dür. 01.01.2009'dan geriye dönük test yaptığımda, grafiğimde 2008'den 200SMA'yı hesaplamak için yeterli çubuk olduğunu açıkça görsem de bu hatayı veriyor. Burada bir şeyi mi kaçırıyorum?

2. H4 grafiğinin alım satımlarını sadece günlük trend yönünde yerleştiriyorum. Aşağıdaki kodu kullanarak değerler çiziyorum:

SlowMACurrent = iMA(Symbol(), PERIOD_D1, D1SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

FastMACurrent = iMA(Symbol(), PERIOD_D1, D1FastMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

Sonra uzun bir pozisyon ararken şunu kullanarak referans veririm:

if (FastMACurrent > SlowMACurrent && ... vb ... )

İşlemlerimi düzgün bir şekilde filtrelemiyor gibi göründüğü için bu doğru mu?

3. Ayrıca, fiyat son 120 dönemin bir önceki en yüksek seviyesini aştığında (ve ardından 120 dönemin en düşük seviyesinin üzerinde kaldığında) uzun pozisyonlar alarak H4 grafiğinde bir trend filtresi kullanıyorum. Bu kodu kullanıyorum:

Donchian_Low = Düşük;

Donchian_High = Yüksek;

statik bool UpTrend = YANLIŞ;

statik bool DownTrend = YANLIŞ;

if (Sor > Donchian_High) {UpTrend = TRUE; Düşüş Eğilimi = YANLIŞ;}

if (Teklif < Donchian_Low) {UpTrend = FALSE; Düşüş Eğilimi = DOĞRU;}

Sonra aşağıdaki kodu kullanıyorum (uzun pozisyonlar için söyleyin):

if (FastMACurrent > SlowMACurrent && UpTrend == DOĞRU && DownTrend == YANLIŞ ... vb ... )

Ama işe yaramıyor gibi görünüyor çünkü 120 Periyotlu bir Donchian Kanalına karşı geriye dönük test edilmiş çizelgemi kontrol ettiğimde, bağlanmıyor. Herhangi bir fikir?

Şimdiden teşekkürler.

 

...

1. start() fonksiyonunun başına yerleştirin. Barlar gibi veriler söz konusu olduğunda Init güvenilmezdir

2. FastMACurrent > SlowMACurrent olduğunda bu koşul doğrudur. İstediğin bu mu, yoksa belki de haç arıyorsun?

3. Muhtemelen 2. madde ile bağlantılıdır. Bu şekilde çok fazla olasılık kapsadığı için, emir girilebileceği koşulları "daraltmalısınız".

crsnape@btinternet.com:
Hepinize merhaba,

Kodumu test ettim ve neredeyse orada. Bana yardımcı olabileceğinizi umduğum birkaç sorum var.

Bunu int init() içine koydum:

if (Çubuklar < D1FastMAPeriod || Çubuklar < D1SlowMAPeriod)

{

Alert("HATA- GÜNLÜK ÇİZELGEDE SMA HESAPLAMAK İÇİN YETERSİZ ÇUBUKLAR");

dönüş(0);

}

SlowMAPeriod 200'dür. 01.01.2009'dan geriye dönük test yaptığımda, grafiğimde 2008'den 200SMA'yı hesaplamak için yeterli çubuk olduğunu açıkça görsem de bu hatayı veriyor. Burada bir şeyi mi kaçırıyorum?

2. H4 grafiğinin alım satımlarını sadece günlük trend yönünde yerleştiriyorum. Aşağıdaki kodu kullanarak değerler çiziyorum:

SlowMACurrent = iMA(Symbol(), PERIOD_D1, D1SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

FastMACurrent = iMA(Symbol(), PERIOD_D1, D1FastMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

Sonra uzun bir pozisyon ararken şunu kullanarak referans veririm:

if (FastMACurrent > SlowMACurrent && ... vb ... )

İşlemlerimi düzgün bir şekilde filtrelemiyor gibi göründüğü için bu doğru mu?

3. Ayrıca, fiyat son 120 dönemin bir önceki en yüksek seviyesini aştığında (ve ardından 120 dönemin en düşük seviyesinin üzerinde kaldığında) uzun pozisyonlar alarak H4 grafiğinde bir trend filtresi kullanıyorum. Bu kodu kullanıyorum:

Donchian_Low = Düşük;

Donchian_High = Yüksek;

statik bool UpTrend = YANLIŞ;

statik bool DownTrend = YANLIŞ;

if (Sor > Donchian_High) {UpTrend = TRUE; Düşüş Eğilimi = YANLIŞ;}

if (Teklif < Donchian_Low) {UpTrend = FALSE; Düşüş Eğilimi = DOĞRU;}

Sonra aşağıdaki kodu kullanıyorum (uzun pozisyonlar için söyleyin):

if (FastMACurrent > SlowMACurrent && UpTrend == DOĞRU && DownTrend == YANLIŞ ... vb ... )

Ama işe yaramıyor gibi görünüyor çünkü 120 Periyotlu bir Donchian Kanalına karşı geriye dönük test edilmiş çizelgemi kontrol ettiğimde, bağlanmıyor. Herhangi bir fikir?

Şimdiden teşekkürler.
 

merhaba mladen,

1. Tamam yapacak.

2. Evet bu doğru, çaprazdan girmek istemiyorum, sadece kısa vadeli grafiklerde uzun/kısa bir filtre için kullanıyorum, örneğin hızlı MA günlük grafikte yavaş MA'nın üzerindeyse, sadece uzun düşünmesini istiyorum H4 grafiğindeki pozisyonlar. Yani bunu doğru kodladığımı düşünüyorum?

3. Ne demek istediğini anladığımdan emin değilim, ama bunu init start() altına koydum.

statik bool UpTrend = YANLIŞ;

statik bool DownTrend = YANLIŞ;

if (Sor > Donchian_High) {UpTrend = TRUE; Düşüş Eğilimi = YANLIŞ;}

if (Teklif < Donchian_Low) {UpTrend = FALSE; Düşüş Eğilimi = DOĞRU;}

Statik bool değişkenlerini küresel hale getirmek için en baştan koymalı mıyım? Bu neden oluyor olabilir mi?

 

...

3. Donchian_Low'a Sor (ki çoğu zaman böyledir) olduğunda ne olur? Statik değişkenleriniz, artık geçerli olmasa bile hala "eski" durumları gösterir (durumu "miras alır" ve bu şekilde, artık olmadığında bile yukarıda veya aşağıda olduğunu gösterir). Sorunlara neden olanın bu olup olmadığını kontrol edin

crsnape@btinternet.com:
merhaba mladen,

1. Tamam yapacak.

2. Evet bu doğru, çaprazdan girmek istemiyorum, sadece kısa vadeli grafiklerde uzun/kısa bir filtre için kullanıyorum, örneğin hızlı MA günlük grafikte yavaş MA'nın üzerindeyse, sadece uzun düşünmesini istiyorum H4 grafiğindeki pozisyonlar. Yani bunu doğru kodladığımı düşünüyorum?

3. Ne demek istediğini anladığımdan emin değilim, ama bunu init start() altına koydum.

statik bool UpTrend = YANLIŞ;

statik bool DownTrend = YANLIŞ;

if (Sor > Donchian_High) {UpTrend = TRUE; Düşüş Eğilimi = YANLIŞ;}

if (Teklif < Donchian_Low) {UpTrend = FALSE; Düşüş Eğilimi = DOĞRU;}

Statik bool değişkenlerini küresel hale getirmek için en baştan koymalı mıyım? Bu neden oluyor olabilir mi?
 

İyi bir nokta. Şuna bir bakayım.

Fonksiyonlar hakkında bir soru, fonksiyon içinde fonksiyon çağırmak mümkün müdür? Örneğin, bu işleve sahibim:

string GetWinLossPreviousShort (int LastOpenTicket, string WinLossPreviousShort)

{

eğer (... vb

Daha sonra buna derim:

double GetLotsLong (int LowRisk, int HighRisk, double SLDistanceLong, string GetWinLossPreviousShort)