MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 506

 
Вадим Мотеюнас :
https://www.mql5.com/ru/docs/basis/operators
 
ArturR :

1. Evet, kodda sıfır bar için bir durum var, şimdi hangi durumu test ettiğimi kontrol etmenin bir yolu yok, bu gece kontrol edeceğim.

2. Değerlerin değerleri ile grafikte yorum görüntülenerek kontrol edilir, macd, High ve Low değerleri vardır ve min(max)price karşılık gelen değerleri almaz.

Bu değişkenlerin nasıl bildirildiğine bakmalısınız. Bunların, işleve her girişte sıfıra sıfırlanan yerel değişkenler olduğuna dair bir şüphe var. Sonuç olarak, anlamlı oldukları o anları görmeye zamanınız kalmıyor. Değerleri görmek için günlüğün içeriğini görüntüleyin. Sonuçta, kodda bir Baskı var.

 

Merhaba. Bir görev var, bir csv dosyasının 1000 satırından, N alanından parametreye göre eşleşmeleri seçmeniz ve bulunan kaydın diğer alanlarından herhangi bir tür değeri döndürmeniz gerekiyor. Bir dosya üzerinden çalışan ve alım satım kararları veren bir Uzman Danışman olup olmadığını söyleyebilir misiniz? Sayesinde.

 
mwwm :

Merhaba. Bir görev var, bir csv dosyasının 1000 satırından, N alanından parametreye göre eşleşmeleri seçmeniz ve bulunan kaydın diğer alanlarından herhangi bir tür değeri döndürmeniz gerekiyor. Bir dosya üzerinden çalışan ve alım satım kararları veren bir Uzman Danışman olup olmadığını söyleyebilir misiniz? Sayesinde.

Muhtemelen, kod tabanında haberlerle çalışanları aramanız gerekiyor.

 
Ihor Herasko :

Sadece onu göremiyorsun. Değerleri görmek için günlüğün içeriğini görüntüleyin. Sonuçta, kodda bir Baskı var.

Öyle, teşekkürler) Dergide, diğer kabukların yanı sıra bu girişi fark etmedim. Cevap veren herkese tekrar teşekkürler, temizlemeye devam edeceğim)

 
Değerin aşağıdaki mantığa karşılık gelmesi için hangi çubuk indeksi hesaplanmalıdır: eğer mevcut grafik periyodu M15 ise ve çağrılan göstergenin fonksiyonu (MTF) = H1 ise, o zaman çubuk indeksi 5'tir, yani, H1 çubuğunu kapattıktan sonra, mevcut grafik periyodu M30 ise ve (MTF) =H1 fonksiyonuna sahip çağrılan göstergenin zaman çerçevesi, mevcut grafik periyodu M5 ise, çubuk indeksi 3 ve zaman çerçevesi (MTF) =M15 işlevine sahip gösterge olarak adlandırılır, ardından çubuk indeksi 4'tür.
 
lil_lil :
Değerin aşağıdaki mantığa karşılık gelmesi için hangi çubuk indeksi hesaplanmalıdır: eğer mevcut grafik periyodu M15 ise ve çağrılan göstergenin fonksiyonu (MTF) = H1 ise, o zaman çubuk indeksi 5'tir, yani, H1 çubuğunu kapattıktan sonra, mevcut grafik periyodu M30 ise ve (MTF) =H1 fonksiyonuna sahip çağrılan göstergenin zaman çerçevesi, mevcut grafik periyodu M5 ise, çubuk indeksi 3 ve zaman çerçevesi (MTF) =M15 işlevine sahip gösterge olarak adlandırılır, ardından çubuk indeksi 4'tür.

Mantığın kendisinde bir hata var. Mevcut TF, M15 olabilir ve oluşturulan H1 çubuğuna karşılık gelen son çubuk M15, 1 olacaktır. Ve belki 2, ve 3 ve 4, ancak daha fazlası değil. Örneğin, şimdi saat 10:06. Mevcut M15 ve H1 çubuklarının indeksleri 0'dır, her iki TF'deki önceki çubuklar 1'dir, kapalı H1'e karşılık gelen son M15 çubuğu da 1'dir. 10:15'te durum değişecek: oluşturulan son M15 çubuğu H1, 10:30 - 3, 10:45 - 4 arasında 2 indeksine sahip olacaktır.

Buradaki matematiksel hesaplamalar pek yardımcı olmaz. Grafikte karşılık gelen çubukları aramanız gerekir. Algoritma şu şekilde olacaktır:

  1. Sıfır çubuğunun H1 açılma zamanını belirleyin. (iTime)
  2. Sıfır çubuğunun H1 açılma zamanına karşılık gelen mevcut TF'nin ilk çubuğunun indeksini belirleyin. (iBarShift)
  3. Bulunan çubuk dizinine 1 ekleyin.

 
Ihor Herasko :

