Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 471

 
Mike :
1. Herkes eşleşir
2. Böyle bir parametre yoktur.
Başka bir başlıkta MT4'teki bu sorunun çözülemez olduğu söylendi. :(

2. Parametre hakkında size bir şeyler anlatabilmem için Masha'yı ayrı bir pencereye nereye koyduğunuzu bilmiyorum. Ama... Göstergeler --> Osilatörler --> Osilatörün Hareketli Ortalamalarından alırsanız, "Uygula:" seçeneğine sahiptir.

Bu nedenle, ayrı bir penceredeki bir göstergeye başka bir tane koymaya çalışırsanız, bazı durumlarda sadece ENUM_APPLIED_PRICE numaralandırmasındaki standart fiyatlara değil, aynı zamanda zaten pencerede bulunan göstergenin verilerine de uygulanabilir. Belki de tam da böyle bir durumdasın.

3. Sorun nedir? Bu üç Mashka, aynı üç Mashka'ya (ifadenize göre) tekabül etmiyor mu? Yani çözülemez değil, saçmalık. Doğru yapılırsa, eşleşmeleri gerekir. Fark nedir - kendi parametreleriyle üç ayrı MA veya aynı parametrelere sahip aynı üç MA, ancak üç tamponlu bir göstergeye itildi... Farkı görüyor musunuz? Beni değil. Ve eğer görürseniz, Mashek'in hesaplamalarında bir tutarsızlık arayın.

Bu arada... Timsah - bir göstergede üç MA, her biri kendi parametreleriyle. Parametreleri üç ayrı MA'nız ile aynı şekilde ayarlayın ve eşleşeceklerdir. Doğru, tüm bu bacchanalia'nız ayrı bir pencerede ... Şey ... örneğin

 
Mike :
Üç Bir - 3MA(4,9,14) göstergesini yaptım ve doğruluğunu kontrol etmek için üç göstergenin bulunduğu pencereyle karşılaştırmaya karar verdim - MA(4), MA(9), MA(14). Saç uçta duruyor. :)
Gösterge pencerelerinin kendi kendine ölçeklenmesini kapatmayı deneyin, belki her şey düzelir.
"Üç göstergenin olduğu yerde - МА(4), МА(9), МА(14)" gösterge penceresi, bu pencereye eklenen ilk gösterge tarafından kendi kendine ölçeklenir. Senin durumunda MA(4) olabilir
 

Lütfen bana yerleşik göstergenin değerini üst zaman çerçevesinden, ancak bu zaman çerçevesinin içinde fonksiyondan geçirmenin yapısını söyleyin.

Onlar. mevcut grafik 15 dakika, günlere göre hesaplanan göstergenin değerini almanız gerekiyor, ancak 45 dakika önce nasıl yapılır?

Gösterge değerini döndüren, ancak yalnızca mevcut çubuk için zor olmayan bir algoritma.

double iDelta(int Variant,int n,int TF,int index)

  {

   double Fibo=0;

   if(Variant==1) Fibo=0.236;

   if(Variant==2) Fibo=0.382;

   if(Variant==3) Fibo=0.5;

   if(Variant==4) Fibo=0.618;

   if(Variant==5) Fibo=0.764;

   if(Variant==6) Fibo=1;

   if(Variant==7) Fibo=1.236;

   if(Variant==8) Fibo=1.382;

   if(Variant==9) Fibo=1.5;

   if(Variant==10) Fibo=1.618;

   if(Variant==11) Fibo=2.0;

   if(Variant==12) Fibo=2.236;

   if(Variant==-1) Fibo=-0.236;

   if(Variant==-2) Fibo=-0.382;

   if(Variant==-3) Fibo=-0.5;

   if(Variant==-4) Fibo=-0.618;

   if(Variant==-5) Fibo=-0.764;

   if(Variant==-6) Fibo=-1;

   if(Variant==-7) Fibo=-1.236;

   if(Variant==-8) Fibo=-1.382;

   if(Variant==-9) Fibo=-1.5;

   if(Variant==-10) Fibo=-1.618;

   if(Variant==-11) Fibo=-2.0;

   if(Variant==-12) Fibo=-2.236;

   return ( NormalizeDouble(iOpen(Symbol(),TF,index)+iATR(Symbol(), TF, n, index+1)*Fibo,Digits) );

  } 

 
