Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 30
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
burayı gerçekten anlamıyorum...
Göstergede standart bir AO tanıtıcısı oluşturuyorum, ancak belirli bir zaman dilimiyle. AO'dan mevcut olanla eşleşmeyen bir zaman dilimi ile veri alırken, alıyorum ... Hiçbir şey almıyorum - 4806 hatası.
Soru: Mevcut olanla örtüşmeyen zaman dilimlerinden standart göstergelerden veri nasıl alınır?
burayı gerçekten anlamıyorum...
Göstergede standart bir AO tanıtıcısı oluşturuyorum, ancak belirli bir zaman dilimiyle. AO'dan mevcut olanla eşleşmeyen bir zaman dilimi ile veri alırken, alıyorum ... Hiçbir şey almıyorum - 4806 hatası.
Soru: Mevcut olanla örtüşmeyen zaman dilimlerinden standart göstergelerden veri nasıl alınır?
INDICATOR'da INDICATOR değerlerinin alınması hakkında:
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Bir göstergede başka bir göstergeden veri nasıl alınır
Vladimir Karputov , 2016.12.27 08:41
MQL5 göstergelerinde varsayılan olarak "0" indeksli çubuğun grafikteki en SOL çubuk olduğunu göz önünde bulundurarak, göstergemizdeki diğer iki göstergeden veri almaya çalışalım - MA ve Timsah (bu örnek " IndicatorFromIndicators .mql5 " göstergesi).
Göstergede, "0", "1" ve "2" indeksli çubuktaki MA ve Timsah'tan veri almaya çalışacağız:
//---
Comment ( "Проверка: time[0]=" ,time[ 0 ], "\n" ,
"rates_total-1: " ,rates_total, "\n" ,
"BarsCalculated(iMA): " , BarsCalculated (handle_iMA), "\n" ,
"BarsCalculated(iAlligator): " , BarsCalculated (handle_iAlligator), "\n" ,
"MA[" , 0 , "]=" , StringFormat ( "%." + IntegerToString ( Digits ()+ 1 )+ "f" ,iMAGet( 0 )), "\n" ,
"MA[" , 1 , "]=" , StringFormat ( "%." + IntegerToString ( Digits ()+ 1 )+ "f" ,iMAGet( 1 )), "\n" ,
"MA[" , 2 , "]=" , StringFormat ( "%." + IntegerToString ( Digits ()+ 1 )+ "f" ,iMAGet( 2 )), "\n" ,
"Jaws[" , 0 , "]=" , StringFormat ( "%." + IntegerToString ( Digits ())+ "f" ,iAlligatorGet( GATORJAW_LINE , 0 )), "\n" ,
"Jaws[" , 1 , "]=" , StringFormat ( "%." + IntegerToString ( Digits ())+ "f" ,iAlligatorGet( GATORJAW_LINE , 1 )), "\n" ,
"Jaws[" , 2 , "]=" , StringFormat ( "%." + IntegerToString ( Digits ())+ "f" ,iAlligatorGet( GATORJAW_LINE , 2 )));
//--- return value of prev_calculated for next call
return (rates_total);
}
" IndicatorFromIndicators.mql5 " test göstergesini grafiğe ekleyin ve artı işaretini en SAĞ çubuğa ayarlayın - yani bu bir sıfır çubuğu değildir. İşte olanlar:
Artı işareti en SAĞ çubuğa - yani kesinlikle "0" indeksli çubuğa değil, CopyBuffer kullanırken, CopyBuffer'ın geçmişten gelen verileri kopyalayacağını bilmelisiniz, yani çubuğa "0" indeksi, geçerli çubuk anlamına gelir.
CopyBuffer: Kopyalanan verinin öğeleri (buffer_num indeksli gösterge arabelleği), şimdiki zamandan geçmişe başlangıç konumundan sayılır, yani 0'a eşit olan başlangıç konumu, geçerli çubuk (geçerli çubuğun gösterge değeri) anlamına gelir.
Yani, bir MQL5 göstergesinde CopyBuffer işlemlerini kullanıyorsa, diziyi (ArraySetAsSeries) çevirmeniz gerekir, böylece grafikteki en sağdaki çubuk gösterge arabelleğinde (şimdi "iMTF_AO.mq5"te) "0" dizinine karşılık gelir. örneğin, grafikteki en sağdaki çubuk, oranları_toplam-1'e karşılık gelir).
INDICATOR'da INDICATOR değerleri alma hakkında:
CopyBuffer: Kopyalanan verinin öğeleri (buffer_num indeksli gösterge arabelleği), şimdiki zamandan geçmişe başlangıç konumundan sayılır, yani 0'a eşit olan başlangıç konumu, geçerli çubuk (geçerli çubuğun gösterge değeri) anlamına gelir.
Yani, bir MQL5 göstergesinde CopyBuffer işlemlerini kullanıyorsa, diziyi (ArraySetAsSeries) çevirmeniz gerekir, böylece grafikteki en sağdaki çubuk gösterge arabelleğinde (şimdi "iMTF_AO.mq5"te) "0" dizinine karşılık gelir. örneğin, grafikteki en sağdaki çubuk, oranları_toplam-1'e karşılık gelir).
Sadece bir bar alıyorum . Ve "yerel" zaman dilimindeki gösterge verileri normal şekilde görüntüler. "Yerli olmayan" - boş bir değer. Ampirik olarak, AO'dan veri aldığım zaman dilimi için tüm geçmiş yüklenene kadar boş bir değer döndürüleceği sonucuna vardım.
O zaman soru farklı gelecek: zaman çerçevesi geçmişi yüklenirken döngüye nasıl girilmez? Çok basit - bu sadece bir test, ancak genel olarak gösterge, belirli bir TF'nin geçmişine dayalı olarak hesaplamalar yapar ve geçmiş kalmayıncaya kadar bunları gerçekleştirmeye çalışmanıza gerek yoktur.
Sadece bir bar alıyorum . Ve "yerel" zaman dilimindeki gösterge verileri normal şekilde görüntüler. "Yerli olmayan" - boş bir değer. Ampirik olarak, AO'dan veri aldığım zaman dilimi için tüm geçmiş yüklenene kadar boş bir değer döndürüleceği sonucuna vardım.
O zaman soru farklı gelecek: zaman çerçevesi geçmişi yüklenirken döngüye nasıl girilmez? Çok basit - bu sadece bir test, ancak genel olarak gösterge, belirli bir TF'nin geçmişine dayalı olarak hesaplamalar yapar ve geçmiş kalmayıncaya kadar bunları gerçekleştirmeye çalışmanıza gerek yoktur.
"i", "0"a değil, çok yüksek bir değere eşittir. Sonuç olarak: diyelim ki M15'te bir örnek başlattık - bu dönemde 5000 barımız var. H4'ten veri istiyoruz - üzerinde sadece 400 çubuk var. Ayrıca "AO(4999)" isteği girişimi de var.
Yani, H4 döneminden, "4999" endeksli bir çubuk talep edilmeye çalışılır - ve H4'te böyle bir çubuk yoktur, "0" çubuğu talep etmeniz gerekse de sadece 400 çubuk vardır ve eğer gösterge CopyBuffer işlemlerini kullanır, grafikteki en sağdaki çubuğun gösterge arabelleğindeki "0" dizinine karşılık gelmesi için diziyi (ArraySetAsSeries ) çevirmeniz gerekir (şimdi "iMTF_AO.mq5" örneğinde, grafikte en sağdaki çubuk oranları_toplam-1'e karşılık gelir).
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Hatalar, hatalar, sorular
fxsaber , 2017.04.12 08:38
Küçük bir hack. Atama atlamaSonuç
Burada:
"i", "0"a değil, çok yüksek bir değere eşittir. Sonuç olarak: diyelim ki M15'te bir örnek başlattık - bu dönemde 5000 barımız var. H4'ten veri istiyoruz - üzerinde sadece 400 çubuk var. Ayrıca "AO(4999)" isteği girişimi de var.
Yani, H4 döneminden, "4999" endeksli bir çubuk talep edilmeye çalışılır - ve H4'te böyle bir çubuk yoktur, "0" çubuğu talep etmeniz gerekse de sadece 400 çubuk vardır ve eğer gösterge CopyBuffer işlemlerini kullanır, grafikteki en sağdaki çubuğun gösterge arabelleğindeki "0" dizinine karşılık gelmesi için diziyi (ArraySetAsSeries ) çevirmeniz gerekir (şimdi "iMTF_AO.mq5" örneğinde, grafikte en sağdaki çubuk oranları_toplam-1'e karşılık gelir).
Hayır, tabii ki limiti hesaplamaya çalıştım:
... ama acelem olduğunu görüyorum - bu sadece mevcut TF için uygun
Hayır, tabii ki limiti hesaplamaya çalıştım:
... ama acelem olduğunu görüyorum - bu sadece mevcut TF için uygun
Gösterdiğim koda bile baktınız mı? Başlattın mı?
Gösterge arabelleğinin nasıl doldurulacağını değil, neden mevcut çubuktan değil AO'dan değerler alırsanız, boş değerler döndürüldüğünü sordum.
Bunu anladım - geçmiş yok - yükleniyor ve AO'yu yerel olmayan bir TF'den yüklerken "veri yok" hatası veriyor.
Şimdi soru şu: Gösterge döngüsüne girmemek için istenen TF'nin geçmişinin tam olarak yüklendiğini nasıl öğrenebilirim?