"Alım Satım Modellerine Dayalı Çoklu Uzman Danışmanlar Oluşturma" makalesi için tartışma - sayfa 4

 

Makale ve kod için yazara çok teşekkür ederim. Bugün model sınıfı için basit bir Uzman Danışman kodunu yeniden tasarladım. Bazı çabalardan sonra farklı çiftler ve zaman dilimleri üzerinde paralel çalışma elde etmeyi başardım.

Kodda düzeltmem gereken tek şey, GetMyPosition () işlevini biraz modernize etmekti, böylece hacmi yalnızca parametre olarak aktarılan sembole göre sayacaktı. Aksi takdirde, GetMyPosition() işlevini çağırırken iki veya daha fazla çiftten oluşan bir paket üzerinde çalışan bir model, her çift için gerekli olan ayrı hacim yerine birkaç çift için toplam hacmi alır. Ayrıca CTableOrders sınıfına sipariş sembolünü almak için bir yöntem ekledim.

string            OrderSymbol(){return(m_symbol);}


Tekrar teşekkürler!

 

Çalışmalarımı takdir ettiğiniz için teşekkür ederim dostlarım! Ele aldığım konuların yerinde ve gerekli olduğunu fark etmek memnuniyet verici. Cahil eleştirmenlerle polemiğe girmeyelim. Onlar her zaman orada olacaklar ve bariz konularda bile ikna olmayacaklar.

H.Y. double GetMyPosition() metodunu buna göre aşırı yüklemek daha iyidir: double GetMyPosition(string Symbol). Bu size daha fazla esneklik ve çok yönlülük sağlayacaktır.

Kuşkusuz, kod zaman içinde geliştirilecek ve değiştirilecektir, çünkü uygulamanın tüm olası alanlarını bir kerede dikkate almak imkansızdır.

Tekrar teşekkürler ve 2011 Yeni Yılınız kutlu olsun! Mutluluk ve iyi şanslar!

 
Огромное спасибо автору за статью, обязательно возьму себе на вооружение.
 

Makale için teşekkürler Vasily - bence bu şimdiye kadarki en iyi yaklaşım. Bu kodda nasıl hata ayıklayabildiğiniz inanılmaz.

Vasily - bir test cihazında hata ayıklayıcı olmadan bu kodda nasıl hata ayıkladınız? Bir test cihazında hata ayıklayıcı olmadan çalışmayı çok zor buluyorum - çünkü sinyaller farklı ve farklı koşullar altında.

Hata ayıklama deneyiminizi paylaşın.

 

Merhaba. Bu harika Öğretici için saygılar.

Bu Kodda hata ayıkladım ve Model.mqh
adresindeki Satır 355'te bir hata buldum

