Questions des débutants MQL5 MT5 MetaTrader 5 - page 413

 
first_may:
Ce n'est pas clair ce qu'on voulait dire ?
Signification :Insérer le code correctement dans le forum
 
Karputov Vladimir:
Je voulais dire ce qui suit :Insérer le code correctement dans le forum

Je vois. Je vérifie l'emplacement du tenkan et du kinjun sur la première et la deuxième bougie. S'il y a un signal, je saisis une alerte. Mais je voudrais que ce soit une chose unique. Aidez-moi, s'il vous plaît. Voici le code.

 
//+------------------------------------------------------------------+
//|                                                main_Ichimoku.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"



//+------------------------------------------------------------------+
//| Объявим переменные для хранения настроек индикаторов             |
//+------------------------------------------------------------------+
int IKHtenkansen=8;
int IKHkijunsen=24;
int IKHsenkouspanb=48;
//+------------------------------------------------------------------+
//| Объявим переменные для хранения хэндлов индикаторов              |
//+------------------------------------------------------------------+
int h_ich=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Объявим необходимые массивы для хранения данных индикаторов      |
//+------------------------------------------------------------------+
double ich1_buffer[]; 
double ich2_buffer[]; 
//+------------------------------------------------------------------+
//| Объявим переменные для хранения сигналов индикаторов             |
//+------------------------------------------------------------------+
int SignalICH;



//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   SignalICH=TradeSignal_20();
   
   
   Comment("SignalICH: "+(string)SignalICH);
}



