Uzman Danışmanların uygulanmasının tartışılması.

 

Merhaba. mql5 öğreniyorum ve çok uzun zamandır yerden kalkamıyorum. Herkes programları farklı yazdığı için herkes kendi yaklaşımından emindir ve yeni başlayanların hangisinin en uygun olduğunu anlaması zordur.

Bunu kendim çözmek istiyorum ve bana öyle geliyor ki, tipik Uzman Danışman blokları için optimal çözümlerin uygulanmasına ilişkin bir kamu tartışması topluluk için faydalı olacaktır. Örneğin, birisi başlatma işleminde neredeyse hiçbir şey yazmaz ve birisi bu bloğu çok fazla doldurur. EA tarafından hangi kontrollerin yapılması veya yapılmaması gerektiği. Sanal alır ve durur ya da durmaz, vb. Stratejiyi uygulama yolları da ilginçtir.

Ve benim önerim, eğer biri bilgisini paylaşmak isterse. Daha sonra uygulamayı örneğin bir grid örneğinde ya da hareketli ortalamaya dayalı basit bir danışman üzerinde tartışabiliriz, örneğin ortalamadan bir sapma var mı, o zaman ortalamaya dönüşü bekliyoruz. Veya göstermek istediğiniz başka bir strateji. Kodu neden bu şekilde yazmaya karar verdiğinizi yorumlarla yayın.

Açık topluluğun kod kalitesinin eğitimine ve geliştirilmesine katkıda bulunmaya karar verenlere şimdiden teşekkür ederiz.

 
Ivan_Invanov :

Merhaba. mql5 öğreniyorum ve çok uzun zamandır yerden kalkamıyorum. Herkes programları farklı yazdığı için herkes kendi yaklaşımından emindir ve yeni başlayanların hangisinin en uygun olduğunu anlaması zordur.

Bunu kendim çözmek istiyorum ve bana öyle geliyor ki, tipik Uzman Danışman blokları için optimal çözümlerin uygulanmasına ilişkin bir kamu tartışması topluluk için faydalı olacaktır. Örneğin, birisi başlatma işleminde neredeyse hiçbir şey yazmaz ve birisi bu bloğu çok fazla doldurur. EA tarafından hangi kontrollerin yapılması veya yapılmaması gerektiği. Sanal alır ve durur ya da durmaz, vb. Stratejiyi uygulama yolları da ilginçtir.

Ve benim önerim, eğer biri bilgisini paylaşmak isterse. Daha sonra uygulamayı örneğin bir grid örneğinde ya da hareketli ortalamaya dayalı basit bir danışman üzerinde tartışabiliriz, örneğin ortalamadan bir sapma var mı, o zaman ortalamaya dönüşü bekliyoruz. Veya göstermek istediğiniz başka bir strateji. Kodu neden bu şekilde yazmaya karar verdiğinizi yorumlarla yayın.

Açık topluluğun kod kalitesinin eğitimine ve geliştirilmesine katkıda bulunmaya karar verenlere şimdiden teşekkür ederiz.

Bu sitedeki Expert Advisors'ın gelişimi ile ilgili tüm makaleleri okudunuz ve bu size yeterli gelmedi mi? ve sen bir literalistsin ..)

 
Aleksey Mavrin :

Bu sitedeki Uzman Danışmanların gelişimi ile ilgili tüm makaleleri okudunuz ve bu size yeterli gelmedi mi? ve sen bir literalistsin ..)

Bir program yürütme paradigması oluşturmayı zor buluyorum. Evet, zamanı azaltmakla ilgili bu makaleyi gördüm, çok faydalı. Ama tek bir parçanın uygulama süresini azaltmanın anlamı nedir? Örneğin, çözüm yaklaşımının kendisi, başka bir çözüm yaklaşımına kıyasla önemli bir yavaşlama getirdiğinde. Uzman Danışmanlar yazmanın sizinkinden daha iyi bir yol olmadığından eminsiniz. Tebrikler, muhtemelen en üst düzeyde bir uzmansınız. O zaman bir örnek kod gösterebilir misin?
 
Ivan_Invanov :
Bir program yürütme paradigması oluşturmayı zor buluyorum. Evet, zamanı azaltmakla ilgili bu makaleyi gördüm, çok faydalı. Ama tek bir parçanın uygulama süresini azaltmanın anlamı nedir? Örneğin, çözüm yaklaşımının kendisi, başka bir çözüm yaklaşımına kıyasla önemli bir yavaşlama getirdiğinde. Uzman Danışmanlar yazmanın sizinkinden daha iyi bir yol olmadığından eminsiniz. Tebrikler, muhtemelen en üst düzeyde bir uzmansınız. O zaman bir örnek kod gösterebilir misin?
Ne işe yaradığını yap. Ve zamanla kendi paradigmanızı geliştireceksiniz.
 