Mantığın kendisinde bir hata var. Mevcut TF, M15 olabilir ve oluşturulan H1 çubuğuna karşılık gelen son çubuk M15, 1 olacaktır. Ve belki 2, ve 3 ve 4, ancak daha fazlası değil. Örneğin, şimdi saat 10:06. Mevcut M15 ve H1 çubuklarının indeksleri 0'dır, her iki TF'deki önceki çubuklar 1'dir, kapalı H1'e karşılık gelen son M15 çubuğu da 1'dir. 10:15'te durum değişecek: oluşturulan son M15 çubuğu H1, 10:30 - 3, 10:45 - 4 arasında 2 indeksine sahip olacaktır.

Buradaki matematiksel hesaplamalar pek yardımcı olmaz. Grafikte karşılık gelen çubukları aramanız gerekir. Algoritma şu şekilde olacaktır:

  1. Sıfır çubuğunun H1 açılma zamanını belirleyin. (iTime)
  2. Sıfır çubuğunun H1 açılma zamanına karşılık gelen mevcut TF'nin ilk çubuğunun indeksini belirleyin. (iBarShift)
  3. Bulunan çubuk dizinine 1 ekleyin.

Muhtemelen her şeyi söylemedi. Gösterge, mevcut zaman çerçevesi M15'in tüm 4 çubuğunun tamamı için sırasıyla H1, koşullu olarak daha yüksek zaman çerçevesinin sıfır çubuğunu çizer. Bu nedenle, H1'in kapanışında sinyalin kalıp kalmadığını öğrenmek için özellikle TF M15'te indeks 5'e ihtiyacım var. Elbette eski ve şimdiki dönemlerin her bir kombinasyonu için bir sürü koşul yazmamak için bu endeksi hesaplamak mümkündür.

input ENUM_TIMEFRAMES   TimeFrame=PERIOD_H1;
//  
 if (TimeFrame == PERIOD_H1&&Period()==M15 ) timef = 5 ;//timef = 4;

   if (TimeFrame == PERIOD_H1&&Period()==M30) timef = 3 ;//timef = 2;


Ajk= NormalizeDouble ( iCustom ( NULL , 0 , "Ajk" ,TimeFrame, 4 ,i+timef), Digits );
 
lil_lil :

Muhtemelen her şeyi söylemedi. Gösterge, mevcut zaman çerçevesi M15'in tüm 4 çubuğunun tamamı için sırasıyla H1, koşullu olarak daha yüksek zaman çerçevesinin sıfır çubuğunu çizer.

Bundan bahsediyorum, mevcut TF - 1, 2 veya 3'ün daha az çubuğu olabilir. Yani, okumalar her zaman 4 çubukta gösterilmeyecektir. Bir durumda 4 çubuk üzerinde görüntüleme olacaktır - bu, H1 sıfır çubuğuna karşılık gelen mevcut TF'nin son çubuğudur. Sorunun böyle bir ifadesi için, mevcut TF'nin sıfır çubuğu H1'e karşılık gelen ilk çubuğunu bulmanız yeterlidir:

 int nCurTFBarIndex = iBarShift ( NULL , 0 , iTime ( NULL , PEPRIOD_H1, 0 ));

Ardından, mevcut TF'nin sıfır çubuğundan nCurTFBarIndex dahil olmak üzere okumalar görüntülenecektir.

Bu nedenle, H1'in kapanışında sinyalin kalıp kalmadığını öğrenmek için özellikle TF M15'te indeks 5'e ihtiyacım var. Elbette eski ve şimdiki dönemlerin her bir kombinasyonu için bir sürü koşul yazmamak için bu endeksi hesaplamak mümkündür.

Sinyal hangi TF'den alınır: mevcut olandan mı, H1'den mi yoksa karışık bir versiyondan mı? Yalnızca H1 ile ise, hiçbir şey aramanıza gerek yoktur, çünkü son oluşturulan çubuk her zaman 1 indeksine sahip olacaktır.

 
Ihor Herasko :

Sinyal hangi TF'den alınır: mevcut olandan mı, H1'den mi yoksa karışık bir versiyondan mı? Yalnızca H1 ile ise, hiçbir şey aramanıza gerek yoktur, çünkü son oluşturulan çubuk her zaman 1 indeksine sahip olacaktır.

MTF göstergesi, H1'i harici ayarlarda ayarlayın, M15'i tabloya ekleyin. Sinyal 4 çubuk boyunca yanıp söner. H1 çubuğu kapandığında, sinyal yanıp sönmez M15'te, çubuk 4'te alınan sinyalin yanıp sönmesi durur. M1'e koyarsanız buna göre bar 60'da yanıp sönmeyi durdurur yani i + N indeksini hesaplamanız gerekir ki ayarlarda seçilen periyoda ve göstergenin bağlı olduğu tablodaki tabloya göre N değişir.

 input ENUM_TIMEFRAMES    TimeFrame= PERIOD_H1 ;
//  
 if (TimeFrame == PERIOD_H1 && Period ()==M15) N = 5 ; // ВОЗМОЖНО НУЖНО N = 4;

   if (TimeFrame == PERIOD_H1 && Period ()==M1) N = 61 ; //А ЗДЕСЬ ВОЗМОЖНО N = 60;