![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
teşekkürler iyi bir fikir (o zaman kenelerden vazgeçmeniz gerekecek), güçlü kârsız hareketlerden filtre "toplam kâr bir şeyden azsa, o zaman tüm pozisyonları kapatın" ......
Numara. Orijinal girdiyi kastettim - "/ if
//ilk mumun boyutu belirtilen değerden büyükse alım satım yasaktır..."
//--------------------------------------
Soru ortaya çıktı. Burada, çubukların son NBar'ları için araçlar arasındaki ortalama yayılmayı döndüren (hesaplayan) bir fonksiyon bulunmaktadır.
Lütfen. nasıl soracağımı söyle
//------------
int k;
çift N = 0; çift Toplam = 0;
for(k = 0; k < iBars( Symbol_1 ,Zaman Çerçevesi); k++)
{
if(N == Nbar)
//---------------------------
böylece fonksiyon, çubukların tüm NBar'ları için değil, ortalama yayılma değerini döndürür,
ve sonuncusu hariç NBars çubukları için.
Başka bir deyişle, en sonuncusuna ihtiyacım var. bar hesaplamaya katılmadı! Veya en son verilen bir sayıya bile. çubuklar hesaplamaya dahil edilmedi.
Bunu "organize etmenin" bir yolu var mı?
(Karşılığında, 3 Mayıs Pazartesi günü iyi bir pazar girişi verebilirim, müteakip karlı bir kapanış olasılığı yüksek!)
Şimdi size kişisel olarak umut verici bir giriş göndereceğim.
Bir soru daha.
Şimdi aklıma bir fikir geldi.
Ve eğer yapmak gerçekten kolaysa. Şu şekilde ayarlayın:
for(k = 0; k < iBars( Symbol_1 ,Timeframe); k++) yerine
sormak
for(k = M ; k < iBars(Symbol_1,Zaman Çerçevesi); k++),
burada M , hesaplamadan hariç tutulan çubukların sayısıdır.
Çalışacak mı?
double CalculateAvarageSpread( string Symbol_1, string Symbol_2, int Timeframe, int NBars, int NBarsSkip) { int k; double N = 0 ; int NReal = 0 ; double Sum = 0 ; for (k = 0 ; k < iBars(Symbol_1,Timeframe); k++) { if (N == NBars) break ; int symb2Shift = iBarShift(Symbol_2,Timeframe,iTime(Symbol_1,Timeframe,k), true ); if (symb2Shift != - 1 ) { N++; if (N>NBarsSkip) { Sum += iClose(Symbol_1,Timeframe,k) - iClose(Symbol_2,Timeframe,symb2Shift); NReal++; // счетчик Н которые не пропущены и посчитаны } } } if (NReal== 0 ) return ( 0 ); // так как у нас не получилось рассчитать ни одного бара else { double avarageSpread = Sum / NReal; return (avarageSpread); } }
ben katlanana kadar "...., int NBarsSkip " işlev adından
danışmanın dış parametrelerine
harici int NBarsSkip =2
Neden bir hata olduğunu anlamadım.
Ama hareket ettirdiğimde her şey normale döndü.
Konuyu baştan sona okudum - 145 sayfanın tamamı. Herkese saygılar: rid, leonid553, fduch, neoklasik, getch, forex-k, goldtrader, timbo, fortrader . Dofigischi bilgileri, hâlâ sindiriliyor. Kendim için ana sonuç şuydu: burayı kazmalısın, buna değer. Not: Genel olarak, mantıklı bir dal, neredeyse hiç sel olmadı. tekrar teşekkürler 2 kurtuldum
Sayesinde!
"Düşünce için Bilgi".
Pazartesiden itibaren ZM-ZL'yi yayın (un-tereyağı, 5:6)
!