Yayınlanan makale Semafor göstergelerini kullanan en basit ticaret sistemleri:
Yazar: Nikolay Kositsin
Bu arada küçük bir not - kopyalanıp yapıştırılan örnekte verilen kod parçasında mekanik bir yazım hatası var:
//---- Yerel değişkenlerin bildirilmesi double TrendVelue[2];
Bazı Sinyalleri derledim ve "Candles_SmoothedSignal.mqh" (..MQL5\Include\Expert\MySignals\Candles_SmoothedSignal.mqh) gibi yeniden başlattım, ancak MetaEditor bunu Sihirbazda bir Uzman Danışman yapmak için göremiyor.
Bunu nasıl çözebilirim?
Bu mükemmel ve kapsamlı açıklama için teşekkürler...!
daveM
Talimatlarda belirtildiği gibi her şeyi indirdim ve paketinden çıkardım, ancak test cihazı tüm sistemlerde hata veriyor:
OnInit başarısız olduğu için test cihazı durdu
CExpert::ValidationSettings: hata para parametreleri
CMoneyFixedLot::ValidationSettings: lot miktarı 1.000000 ila 1000000.000000 aralığında olmalıdır
Lütfen neyi değiştireceğimi söyleyin.
Merhaba!
ASCtrend göstergesine (indicators.zip sıkıştırılmış dosyasında bulunur) dayanarak oluşturulan ASCtrendSignal işlem siny ali modülünü (mysignals.zip sıkıştırılmış dosyasında bulunur) MQL5 Sihirbazına eklemeye çalışıyorum, ancak hiçbir şey çalışmıyor. ASCtrendSignal işlem sinyali modülünü Include\Expert\Signal'a yerleştiriyorum ve ASCtrend göstergesini Göstergeler paketine yerleştiriyorum, her şey doğru görünüyor, ancak modül ısrarla MQL5 Sihirbazında görüntülenmek istemiyor. İşte ASCtrendSignal ticaret sinyali modülünün kodu:
//+------------------------------------------------------------------+ //|ASCtrendSignal.mqh | //|Telif Hakkı © 2011, Nikolay Kositsin | //|Habarovsk, farria@mail.redcom.ru | //+------------------------------------------------------------------+ #property copyright "Telif Hakkı © 2011, Nikolay Kositsin." #property link "farria@mail.redcom.ru" //+------------------------------------------------------------------+ //| Dahil edilen dosyalar| //+------------------------------------------------------------------+ #property tester_indicator "ASCtrend.ex5" #include <Expert\ExpertSignal.mqh> //--- sihirbaz açıklaması başlangıç //+------------------------------------------------------------------+ //| Sabitlerin bildirilmesi| //+------------------------------------------------------------------+ #define OPEN_LONG 80 // Satın al komutunu Uzman Danışmana döndürmek için kullanılan sabit #define OPEN_SHORT 80 // Satış komutunu Uzman Danışmana döndürmek için kullanılan sabit #define CLOSE_LONG 40 // Uzman Danışmana uzun bir pozisyonu kapatma komutunu döndürmek için kullanılan sabit #define CLOSE_SHORT 40 // Uzman Danışmana kısa pozisyon kapatma komutunu döndürmek için kullanılan sabit #define REVERSE_LONG 100 // Uzman Danışmana uzun bir pozisyonu tersine çevirme komutunu döndürmek için kullanılan sabit #define REVERSE_SHORT 100 // Kısa pozisyonu tersine çevirme komutunu Uzman Danışmana döndürmek için kullanılan sabit #define NO_SIGNAL 0 // Uzman Danışmana bir sinyalin yokluğunu döndürmek için kullanılan sabit //+----------------------------------------------------------------------+ //| Sınıfın açıklaması| //| Başlık=ASCtrend göstergesine dayalı sinyaller | //| Type=SignalAdvanced.| //| Name=ASCtrend| //| Class=CASCtrendSignal| //| Sayfa=| //| Parametre=BuyPosOpen,bool,true,Satın alma izni | //| Parametre=SellPosOpen,bool,true,Satış izni | //| Parametre=BuyPosClose,bool,true,Uzun pozisyondan çıkmak için izin | //| Parametre=SellPosClose,bool,true,Kısa pozisyondan çıkmak için izin | //| Parametre=Ind_Timeframe,ENUM_TIMEFRAMES,PERIOD_H4,Timeframe | //| Parametre=RISK,int,4,Risk seviyesi| //| Parametre=SinyalBar,uint,1,Giriş sinyali için çubuk indeksi | //+----------------------------------------------------------------------+ //--- sihirbaz açıklaması end //+----------------------------------------------------------------------+ //| CASCtrendSignal sınıfı.| //| Amaç: |'a dayalı ticaret sinyalleri üreteci sınıfı //| ASCtrend indicator values http://www.mql5.com/ru/code/491/. | //| CExpertSignal sınıfından türetilmiştir. || //+----------------------------------------------------------------------+ class CASCtrendSignal : public CExpertSignal { protected: CiCustom m_indicator; // ASCtrend değerlerine erişim için nesne //--- ayarlanmış parametreler bool m_BuyPosOpen; // satın alma izni bool m_SellPosOpen; // satış izni bool m_BuyPosClose; // uzun pozisyondan çıkma izni bool m_SellPosClose; // kısa pozisyondan çıkma izni ENUM_TIMEFRAMES m_Ind_Timeframe; // ASCtrend göstergesi zaman dilimi uint m_RISK; // Risk seviyesi uint m_SignalBar; // giriş sinyali için çubuk indeksi public: CASCtrendSignal(); //--- ayarlanabilir parametreleri ayarlama yöntemleri void BuyPosOpen(bool value) { m_BuyPosOpen=value; } void SellPosOpen(bool value) { m_SellPosOpen=value; } void BuyPosClose(bool value) { m_BuyPosClose=value; } void SellPosClose(bool value) { m_SellPosClose=value; } void Ind_Timeframe(ENUM_TIMEFRAMES value) { m_Ind_Timeframe=value; } void RISK(uint value) { m_RISK=value; } void SignalBar(uint value) { m_SignalBar=value; } //--- ayarlanabilir parametreler doğrulama yöntemi virtual bool ValidationSettings(); //--- ayarlanabilir parametreler doğrulama yöntemi virtual bool InitIndicators(CIndicators *indicators); // göstergelerin başlatılması //--- pazara giriş sinyalleri oluşturma yöntemi virtual int LongCondition(); virtual int ShortCondition(); bool InitASCtrend(CIndicators *indicators); // ASCtrend göstergesi başlatma yöntemi protected: }; //+------------------------------------------------------------------+ //|CASCtrendSignal kurucusu.| //| GİRİŞ: hayır.| //| ÇIKTI: hayır.| //|| HATIRLATMA: hayır.| //+------------------------------------------------------------------+ void CASCtrendSignal::CASCtrendSignal() { //--- varsayılan parametrelerin ayarlanması m_BuyPosOpen=true; m_SellPosOpen=true; m_BuyPosClose=true; m_SellPosClose=true; //--- gösterge giriş parametreleri m_Ind_Timeframe=PERIOD_H4; m_RISK=4; //--- m_SignalBar=1; m_used_series=USE_SERIES_OPEN+USE_SERIES_HIGH+USE_SERIES_LOW+USE_SERIES_CLOSE; } //+------------------------------------------------------------------+ //| Ayarlanabilir parametreler kontrol ediliyor.| //| GİRİŞ: hayır.| //| ÇIKTI: ayarlar geçerliyse true, değilse false. //|| HATIRLATMA: hayır.| //+------------------------------------------------------------------+ bool CASCtrendSignal::ValidationSettings() { //--- parametreleri kontrol etme if(m_RISK<=0) { printf(__FUNCTION__+": Risk level must be above zero"); return(false); } //--- başarılı tamamlama return(true); } //+------------------------------------------------------------------+ //| Göstergelerin ve zaman serilerinin başlatılması. || //| GİRİŞ: indicators - bir nesne koleksiyonuna işaretçi | //| göstergeler ve zaman serileri.| //| OUTPUT: true - başarılı olması durumunda, aksi takdirde - false. || OUTPUT: true - başarılı olması durumunda, aksi takdirde - false. || //|| HATIRLATMA: hayır.| //+------------------------------------------------------------------+ bool CASCtrendSignal::InitIndicators(CIndicators *indicators) { //--- işaretçinin kontrolü if(indicators==NULL) return(false); //--- gösterge başlatma if(!InitASCtrend(indicators)) return(false); //--- başarılı tamamlama return(true); } //+------------------------------------------------------------------+ //| ASCtrend göstergesi başlatma.| //| GİRİŞ: indicators - bir nesne koleksiyonuna işaretçi | //| göstergeler ve zaman serileri.| //| OUTPUT: true - başarılı olması durumunda, aksi takdirde - false. || OUTPUT: true - başarılı olması durumunda, aksi takdirde - false. || //|| HATIRLATMA: hayır.| //+------------------------------------------------------------------+ bool CASCtrendSignal::InitASCtrend(CIndicators *indicators) { //--- işaretçinin kontrolü if(indicators==NULL) return(false); //--- koleksiyona bir nesne ekleme if(!indicators.Add(GetPointer(m_indicator))) { printf(__FUNCTION__+": error of adding the object"); return(false); } //--- gösterge parametrelerinin ayarlanması MqlParam parameters[2]; parameters[0].type=TYPE_STRING; parameters[0].string_value="ASCtrend.ex5"; parameters[1].type=TYPE_INT; parameters[1].integer_value=m_RISK; //--- nesne başlatma if(!m_indicator.Create(m_symbol.Name(),m_Ind_Timeframe,IND_CUSTOM,2,parameters)) { printf(__FUNCTION__+": object initialization error"); return(false); } //--- tampon sayısı if(!m_indicator.NumBuffers(2)) return(false); //--- ASCtrend göstergesi başarıyla başlatıldı return(true); } //+------------------------------------------------------------------+ //| Uzun pozisyon açmak için koşulları kontrol etme ve | //| ve kısa bir kapanış| //| INPUT:Hayır| //| ÇIKTI: 0'dan 100'e kadar oy ağırlığı| //|| HATIRLATMA: hayır.| //+------------------------------------------------------------------+ int CASCtrendSignal::LongCondition() { //--- satın alma sinyali ASCtrend göstergesinin tampon 1'i tarafından belirlenir double Signal=m_indicator.GetData(1,m_SignalBar); //--- bir işlem sinyali almak if(Signal && Signal!=EMPTY_VALUE) { if(m_BuyPosOpen) { if(m_SellPosClose) return(REVERSE_SHORT); else return(OPEN_LONG); } else { if(m_SellPosClose) return(CLOSE_SHORT); } } //--- kısa pozisyonu kapatmak için sinyal aramak if(!m_SellPosClose) return(NO_SIGNAL); int Bars_=Bars(m_symbol.Name(),m_Ind_Timeframe); for(int bar=int(m_SignalBar); bar<Bars_; bar++) { Signal=m_indicator.GetData(0,bar); if(Signal && Signal!=EMPTY_VALUE) return(NO_SIGNAL); Signal=m_indicator.GetData(1,bar); if(Signal && Signal!=EMPTY_VALUE) return(CLOSE_SHORT); } //--- işlem sinyali yok return(NO_SIGNAL); } //+------------------------------------------------------------------+ //| Kısa pozisyon açmak için koşulları kontrol etme ve | //| uzun olanı kapatmak| //| INPUT:Hayır| //| ÇIKTI: 0'dan 100'e kadar oy ağırlığı| //|| HATIRLATMA: hayır.| //+------------------------------------------------------------------+ int CASCtrendSignal::ShortCondition() { //--- satış sinyali ASCtrend göstergesinin tampon 0'ı tarafından belirlenir double Signal=m_indicator.GetData(0,m_SignalBar); //--- bir işlem sinyali almak if(Signal && Signal!=EMPTY_VALUE) { if(m_SellPosOpen) { if(m_BuyPosClose) return(REVERSE_LONG); else return(OPEN_SHORT); } else { if(m_BuyPosClose) return(CLOSE_LONG); } } //--- uzun bir pozisyonu kapatmak için sinyal aramak if(!m_BuyPosClose) return(NO_SIGNAL); int Bars_=Bars(m_symbol.Name(),m_Ind_Timeframe); // Здесь код исправлен с учетом подсказки от Владимира Карпутова: Symbol() заменен на m_symbol.Name() for(int bar=int(m_SignalBar); bar<Bars_; bar++) { Signal=m_indicator.GetData(1,bar); if(Signal && Signal!=EMPTY_VALUE) return(NO_SIGNAL); Signal=m_indicator.GetData(0,bar); if(Signal && Signal!=EMPTY_VALUE) return(CLOSE_LONG); } //--- işlem sinyali yok return(NO_SIGNAL); } //+------------------------------------------------------------------+
Lütfen bana sorunun ne olabileceğini söyleyebilir misiniz?
Saygılarımla, Vladimir
Merhaba!
ASCtrend göstergesine (indicators.zip sıkıştırılmış dosyasında bulunur) dayanarak oluşturulan ASCtrendSignal işlem siny ali modülünü (mysignals.zip sıkıştırılmış dosyasında bulunur) MQL5 Sihirbazına eklemeye çalışıyorum, ancak hiçbir şey çalışmıyor. ASCtrendSignal işlem sinyali modülünü Include\Expert\Signal içine yerleştiriyorum ve ASCtrend göstergesini Indicators paketine yerleştiriyorum, her şey doğru görünüyor, ancak modül ısrarla MQL5 Sihirbazında görüntülenmek istemiyor. İşte ASCtrendSignal ticaret sinyali modülünün kodu:
Lütfen bana sorunun ne olabileceğini söyleyebilir misiniz?
Saygılarımla, Vladimir
Aynı sorunun göstergelere dayalı olarak yazılan diğer alım satım sinyalleri modüllerinde de meydana geldiğini eklemek isterim. Görünüşe göre, onlar da aynı sorunu yaşıyor. Lütfen bu sorunların çözülmesine yardımcı olun.
Saygılarımla, Vladimir.
Not: Sıkıştırılmış indicators.zip dosyasından açtığım bazı göstergeler terminale yüklendi ve normal çalışıyor.
Önemli olan sırası:
// sihirbaz açıklaması başlangıç //+----------------------------------------------------------------------+ //| Sınıfın açıklaması| //| Başlık=ASCtrend göstergesine dayalı sinyaller | //| Type=SignalAdvanced.| //| Name=ASCtrend| //| Class=CASCtrendSignal| //| Sayfa=| //| Parametre=BuyPosOpen,bool,true,Satın alma izni | //| Parametre=SellPosOpen,bool,true,Satış izni | //| Parametre=BuyPosClose,bool,true,Uzun pozisyondan çıkmak için izin | //| Parametre=SellPosClose,bool,true,Kısa pozisyondan çıkmak için izin | //| Parametre=Ind_Timeframe,ENUM_TIMEFRAMES,PERIOD_H4,Timeframe | //| Parametre=RISK,int,4,Risk seviyesi| //| Parametre=SinyalBar,uint,1,Giriş sinyali için çubuk indeksi | //+----------------------------------------------------------------------+ // sihirbaz açıklaması end
değil
//--- wizard description start //--- wizard description end
ve başlangıç ve bitiş arasında sadece bir servis bloğu - değişken veya makro ikamesi yok.
Modül bu şekilde başlamalıdır:
//+------------------------------------------------------------------+ //|ASCtrendSignal.mqh | //|Telif Hakkı © 2011, Nikolay Kositsin | //|Habarovsk, farria@mail.redcom.ru | //+------------------------------------------------------------------+ #property copyright "Telif Hakkı © 2011, Nikolay Kositsin." #property link "farria@mail.redcom.ru" //+------------------------------------------------------------------+ //| Dahil edilen dosyalar| //+------------------------------------------------------------------+ //#property tester_indicator "ASCtrend.ex5" #include <Expert\ExpertSignal.mqh> // sihirbaz açıklaması başlangıç //+----------------------------------------------------------------------+ //| Sınıfın açıklaması| //| Başlık=ASCtrend göstergesine dayalı sinyaller | //| Type=SignalAdvanced.| //| Name=ASCtrend| //| Class=CASCtrendSignal| //| Sayfa=| //| Parametre=BuyPosOpen,bool,true,Satın alma izni | //| Parametre=SellPosOpen,bool,true,Satış izni | //| Parametre=BuyPosClose,bool,true,Uzun pozisyondan çıkmak için izin | //| Parametre=SellPosClose,bool,true,Kısa pozisyondan çıkmak için izin | //| Parametre=Ind_Timeframe,ENUM_TIMEFRAMES,PERIOD_H4,Timeframe | //| Parametre=RISK,int,4,Risk seviyesi| //| Parametre=SinyalBar,uint,1,Giriş sinyali için çubuk indeksi | //+----------------------------------------------------------------------+ // sihirbaz açıklaması end //+------------------------------------------------------------------+ //| Sabitlerin bildirilmesi| //+------------------------------------------------------------------+ #define OPEN_LONG 80 // Satın al komutunu Uzman Danışmana döndürmek için kullanılan sabit #define OPEN_SHORT 80 // Satış komutunu Uzman Danışmana döndürmek için kullanılan sabit #define CLOSE_LONG 40 // Uzman Danışmana uzun bir pozisyonu kapatma komutunu döndürmek için kullanılan sabit #define CLOSE_SHORT 40 // Uzman Danışmana kısa pozisyon kapatma komutunu döndürmek için kullanılan sabit #define REVERSE_LONG 100 // Uzman Danışmana uzun bir pozisyonu tersine çevirme komutunu döndürmek için kullanılan sabit #define REVERSE_SHORT 100 // Kısa pozisyonu tersine çevirme komutunu Uzman Danışmana döndürmek için kullanılan sabit #define NO_SIGNAL 0 // Uzman Danışmana bir sinyalin yokluğunu döndürmek için kullanılan sabit //+----------------------------------------------------------------------+ //| CASCtrendSignal sınıfı.| //| Amaç: |'a dayalı ticaret sinyalleri üreteci sınıfı //| ASCtrend indicator values http://www.mql5.com/ru/code/491/. | //| CExpertSignal sınıfından türetilmiştir. || //+----------------------------------------------------------------------+ class CASCtrendSignal : public CExpertSignal {
düzenleme yaptıktan sonra MetaEditor'u yeniden yükleyin
Önemli olan sırası:
değil
ve başlangıç ile bitiş arasında sadece bir servis bloğu - değişken veya makro ikamesi yok.
Bir modül bu şekilde başlamalıdır:
düzenleme yaptıktan sonra MetaEditor'u yeniden yükle
Teşekkürler, Vladimir!
Her şey çalıştı.
Saygılarımla, Vladimir.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi üzerine forum
"Semafor göstergeleri kullanan basit ticaret sistemleri" makalesinin tartışılması
Vladimir Karputov, 2019.10.30 08:50
Sıra önemli:
// sihirbaz açıklaması başlangıç //+----------------------------------------------------------------------+ //| Sınıfın açıklaması| //| Başlık=ASCtrend göstergesine dayalı sinyaller | //| Type=SignalAdvanced| //| Name=ASCtrend| //| Class=CASCtrendSignal| //| Sayfa=| //| Parametre=BuyPosOpen,bool,true,Satın alma izni | //| Parametre=SellPosOpen,bool,true,Satış izni | //| Parametre=BuyPosClose,bool,true,Uzun pozisyondan çıkmak için izin | //| Parametre=SellPosClose,bool,true,Kısa pozisyondan çıkmak için izin | //| Parametre=Ind_Timeframe,ENUM_TIMEFRAMES,PERIOD_H4,Timeframe | //| Parametre=RISK,int,4,Risk seviyesi| //| Parametre=SinyalBar,uint,1,Giriş sinyali için çubuk indeksi | //+----------------------------------------------------------------------+ // sihirbaz açıklaması end
ama değil
//--- wizard description start //--- wizard description end
ve başlangıç ve bitiş arasında sadece servis bloğu - değişkenler ve makro ikameleri yok.
Bu, modülün sahip olması gereken başlangıçtır:
//+------------------------------------------------------------------+ //|ASCtrendSignal.mqh | //|Telif Hakkı © 2011, Nikolay Kositsin | //|Habarovsk, farria@mail.redcom.ru | //+------------------------------------------------------------------+ #property copyright "Telif Hakkı © 2011, Nikolay Kositsin" #property link "farria@mail.redcom.ru" //+------------------------------------------------------------------+ //| Dahil edilen dosyalar| //+------------------------------------------------------------------+ //#property tester_indicator "ASCtrend.ex5" #include <Expert\ExpertSignal.mqh> // sihirbaz açıklaması başlangıç //+----------------------------------------------------------------------+ //| Sınıfın açıklaması| //| Başlık=ASCtrend göstergesine dayalı sinyaller | //| Type=SignalAdvanced| //| Name=ASCtrend| //| Class=CASCtrendSignal| //| Sayfa=| //| Parametre=BuyPosOpen,bool,true,Satın alma izni | //| Parametre=SellPosOpen,bool,true,Satış izni | //| Parametre=BuyPosClose,bool,true,Uzun pozisyondan çıkmak için izin | //| Parametre=SellPosClose,bool,true,Kısa pozisyondan çıkmak için izin | //| Parametre=Ind_Timeframe,ENUM_TIMEFRAMES,PERIOD_H4,Timeframe | //| Parametre=RISK,int,4,Risk seviyesi| //| Parametre=SinyalBar,uint,1,Giriş sinyali için çubuk indeksi | //+----------------------------------------------------------------------+ // sihirbaz açıklaması end //+------------------------------------------------------------------+ //| Sabitlerin bildirilmesi| //+------------------------------------------------------------------+ #define OPEN_LONG 80 // Satın al komutunu Uzman Danışmana döndürmek için kullanılan sabit #define OPEN_SHORT 80 // Satış komutunu Uzman Danışmana döndürmek için kullanılan sabit #define CLOSE_LONG 40 // Uzman Danışmana uzun bir pozisyonu kapatma komutunu döndürmek için kullanılan sabit #define CLOSE_SHORT 40 // Uzman Danışmana kısa pozisyon kapatma komutunu döndürmek için kullanılan sabit #define REVERSE_LONG 100 // Uzman Danışmana uzun bir pozisyonu tersine çevirme komutunu döndürmek için kullanılan sabit #define REVERSE_SHORT 100 // Kısa pozisyonu tersine çevirme komutunu Uzman Danışmana döndürmek için kullanılan sabit #define NO_SIGNAL 0 // Uzman Danışmana bir sinyalin yokluğunu döndürmek için kullanılan sabit //+----------------------------------------------------------------------+ //| CASCtrendSignal sınıfı.| //| Amaç: |'a dayalı ticaret sinyalleri üreteci sınıfı //| ASCtrend indicator values http://www.mql5.com/ru/code/491/. | //| CExpertSignal sınıfından türetilmiştir.| //+----------------------------------------------------------------------+ class CASCtrendSignal : public CExpertSignal {
değişiklik yaptıktan sonra MetaEditor'ü yeniden başlatın

- Ü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 Semafor Göstergelerini Kullanan Basit Alım Satım Sistemleri yayınlandı:
Herhangi bir karmaşık alım satım sistemini dikkatlice incelersek, bunun bir dizi basit alım satım sinyaline dayandığını göreceğiz. Bu nedenle, acemi geliştiricilerin hemen karmaşık algoritmalar yazmaya başlamasına gerek yoktur. Bu makale, sözleşmeleri gerçekleştirmek için semafor göstergelerini kullanan bir alım satım sistemine bir örnek sunmaktadır.
Semafor veya sinyal göstergeleri, piyasaya giriş veya çıkış anlarını gösteren basit detektörlerdir. Geçerli çubukta bir giriş sinyali olması durumunda, bir sembol grafiğinde uygun bir etiket görünür. Bu etiket daha sonra bir sözleşme gerçekleştirmek için bir koşul olarak kullanılabilir.
Bu tür birçok gösterge vardır, ancak bu tür göstergelere dayanan orijinal alım satım sisteminin özü hiç değişmemiştir. Bu nedenle, bunu en basit ve evrensel biçimde uygulamak iyi bir fikirdir. Bu, önemli değişiklikler olmadan benzer göstergelerle çalışırken elde edilen sonucun daha fazla kullanılmasına izin verecektir.
Yazar: Nikolay Kositsin