[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 481
![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
Bars-30'u deneyin
Mantığınız ne bilmiyorum bende göstergenin son 30 barını çizen öyle bir ayar var ki
Bir kez daha tekrarlıyorum, SetIndexDrawBegin() grafiğin sol ucundan çubukları sayar
tartışmadan önce kontrol et
İyi. Ben sorunun özünü anlatmaya çalışacağım, belki birileri size anlatır ya da daha basit bir şekilde uygulamanıza yardımcı olur.
Dakika çizelgesi üzerinde çalışıyoruz. 10/29/12 saat 00:00'da grafikte bir dakika çubuğu (yüksek+düşük/2 - çubuğun ortalama değeri) alıyoruz - bu başlangıç noktası olacaktır.
Ardından, bu fiyattan 10 puan yukarı sapmayı kontrol ederiz (her doğru sapma +1 olacaktır).
Başlangıç noktasından 10 puanlık bir fiyat artışına ulaştığımızda - sayaç +1; ve sapmaları sadece 10 puan sapmaya ulaştığımız noktadan daha fazla kontrol etmeye başlayın ve bir sonraki fiyat artışını 10 puan bekleyin.
Örneğin, şunu elde ederiz:
If (başlangıç noktası) + 10 pip <= fiyatlar (başlangıç noktasından sonraki tüm çubuk fiyatlarını kullanırız.) Sayaç = sayaç +1 alırız; Ve başlangıç noktasına zaten bu yerden başlıyoruz - (başlangıç noktası + 10 puan).
Eğer ( başlangıç noktası + 10 puan ) + 1 0 puan <= fiyatlar (başlangıç noktasından sonraki tüm çubuk fiyatları kullanırız.) Sayaç = sayaç +1 alırız; Ve başlangıç noktasına zaten bu yerden başlıyoruz - ( başlangıç noktası + 10 puan ) + 10 puan .
if ( başlangıç noktası + 10 pip + 1 0 pip) + 10 pip <= fiyatlar (başlangıç noktasından sonraki tüm bar fiyatlarını kullanırız.) Counter= counter +1 alırız; Ve başlangıç noktasına zaten bu yerden başlıyoruz - ( başlangıç noktası + 10 puan + 10 puan) + 10 puan .
vb...
10'a eşit bir sayaca ulaşana kadar ( sayaç == 10 ).
Ve oluşan her yeni dakika çubuğu (yüksek+düşük/2 - çubuğun ortalama değeri) bu koşul için kontrol edilir ve 10'a eşit sayaca ulaşana kadar bekleriz ( sayaç == 10 ). Diyelim ki iki gün geçti, her yeni oluşan çubuğu kontrol ettik ve koşullar doğruysa kaydırdık ....
Ve sayaca =10'a geldiğimizde - "Sayaç == 10" mesajını görüntülüyoruz. Başlangıç noktasını, kullanıcı tarafından orijinal olarak ayarlanandan 2 gün ileriye kaydırıyoruz, yani. 29/10/12 saat 00:00'dan 31/10/12 saat 00:00'a kadar ve döngüyü tekrarlayın.
Döngüyü tekrarlıyoruz ve böylece programa göre hareket ediyoruz.
Onlar. yeni şekillendirilmiş çubukları almanız gerekiyor, bunları dişe göre alın (yüksek+düşük/2 - çubuğun ortalama değeri). Ve koşulları kontrol edin ve koşullar doğruysa, yukarıda yazıldığı gibi kaydırın.
Bir dizi üzerinden uygulamaya çalıştım, çok kafa karıştırıcı çıkıyor ve yanlış değerler veriyor!! Bu algoritmanın nasıl uygulanacağına yardım edin!
Burada dizilere ihtiyaç yoktur. Nedir, bir danışman mı, bir senaryo mu, bir gösterge mi? Buradaki nokta, bu görevi uygulamak için EA kodunun gösterge kodundan farklı olacağıdır.
Ve burada önemli bir dezavantaj var. Bakın, başlangıç noktasını belirledik ve tam olarak yükseliş trendinin en yüksek mumunun üzerine düştü. Diyelim ki 10 puan için daha fazla balık avında bu mumun okumalarını dikkate almadık - buna başlangıç mumu diyelim. Böylece, bir sonraki mum aşağı indi ve onu seviye = başlangıç noktası + 10 puan olarak yakalamayacağız: fiyat daha sonra aşağı iner. Bu nedenle, tabiri caizse, uzun bir süre sıkışıp kaldık - fiyat düştü ve istediğiniz gibi aşağı ve yukarı sallanabilir - yine de başlangıç noktası seviyesine ulaşmayacak - ayılar onu zorladı. Ama diyelim ki, 5.000 mumdan sonra bile şanslıydık, fiyat başlangıç noktasındaki seviyeye döndü ve hatta artı 10 puan geçti. Çok zaman kaybettik ama artık bir diziye değil, başlangıç noktası + 10 pip'e eşit değişken bir fiyata girebilir ve şimdi fiyatın = değişken seviye + 10 pip seviyesine ulaşmasını bekleyebiliriz... Kısacası, tüm bunlar gerekli değil - açıklamanıza göre değerlendirirsek, seviyeyi yakalarız = başlangıç noktası + 10 * 10 = başlangıç noktası + 100 puan. Bu seviyeyi yakalamayı başarır yakalamaz başlangıç tarihini 2 gün ileri alıp yeni bir başlangıç noktası hesaplıyoruz. Hepsi sloeno - daha kolay bir yol var.
Kullanıcı değişkenlerinde başlangıç tarihini belirledik (kodda extern kelimesinden önce gelirler). Datetime türünde bir değişken tanımlıyoruz. Bunun dt_StartDate değişkeni (başlangıç tarihi) olmasına izin verin ve hemen başlatma bloğunda kullanıcı değişkeninde depolanan değeri atayın. Daha sonra bu tarihe denk gelen bir mum arıyoruz ve formülünüze göre başlangıç noktasını hesaplıyoruz. Sadece bu bir başlangıç noktası değil, bir başlangıç fiyat seviyesidir. Double türünde bir değişken, örneğin d_StartLevel (başlangıç düzeyi) bildiririz ve hesaplanan düzeyin değerini değişkene gireriz. Veya daha da basit olabilir - bir değişken bildirmek değil, hemen hesaplanan başlangıç fiyatı üzerinden yatay bir çizgi çizmek. Daha da iyisi - bu satırı StartLevel olarak adlandıralım. Şimdi çizelgedeki ikinci çizgiyi başlangıç seviyesinden = 100 puan yukarıda çizin - bu çizgiye "tuzak seviyesi" diyelim - OtlovLevel. İşte bu, başka dizilere gerek yok - aptalca her tike fiyatın OtlovLevel'den daha yüksek olup olmadığına bakarız. Olur olmaz dt_StartDate değişkeninin değerini 2 gün artırıp başlangıç seviyesini tekrar hesaplayıp başlangıç çizgisini oraya aktarıyoruz. Bundan sonra yine başlangıç çizgisinden yukarı doğru 100 puan ayırıp OtlovLevel çizgisini oraya sürükleriz. İşte bu, görev çözüldü. Her seferinde herhangi bir satırın ayarlandığı fiyatı talep edebilir ve mevcut fiyatla veya mevcut mumun Yüksek fiyatıyla karşılaştırabilirsiniz.
Mantığınız ne bilmiyorum bende göstergenin son 30 barını çizen öyle bir ayar var ki
Bir kez daha tekrarlıyorum, SetIndexDrawBegin() grafiğin sol ucundan çubukları sayar
tartışmadan önce kontrol et
O yüzden tartışmıyorum. Bak. Standart CCI göstergesini alıyoruz. SetIndexDrawBegin işlevinde CCIPeriod'u ( Bars - CCIPeriod ) ile değiştirdim . Kodda sadece vurgulanan sarıyı değiştirdim ..
İşte kod:
Mantıksal olarak, CCIPerod 14'e eşitse. O zaman SetIndexDrawBegin ( 0 , Barlar - CCIPeriod) ile sadece son 14 çubuk çizilmelidir. (Bar - 14) değerinden başlayarak . Ama ekranda gördüğüm bu
O yüzden tartışmıyorum. Bak. Standart CCI göstergesini alıyoruz. SetIndexDrawBegin işlevinde CCIPeriod'u ( Bars - CCIPeriod ) ile değiştirdim . Kodda sadece vurgulanan sarıyı değiştirdim ..
İşte kod:
Mantıksal olarak, CCIPerod 14'e eşitse. O zaman SetIndexDrawBegin ( 0 , Barlar - CCIPeriod) ile sadece son 14 çubuk çizilmelidir. (Bar - 14) değerinden başlayarak . Ama ekranda gördüğüm bu
ekranda gördüğüm bu
en üstteki yerel gösterge, aşağıda SetIndexDrawBegin(0, Bars-CCIPerod) olarak değiştirildi;
Midorum , üzgünüm. Benim künt. MetaEditor başka bir terminal açtı... Artık her şey çalışıyor. Teşekkür ederim!
Güzel gün! Nazik insanlar lütfen bir cevap verin, 15 dakikalık bir mumun açıldığı nasıl belirlenir, nefes kesici bir çizgi kullandım ama ortaya çıktı ki, mum her zaman zamanında açılmıyor... Sanırım daha kolay bir yolu var bir mumun açıldığını öğrenmek için ... ama bir şekilde anlamıyorum. ..
if ((TimeMinute( TimeCurrent() )==0 && TimeSeconds(TimeCurrent())==0)|| (TimeMinute(TimeCurrent())==15 && TimeSeconds(TimeCurrent())==0) || (TimeMinute (TimeCurrent())==30 && TimeSeconds(TimeCurrent())==0) || (TimeMinute(TimeCurrent())==45 && TimeSeconds(TimeCurrent())==0))
Güzel gün! Nazik insanlar lütfen bir cevap verin, 15 dakikalık bir mumun açıldığı nasıl belirlenir, nefes kesici bir çizgi kullandım ama ortaya çıktı ki, mum her zaman zamanında açılmıyor... Sanırım daha kolay bir yolu var bir mumun açıldığını öğrenmek için ... ama bir şekilde anlamıyorum. ..
if ((TimeMinute(TimeCurrent())==0 && TimeSeconds(TimeCurrent())==0)|| (TimeMinute(TimeCurrent())==15 && TimeSeconds(TimeCurrent())==0) || (TimeMinute (TimeCurrent())==30 && TimeSeconds(TimeCurrent())==0) || (TimeMinute(TimeCurrent())==45 && TimeSeconds(TimeCurrent())==0))
https://www.mql5.com/ru/forum/131853/page4#504607
Güzel gün! Nazik insanlar lütfen bir cevap verin, 15 dakikalık bir mumun açıldığı nasıl belirlenir, nefes kesici bir çizgi kullandım ama ortaya çıktı ki, mum her zaman zamanında açılmıyor... Sanırım daha kolay bir yolu var bir mumun açıldığını öğrenmek için ... ama bir şekilde anlamıyorum. ..
if ((TimeMinute(TimeCurrent())==0 && TimeSeconds(TimeCurrent())==0)|| (TimeMinute(TimeCurrent())==15 && TimeSeconds(TimeCurrent())==0) || (TimeMinute (TimeCurrent())==30 && TimeSeconds(TimeCurrent())==0) || (TimeMinute(TimeCurrent())==45 && TimeSeconds(TimeCurrent())==0))
М15'te yeni bir çubuk göründüğünde işlev true değerini döndürür