Discussione sull'implementazione dei consiglieri. - pagina 5

 
Ivan_Invanov:
Qui ho imparato la sintassi della lingua. Sto imparando il costruttore come esempio. Vedo una chiamata di classe. La logica è tagliata per me da qui. Cosa devo fare? Cercare articoli? È meglio implementare con mezzi standard o scrivere le mie classi?
Trovo un articolo sul chiarimento del costruttore. Spiegare come funziona un blocco di segnali, per esempio. E un paio di frasi secche come sì, questo parametro è fisso. E non c'è niente di scritto per cambiarlo. Ho queste domande, se non ho bisogno del parametro, posso semplicemente cancellarlo? è nell'inizializzazione, cancellare anche lì? Quali altri parametri posso aggiungere e come? Se vedessi un esempio di cambiamento, potrei capirlo. Penso che sia puramente un problema di riferimento. Non abbastanza dettagli, non abbastanza esempi, non abbastanza generalizzazioni per una percezione sistematica. Forse sono molto schietto, non lo so. Mi chiedo se sono solo io? O forse i manuali di formazione devono essere migliorati? Sono disposto a pagare personalmente dei soldi per esempio.
 
Ivan_Invanov:

MQL5 - Questa è la risorsa con la descrizione più dettagliata della documentazione. C'è una quantità enorme di informazioni negli articoli, sul forum e su KodoBase. In nessun'altra parte del mondo troverete una descrizione così dettagliata.

Tutto ciò che serve è la volontà di capire tutto questo.

 
Vladimir Karputov:

MQL5 - Questa è la risorsa con la descrizione più dettagliata della documentazione. C'è una quantità enorme di informazioni negli articoli, nel forum e in KodoBase. In nessun'altra parte del mondo troverete una descrizione così dettagliata.

Avete solo bisogno della volontà di afferrare tutto.

Ecco una domanda specifica. Abbiamo CExpertSignal con la funzione AddFilter. Per esempio, abbiamo uno spread lì. Come faccio a farlo se non posso vedere l'esempio. Cosa dovrei fare esattamente? Bene, ora cercherò di indovinare.

CExpert ExtExpert;
ExtExpert.InitSignal(signal);
signal.AddFilter(filter0);
filer0.Spread(20);

Compilazione senza errori. L'ho scritto correttamente? Ora le transazioni non saranno concluse se lo spread supera il 20? E cosa dovrei fare in un caso simile? Cosa può leggere?

 
Ivan_Invanov:

Ecco una domanda specifica. C'è un CExpertSignal con AddFilter, ma l'aiuto non dice nulla sulle funzioni AddFilter. Per esempio, c'è uno spread. Come faccio a scriverlo, se non posso vedere l'esempio. Cosa dovrei fare esattamente? Bene, ora cercherò di indovinare.

Compilazione senza errori. L'ho scritto correttamente? Ora le transazioni non saranno concluse se lo spread supera il 20? E cosa dovrei fare in un caso simile? Cosa dovrei leggere?

Leggi:MQL4/MQL5 Wizard

Assegnazione:

  • Per creare un semplice Expert Advisor usando il Wizard
  • nel MetaEditor aprire il codice risultante
Dopo di che fare domande.
Мастер MQL4/MQL5 - Справка по MetaEditor
Мастер MQL4/MQL5 - Справка по MetaEditor
  • www.metatrader5.com
Благодаря Мастеру MQL4/MQL5, трейдер может создать советника, не обладая знаниями в области программирования. Все что нужно сделать — это выбрать торговые сигналы, которые будет использовать советник, алгоритм мани-менеджмента и трейлинг-стопа. Код советника будет сгенерирован автоматически на основе выбранных параметров. Помимо этого, Мастер...
 
Ivan_Invanov:

Ecco una domanda specifica. C'è un CExpertSignal con AddFilter, ma l'aiuto non dice nulla sulle funzioni AddFilter. Per esempio, c'è uno spread. Come faccio a scriverlo, se non posso vedere l'esempio. Cosa dovrei fare esattamente? Bene, ora cercherò di indovinare.

Compilazione senza errori. L'ho scritto correttamente? Ora le transazioni non saranno concluse se lo spread supera il 20? E cosa dovrei fare in un caso simile? Cosa dovrei leggere?