switch(op_type)
 {
 case ORDER_TYPE_BUY:
 case ORDER_TYPE_SELL:
 rez=m_trade.PositionOpen(m_symbol,op_type,lot_send,price,0.0,0.0,comment);
 break;

ORDER_TYPE_BUY: altında hiçbir Funktion yok. Bu doğru mu? Satın Alma işlevi yok mu?
Kodu şu şekilde değiştirdim:

switch(op_type)
 {
 case ORDER_TYPE_BUY:
 rez=m_trade.PositionOpen(m_symbol,op_type,lot_send,price,0.0,0.0,comment);
 break;
 case ORDER_TYPE_SELL:
 rez=m_trade.PositionOpen(m_symbol,op_type,lot_send,price,0.0,0.0,comment);
 break;


Ancak, Jornual'da gördüğünüz gibi, uzun pozisyonu yok, sadece kısa.


ea_modelclass



Hatayı bulamıyorum. Yardıma ihtiyacım var.


MfG Christian

Dosyalar:
logfile.txt  100 kb
 
Son terminal güncellemelerinden sonra model çalışmayı durdurdu. Birisi ne olduğunu açıklayabilir mi?
 
YYURIYY:
Son terminal güncellemelerinden sonra model çalışmayı durdurdu. Birisi ne olduğunu açıklayabilir mi?


Aynı şekilde. Bir haftadır kodu virgül virgül ayrıştırıyorum. Strateji satış emirleri veriyor, ancak GetNumberOrders() işlevi yalnızca satış emirleri = 0, ancak satın alma emirleri = 1 döndürüyor.

Bu kodun geliştiricisi olarak Vasily'den bana yardım etmesini istiyorum. Sebebin ne olduğunu henüz çözemedim.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 

Bu makale için tebrikler!!!

Bu fikir hakkında daha fazla insanın düşünmesine sevindim. Bir zamanlar MQL4'te çok para birimli çok stratejili EA şablonu geliştirmeye çalıştım

MQL5 burada olduğundan beri böyle bir EA'nın nesne modelini tasarlamaya ve uygulamaya başlamaya çalışıyordum

Ne yazık ki bu faaliyetler için boş zamanım yok... :-(

lütfen bu projeye devam edin... düşündüğüm yol bu... çok sayıda stratejiyi kolayca uygulamanın mümkün olduğu ve bunlardan herhangi birini manuel veya hatta otomatik olarak açma / kapama imkanı olan bir çerçeveye sahip olmak. Böylece bir EA portföyüne sahip olabilir ve hatta gerekirse bazı EA'ları ekleyebilir veya kaldırabiliriz.

Bunun için teşekkürler!!!

Not: İlginizi çekerse işte bir bağlantı...

https:// www.mql5.com/en/forum/118148

Cooperation on interesting projects: TRENDLINE AUTOTRADER and UNIVERSAL MULTICURRENCY MULTISTRATEGY TRADER TEMPLATE - MQL4 forum
  • www.mql5.com
Cooperation on interesting projects: TRENDLINE AUTOTRADER and UNIVERSAL MULTICURRENCY MULTISTRATEGY TRADER TEMPLATE - MQL4 forum
 
YYURIYY:
Son terminal güncellemelerinden sonra model çalışmayı durdurdu. Birisi ne olduğunu açıklayabilir mi?

Sanırım çözdüm. Kodda değiştirmeniz gereken :

#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"

#include <Trade\_OrderInfo.mqh>
#include <Trade\_HistoryOrderInfo.mqh>
#include <Arrays\List.mqh>
class CTableOrders : CObject
{
private:
   ulong             m_magic;       // Emri veren uzmanın Magik'i
   ulong             m_ticket;      // Ana siparişin bileti
   ulong             m_ticket_sl;    // Ana emir bazında gerçekleştirilen işlemin geri alım emrinin bileti (Zararı Durdur)
   ulong             m_ticket_tp;    // Ana emir temelinde gerçekleştirilen işlemin geri alım emrinin bileti (Kar Al)
   ENUM_ORDER_TYPE   m_type;         // Ana sipariş tipi
   datetime          m_time_setup;  // Sipariş ayarlama zamanı
   double            m_price;       // Sipariş fiyatı
   double            m_sl;          // Önerilen Zarar Durdurma fiyatı
   double            m_tp;          // Tahmini Kâr Alım Fiyatı
   double            m_volume_initial;      // Sipariş hacmi
public:
                     CTableOrders();
   bool              Add(COrderInfo &order_info, double stop_loss, double take_profit);
   bool              Add(CHistoryOrderInfo &history_order_info, double stop_loss, double take_profit);
   double            StopLoss(void){return(m_sl);}
   double            TakeProfit(void){return(m_tp);}
   ulong             Magic(){return(m_magic);}
   ulong             Ticket(){return(m_ticket);}
   int               Type() const;
   datetime          TimeSetup(){return(m_time_setup);}
   double            Price(){return(m_price);}
   double            VolumeInitial(){return(m_volume_initial);}
};

CTableOrders::CTableOrders(void)
{
   m_magic=0;
   m_ticket=0;
   m_type=0;
   m_time_setup=0;
   m_price=0.0;
   m_volume_initial=0.0;
}

bool CTableOrders::Add(CHistoryOrderInfo &history_order_info, double stop_loss, double take_profit)
{
   if(HistoryOrderSelect(history_order_info.Ticket())){
      m_magic=history_order_info.Magic();
      m_ticket=history_order_info.Ticket();
       m_type=history_order_info.OrderType();
      m_time_setup=history_order_info.TimeSetup();
      m_volume_initial=history_order_info.VolumeInitial();
      m_price=history_order_info.PriceOpen();
      m_sl=stop_loss;
      m_tp=take_profit;
      return(true);
   }
   else return(false);
}

bool CTableOrders::Add(COrderInfo &order_info, double stop_loss, double take_profit)
{
   if(OrderSelect(order_info.Ticket())){
      m_magic=order_info.Magic();
      m_ticket=order_info.Ticket();
      m_type=order_info.OrderType();
      m_time_setup=order_info.TimeSetup();
      m_volume_initial=order_info.VolumeInitial();
      m_price=order_info.PriceOpen();
      m_sl=stop_loss;
      m_tp=take_profit;
      return(true);
   }
   else return(false);
}

int   CTableOrders::Type() const
{
   return((ENUM_ORDER_TYPE)m_type);
}
 

Bu makalenin kapsamı çok geniş ve *çok* iyi düşünülmüş.

Bu çerçeveyi oluşturma çabalarınızı ne kadar takdir ettiğimi kelimelerle anlatamam; yaklaşımınızın arkasındaki mantığı da anlaşılabilir bir düzeyde (en azından benim için!) açıkladınız. Bu makale kavramlardan çok daha öteye gidiyor, katılıyorum - bu, ticaret ve OO programlama tekniklerinin pratik, doğru ve en önemlisi ihtiyatlı bir uygulaması!

Bir ricam olacak - İngilizce dosyalardaki yorumlarınız tercüme edilebilir mi? Ayrıca, birisi beni Rusça ile daha fazla çalışmak için araçlara yönlendirebilir mi? MetaEditor'deki yorumlar Rusça olarak bile görünmüyor, daha ziyade bu örnekten çok farklı olmayan bozuk aksanlı karakterler olarak görünüyor:

 // Èíèöèàëèçèóðóåì óêàçàòåëü ìîäåëüþ MACD

Bir süredir Rusça siteyi görüntülemek için Chrome+Google Translate kullanıyorum, ancak uzun makalelerde (özellikle bu makalede) belgenin yalnızca sınırlı bir kısmını tercüme ettirebiliyorum. Bu makaleyi derinlemesine okumak için çok sabırsızlanıyordum ve bir süre beklemek zorunda kaldım, bu da en azından benim için katlanılması zor bir durumdu! Daha fazla yabancı dil dostu olma konusundaki her türlü tavsiye büyük bir saygıyla kabul edilecektir!

Bir başyapıt, Bay Sokolov. Çalışmalarınız için size övgülerimi ve minnettarlığımı gönderiyorum ve ticaret sistemlerine bu harika yaklaşım için vizyonlarımı uygulamayı dört gözle bekliyorum. Nihayetinde ticaret yapmak istediğim sistemin gerekliliklerini yerine getirebilecek bir sistem tasarlamaya çalışırken yaşadığım birçok çatışmayı çözdünüz. Henüz çözülmemiş kalan sorunlar için bu çerçeve, çabalarımı tasarım olarak doğru yöne yönlendiriyor.