EA birden çok çift için nasıl çalıştırılır? - sayfa 2

 
mittalpa :

Bence her iki yaklaşım da iyi.

Eklemek istediğim tek şey, 2. seçeneğin daha az ek yük nedeniyle performans değerine sahip olmasıdır. Her şey, açıkça dosya işleminden daha hızlı olan bellekte olacaktır.

Seçenek #3'ün bir avantajı, dosya verilerini MT4'ün yapamayacağı bir şey için kullanmak istemenizdir.

Ayrıca, piyasa koşullarını vb. güncellemek için kullanıcı müdahalesi olmadan elektrik kesintilerinden vb. kurtulabilecek bir EA oluşturmanız gerekiyorsa, kendinizi yine de dosya erişim işlevselliği oluştururken bulacaksınız.

 
cloudbreaker wrote >>

Ayrıca, piyasa koşullarını vb. güncellemek için kullanıcı müdahalesi olmaksızın elektrik kesintilerinden vs. kurtulabilecek bir EA oluşturmanız gerekiyorsa, kendinizi yine de dosya erişim işlevselliği oluştururken bulacağınızı göz önünde bulundurun.

Tecrübelerime göre, birden fazla çift ticareti yapan bir EA oluşturmaya çalışırken çok fazla sorunla karşılaşacaksınız.

1. Her çift kendi özel mantığına, optimizasyonuna ve bazı çiftler için belki farklı bir ticaret stratejisine ihtiyaç duyar. Belirli bir çift için iyi ticaret yaptığı noktaya kadar optimize edilmiş EA'lar yazdım. Daha sonra, ilk çiftle en fazla korelasyona sahip başka bir çift üzerinde kullanmayı denediğimde, EA'nın çalışması ve ikinci çift için optimize edilmesi için birçok şeyin değiştirilmesi gerektiğine şaşırdım. Her çiftin kendi eksiksiz özel ayarlar setine, gösterge değerlerine ve hatta temel mantık ve stratejide birçok kez değişikliklere ihtiyaç duyduğunu buldum. Bana göre, yerleşik birkaç farklı strateji ve mantık dalına sahip çok esnek bir EA oluşturmak çok daha mantıklı. O zaman, her bir çift için yeni bir optimal .set dosyası oluşturmak sadece basit bir mesele.

2. Yapmak istediğiniz EA, Strategy Tester'da geri test edilip optimize edilemeyecektir. Tecrübelerime göre geriye dönük test ve optimizasyon çok önemlidir. Strateji Test Cihazını kullanmasaydım asla keşfedemeyeceğim, EA performansımı büyük ölçüde iyileştiren optimizasyonlar var. Bana, belirli bir gösterge için pek çok kişi tarafından en yararlı ve optimal değerler olarak kabul edilenlerden çok uzak olan gösterge ayarları gibi şeyler verdi, en uygun değerlerin ne olduğu konusunda herhangi bir yerde değerleri denemeyi asla düşünmezdim. . EA'nızda kaç tane parametreniz olduğunu düşünün. Her birinin optimize edilmesi gerekir ve bir paramın her optimizasyonu başka bir paramda değişiklik gerektirebilir. Bu yüzden her bir parametreyi tek başına optimize edemezsiniz. Optimizasyondaki amaç, tüm parametrelerinizi olabildiğince iyi bir şekilde birbirine göre optimize etmektir. Bu, test cihazını kullanmak uzun zaman alabilir ve çok fazla çalışma gerektirebilir, ancak bu optimizasyonları yalnızca parametreleri tek tek değiştirerek manuel olarak yapmak neredeyse imkansızdır.

Başka bir notta, EA'nızı hangi yolla kodlamaya karar verirseniz verin, EA durumunuzu veya diğer bilgileri dosyaya kaydetmek çoğu durumda zorunlu değildir ve tek seçenek değildir. Bunu yapmanın en iyi, en verimli ve en kolay yolu, durumunuzu Global Değişkenlere kaydetmektir. Sonuçta, Global Değişkenler özelliğinin MT'ye eklenmesinin asıl nedeni budur. Ayrıca bazılarınız, iki EA arasında veri alışverişi ve etkileşime izin veren dosya sisteminde depolanan verileri değiş tokuş etmek amacıyla oluşturulmuş ekstra bir EA'ya sahip olmaktan bahsetti. Bu da gereksiz. Birden çok EA arasında veri alışverişi ve hatta koşullu mantık yeteneği, Global Değişkenlerin başka bir özelliğidir. Bu, farklı grafiklerdeki birden fazla EA'nın herhangi bir EA'nın verilerine erişmesine ve bu verileri başka bir EA'da bir değişikliği etkileyebilecek kararlar almak için kullanmasına izin verir. Bu veriler, bir bilgisayar çökmesi veya elektrik kesintisi durumunda bile güvenli ve emniyetlidir. Ancak, EA'lar arasında veri kaydetme, okuma veya değiş tokuş etme sürecindeyken ve bir veya iki dosya açıkken bir çökme veya elektrik kesintisinde ne olur? Büyük olasılıkla, eksik veriler, veri bozulması ve en kötü sıfır bayt dosyalarıyla karşılaşabilir veya hiç dosya olmayabilir. Global Değişkenler ile bu sorunlardan hiçbiri gerçekleşemez. EA durumunuz, sisteminiz çökmeden önceki milisaniye ile tam olarak aynı olacaktır. GV'lerin herkesin bahsettiği dezavantajı, dizileri depolayamamaları, ancak bunun için bazı iyi yollar var.