Ivan_Invanov :
Bir program yürütme paradigması oluşturmayı zor buluyorum. Evet, zamanı azaltmakla ilgili bu makaleyi gördüm, çok faydalı. Ama tek bir parçanın uygulama süresini azaltmanın anlamı nedir? Örneğin, çözüm yaklaşımının kendisi, başka bir çözüm yaklaşımına kıyasla önemli bir yavaşlama getirdiğinde. Uzman Danışmanlar yazmanın sizinkinden daha iyi bir yol olmadığından eminsiniz. Tebrikler, muhtemelen en üst düzeyde bir uzmansınız. O zaman bir örnek kod gösterebilir misin?

Buradaki makalelere bağlantılar, anahtar kelimelere göre otomatik olarak eklenir.

Ve hazır danışmanların olduğu, yazarların özellikle sizin gibi insanlar için kodu çiğneyip açıkladığı bir dizi makaleyi kastettim. Onları izledin mi? Orada da bir sürü örnek var.

Optimal yol durumsal bir kavramdır.

Sistematik yaklaşımınız iyi.

Uzman Danışman oluşturma sürecini iki aşamaya ayırın:

1. algoritma

2. kod.

Ana şey, bir algoritmanın nasıl formüle edileceğini öğrenmektir. Ve hangisi daha uygunsa, birçok yolla kod yazabilirsiniz.

Birden fazla geri bildirime sahip durum makineleri - tanıdık mı? Değilse, teoriyi inceleyin, nereden dans edileceği daha net hale gelecektir.

 
Ivan_Invanov :

Merhaba. mql5 öğreniyorum ve çok uzun zamandır yerden kalkamıyorum. Herkes programları farklı yazdığı için herkes kendi yaklaşımından emindir ve yeni başlayanların hangisinin en uygun olduğunu anlaması zordur.

Bunu kendim çözmek istiyorum ve bana öyle geliyor ki, tipik Uzman Danışman blokları için optimal çözümlerin uygulanmasına ilişkin bir kamu tartışması topluluk için faydalı olacaktır. Örneğin, birisi başlatma işleminde neredeyse hiçbir şey yazmaz ve birisi bu bloğu çok fazla doldurur. EA tarafından hangi kontrollerin yapılması veya yapılmaması gerektiği. Sanal alır ve durur ya da durmaz, vb. Stratejiyi uygulama yolları da ilginçtir.

Konunun anlamı net değil.

Her kodlayıcının kendi tercihleri, kendi ilkeleri, programın yapısı hakkında kendi görüşleri olduğu açıktır. senin olacak. Bunları geliştirmek için kod yazmanız ve test etmeniz gerekir. Kalıplar ve hatalar tespit edildikçe, hangi program yapısının size daha uygun olduğu konusunda bir fikir oluşacaktır.

Özel uygulamalar - KodoBase'de birçok seçenek. Herhangi birini alın ve düşünün, kullanın, değiştirin.

Başka ne gerekli?

 
Georgiy Merts :

Konunun anlamı net değil.

Her kodlayıcının kendi tercihleri, kendi ilkeleri, programın yapısı hakkında kendi görüşleri olduğu açıktır. senin olacak. Bunları geliştirmek için kod yazmanız ve test etmeniz gerekir. Kalıplar ve hatalar tespit edildikçe, hangi program yapısının size daha uygun olduğu konusunda bir fikir oluşacaktır.

Özel uygulamalar - KodoBase'de birçok seçenek. Herhangi birini alın ve düşünün, kullanın, değiştirin.

Başka ne gerekli?

Kod tabanına bakıyorum. Tek bir yazarın kodu hakkında hiçbir şüphem yoktu, meta alıntılar, bu resmi geliştirici. ondan öğreniyorum. Orada, bir kişi mantıklı bir şekilde yazar ve yerleşik işlevleri maksimumda kullanır. Ama çok fazla danışmanı yok. Genel olarak, farklı yazarlardan çok sayıda şüpheli kod vardır ve genellikle neden bu şekilde yazıldığını anlamıyor ve anlamıyorsunuz. İnsanların bu uygulamalara bu kadar güvenmeleri beni şaşırtıyor. Elbette fazla düşünüyor olabilirim. Burada söylendiği gibi işe yaradıysa muhtemelen şimdiden yazmak gerekir.

 
Ama bana öyle geliyor ki er ya da geç açık kaynakta bir tür fikir birliği olacak. Sonuçta, insanlar zaman zaman aynı şeyi sadece varyasyonlarla yazarlar. Öyleyse neden hazır parçalar yapıp tartışmıyorsunuz. Mesela, işte şebekenin uygulanması ve şimdi hız ve işlevsellik açısından en uygun sınıra getirildi. Yaparım. Sadece optimal çözümleri kullanmak için yeterli bilgiye sahip değilim. Şimdi bir diyagram çizeceğim, ilk aklıma gelen, sonra o olacak. Ya da aynı bilgi düzeyine sahip bir başkasından alacağım - düşük. Ve uygulama örnekleri yapsalardı, tecrübeli ve bilgili insanlar katılır, bir şeyleri düzeltir, tartışır, fikir birliğine varırdı. Ve sonunda, herkes kaliteli bir kod ya da en azından takip etmesi gereken bir örnek alacaktı.
 