Leo59 :
Gösterge pencerelerinin kendi kendine ölçeklenmesini kapatmayı deneyin, belki her şey düzelir.
"Üç göstergenin olduğu yerde - МА(4), МА(9), МА(14)" gösterge penceresi, bu pencereye eklenen ilk gösterge tarafından kendi kendine ölçeklenir. Senin durumunda MA(4) olabilir
Ve bu kendi kendine ölçekleme nerede kapatılıyor?
 
Artyom Trishkin :

2. Parametre hakkında size bir şeyler anlatabilmem için Masha'yı ayrı bir pencereye nereye koyduğunuzu bilmiyorum. Ama... Göstergeler --> Osilatörler --> Osilatörün Hareketli Ortalamalarından alırsanız, "Uygula:" seçeneğine sahiptir.

Bu nedenle, ayrı bir penceredeki bir göstergeye başka bir tane koymaya çalışırsanız, bazı durumlarda sadece ENUM_APPLIED_PRICE numaralandırmasındaki standart fiyatlara değil, aynı zamanda zaten pencerede bulunan göstergenin verilerine de uygulanabilir. Belki de tam da böyle bir durumdasın.

3. Sorun nedir? Bu üç Mashka, aynı üç Mashka'ya (ifadenize göre) tekabül etmiyor mu? Yani çözülemez değil, saçmalık. Doğru yapılırsa, eşleşmeleri gerekir. Fark nedir - kendi parametreleriyle üç ayrı MA veya aynı parametrelere sahip aynı üç MA, ancak üç tamponlu bir göstergeye itildi... Farkı görüyor musunuz? Beni değil. Ve eğer görürseniz, Mashek'in hesaplamalarında bir tutarsızlık arayın.

Bu arada... Timsah - bir göstergede üç MA, her biri kendi parametreleriyle. Parametreleri üç ayrı MA'nız ile aynı şekilde ayarlayın ve eşleşeceklerdir. Doğru, tüm bu bacchanalia'nız ayrı bir pencerede ... Şey ... örneğin

Artyom, "Uygula" - sadece bir fiyat listesi var. MA hesaplamaları doğrudur, 3MA göstergesinin bulunduğu pencereye 4, ardından 9, ardından 14 periyodu olan tek bir gösterge eklenerek üç satırın tümü doğrulanır.Her durumda, tek gösterge 3MA göstergesinin karşılık gelen satırıyla çakışır.
 
Mike :
Artyom, "Uygula" - sadece bir fiyat listesi var. MA hesaplamaları doğrudur, 3MA göstergesinin bulunduğu pencereye 4, ardından 9, ardından 14 periyodu olan tek bir gösterge eklenerek üç satırın tümü doğrulanır.Her durumda, tek gösterge 3MA göstergesinin karşılık gelen satırıyla çakışır.
O zaman sorun nedir? Farklı pencerelerdeki çizgilerin görsel uyumsuzluğundan hoşlanmadığınızı anlıyorum. Ctrl+D'ye basın, fareyi gösterge çizgilerinin üzerine getirin ve değerler için veri penceresinde bakın - eşleşiyorlar mı...
 
-Aleks- :

Lütfen bana yerleşik göstergenin değerini üst zaman çerçevesinden, ancak bu zaman çerçevesinin içinde fonksiyondan geçirmenin yapısını söyleyin.

Onlar. mevcut grafik 15 dakika, günlere göre hesaplanan göstergenin değerini almanız gerekiyor, ancak 45 dakika önce nasıl yapılır?

Gösterge değerini döndüren, ancak yalnızca geçerli çubuk için zor olmayan bir algoritma.