Öncelikle, GV adını dize değeri olarak kullanırsanız, GV'ler dizeleri depolayabilir, örneğin GlobalVariableSet(Symbol() + "LastUptime=" + TimeLocal(), -1); Bununla ilgili bir sorun, GV adlarının uzunluğu üzerinde bir sınır bulunmasıdır, bu nedenle uzun dizeleri kaydetmek için bu yolu kullanamazsınız. Her zaman kullandığım bir başka harika geçici çözüm de, grafik nesnelerin metin alanlarında dizeleri depolamak. Onlarla çalışabilirsin, sadece emirler ve GV'lerle çalışırsın. Hem GV'lerin hem de grafiksel Nesnelerin toplam miktarını elde etmek için mql işlevleri vardır, böylece daha sonra hepsini dolaşabilir ve aradığınızı bulabilirsiniz, yine aynı şekilde siparişleriniz arasında dolaştığınız şekilde.

UYARI- Şimdi burada grafik nesnelerin ticaret işlevlerinizi geliştirebileceği diğer harika yollar hakkında biraz tavşan izine gidiyorum… konudan biraz uzaklaşıyorum ama yararlı bilgiler olabilir…

Grafik nesnelerle yapabileceğiniz çok daha faydalı şeyler var. Örneğin, EA'larımdan birinin isteğe bağlı bir riskten korunma özelliği vardır. Riskten korunma etkinleştirildiğinde, elbette, verilen herhangi bir yeni siparişte gerçek bir zarar durdurma yoktur, çünkü aynı sembol üzerinde riskten korunma yaparken, nokta, ilk siparişin normal zarar durdurmanın ve ilk siparişin ne olacağını geçerse, ters bir emir açmaktır. açık kalması gerekiyor. Bu nedenle, kodunuzun zararı durdurmanın ne olduğunu bilmesi ve ticareti izlemesi gerekir, böylece ilk emir zararı durdurma fiyatına ulaştığında ve herhangi bir yanlış anlama olması durumunda, gerçek bir durdurma kaybı kullanamamamızın sebebini açabilir. siparişte, çünkü o zaman sipariş kapatılacak ve bu da elbette hiçbir koruma sağlamayacaktır. Ancak grafik nesnelerle bu işi daha iyi hale getirebilir ve kullanıcıya gerçek bir stop loss ile tamamen aynı görünmesini sağlayabilirsiniz. Yaptığınız şey şudur: Emir verdiğinizde, aynı zamanda fiyat param = zararı durdur fiyatı ile yatay bir çizgi nesnesi yaratırsınız. Satır nesnesinin adı "Sipariş #" + orderTicket; açıklama “StopLoss @ " + SLPrice. Çizgi stilini STYLE_DASHDOT olarak, rengi kırmızı olarak ayarlayın ve tam olarak gerçeğe benzeyen bir kayıp durdurma hattınız var. Çalışmasını sağlayacak kod da kolaydır. İhtiyacınız olan tüm bilgiler satır nesnesinde zaten kayıtlıdır - sipariş bileti# ve satır nesnesinin değeri olan SL fiyatı.Ardından mevcut fiyatın satırın dışına çıkıp çıkmadığını kontrol eden bir fonksiyon yaparsınız.Bu olduğunda, satırın isim alanına kayıtlı olan bilet#.Ardından aynı bilete sahip olan açık emri bulursunuz.Satın Al mı Sat mı emri olup olmadığını görmek için emri seçin ve ayrıca Lot boyutunu da alın.Artık tüm bilgilere sahipsiniz. Hedge emrinizi açmanız gerekiyor.Birincisinin karşısında ve aynı lot büyüklüğüne sahip yeni bir emir açıyorsunuz.Son adım stoploss satırını silmek.İşini izlediğinizde oldukça havalı çünkü artık ne zaman olduğunuzu görebilirsiniz. “Hedged” olmaya yaklaşıyoruz.