Ivan_Invanov :
Ama bana öyle geliyor ki er ya da geç açık kaynakta bir tür fikir birliği olacak. Sonuçta, insanlar zaman zaman aynı şeyi sadece varyasyonlarla yazarlar. Öyleyse neden hazır parçalar yapıp tartışmıyorsunuz. Mesela, işte şebekenin uygulanması ve şimdi hız ve işlevsellik açısından en uygun sınıra getirildi. Yaparım. Sadece optimal çözümleri kullanmak için yeterli bilgiye sahip değilim. Şimdi bir diyagram çizeceğim, ilk aklıma gelen, sonra o olacak. Ya da aynı bilgi düzeyine sahip bir başkasından alacağım - düşük. Ve uygulama örnekleri yapsalardı, tecrübeli ve bilgili insanlar katılır, bir şeyleri düzeltir, tartışır, fikir birliğine varırdı. Ve sonunda, herkes kaliteli bir kod ya da en azından takip etmesi gereken bir örnek alacaktı.

Fikir güzel. Bir zamanlar, Igor Kim'in tabanı çok yardımcı oldu, çalışmaları için ona çok teşekkürler :)

 
Ivan_Invanov :

Kod tabanına bakıyorum. Tek bir yazarın kodu hakkında hiçbir şüphem yoktu, meta alıntılar, bu resmi geliştirici. ondan öğreniyorum. Orada, bir kişi mantıklı bir şekilde yazar ve yerleşik işlevleri maksimumda kullanır. Ama çok fazla danışmanı yok. Genel olarak, farklı yazarlardan çok sayıda şüpheli kod vardır ve genellikle neden bu şekilde yazıldığını anlamıyor ve anlamıyorsunuz. İnsanların bu uygulamalara bu kadar güvenmeleri beni şaşırtıyor. Elbette fazla düşünüyor olabilirim. Burada söylendiği gibi işe yaradıysa muhtemelen şimdiden yazmak gerekir.

Yani bu başka bir konu.

Tahmin, bazen kendi koduma bakıyorum ve neden burada bu şekilde yazıldığını anlamıyorum. Bu nedenle bu tür yerler hakkında çok detaylı yorum yapmaya, tüm inceliklerinden bahsetmeye çalışıyorum. Aynı zamanda, her neyse, düzenli olarak bazı noktaları dikkate almadığımı görüyorum.

Ayrıca - Çok yetkili bir forum üyesi tarafından yazılan aşağıdaki kodu (yürütme türünü belirlemek için) kullanıyorum:

 ENUM_ORDER_TYPE_FILLING CSymbolInfo::GetTypeFilling( string strSymbol, ENUM_ORDER_TYPE_FILLING otfFilingType)
{
   #ifndef __MQL5__
       return (otfFilingType);
   #else // __MQL5__
      
   const ENUM_SYMBOL_TRADE_EXECUTION steExeMode = ( ENUM_SYMBOL_TRADE_EXECUTION ):: SymbolInfoInteger (strSymbol, SYMBOL_TRADE_EXEMODE );
   const int iFillingMode = ( int ):: SymbolInfoInteger (strSymbol, SYMBOL_FILLING_MODE );

   return ((iFillingMode == 0 || (otfFilingType >= ORDER_FILLING_RETURN ) || ((iFillingMode & (otfFilingType + 1 )) != otfFilingType + 1 )) ?
         (((steExeMode == SYMBOL_TRADE_EXECUTION_EXCHANGE ) || (steExeMode == SYMBOL_TRADE_EXECUTION_INSTANT )) ?
           ORDER_FILLING_RETURN : ((iFillingMode == SYMBOL_FILLING_IOC ) ? ORDER_FILLING_IOC : ORDER_FILLING_FOK )) :
          otfFilingType);
  
   #endif // __MQL5__
};

Nasıl çalıştığını ANLAMADIM. Ayrıca, bu forum üyesi kendisine sorulduğunda artık hatırlamadığını, sadece bu kodun zaten birçok kez test edildiğini ve kendisine güvenilebileceğini söyledi.

Pekala ... Bu aptal "soruları" normal if ifadeleriyle değiştirmeyi başarırsam, nasıl ve ne olduğunu çözeceğim ... Şimdiye kadar - yani ...

 
Bir blok diyagram yapıp direkt bu bloklarla yazmak daha iyidir, ben bunu başlangıçta yaptım, sonra fonksiyonları kullanmaya başlıyorsunuz ama ben sadece başkasının OOP'sini kullanıyorum. Genel olarak, her şeyi kaydırmaya gerek kalmadan bir kod parçasında değişiklik yapmanın kolay olacağı şekilde yazmanız gerekir.
Neden: