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

 
-Aleks- :

Hata alıyorum - sorun ne? MQL4'te çalışır ...


'{' - çok fazla başlatıcı TZ_Sky_and_Ground_V_04.mq5 2484 6

arrFibo[18] koymak gerekiyor - 18 element diyorlar.
 
Vladimir Karputov :

iMA Yardım'a baktınız mı?

Birinci adım: "başlık"ta, iMA göstergesinin tutamağını saklamak için bir değişken tanımlıyoruz:

İkinci adım: OnInit() içinde gösterge tanıtıcısını oluşturun.

Ve sonuç (ekran görüntüsündeki artı işareti 1 numaralı çubuk olarak ayarlanmıştır):

Başka bir soru, bir döngüde bir göstergem varsa, o zaman ayrıca çift MA[ 1 ] ayarlamam gerekiyor; Yoksa hemen daha büyük bir dizi boyutu istemek/almak daha mı iyi? Bu karmaşıklıkların neden gerekli olduğunu anlamıyorum - MQL4'e kıyasla avantajı nedir.
 
-Aleks- :

Başka bir soru, bir döngüde bir göstergem varsa, o zaman ayrıca çift MA[ 1 ] ayarlamam gerekiyor; Yoksa hemen daha büyük bir dizi boyutu istemek/almak daha mı iyi? Bu karmaşıklıkların neden gerekli olduğunu anlamıyorum - MQL4'e kıyasla avantajı nedir.


iMAGe t işleviyle ilgili örneğim, her seferinde göstergeden bir değer almak için geliştirilmiş bir örnektir. İndikatörden bir satırda birkaç değeri aynı anda almanız gerekiyorsa, CopyBuffer'ı "from" ve "to" parametreleriyle kullanmanız ve sonucu bir diziye kaydetmeniz gerekir.


Eklendi: daha sonra bir örnek olacak...


Söz verilen örnek.

Giriş parametreleri:

  • değerleri bir diziye alın - eğer değer "doğru" ise - o zaman gösterge değerini bir diziye almayı kullanırız, eğer "yanlış" ise - her seferinde bir değer alırız
  • count -> yalnızca "değerleri bir diziye al"==true ise - diziye kopyalanan çubukların sayısı
  • başlangıç pozisyonu -> yalnızca "değerleri bir diziye al"==true - diziye kopyalanacak olan başlangıç öğesinin (çubuk) sayısı

Expert Advisor'da dizi ve Moving Avegarege göstergesiyle çalışma:

Expert Advisor'da dizi ve Moving Avegarege göstergesiyle çalışma

arr_ma dizisine ve indeks #0 ve indeks #8 olan elemanların değerlerine dikkat edin.

ds

Dosyalar:
iMAGet.mq5  12 kb
 
Vladimir Karputov :


iMAGe t işleviyle ilgili örneğim, her seferinde göstergeden bir değer almak için geliştirilmiş bir örnektir. İndikatörden bir satırda birden fazla değeri aynı anda almanız gerekiyorsa CopyBuffer'ı "from" ve "to" parametreleriyle kullanmanız ve sonucu bir diziye kaydetmeniz gerekir.

Eklendi: daha sonra bir örnek olacak...

Söz verilen örnek.

Giriş parametreleri:

  • değerleri bir diziye alın - eğer değer "doğru" ise - o zaman gösterge değerini bir diziye almayı kullanırız, eğer "yanlış" ise - her seferinde bir değer alırız
  • say -> yalnızca "değerleri bir diziye al"==true ise - diziye kopyalanan çubukların sayısı
  • başlangıç konumu -> yalnızca "değerleri bir diziye al"==true - diziye kopyalanacak başlangıç öğesinin (çubuk) sayısı

Expert Advisor'da dizi ve Moving Avegarege göstergesiyle çalışma:

arr_ma dizisine ve indeks #0 ve indeks #8 olan elemanların değerlerine dikkat edin.

ds

Örnek için teşekkürler!

Benim için bir gösterge değeri isteyip on gösterge değerini kopyalamanın bir avantajı olup olmadığını anlamak çok önemli - belki bununla ilgili herhangi bir çalışma yapıldı mı?

Zaman serisinin tersine çevrildiği gerçeği iyi değil - 0123 numaralı çubuk standardına alışkınım, ancak burada 1230 ters sırada çıkıyor.

Aramada kaç çubuğa ihtiyacım olacağını bilmiyorsam (örneğin, MA ve çubuğun kesişme noktasını arıyoruz), mümkün olan maksimum sayıyı mı sormalıyım? Bu herhangi bir şekilde performansı etkiler mi?

 
-Aleks- :

Örnek için teşekkürler!

Benim için bir gösterge değeri isteyip on gösterge değerini kopyalamanın bir avantajı olup olmadığını anlamak çok önemli - belki bununla ilgili herhangi bir çalışma yapıldı mı?

...


Peki kendi başımıza böyle bir çalışma yapmamıza kim engel oluyor :) ?

...

Zaman serisinin tersine çevrildiği gerçeği iyi değil - 0123 numaralı çubuk standardına alışkınım, ancak burada 1230 ters sırada çıkıyor.

...

Tüm yapmanız gereken, diziyi aldıktan sonra (iMAGetArray'i çağırdıktan sonra) ArraySetAsSeries'i ('bizim dizimiz', doğru) yürütmektir.
...

Aramada kaç çubuğa ihtiyacım olacağını bilmiyorsam (örneğin, MA ve çubuğun kesişme noktasını arıyoruz), mümkün olan maksimum sayıyı mı sormalıyım? Bu herhangi bir şekilde performansı etkiler mi?


Bu gibi durumlarda, birkaç istekte bulunmak daha iyidir. Örneğin, ilk istek - gerekirse 50 eleman - ikinci istek (yine 50 eleman) ...
 
Vladimir Karputov :

Peki kendi başımıza böyle bir çalışma yapmamıza kim engel oluyor :) ?


MQL5'teki cehaletim beni rahatsız ediyor - koddaki bir hata nedeniyle herkesi yanıltabilirim, ancak profesyonelliğiniz bu tür araştırmalarda daha fazla güven uyandırır!

Vladimir Karputov :


Tüm yapmanız gereken, diziyi aldıktan sonra (iMAGetArray'i çağırdıktan sonra) ArraySetAsSeries'i ('bizim dizimiz', doğru) yürütmektir.

Onlar. hemen bir fonksiyonda yap?


Vladimir Karputov :


Bu gibi durumlarda, birkaç istekte bulunmak daha iyidir. Örneğin, ilk istek - gerekirse 50 eleman - ikinci istek (yine 50 eleman) ...
Brr... yani bir döngü içinde bir döngü iç içe? Neden 50 de 100 değil? Yine de bu konu üzerinde araştırma yapmak gerekli, yoksa birden fazla bar hakkında bilgi edinmenin bir anlamı olmayabilir...
 
Bu konuyla ilgili olmayan yorumlar " MQL4 MT4 MetaTrader 4 Yeni Başlayanlardan Sorular " bölümüne taşındı.
 
-Aleks- :

...

Onlar. hemen bir fonksiyonda yap?

...


Bir diziyi tersine çevirmek daha iyidir:

Vladimir Karputov :

Tüm yapmanız gereken , diziyi aldıktan sonra ( iMAGetArray öğesini çağırdıktan sonra ) ArraySetAsSeries'i ('bizim dizimiz', doğru) yürütmektir.

-Aleks- :

...

Brr... yani bir döngü içinde bir döngü iç içe? Neden 50 de 100 değil? Yine de bu konu üzerinde araştırma yapmak gerekli, yoksa birden fazla bar hakkında bilgi edinmenin bir anlamı olmayabilir...

Yuvalanmış döngüler yok - tüm değerleri atlayan yalnızca bir döngü olacak: tüm işlemler sırayla devam ediyor - sonucu ayrı bir işlevde arıyoruz (içinde belirli bir değer istiyoruz - örneğin, 50 değer). Sonuç bulunamazsa, yeni bir talepte bulunuruz.

 

MQL4'ten sonra MQL5'te göstergelerle çalışmak korkunç! Ben gerçekten hastayım.

Gösterge çağrısını kodun her yerine bulaştırmak yerine, tutamaç da dahil olmak üzere her şeyi tek bir işleve koymanın neden imkansız olduğunu anlamıyorum!?

Ve gösterge ayarları, göstergenin bulunduğu işlev tarafından değiştirilirse, ne yapacağımı hiç anlamıyorum!?!? Tüm gösterge çeşitlerini başlatmam gerekir mi?


İşte MQL4'te bir örnek - MQL5'te nasıl yapılır?


 int BarPeresek_iMAf( int PeriodMA)
  {
   int TFT= 0 ;
   int shiftMAT= 0 ;
   int typeMAT= 0 ;
   int priceMAT= 0 ;
   int BarPeresek= 0 ;
   if ( Bars ( Symbol (), 0 )>PeriodMA)
     {
       for ( int X= 1 ;X< 1000 ; X++)
        {
         double MAT= NormalizeDouble ( iMA ( Symbol (),TFT,PeriodMA,shiftMAT,typeMAT,priceMAT,X), Digits ());
         if (( Low (X)>MAT && High (X)>MAT) || 
            ( Low (X)<MAT && High (X)<MAT))BarPeresek++;
         else {BarPeresek++; break ;}
        }

     }
   return BarPeresek;
  }
Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Среди программ для автоматического трейдинга можно выделить две большие категории: торговые роботы и индикаторы. Первые предназначены для...
 

Bir pozisyonu kapattıktan sonra, gösterilmemeleri için işaretçileri nasıl kaldıracağımı söyle?

Ve bunları programlı olarak kaldırmanın bir yolu var mı?

Teşekkür ederim!