"ORDER_MAGIC'in Tek Enstrüman Üzerinde Farklı Expert Advisor'larla Alım Satım Yapmak İçin Kullanımı" makalesi için tartışma
Kim veya nasıl bilmiyorum, kendi numaralandırmalarımı oluştururken kimlik numaralarını açıkça belirtmeyi tercih ediyorum (gerekli olmasa da).
Örneğin bunun gibi:
enum Emagic { ENUM_DIGITAL_NAME = 0, // danışmanın sayısal adı ENUM_CODE_INTERACTION = 1, // etkileşim kodu ENUM_EXPERT_SYMBOL = 2 // EA'nın başlatıldığı sembol };
Bu, MQL4'ten geçiş yaparken de yardımcı olabilir, örneğin, siparişlerle çalışmak için kullandığım numaralandırma budur
//ENUM_MT4_ORDER_TYPE enum ENUM_MT4_ORDER_TYPE //Ticaret işlemlerinin türleri { OP_BUY = 0, //Satın Al OP_SELL = 1, //Satış OP_BUYLIMIT = 2, // Bekleyen ALIM LİMİT emri OP_SELLLIMIT = 3, //Bekleyen emir SATIŞ LİMİTİ OP_BUYSTOP = 4, //Bekleyen ALIM STOP emri OP_SELLSTOP = 5 //Bekleyen SATIŞ DURDURMA emri };
Bu yaklaşım uygundur, çünkü tanımlayıcının numaralandırmadaki konumu ne olursa olsun, Kodu (sayısal değeri değişmeyecektir)....
Ayrıca, numaralandırma negatif değere sahip tanımlayıcılar içeriyorsa bu yaklaşım uygundur
PS
Çok ilginç bir makale, yazara teşekkürler...
Kim veya nasıl bilmiyorum, kendi numaralandırmalarımı oluştururken kimlik numaralarını açıkça belirtmeyi tercih ediyorum (gerekli olmasa da).
Örneğin bunun gibi:
Bu, MQL4'ten geçiş yaparken de yardımcı olabilir, örneğin, siparişlerle çalışmak için kullandığım numaralandırma budur
Bu yaklaşım uygundur, çünkü tanımlayıcının numaralandırmadaki konumu ne olursa olsun, Kodu (sayısal değeri değişmeyecektir)....
Ayrıca, numaralandırma negatif değere sahip tanımlayıcılar içeriyorsa bu yaklaşım uygundur
PS
Çok ilginç bir makale, yazara teşekkürler...
Benim için bu çok önemli değil, çünkü bir numaralandırma bildirirken değerler otomatik olarak sırayla atanır,
Yine de sizin varyantınızın daha net olduğuna katılıyorum (özellikle numaralandırmalar uzunsa, örneğin 3-4'ten fazla).
Sihirbaza böyle bir yaklaşımla, kullanıcı için aynı talimatı yazmak gerekir - böylece kullanıcı hangi sihirbazların meşgul olacağını ve hangilerinin boş olduğunu açıkça bilebilir. Uzman Danışman kullanıcıları sadece bir geliştiricinin Uzman Danışmanlarını kullanmaz ve yöntemin tüm Uzman Danışman yazarları tarafından kullanılan standartlara dahil edilmesi pek olası değildir. Terminal geliştiricileri bu ulong'u birkaç değişkene bölmüş olsalardı, böylece birkaç mage olurdu, örneğin dört tane iki baytlık.
request.magic request.id1 request.id2 request.id3
Ya da en azından terminali bir kütüphane ile tamamlasalardı, böylece bir şekilde standartlara dahil edilebilirdi.
SetMagic(Magic,Id1,Id2,Id3)
Sihirbaza böyle bir yaklaşımla, kullanıcı için aynı talimatı yazmak gerekir - böylece kullanıcı hangi sihirbazların meşgul olacağını ve hangilerinin boş olduğunu açıkça bilebilir. Uzman Danışman kullanıcıları sadece bir geliştiricinin Uzman Danışmanlarını kullanmaz ve yöntemin tüm Uzman Danışman yazarları tarafından kullanılan standartlara dahil edilmesi pek olası değildir. Terminal geliştiricileri bu ulong'u birkaç değişkene bölmüş olsalardı, böylece birkaç mage olurdu, örneğin dört tane iki baytlık.
Ya da en azından terminali bir kütüphane ile tamamlayın, böylece bir şekilde standartlara dahil edilebilir.
Kullanıcı için MAGIK ile çalışma talimatını yazmanın gerekli olduğu bir gerçek değildir, öyle olsa bile MAGIK'in nasıl oluşturulduğunun açıklamasının ötesine geçmeyecektir....
Şu anda bunun ticaret otomasyonu hakkındaki en iyi makalelerden biri olduğuna inanıyorum. Daha fazlasını söyleyeceğim - ben kendim MAGIC'i 777777 veya 555555'ten daha ciddi bir düzeyde kodlamanın destekçisiyim, hatta belki de yazar tarafından yapıldığını söylemekten daha ayrıntılı bilgi koymayı tercih ederim.
Ancak yapıları kullanmayı fark etmedim (kodlama fikri MQL4'ten beri var olduğu için), muhtemelen bunun eşiğinde olmama rağmen....
Ayrıca, MAGIC'te alım satım işlemlerinin yapıldığı semboller hakkında herhangi bir bilgi "yazmanın" gerekli olduğunu düşünmüyorum (bunun nedeni, bu bilgilerin zaten başka bir yerde depolanmış olması ve emir anından pozisyonun tam olarak kapatıldığı ana kadar değişmemesidir). Ayrıca, UZMAN'ın MARKER'ına (VEYA MARKER'ına, genetik mühendisliğinde tam olarak nasıl olduğunu söylemeyeceğim) MAGIC'in son üç hanesini (güvenlik kodunu kullanmamak için) tahsis etmenin yeterli olacağını düşünüyorum.
Bunun nedeni, bu rakamların BİRİNCİSİNDE 9-10 temel uzman sınıfını ve kalan ikisinde de kullanıcı veya geliştirici açısından benzersiz numarasını kodlayabilmenizdir. Sonuç olarak, normalde 900 ila 1000 kombinasyon elde edersiniz.
Ayrıca, Uzman Danışmanın en azından tüccar tarafından belirlenen emirleri tanıdığı ve bunları buna göre kodladığı bir algoritmayı tercih ederim.
PS
Birkaç EA'nın kodlanmış MAGIC'i karıştıracağından korkmanın gerekli olduğunu düşünmüyorum, en azından belirli bir yaklaşımla bunun ilk bakışta göründüğü kadar tehlikeli (ve muhtemelen olası) olmadığını düşünüyorum. Özellikle tüm bu uzmanların (farklı yazarlardan olsa bile) bu MAGIC şifreleme metodolojisini desteklemesi ve birbirlerinin eylemlerini dikkate alması önemsiz hale gelir. İdeal olarak, yalnızca bir uzman şu ya da bu çift üzerinde işlem yapmalıdır.....
Makalede kodların kullanımına ilişkin bir örnek verilmekte ve tüm rakamlar kullanılmamakta ve kodlama açıkça fazlalıkla yapılmaktadır,
Gerekirse, bu 9 işgal edilmiş bit bile sıkıştırılabilir.
Sihirbazın tanımlanmasına ek olarak (kalan 9 biti) sipariş verildiği andaki bakiyenin durumu da aktarılabilir.
Bakiyenin 6 bitten fazla yer kaplaması pek olası olmadığından, herhangi bir kodlama için hala yer vardır.
Makalede kodların kullanımına ilişkin bir örnek verilmekte ve tüm rakamlar kullanılmamakta ve kodlama açıkça fazlalıkla yapılmaktadır,
Gerekirse, bu 9 işgal edilmiş bit bile sıkıştırılabilir.
Sihirbazın tanımlanmasına ek olarak (kalan 9 biti) sipariş verildiği andaki bakiyenin durumu da aktarılabilir.
Bakiyenin 6 bitten fazla yer kaplaması pek olası olmadığından, herhangi bir kodlama için hala yer vardır.
Tüm bunlara 1000 veya 10000 eklemeli ve kod çözmeden önce çıkarmalısınız, böylece yönteminiz tarafından işgal edilmeyen garantili bir sihir aralığı vardır.
Tüm bunlara 1000 veya 10000 eklenmeli ve kod çözmeden önce çıkarılmalıdır, böylece sihir yönteminiz tarafından işgal edilmeyen garantili bir aralık vardır.
Peki, bunun nasıl yapılacağı makalede acısız bir şekilde açıklanmıştır (sadece şifreleme aralığını genişletmek için biraz çalışmaya ihtiyaç vardır),
Ben herhangi bir sorun görmüyorum.
Not: Tek ince yer bakiyeyi tam sayıya çevirmeyi unutmamalı, aksi takdirde virgül hata verecektir, nasıl yapılacağı bağlayıcıda görülmelidir, eğer hesap sent ise 100 ile çarpın, eğer böyle bir hassasiyet gerekli değilse, o zaman kırpma ile int'e çeviri.
Bunu acısız bir şekilde nasıl yapacağınız makalede açıklanmıştır (sadece şifreleme aralığını genişletmek için biraz ince ayar yapmanız gerekir),
Ben herhangi bir sorun görmüyorum.
Not: Tek ince yer, bakiyeyi tam sayıya çevirmeyi unutmamalı, aksi takdirde virgül hata verecektir, nasıl yapılacağına bakmalı, eğer hesap sent ise, o zaman 100 ile çarpın, eğer böyle bir hassasiyet gerekli değilse, o zaman kırpma ile int'e çeviri.
Sorun yoksa, sisteminiz tarafından kodlanan ve kodlanmayan büyülerin kesişmemesini nasıl garanti edeceğiniz konusunda kısa ve net bir talimat verin.
Eğer bu bir sorun değilse, sisteminiz tarafından kodlanan ve kodlanmayan magiklerin kesişmemesini nasıl garanti edeceğinize dair kısa ve net bir talimat verin.
Cevabımın bir bahane gibi görünmemesi için hemen bu sorunun dikkate alınmadığını ancak buna izin verildiğini söyleyeceğim.
İşte ulong 18'in maksimum değeri 446 744 073 709 551 615 bu 17*10^18 tüm boş alanlara sahiptir. Стоит добавить при кодировании 17 000 000 000 000 000 000 и поставить при декодировании проверку содержит ли 20 и 19 разряд числа 1 и 7 и вы гарантированно определите кодированный ли магик или нет.
//+------------------------------------------------------------------+ //| Fonksiyon, girdi verilerinden bir araya getirilmiş bir prefabrik magik döndürür || //+------------------------------------------------------------------+ ulong Cmagic::SetMagic_request(int digital_name=0,int code_interaction=0) { if(digital_name>=1000)Print("Danışmanın sayısal adı yanlış ayarlanmış (1000'den büyük)"); if(code_interaction>=1000)Print("Hatalı uzaylı-yabancı tanımlama kodu seti (1000'den büyük)."); mag.digital_name =digital_name; mag.code_interaction =code_interaction; mag.expert_symbol =symbolexpert(); mag.magicnumber =17000000000000000000+// вот эта вставка даст 20 разрядов магику mag.digital_name*(int)pow(1000,2)+ mag.code_interaction*(int)pow(1000,1)+ mag.expert_symbol; return(mag.magicnumber); }
ve kod çözücüde.
//+------------------------------------------------------------------+ //| Fonksiyon magik'i üç basamaklı üç parçaya böler || //| ve kategori tarafından işaret edilen parçayı döndürür | //+------------------------------------------------------------------+ int Cmagic::decodeMagic_result(int category) { string string_value=(string)mag.magicnumber; int rem=(int)MathMod(StringLen(string_value),3); if(rem!=0) { rem=3-rem; string srem="0"; if(rem==2)srem="00"; string_value=srem+string_value; } int start_pos=StringLen(string_value)-3*category; string value=StringSubstr(string_value,start_pos,3); if(StringLen(string_value)!=20)return((int)StringToInteger("0"));//если магика не 20 разрядов значит не кодированный return((int)StringToInteger(value)); }
Bu böyledir ve Dimitri unutma ki yapmak isteyen bir fırsat arar ve yapmak istemeyen bir neden arar, senin gücünle bir pencere açtım, hatta bir kapı açtım.
Bu arada, ben bunu kullanıyorum
(int)pow(1000,2)
ancak kimse bunu string ile yeniden yazmayı yasaklamıyor, sadece makalede her iki yöntemi de göstermek ve mümkünse organik olarak uydurmak istedim (yani kodlama int üzerinden ve kod çözme string üzerinden gider).
Ve genel olarak olasılıkları göstermek ve bir kara kutu dönüştürücü vermemek istedim (bir adama bir kürek vermek bir kova yulaf lapası vermekten daha iyidir).
PS burada bir şey başka bir kodlanmış dedi, (bir fırtına var, böylece ağ düzenli olarak devre dışı bırakıldı) kodlanmış kontrol 1 ve 7 değil 20 ve 19 basamaklı ve bu çok basamakların varlığı sihirli 20 basamaklı kodlama kullanılırsa, ancak kontrolün tekrarlanabileceğini anlıyorsunuz.
1.Yazı için yazara teşekkürler.
2. (int)-log10(SymbolInfoDuble(symbol,SYMBOL_VOLUM_STEP); if.(int) ifadesi ne anlama gelir ve int cinsinden hangi değeri alır DIGITS=(int)-log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP)); if(DIGITS<0)DIGITS=0;
3.Test sırasında neden (int) ve SYMBOL_VOLUME_STEP ifadeleri Unknown tanımlayıcı değerlerini alıyor ve bu durum int DIGITS sonucunu nasıl etkiliyor?
4.Etkileşim kodu nasıl çalışıyor?
EA'lar aynı enstrüman üzerinde çalıştığında etkileşim kodu önemli midir, burada EA'ların aynı veya farklı sayısal adlarını ayarlamak yeterlidir.
- Ü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 ORDER_MAGIC'in Tek Enstrüman Üzerinde Farklı Expert Advisor'larla Alım Satım Yapmak İçin Kullanımı yayınlandı:
Bu makalede, sihirli tanımlama ve farklı Expert Advisor'ların otomatik alım satım işlemlerinin bölünmesi, birleştirilmesi ve senkronizasyonu kullanılarak bilgi kodlama sorunları ele alınmıştır. Söz konusu makale hem yeni başlayanlar hem de daha deneyimli yatırımcılar için ilginç olacaktır; zira Expert Advisor'ların karmaşık senkronizasyon sistemlerinin ve çeşitli stratejilerin uygulanmasında faydalı olabilecek sanal pozisyonlar sorununa değinilmiştir.
Çalıştırın ve Expert Advisor'ın karlılık açısından farklılık göstermediğinden, tam olarak ondan ihtiyacımız olan şey olan belirtilen mantığa göre işlem yaptığından emin olun.
Şimdi bu EA'yı çalıştırmayı deneyeceğiz fakat bunu bir enstrümanın farklı zaman dilimlerinde yapacağız (denemek için EURUSD: o olan rastgele bir enstrüman seçtik)
Şekil 2. Aynı enstrüman üzerinde farklı zaman dilimlerinde iki Expert Advisor'ın çakışması
Her iki Expert Advisor da tek bir enstrüman üzerinde çalıştığı ve kod, pozisyonların paylaşımını belirtmediği için her iki Expert Advisor da göstergelerinin okumalarına bağlı olarak alım satım pozisyonunu düzeltmeye çalışıyor ve bunun sonucunda, bir çakışma ortaya çıkıyor. M1 üzerinde çalışan Expert Advisor, rakibi onu durdurmaya çalışırken, Hücredeki pozisyonu değiştirmeye çalışıyor. Ayrı bir pozisyon hesaplamasına ihtiyacımız olduğu açık; şimdi yapacağımız şey de tam olarak bu.
Yazar: Nikolay Demko