double iDelta(int Variant,int n,int TF,int index)

  {

   double Fibo=0;

   if(Variant==1) Fibo=0.236;

   if(Variant==2) Fibo=0.382;

   if(Variant==3) Fibo=0.5;

   if(Variant==4) Fibo=0.618;

   if(Variant==5) Fibo=0.764;

   if(Variant==6) Fibo=1;

   if(Variant==7) Fibo=1.236;

   if(Variant==8) Fibo=1.382;

   if(Variant==9) Fibo=1.5;

   if(Variant==10) Fibo=1.618;

   if(Variant==11) Fibo=2.0;

   if(Variant==12) Fibo=2.236;

   if(Variant==-1) Fibo=-0.236;

   if(Variant==-2) Fibo=-0.382;

   if(Variant==-3) Fibo=-0.5;

   if(Variant==-4) Fibo=-0.618;

   if(Variant==-5) Fibo=-0.764;

   if(Variant==-6) Fibo=-1;

   if(Variant==-7) Fibo=-1.236;

   if(Variant==-8) Fibo=-1.382;

   if(Variant==-9) Fibo=-1.5;

   if(Variant==-10) Fibo=-1.618;

   if(Variant==-11) Fibo=-2.0;

   if(Variant==-12) Fibo=-2.236;

   return ( NormalizeDouble(iOpen(Symbol(),TF,index)+iATR(Symbol(), TF, n, index+1)*Fibo,Digits) );

  } 

Soruyu cevaplayamam, ancak işlev basitleştirilebilir ve önemli ölçüde hızlandırılabilir.
Göstergeyi başlatırken, statik bir dizi oluşturun

double arrFibo[13] = {0.0, 0.236, 0.382, ..., 2.236};

ve iDelta() içindeki tüm if aşağıdakilerle değiştirilebilir:

if (Variant>0)
    Fibo =  arrFibo[  Variant];
else
    Fibo = -arrFibo[- Variant];

 
Mike :

Soruyu cevaplayamam, ancak işlev basitleştirilebilir ve önemli ölçüde hızlandırılabilir.
Göstergeyi başlatırken, statik bir dizi oluşturun

double arrFibo[13] = {0.0, 0.236, 0.382, ..., 2.236};

ve iDelta() içindeki tüm if aşağıdakilerle değiştirilebilir:

if (Variant>0)
    Fibo =  arrFibo[  Variant];
else
    Fibo = -arrFibo[- Variant];

Teşekkürler, deneyeceğim, belki daha iyi olur.

 
Mike :

Soruyu cevaplayamam, ancak işlev basitleştirilebilir ve önemli ölçüde hızlandırılabilir.
Göstergeyi başlatırken, statik bir dizi oluşturun

double arrFibo[13] = {0.0, 0.236, 0.382, ..., 2.236};

ve iDelta() içindeki tüm if aşağıdakilerle değiştirilebilir:

if (Variant>0)
    Fibo =  arrFibo[  Variant];
else
    Fibo = -arrFibo[- Variant];

Yapılmış. yazdığınız gibi, ama olması gerektiği gibi olmadı - henüz tam olarak neyin yanlış olduğunu bilmiyorum - yazdırmam gerekiyor ....

hattı anlamadım

else           Fibo = -arrFibo[-Variant];

peki genel olarak dizinin eksi indeksini istediğimizde ne olur ya da ne?
 
-Aleks- :

Yapılmış. yazdığınız gibi, ama olması gerektiği gibi olmadı - henüz tam olarak neyin yanlış olduğunu bilmiyorum - yazdırmam gerekiyor ....

hattı anlamadım

else           Fibo = -arrFibo[-Variant];

peki genel olarak dizinin eksi indeksini istediğimizde ne olur ya da ne?
Variant negatif olduğunda, -Variant ifadesi diziden seçilecek pozitif bir dizin verir.
Aynı durumda, negatif Fibo değerlerine ihtiyaç vardır, yani -arrFibo.
Neden: