Discussione sull’articolo "Creare Expert Advisor multipli sulla base dei modelli di trading" - pagina 4

 

Grazie mille all'autore per l'articolo e il codice. Oggi ho riprogettato il codice di un semplice Expert Advisor per la classe Model. Dopo alcuni sforzi sono riuscito a ottenere un lavoro parallelo su coppie e timeframe diversi.

L'unica cosa che ho dovuto correggere nel codice è stato modernizzare leggermente la funzione GetMyPosition() in modo che conti il volume solo in base al simbolo passato come parametro. Altrimenti, un modello che lavora su un pacchetto di due o più coppie, quando chiama GetMyPosition() ottiene il volume totale per diverse coppie invece del volume separato richiesto per ogni coppia. Ho anche aggiunto un metodo alla classe CTableOrders per ottenere il simbolo dell'ordine.

string            OrderSymbol(){return(m_symbol);}


Grazie ancora!

 

Grazie, amici, per l'apprezzamento del mio lavoro! È piacevole rendersi conto che le questioni che sto considerando sono rilevanti e necessarie. Non entriamo in polemica con i critici analfabeti. Ci saranno sempre e non si lasceranno convincere nemmeno nelle cose più ovvie.

H.Y. È meglio sovraccaricare il metodo double GetMyPosition() di conseguenza: double GetMyPosition(string Symbol). In questo modo si otterrà una maggiore flessibilità e versatilità.

Senza dubbio il codice verrà migliorato e modificato nel tempo, perché è impossibile prendere in considerazione tutti i possibili ambiti di applicazione in una sola volta.

Grazie ancora e buon anno 2011! Felicità e buona fortuna!

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

Grazie Vasily per l'articolo: secondo me questo è l'approccio migliore finora. È incredibile come tu abbia potuto eseguire il debug di questo codice.

Vasily - come hai eseguito il debug di questo codice senza un debugger in un tester? Trovo molto difficile lavorare senza un debugger in un tester - perché i segnali sono diversi e in condizioni diverse.

Condividete la vostra esperienza di debug.

 

Ciao. Respekt per questo grande Tutorial.Verry grande lode a voi.

Ho debuggato questo codice e trovare un errore alla linea 355 in Model.mqh

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;

sotto ORDER_TYPE_BUY: non c'è nessuna funzione.
Ho cambiato il codice in:

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;


Ma, in Jornual si vede, non ha posizione lunga solo breve.


ea_modelclass



Non trovo l'errore.bisogno di aiuto.


MfG Christian

File:
logfile.txt  100 kb
 
Dopo gli ultimi aggiornamenti del terminale il modello ha smesso di funzionare. Qualcuno può spiegare cosa è successo?
 
YYURIYY:
Dopo gli ultimi aggiornamenti del terminale il modello ha smesso di funzionare. Qualcuno può spiegare cosa è successo?


Allo stesso modo. Ho analizzato il codice virgola per virgola per una settimana. La strategia inserisce ordini di vendita, ma la funzione GetNumberOrders() restituisce solo ordini di vendita = 0, mentre gli ordini di acquisto = 1.

Vorrei chiedere a Vasily, in quanto sviluppatore di questo codice, di aiutarmi. Non riesco ancora a capire quale sia il motivo.

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

Complimenti per questo articolo!

Sono contento che più persone si interessino a questa idea. Una volta ho provato a sviluppare un modello di EA multicurrency multistrategy in MQL4.

Da quando è arrivato MQL5 stavo cercando di progettare il modello ad oggetti di un tale EA e di iniziare ad implementarlo.

Purtroppo non ho tempo libero per queste attività... :-(

per favore continuate questo progetto... questo è il modo in cui penso... avere un framework, dove è possibile implementare facilmente un sacco di strategie e con la possibilità di attivare/disattivare qualsiasi di esse, manualmente o anche automaticamente. Così possiamo avere un portafoglio di EA e persino aggiungere o rimuovere alcuni EA se necessario.

Grazie per questo!

PS: ecco un link se vi interessa...

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:
Dopo gli ultimi aggiornamenti del terminale il modello ha smesso di funzionare. Qualcuno può spiegare cosa è successo?

Penso di averlo capito. Nel codice è necessario cambiare :

#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;       // Magik dell'esperto che ha impartito l'ordine
   ulong             m_ticket;      // Biglietto dell'ordine principale
   ulong             m_ticket_sl;    // Ticket dell'ordine di riacquisto dell'operazione eseguita sulla base dell'ordine principale (Stop Loss)
   ulong             m_ticket_tp;    // Ticket dell'ordine di riacquisto dell'operazione eseguita sulla base dell'ordine principale (Take Profit)
   ENUM_ORDER_TYPE   m_type;         // Tipo di ordine principale
   datetime          m_time_setup;  // Tempo di impostazione dell'ordine
   double            m_price;       // Prezzo dell'ordine
   double            m_sl;          // Prezzo di stop loss suggerito
   double            m_tp;          // Prezzo del Take Profit stimato
   double            m_volume_initial;      // Volume dell'ordine
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);
}
 

La portata di questo articolo è vasta e *molto* ben pensata.

Non posso dire a parole quanto apprezzi i tuoi sforzi per costruire questo framework; hai anche spiegato il ragionamento dietro il tuo approccio a un livello comprensibile (almeno per me!). Questo articolo va ben oltre i concetti, sono d'accordo: si tratta di un'applicazione pratica, corretta e soprattutto prudente delle tecniche di trading e di programmazione OO!

Una richiesta: i commenti nei file in inglese possono essere tradotti? Inoltre, qualcuno può indirizzarmi verso strumenti per lavorare ulteriormente con la lingua russa? I commenti in MetaEditor non appaiono nemmeno come lingua russa, ma piuttosto come caratteri accentati confusi, non molto diversi da questo esempio:

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

Da qualche tempo uso Chrome+Google Translate per visualizzare il sito russo, ma sugli articoli più lunghi (soprattutto questo) riesco a tradurre solo una parte limitata del documento. Ero molto ansioso di leggere questo articolo in modo approfondito e ho dovuto aspettare un po' di tempo, il che, almeno per me, è stato difficilmente tollerabile! Qualsiasi consiglio su come diventare più amichevoli con le lingue straniere sarà accettato con grande stima!

Un capolavoro, signor Sokolov. Le invio i miei complimenti e la mia gratitudine per il suo lavoro, e non vedo l'ora di implementare le mie visioni per questo grande approccio ai sistemi di trading. Lei ha risolto molti conflitti che avevo mentre cercavo di progettare un sistema che potesse gestire i miei requisiti del sistema che in definitiva voglio commerciare. Per quanto riguarda i problemi ancora da risolvere, questo framework conduce i miei sforzi nella giusta direzione.