Diğer bir artı, siparişinizin gerçekleşebileceğini düşünüyorsanız, fiyat lehinize dönebilir gibi görünüyorsa ancak biraz daha fazla alana ihtiyacınız varsa, o zaman SL/Hedge hattını biraz yukarı sürükleyin. Bunu standart SL ve TP hatlarıyla yapabilmeyi istemez miydiniz? Zararı durdur ve kâr çizgilerini hareketli hale getirselerdi, bu harika bir yeni özellik olurdu, böylece piyasa gerçekten hareket ederken hızlı ayarlamalar yapabiliriz. Tabii ki bunu bugün EA'nızda yukarıdaki adımları kullanarak yapabilirsiniz ve iyi bir avantaj, komisyoncunun SL veya TP'nizi asla görmemesidir. Aşağı tarafı, bilgisayarınız kapanırsa, sunucu tarafı SL veya TP'niz yoktur. Ama aynısı FapTurbo gibi Robotlar için de geçerlidir. 'Gizli' yöntemleri, emirlere sahte SL ve TP değerleri koyarak, fiyatın yakınlaştığı son anda emirleri koddan kapatmak veya emri doğru SL ve TP değerleri ile değiştirmektir.

 
Jacques366 :

Merhaba,

Hala gerçek zamanlı işlemede çalıştığımızı aklımda tutmayı tercih ediyorum, bu yüzden eli iletişimde tutmak için while döngüsü veya bekleme işlevini kullanmayı unutuyorum!

EA'nızı EURUSD gibi bir çifte eklemek, size diğer tüm çiftleri yönetmek için yeterli sinyal sağlar, keneler çok sık görülür. Bu bir dakika değil, saniye meselesi (2 dakika boyunca bir döngü çalıştırmak bana gerçekten çılgınca geliyor). Bir saniye meselesi değilse, sadece nedenini düşünün veya başka bir komisyoncu ile görün.

EA'nızı eurusd'a eklerken elde edebileceğinizden daha fazlasına gerçekten ihtiyacınız varsa, EA'nızın her bir para birimine eklenmiş ayrı bir örneğini çalıştırmayı düşünün. Üzgünüm ama "veya sisteminizi yeniden düşünme" eğilimindeyim.

Bu yazının biraz ani olduğunu düşünüyorsanız özür dilerim. Sizlerle benim bakış açımı paylaşmak istedim.

İyi şanlar.

Acemi bir programcıyım, bu yüzden lütfen bunu tartışma amaçlı bir "eğer" senaryosu olarak kabul edin:


Döngüde üretken hiçbir şey olmayan sonsuz bir while döngüsü oluşturmanın veya EA'nızın geri kalanını yürütmenizi engelliyorsa, bunun kötü bir programlama olduğunun farkındayım, ancak EA'nızın gövdesini içeren sonsuz bir while döngüsü oluşturursanız ne olur? MQL4 programlamasını, "iletişimde elinizi çabuk tutun" yorumunuzu tam olarak anlayacak kadar iyi anlamıyorum. Ticaret emirlerini bağımsız bir komut dosyası aracılığıyla başlatırsanız, EA sonsuz bir döngüde çalışmaya devam ederse iletişim sorunlarınız olur mu?


EA'yı çalıştırmak için gelen EURUSD işaretlerine güvenmek bazı uzun gecikmelere yol açabileceğinden, sonsuz bir while döngüsü kullanma ve bağımsız komut dosyaları aracılığıyla ticaret emirleri verme fikriyle oynamaya devam ediyorum. Örneğin, bugün 0700 ile 0800 GMT arasında, en uzun bekleme 31 saniye olurdu, ancak günün ilerleyen saatlerinde New York oturumunun sonuna yakın bir zamanda, gelen bir onay işareti için bekleme 2 dakika kadar sürebilir --- Henüz Asya seansı, ancak keneler arasında da uzun aralıklar olduğundan şüpheleniyorum.


EA'nızın gövdesini sonsuz bir döngüye sokarsanız, işlem yaptığınız tüm para birimlerini güncelleme sıklığını kolayca kontrol edebilir ve herhangi bir gecikmeden ödün vermeyebilirsiniz. Aslında, EA'dan 1 saniyede 50 geçiş zihin uyuşturuyorsa, biraz yavaşlatmak için döngüye 100-250 milisaniyelik bir uyku ifadesi koymanız gerekebilir.


