"MQL5 Sihirbazı: Alım Satım Sinyalleri Modülü Nasıl Oluşturulur" makalesi için tartışma - sayfa 7
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
OnInit() içine manuel olarak mı eklemeliyim? Yani Sihirbaz aracılığıyla yapmak istediğim şeyi yapamaz mıyım?
Sorun nedir? Ek işlevsellik getiriyorsunuz, bu nedenle biraz manuel çalışma yapmanız gerekiyor.
Hiç sorun değil, ancak Master'ın her şeyi sinyaller, sermaye vb. için özel modüller temelinde yaptığı konsepte uymuyor. Ve makale modası geçmiş ve doğru değil:
CheckCloseLong () yöntemi, çıkış seviyesinin belirlenmesiyle uzun bir pozisyonu kapatmak için bir sinyal üretir. Uzman Danışman tarafından uzun bir pozisyonun kapatılmasının gerekliliğini belirlemek için çağrılır. Uzun bir pozisyonu kapatmak için bir sinyal üretilmesinin amaçlanması durumunda yöntemi geçersiz kılmak gerekir.
Neredeyse 6 yıl geçti ve makale güncel değil mi? Terminalin neredeyse her hafta güncellendiğini gördüğüm için emin değilim.
Herkese merhaba,
Burada ve Standart Kütüphanenin Ticaret Stratejisi Sınıflarını Keşfetme - Harvester tarafındanStratejiyi Özelleştirme'de önerilen yaklaşımı kullanarak gözlemlenen bir ticaret aralığından "çıkma" ve "girme" iki modeliyle CExpertSignal'ın soyundan nasıl oluşturulacağını merak ediyorum. Benim algım, her sinyal sınıfının aşırı yüklenerek uygulanabileceği (uygulanması gerektiği) yönündedir
ve
O zaman şunu buluruz
'de signal.m_threshold_open ve signal.m_threshold_close' akarşı test edilir.
Piyasaya giriş seviyelerini belirleyen ve zararı durdur ve kar al fiyatlarını ayarlayan parametreler şu şekilde döndürülür
standart uygulaması tarafından çağrılan bool CExpertSignal::CheckOpenLong(...) ve bool CExpertSignal::CheckOpenShort(...) temel sınıfta tanımlandığı gibi. Bu nedenle, aşırı yükleme yapmak yeterli olmalıdır
rastgele yeni bir sinyal tanımlamak için kullanılır. CExpertTrade 'in, istenen giriş fiyatının piyasa emri vermek için mevcut fiyattan çok uzak olup olmadığını tespit etmek için kod içerdiğini ve bir stop veya limit emri verilip verilmeyeceğine otomatik olarak karar vermek için giriş fiyatı seçimini kullandığınıunutmayın.
Bununla birlikte, işlem aralığı son n çubuğun en yüksek (HH) ve en düşük (LL) arasındaki bölge olarak tanımlanırsa, LL < fiyat < HH koşulu her zaman doğrudur. Bu nedenle hem int CExpertSignal::LongCondition(...)hem de int CExpertSignal::ShortCondition(...) her zaman 0 "break out" kalıbını tespit etmelidir ve bu kalıba hangi değeri atarsak atayalım int CExpertSignal::Direction() fonksiyonu her zaman sıfır döndürecektir!
Aşırı yüklemenin doğal yaklaşımı
öyle ki önceki kontroller
yerine
henüz başarılı bir versiyona dönüştürülemedi. Belirtildiği gibi, bool CExpertSignal::OpenLongParams(...)' ın HH giriş fiyatını döndürmesi ve bool CExpertSignal::OpenShortParams(...)'ın 2 stop emri oluşturarak sinyali tamamlamak için LL giriş fiyatını döndürmesibasit olurdu.
Benim gözümde, bu standart koparma stratejisinin standart kütüphane açısından nasıl uygulanacağını gösteren ve LL ve HH'de limit emirleriyle sonuçlanan alternatif "koparma" modelini sağlayarak yeterince esnek hale getiren bir örneğe sahip olmak arzu edilir. Açıkçası, böyle bir sinyal aşağıdaki stratejileri birleştirecektir
bunları kalıplar olarak sağlayarak. Bu yaklaşımı tamamlama konusunda yardımınız için son derece minnettar olacağım.
Herkese merhaba,
Burada ve Standart Kütüphanenin Ticaret Stratejisi Sınıflarını Keşfetme - Harvester tarafındanStratejiyi Özelleştirme'de önerilen yaklaşımı kullanarak gözlemlenen bir ticaret aralığından "çıkma" ve "girme" iki modeliyle CExpertSignal'ın soyundan nasıl oluşturulacağını merak ediyorum. Benim algım, her sinyal sınıfınıniki fonksiyonu aşırı yükleyerek uygulanabileceği (uygulanması gerektiği) yönündedir
CExpertTrade 'in, istenen giriş fiyatının piyasa emri vermek için mevcut fiyattan çok uzak olup olmadığını tespit etmek için kod içerdiğini ve bir stop veya limit emri verilip verilmeyeceğine otomatik olarak karar vermek için giriş fiyatı seçimini kullandığınıunutmayın.
[...]
Benim gözümde, bu standart break out stratejisinin standart kütüphane açısından nasıl uygulanacağını gösteren ve LL ve HH'de limit emirleriyle sonuçlanan alternatif "break in" modelini sağlayarak yeterince esnek hale getiren bir örneğe sahip olmak arzu edilir. Bu yaklaşımı tamamlama konusunda yardım için son derece minnettar olacağım.
Endişelerimi mümkün olduğunca kolay anlaşılır kılmak için yeniden ifade etmeye karar verdim. Benim gözümde bu iki makale
genel olarak kendi sinyal sınıflarımızı en basit şekilde nasıl yazacağımızı gösterir. Bu algımı aşağıda özetleyeceğim.
Bununla birlikte, fiyat son n dönemde gözlemlenen en yüksek / en düşük fiyattan daha yüksek / daha düşük olduğunda alım / satım önermek için bu yaklaşımı kullanan bir sinyalin uygulanmasını bitirmek için hala bir fikre ihtiyacım var. Bunun, mevcut fiyatın üstünde ve altında bir çift durdurma emri verilmesiyle sonuçlanması gerekiyor. Bunu zaten koşulu değiştirerek başarmaya çalıştım
ama hala çalışmıyor gibi görünüyor. Bu bana hiç mantıklı gelmiyor çünkü OpenLongParams(...) ve OpenShortParams(...) fonksiyonlarını da aşırı yükledim. Bunlar, istenen durdurma emirlerinin yerleştirileceği seviyeleri belirler. MetaQuotes geliştiricilerinin fikirleri hakkında daha fazla bilgi sahibi olan herhangi biri, bu en temel çıkış stratejisini nasıl uygulayacaklarını açıklayabilir mi?
Kaynak kodu genellikle herhangi bir yazılımın en iyi dokümantasyonu olarak görüldüğünden, MQL5\Include\Expert\ExpertSignal.mqh dosyasındaki CExpertSignal sınıfını analiz etmek için biraz zaman harcadım
Elde ettiğim sonuç, işlem koşullarını kontrol eden işlevlerin esasen Direction() { return(LongCondition()-ShortCondition()); } işlevinin değerini aşağıdaki gibi test etmeye indirgenmesiydi:
(İşlevselliğe herhangi bir şekilde katkıda bulunmadan yalnızca kararlı yürütme için gerekli görünen bazı kodları çıkardım).
Bu özet, herhangi bir özelleştirilmiş strateji sınıfı için fonksiyonları aşırı yüklemenin yeterli olması gerektiğini göstermektedir
ve Harvester'ın yukarıda bağlantısı verilen 2. makalesi, IS_PATTERN_USAGE(x) makrosunun ilk ikisinde nasıl kullanılacağını açıklar, böylece ortaya çıkan sinyal önceden tanımlanmış birkaç modeli algılar.
Şu sorunu görüyorum: Fiyatın son n çubuğun en yüksek en yüksek ve en düşük en düşük arasında olup olmadığı koşulu her zaman doğru olmalıdır. Bu nedenle, hem LongCondition (... ) hem de ShortCondition (...), koparma ticareti için modelle ilişkili aynı değeri döndürür ve CheckOpenLong (...) ve CheckOpenShort (...) içindeki koşullar değiştirilmedikçe Direction() değeri zorunlu olarak sıfırdır.
Ancak LongCondition()>=m_threshold_open ve ShortCondition()>=m_threshold_open kullanmak neden yeterli değil?
makaleye eklediğiniz dosyayı kullandığımda, yanlış bir şey var.
Tip ile ilgili yorumun aşağıdaki gibi olması gerektiğini düşünüyorum:
//| Type=SignalAdvanced |
Mesajınız için teşekkür ederim. Mesajınız sorunumu çözdü. Şerefe!
George
Merhaba,
Kodu derlediğimde üç uyarı aldım
'm_open' bildirimi üyeyi gizler samplesignal.mqh 42 23
'm_close' bildirimi üyeyi gizler samplesignal.mqh 43 23
m_open ve m_close ExpertBase.mqh dosyasında tanımlanmıştır ancak farklı tiptedir.
m_expiratin ExpertSignal.mqh içinde tanımlanmıştır.
Yukarıdaki üç satırı yorumlayın. Uyarılar gitti.
George
Bu programın tam, eksiksiz ve çalıştırılabilir kodunu yeniden yazmak ve hatalarını düzeltmek ve buraya koymak mümkünse
Al bakalım!
Şerefe, Zarik