Teşekkür ederim. Çok bilgilendirici.
Bu makalede bu kodun ne anlama geldiğini anlamaya çalışıyorum, neden CINDICATOBUFFER'ın yanında bir * var ve sonra at kullanıyoruz.
((CIndicatorBuffer*)At(0)).Name("ZIGZAG");
((CIndicatorBuffer*)At(1)).Name("HIGH");
((CIndicatorBuffer*)At(2)).Name("LOW");
Detaylı bir açıklama yaparsanız sevinirim
Teşekkürler
Bu makalede bu kodun ne anlama geldiğini anlamaya çalışıyorum, neden CINDICATOBUFFER'ın yanında bir * var ve sonra at kullanıyoruz.
((CIndicatorBuffer*)At(0)).Name("ZIGZAG");
((CIndicatorBuffer*)At(1)).Name("HIGH");
((CIndicatorBuffer*)At(2)).Name("LOW");
Detaylı bir açıklama yaparsanız sevinirim
Teşekkürler
Dize
m_handle=iCustom(symbol,period,zigzag,depth,deviation_create,backstep);
Göstergenin yolunu bulamıyorum.
Burada belirtmenin doğru yolu nedir, çağırmaya çalıştığım göstergeler standart klasörde yer alıyor.
Standart Zigzag, Examples klasöründe yer alır - klasörün adını yola eklemeniz gerekir

2017.07.12 10:38:05.703 Proba2 (EURUSD.m,M1) cannot load custom indicator 'Examples\ZigZag'[4302]
Hata koduna kim bakacak?
ERR_MARKET_NOT_SELECTED | 4302 | MarketWatch'ta sembol seçili değil |
Hata koduna kim bakacak?
ERR_MARKET_NOT_SELECTED | 4302 | MarketWatch'ta sembol seçili değil |
NULL koyuyorum - çalışıyor, "EURUSD" koyuyorum - çalışmıyor!!!!
bool CiZigZag::Create(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_create,const int backstep) { //--- geçmişi kontrol et if(!SetSymbolPeriod(symbol,period)) return(false); //--- oluştur //m_handle=iCustom(symbol,period, "Examples\\\ZigZag",depth,deviation_create,backstep); //m_handle=iCustom("EURUSD",period, "Examples\\\ZigZag",depth,deviation_create,backstep); - çalışmıyor m_handle=iCustom(NULL,period,"Examples\\ZigZag",depth,deviation_create,backstep); - работает //--- sonucu kontrol edin if(m_handle==INVALID_HANDLE) return(false); //--- gösterge başarıyla oluşturuldu if(!Initialize(symbol,period,depth,deviation_create,backstep)) { //--- başlatma hatası IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- tamam return(true); } IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- tamam return(true); }
//+------------------------------------------------------------------+ //|| "Zig Zag" göstergesini oluşturun| //+------------------------------------------------------------------+ bool CiZigZag::Create(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_create,const int backstep) { //--- geçmişi kontrol et if(!SetSymbolPeriod(symbol,period)) return(false); //--- oluştur m_handle=iCustom(symbol,period,"zigzag",depth,deviation_create,backstep); //--- sonucu kontrol edin if(m_handle==INVALID_HANDLE) return(false); //--- gösterge başarıyla oluşturuldu if(!Initialize(symbol,period,depth,deviation_create,backstep)) { //--- başlatma hatası IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- tamam return(true); }
bool CiZigZag::Initialize(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_init,const int backstep) { if(CreateBuffers(symbol,period,3)) { //--- durum satırını oluşturma m_name ="ZigZag"; m_status="("+symbol+","+PeriodDescription()+","+ IntegerToString(depth)+","+IntegerToString(deviation_init)+","+ IntegerToString(backstep)+") H="+IntegerToString(m_handle); //--- ayarları kaydet m_depth=depth; m_deviation=deviation_init; m_backstep=backstep; //--- tampon oluştur ((CIndicatorBuffer*)At(0)).Name("ZIGZAG"); ((CIndicatorBuffer*)At(1)).Name("HIGH"); ((CIndicatorBuffer*)At(2)).Name("LOW"); //--- tamam return(true); } //--- hata return(false); }
Gösterge arabellek dizisinin indeksleme yönünün burada nasıl ayarlandığını anlamama yardımcı olun, yani ArraySetAsSeries ile aynı. Varsayılan yön şimdiki zamandan geçmişe doğrudur, ancak bunu geçmişten günümüze yapmam gerekiyor. Dünden beri bu soruyla mücadele ediyorum! Yardım edin!
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Yeni makale MQL5 Standart Kitaplığını Genişletme ve Kodu Yeniden Kullanma yayınlandı:
MQL5 Standart Kitaplığı, bir geliştirici olarak hayatınızı kolaylaştırır. Ancak, dünyadaki bütün geliştiricilerin ihtiyaçlarını karşılamaz, bu yüzden daha özel bir şeye ihtiyacınız olduğunu düşünüyorsanız, bir adım daha ileri gidebilir ve bunu genişletebilirsiniz. Bu makale, size MetaQuotes'un Zig-Zag teknik göstergesini Standart Kitaplığa entegre etme konusunu anlatır. Amacımıza ulaşmak için MetaQuotes'un tasarım felsefesinden ilham aldık.
MQL5 Standart Kitaplığı, bir geliştirici olarak hayatınızı kolaylaştıran, bir dizi hazır sınıftan oluşan bir nesne yönelimli çerçevedir. Ancak, dünya genelindeki bütün geliştiricilerin ihtiyaçlarını karşılamaz, bu yüzden daha özel bir şeye ihtiyacınız olduğunu düşünüyorsanız, bir adım daha ileri gidebilir ve bunu genişletebilirsiniz. Bu makale, size MetaQuotes'un Zig-Zag teknik göstergesini Standart Kitaplığa entegre etme konusunu anlatmaktadır. Amacımıza ulaşmak için MetaQuotes'un tasarım felsefesinden ilham alacağız.
Özetle, MQL5 API kod yeniden kullanımı, güvenilirlik, esneklik ve bakım kolaylığından faydalanmanıza yöneliktir. Teoride bu böyledir, ancak tüm bunların ötesinde MQL5'te gelişmeye devam etme ve çok para birimli Uzman Danışmanlar gibi daha sofistike şeyler tasarlamayı planlıyorsanız, ilk olarak uygulamalarınızın başarılı bir yaşam sürmesinin garanti edileceği şekilde Standart Kitaplıkta kodlama yapabilmeniz gerekir.
EA'larınız ve göstergeleriniz giderek daha karmaşık hale geldikçe, çerçeve geliştirmede yer alan kavramlar konusunda daha fazla uzmanlaşmak gerekir. Gerçek hayattan bir örnek olarak, kişisel bir ihtiyaç olarak, projemin tabanını sıfırdan güçlendirme ihtiyacını belirten karmaşık bir çok para birimli EA geliştirmem gerekiyor.
Şekil 1. Düzenli çok yüzlü cisimler mükemmel nesnelerdir. Bunlar, somut kavramlar üzerine uygulama geliştirme yaklaşımını iyi betimliyor
Yazar: Jordi Bassaganas