Tüm geri bildirimleri takdir ediyorum.

 
vangrosh wrote >>

UYARI- Şimdi burada grafik nesnelerin ticaret işlevlerinizi geliştirebileceği diğer harika yollar hakkında biraz tavşan izine gidiyorum… konudan biraz uzaklaşıyorum ama yararlı bilgiler olabilir…

parlak!

 
vangrosh :

Tecrübelerime göre, birden fazla çift ticareti yapan bir EA oluşturmaya çalışırken çok fazla sorunla karşılaşacaksınız.

Bu gerçekten harika bir şey ve kesinlikle çoğunu EA'ma tanıtacağım.

Zaten karar verdiğim birkaç şey -
1. EA başına yalnızca bir çift.
2. Çift başına sadece bir sipariş. (Bu daha sonra değişebilir, ancak yeterince yetkin olana kadar buna bağlı kalacağım).

Altın deneyimlerinizi paylaştığınız için çok teşekkür ederiz.

Pankaj
 

Bu grafik, 29 Nisan 2009 tarihinde EURUSD için keneler arasındaki zaman aralığını göstermektedir. Bu verinin hangi saat dilimini temsil ettiğini bilmiyorum. Kene verileri Gain Capital'den indirildi.

Görüldüğü gibi gün içinde keneler arasındaki sürenin sıklıkla bir dakikayı bazen de iki dakikayı aştığı dönemler vardır.



 
vangrosh :

O zaman her çift için yeni bir optimal .set dosyası oluşturmak basit bir meseledir.

vangrosh: Bir .set dosyasını nasıl oluşturur ve kullanırsınız ? Bu dosya türü için herhangi bir referans bulamadım.

 
cloudbreaker wrote >>

Ayrıca, piyasa koşullarını vb. güncellemek için kullanıcı müdahalesi olmadan elektrik kesintilerinden vb. kurtulabilecek bir EA oluşturmanız gerekiyorsa, kendinizi yine de dosya erişim işlevselliği oluştururken bulacaksınız.

Lütfen buraya bir göz atın: https://book.mql4.com/special/index

Karmaşık Programların Genel Özellikleri


Çok döngülü EA'lar oluşturmak istiyorsanız gidilecek yol.

 
StraightTrader :

Lütfen buraya bir göz atın: https://book.mql4.com/special/index

Karmaşık Programların Genel Özellikleri


Çok döngülü EA'lar oluşturmak istiyorsanız gidilecek yol.

Referans için teşekkürler.

 
FXtrader2008 wrote >>

Bu grafik, 29 Nisan 2009 tarihinde EURUSD için keneler arasındaki zaman aralığını göstermektedir. Bu verinin hangi saat dilimini temsil ettiğini bilmiyorum. Kene verileri Gain Capital'den indirildi.

Görüldüğü gibi gün içinde keneler arasındaki sürenin sıklıkla bir dakikayı bazen de iki dakikayı aştığı dönemler vardır.

Grafik için teşekkürler. Aynı gecikmeleri yaşamadığınızdan emin olmak için diğer para birimlerinden biriyle eşleştirmek güzel olurdu. (Diyelim ki 4 çift için çizelgeleri kolayca sunabilirseniz minnettar olacağım)

EA'mı oluşturmaya başladığımda, eurusd'da 1 veya 2 dakika boyunca kenelerim olmadığında, diğer para birimleri için de aynı olduğunu belirttim. O zaman sadece bir tehlike veya yaptığım kötü bir varsayım olabilir ama bu fikri tuttum ve EA'm aylardır sorunsuz çalışıyor. Gerçek deneyim, mantık eksikliğini telafi etti ve EA'mı bu şekilde çalışmaya devam ettim. Sorunlarla karşılaşmış olsaydım, çözümünüzü yerleştirirdim, yani EA'nızı 2 koşu arasında bir gecikmeyle uyanık tutma fikrinizi kastediyorum. Mantıken, bildiğim kadarıyla böyle yapılması gerekiyor: ama komisyoncular tarafından kenelerin nasıl üretildiğini bilmiyorum, bu yüzden daha ileri gitmek zor.

Ayrıca programınızın çalıştığı sisteme göre kodlamak 'normal' veya 'daha iyi'.

Bu nedenle, çoklu para birimi işlemlerine izin vererek, normalde EA'mızı tüm onayları sağlayan bir kanala bağlayabilmemiz gerekir. Bu, şu ya da bu şekilde ele almamız gereken sistem mantığındaki bir eksiklik.

Saygılarımızla

Neden: