Discussion sur la mise en place des conseillers. - page 5

 
Ivan_Invanov:
Ici, j'ai appris la syntaxe de la langue. J'apprends le constructeur à titre d'exemple. Je vois un appel de classe. La logique est coupée pour moi d'ici. Que dois-je faire ? Rechercher des articles ? Est-il préférable d'implémenter avec des moyens standards ou d'écrire mes propres classes ?
Je trouve un article sur la clarification du constructeur. Expliquer le fonctionnement d'un bloc de signaux, par exemple. Et quelques phrases sèches comme "oui, ce paramètre est fixé". Et il n'y a rien d'écrit pour le changer. J'ai de telles questions, si je n'ai pas besoin du paramètre, je peux simplement le supprimer ? il est dans l'initialisation, le supprimer là aussi ? Comment puis-je ajouter d'autres paramètres et comment ? Si je voyais un exemple de changement, je pourrais le comprendre. Je pense que c'est purement un problème de référence. Pas assez de détails, pas assez d'exemples, pas assez de généralisations pour une perception systématique. Peut-être que je suis très direct, je ne sais pas. Je me demande si c'est juste moi ? Ou peut-être les manuels de formation doivent-ils être améliorés ? Je suis prêt à payer personnellement de l'argent par exemple.
 
Ivan_Invanov:

MQL5 - Il s'agit de la ressource contenant la description la plus détaillée de la documentation. Il y a une énorme quantité d'informations dans les articles, sur le forum et dans KodoBase. Vous ne trouverez nulle part ailleurs dans le monde une description aussi détaillée.

Tout ce dont vous avez besoin, c'est de la volonté de tout comprendre.

 
Vladimir Karputov:

MQL5 - Il s'agit de la ressource contenant la description la plus détaillée de la documentation. Il y a une énorme quantité d'informations dans les articles, le forum et la KodoBase. Vous ne trouverez nulle part ailleurs dans le monde une description aussi détaillée.

Il faut juste avoir la volonté de tout saisir.

Voici une question spécifique. Nous avons CExpertSignal avec la fonction AddFilter. Par exemple, nous avons un écart là-bas. Comment puis-je le faire si je ne peux pas voir l'exemple. Que dois-je faire exactement ? Eh bien, je vais essayer de le deviner maintenant.

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

Compilation sans erreurs. L'ai-je écrit correctement ? Maintenant, les transactions ne seront pas conclues si le spread dépasse 20 ? Et que dois-je faire dans un tel cas ? Que peut-on lire ?

 
Ivan_Invanov:

Voici une question spécifique. Il existe un CExpertSignal qui contient AddFilter, mais l'aide ne dit rien sur les fonctions AddFilter. Par exemple, il y a un écart. Comment l'écrire, si je ne peux pas voir l'exemple. Que dois-je faire exactement ? Eh bien, je vais essayer de le deviner maintenant.

Compilation sans erreurs. L'ai-je écrit correctement ? Maintenant, les transactions ne seront pas conclues si le spread dépasse 20 ? Et que dois-je faire dans un tel cas ? Que dois-je lire ?

Lire :Assistant MQL4/MQL5

Affectation :

  • Pour créer un conseiller expert simple à l'aide de l'assistant
  • dans le MetaEditor ouvrir le code résultant
Après cela, posez des questions.
Мастер MQL4/MQL5 - Справка по MetaEditor
Мастер MQL4/MQL5 - Справка по MetaEditor
  • www.metatrader5.com
Благодаря Мастеру MQL4/MQL5, трейдер может создать советника, не обладая знаниями в области программирования. Все что нужно сделать — это выбрать торговые сигналы, которые будет использовать советник, алгоритм мани-менеджмента и трейлинг-стопа. Код советника будет сгенерирован автоматически на основе выбранных параметров. Помимо этого, Мастер...
 
Ivan_Invanov:

Voici une question spécifique. Il existe un CExpertSignal avec AddFilter, mais l'aide ne dit rien sur les fonctions AddFilter. Par exemple, il y a un écart. Comment l'écrire, si je ne peux pas voir l'exemple. Que dois-je faire exactement ? Eh bien, je vais essayer de le deviner maintenant.

Compilation sans erreurs. L'ai-je écrit correctement ? Maintenant, les transactions ne seront pas conclues si le spread dépasse 20 ? Et que dois-je faire dans un tel cas ? Que dois-je lire ?

Il me semble qu'il y a ici une tentative de commencer immédiatement à écrire des sujets pour adultes sans connaissances de base. Ce n'est pas comme ça que ça marche. D'abord, ils apprennent l'alphabet, puis ils apprennent à écrire en lettres majuscules et petit à petit ils arrivent aux essais, et ensuite il faut du talent. C'est donc la même chose sans connaissances de base d'essayer de comprendre le code généré automatiquement... Pas la meilleure façon de se taper la tête contre le mur.

 
//+------------------------------------------------------------------+
//|                                                            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();
  }
//+------------------------------------------------------------------+
Bonjour. Pouvez-vous me dire quel est le signal d'entrée sur le marché de cet EA et où il se trouve dans le code ?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Le signal d'entrée sur le marché se trouve dans le "filtre", n'est-ce pas ?
 
Pourquoi des déclarations de classes différentes ? Pourquoi parfois la mémoire empilée et parfois non ? Avec et sans astérisque ?
 
J'ai besoin d'un filtre d'étalement et j'aimerais comprendre ce qui est fait ici. Ai-je bien compris que la stratégie est la suivante : si le prix est plus élevé de n'importe quel chiffre par rapport à la moyenne, alors une transaction est effectuée ?
 
Ivan_Invanov:
Bonjour. Pouvez-vous me dire quel est le signal d'entrée sur le marché de cet EA et où il se trouve dans le code ?

Vous devez utiliser un débogueur pour traiter de tels problèmes.

Lorsqu'un tick arrive, la fonction OnTick() est appelée. C'est là que tout le traitement a lieu, que les signaux sont identifiés si nécessaire et que les actions de trading sont effectuées.

Comme vous pouvez le constater, dans cette fonction, l'ExtExpert. Tout se passe dans cette fonction, il n'y a rien d'autre dans le code.

En conséquence, vous placez un point d'arrêt à cet endroit et exécutez le conseiller expert dans le débogueur. Dès que le premier tick arrive, le point d'arrêt se déclenche et vous arrêtez le code dans cette position. Ensuite, vous parcourez le code étape par étape, en essayant de comprendre pourquoi et quelles actions sont effectuées.