//+------------------------------------------------------------------+
//| Функция                                             |
//+------------------------------------------------------------------+
int TradeSignal_20()
{
   int sig=0;

   if(h_ich==INVALID_HANDLE)
   {
      h_ich=iIchimoku(Symbol(),Period(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);
      return(0);
   }
   else
   {
      if (CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // TENKANSEN_LINE
      if (CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // KIJUNSEN_LINE
      if (!ArraySetAsSeries(ich1_buffer,true)) return(0);
      if (!ArraySetAsSeries(ich2_buffer,true)) return(0);
   }
   
   //--- проводим проверку условия и устанавливаем значение для sig
   if (ich1_buffer[1]>ich2_buffer[1]) sig=1;
   else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;
   else sig=0;
   
   if (ich1_buffer[1]>ich2_buffer[1])
      if (ich1_buffer[2]<ich2_buffer[2])
         Alert(Symbol()+": покупка");
   
   if (ich1_buffer[1]<ich2_buffer[1])
      if (ich1_buffer[2]>ich2_buffer[2])
         Alert(Symbol()+": продажа");
   
   
   //--- возвращаем торговый сигнал
   return (sig);
}
 
first_may:

Je vois. Je vérifie l'emplacement du tenkan et du kinjun sur la première et la deuxième bougie. S'il y a un signal, je saisis une alerte. Mais je voudrais que ce soit une chose unique. Aidez-moi, s'il vous plaît. Voici le code.

Pas plus d'une alerte sur une barre :

//+------------------------------------------------------------------+
//|                                                main_Ichimoku.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Объявим переменные для хранения настроек индикаторов             |
//+------------------------------------------------------------------+
int IKHtenkansen=8;
int IKHkijunsen=24;
int IKHsenkouspanb=48;
//+------------------------------------------------------------------+
//| Объявим переменные для хранения хэндлов индикаторов              |
//+------------------------------------------------------------------+
int h_ich=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Объявим необходимые массивы для хранения данных индикаторов      |
//+------------------------------------------------------------------+
double ich1_buffer[];
double ich2_buffer[];
//+------------------------------------------------------------------+
//| Объявим переменные для хранения сигналов индикаторов             |
//+------------------------------------------------------------------+
int SignalICH;
//+------------------------------------------------------------------+
//| Объявим переменную-флаг разрешения/запрета алерта                |
//+------------------------------------------------------------------+
bool bool_alert=false;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   static datetime prevtime=0;
   datetime time_zero[];
   CopyTime(Symbol(),Period(),0,1,time_zero);
   
   if(!bool_alert)
      if(prevtime!=time_zero[0])
         bool_alert=true;
   prevtime=time_zero[0];
   
   SignalICH=TradeSignal_20();

   Comment("SignalICH: "+(string)SignalICH);
  }
//+------------------------------------------------------------------+
//| Функция                                                          |
//+------------------------------------------------------------------+
int TradeSignal_20()
  {
   int sig=0;

   if(h_ich==INVALID_HANDLE)
     {
      h_ich=iIchimoku(Symbol(),Period(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);
      return(0);
     }
   else
     {
      if(CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // TENKANSEN_LINE
      if(CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // KIJUNSEN_LINE
      if(!ArraySetAsSeries(ich1_buffer,true)) return(0);
      if(!ArraySetAsSeries(ich2_buffer,true)) return(0);
     }

//--- проводим проверку условия и устанавливаем значение для sig
   if(ich1_buffer[1]>ich2_buffer[1]) sig=1;
   else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;
   else sig=0;8

   if(ich1_buffer[1]>ich2_buffer[1])
      if(ich1_buffer[2]<ich2_buffer[2])
         if(bool_alert)
           {
            Alert(Symbol()+": покупка");
            //--- опускаем флаг
            bool_alert=false;
           }

   if(ich1_buffer[1]<ich2_buffer[1])
      if(ich1_buffer[2]>ich2_buffer[2])
         if(bool_alert)
           {
            Alert(Symbol()+": продажа");
            //--- опускаем флаг
            bool_alert=false;
           }

//--- возвращаем торговый сигнал
   return (sig);
  }
//+------------------------------------------------------------------+
 
Karputov Vladimir:

Il n'y a pas plus d'une alerte par barre :

Merci beaucoup ! !!
 

Bonjour à tous !

Comment faire en sorte qu'un EA saute un signal après un trade perdant ? ( très bonne stratégie Z )

Expliquer en mots, le code lui-même est capable de mettre en œuvre.

 
Leanid Aladzyeu:

Bonjour à tous !

Comment faire en sorte qu'un EA saute un signal après un trade perdant ? ( très bonne stratégie Z )

Expliquer en mots, le code lui-même est capable de mettre en œuvre.

En cas de perte, donnez une certaine valeur à la variable globale du terminal et remettez-la à zéro au premier signal. La fonction de négociation surveille cette valeur et décide d'ouvrir ou non une nouvelle transaction.

En d'autres termes, le bon de travail se présente approximativement comme suit :

a) Profit de la piste ;

b) compter les signaux, cocher la case en cas de perte, s'il n'y a pas encore d'autre signal à négocier, remettre la case à zéro lorsque le premier signal est reçu après la perte ;

c) cochez la case et décidez de négocier ou d'attendre.

GPT est plus pratique à utiliser, ils sont sauvegardés en cas de défaillance du terminal, de simples variables dans le code peuvent être réinitialisées par n'importe quel éternuement et le conseiller expert fonctionnera avec des erreurs.

 
Vitalie Postolache:

En cas de perte, attribuez une certaine valeur à la variable globale du terminal et remettez-la à zéro au premier signal. La fonction de négociation surveille cette valeur et décide d'ouvrir ou non une nouvelle transaction.

C'est-à-dire que l'ordre des travaux est approximativement le suivant :

a) Profit de la piste ;

b) compter les signaux, cocher la case en cas de perte, si nous n'avons pas encore eu un autre signal pour trader, remettre la case à zéro lorsque le premier signal arrive après une perte ;

c) cochez la case et décidez de négocier ou d'attendre.

GPT est plus pratique à utiliser, ils sont sauvegardés lorsque le terminal se plante, les variables simples dans le code peuvent être réinitialisées à partir de n'importe quel éternuement et le conseiller expert fonctionnera avec des erreurs.

Tous ont compris, sauf un . Comment fabriquer un compteur de signaux ?
Et alors ?
if("Condition" == тру)
i ++ ;
 
Leanid Aladzyeu:
Je les ai tous sauf un. Comment fabriquer un compteur de signaux ?
N'est-ce pas ?
si("Condition"==vrai)
i ++ ;
Comme ceci :variables statiques.
 

crache

sl = NormalizeDouble(sl,MarketInfo(symbol,MODE_DIGITS));

perte possible de données due à la conversion de type .mq4 1697 29

type Doble à SL.