Mi sembra che qui ci sia un tentativo di iniziare immediatamente a scrivere argomenti per adulti senza conoscenze di base. Non è così che funziona. Prima imparano l'alfabeto, poi imparano a scrivere in stampatello e poco a poco arrivano ai saggi, e poi c'è bisogno di talento. Quindi è lo stesso senza conoscenze di base cercare di capire il codice generato automaticamente... Non è il modo migliore per sbattere la testa contro il muro.

 
//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Include                                                          |
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- available signals
#include <Expert\Signal\SignalMA.mqh>
//--- available trailing
#include <Expert\Trailing\TrailingNone.mqh>
//--- available money management
#include <Expert\Money\MoneyFixedRisk.mqh>
//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string             Expert_Title         ="1";         // Document name
ulong                    Expert_MagicNumber   =15825;       //
bool                     Expert_EveryTick     =false;       //
//--- inputs for main signal
input int                Signal_ThresholdOpen =10;          // Signal threshold value to open [0...100]
input int                Signal_ThresholdClose=10;          // Signal threshold value to close [0...100]
input double             Signal_PriceLevel    =0.0;         // Price level to execute a deal
input double             Signal_StopLevel     =50.0;        // Stop Loss level (in points)
input double             Signal_TakeLevel     =50.0;        // Take Profit level (in points)
input int                Signal_Expiration    =4;           // Expiration of pending orders (in bars)
input int                Signal_MA_PeriodMA   =12;          // Moving Average(12,0,...) Period of averaging
input int                Signal_MA_Shift      =0;           // Moving Average(12,0,...) Time shift
input ENUM_MA_METHOD     Signal_MA_Method     =MODE_SMA;    // Moving Average(12,0,...) Method of averaging
input ENUM_APPLIED_PRICE Signal_MA_Applied    =PRICE_CLOSE; // Moving Average(12,0,...) Prices series
input double             Signal_MA_Weight     =1.0;         // Moving Average(12,0,...) Weight [0...1.0]
//--- inputs for money
input double             Money_FixRisk_Percent=10.0;        // Risk percentage
//+------------------------------------------------------------------+
//| Global expert object                                             |
//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+
//| Initialization function of the expert                            |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Initializing expert
   if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Creating signal
   CExpertSignal *signal=new CExpertSignal;
   if(signal==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating signal");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//---
   ExtExpert.InitSignal(signal);
   signal.ThresholdOpen(Signal_ThresholdOpen);
   signal.ThresholdClose(Signal_ThresholdClose);
   signal.PriceLevel(Signal_PriceLevel);
   signal.StopLevel(Signal_StopLevel);
   signal.TakeLevel(Signal_TakeLevel);
   signal.Expiration(Signal_Expiration);
//--- Creating filter CSignalMA
   CSignalMA *filter0=new CSignalMA;
   if(filter0==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   filter0.PeriodMA(Signal_MA_PeriodMA);
   filter0.Shift(Signal_MA_Shift);
   filter0.Method(Signal_MA_Method);
   filter0.Applied(Signal_MA_Applied);
   filter0.Weight(Signal_MA_Weight);
//--- Creation of trailing object
   CTrailingNone *trailing=new CTrailingNone;
   if(trailing==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Add trailing to expert (will be deleted automatically))
   if(!ExtExpert.InitTrailing(trailing))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Set trailing parameters
//--- Creation of money object
   CMoneyFixedRisk *money=new CMoneyFixedRisk;
   if(money==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Add money to expert (will be deleted automatically))
   if(!ExtExpert.InitMoney(money))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Set money parameters
   money.Percent(Money_FixRisk_Percent);
//--- Check all trading objects parameters
   if(!ExtExpert.ValidationSettings())
     {
      //--- failed
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Tuning of all necessary indicators
   if(!ExtExpert.InitIndicators())
     {
      //--- failed
      printf(__FUNCTION__+": error initializing indicators");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Deinitialization function of the expert                          |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ExtExpert.Deinit();
  }
//+------------------------------------------------------------------+
//| "Tick" event handler function                                    |
//+------------------------------------------------------------------+
void OnTick()
  {
   ExtExpert.OnTick();
  }
//+------------------------------------------------------------------+
//| "Trade" event handler function                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
   ExtExpert.OnTrade();
  }
//+------------------------------------------------------------------+
//| "Timer" event handler function                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   ExtExpert.OnTimer();
  }
//+------------------------------------------------------------------+
Salve. Potresti dirmi quale segnale di entrata nel mercato ha questo EA e dove si trova nel codice?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Il segnale di entrata nel mercato è nel "filtro", giusto?
 
Perché dichiarazioni di classi diverse? Perché a volte la memoria impilata e a volte no? Con e senza asterisco?
 
Ho bisogno di un filtro di diffusione e vorrei capire cosa viene fatto qui. Ho capito bene che la strategia qui è che se il prezzo è più alto di qualsiasi cifra dalla media, allora si fa uno scambio?
 
Ivan_Invanov:
Salve. Puoi dirmi per favore qual è il segnale di entrata nel mercato di questo EA e dove si trova nel codice?

Dovete usare un debugger per affrontare questi problemi.

Quando arriva un tick, viene chiamata la funzione OnTick(). È dove avviene tutta l'elaborazione, i segnali vengono identificati, se necessario, e le azioni di trading vengono eseguite.

Come potete vedere, in questa funzione l'ExtExpert. Tutto avviene all'interno di questa funzione, non c'è altro nel codice.

Di conseguenza, si mette un punto di interruzione su di esso e si esegue l'Expert Advisor nel debugger. Non appena arriva il primo tick, il breakpoint scatta e si ferma il codice in questa posizione. E poi ti muovi attraverso il codice passo dopo passo, capendo perché e quali azioni vengono eseguite.

Motivazione: