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

 
Sergey Savinkin:

Ça marche. ))

Et quel moteur de forum astucieux... Vous avez vous-même fourni le lien où il y a des instructions complètes sur la façon de coller le code.

 
Alexey Viktorov:

Et vraiment... pourquoi s'efforcer d'être meilleur...

Comptez combien de code supplémentaire est écrit dans ces fonctions et combien de code vous écrivez en appelant ces fonctions auto-écrites.

Je m'efforce d'être meilleur en trading et j'ai besoin du codage pour progresser vers cet objectif.

Si la différence sera de 0,1 seconde à la fin de l'année, est-il utile de s'en préoccuper ?

Pouvez-vous me montrer comment faire ce code sans fonctions et l'accélérer ?

 
Aleksey Vyazmikin:

Je m'efforce d'être meilleur en trading et j'ai besoin du codage pour progresser vers cet objectif.

Si la différence sera de 0,1 seconde à la fin de l'année, est-il utile de s'en préoccuper ?

Pouvez-vous me montrer comment faire ce code sans fonctions et l'accélérer ?

C'est comme ça que vous avez tout écrit. Seulement, tout est enveloppé sous mql4. Ne pouvez-vous pas vous passer d'un tel emballage ?

Et ceci est

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

FAQ des débutants MQL5 MT5 MetaTrader 5

Aleksey Vyazmikin, 2018.05.24 12:30

Tout est rassemblé par morceaux, mais le corps principal des fonctions similaires que j'ai pris à l'origine d 'ici, je ne sais vraiment pas ce qu'il en reste.

ENUM_TIMEFRAMES TFMigrate(int tf)
  {
   switch(tf)
     {
      case 0: return(PERIOD_CURRENT);
      case 1: return(PERIOD_M1);
      case 5: return(PERIOD_M5);
      case 15: return(PERIOD_M15);
      case 30: return(PERIOD_M30);
      case 60: return(PERIOD_H1);
      case 240: return(PERIOD_H4);
      case 1440: return(PERIOD_D1);
      case 10080: return(PERIOD_W1);
      case 43200: return(PERIOD_MN1);

      case 2: return(PERIOD_M2);
      case 3: return(PERIOD_M3);
      case 4: return(PERIOD_M4);
      case 6: return(PERIOD_M6);
      case 10: return(PERIOD_M10);
      case 12: return(PERIOD_M12);
      case 16385: return(PERIOD_H1);
      case 16386: return(PERIOD_H2);
      case 16387: return(PERIOD_H3);
      case 16388: return(PERIOD_H4);
      case 16390: return(PERIOD_H6);
      case 16392: return(PERIOD_H8);
      case 16396: return(PERIOD_H12);
      case 16408: return(PERIOD_D1);
      case 32769: return(PERIOD_W1);
      case 49153: return(PERIOD_MN1);
      default: return(PERIOD_CURRENT);
     }
  }

C'est tout simplement terrible..... C'est quoi cette histoire ?

Ce n'est pas vraiment un cours. Désolé, plus de critiques.

 
Alexey Viktorov:

C'est comme ça que vous avez tout écrit. Seulement, tout est enveloppé dans du mql4. Ne pouvez-vous pas vous passer d'un tel emballage ?

Et ceci...


est tout simplement affreux... De quoi s'agit-il ?

Et en général, ce ne sont pas les cours ici. Désolé, plus de critiques.

Eh bien, puisqu'il n'y a aucune volonté de montrer comment mieux faire pour les débutants...

Je ne vois pas l'horreur, dans MT4 la période de temps est souvent désignée par des chiffres divisibles par des minutes, ce qui n'est pas logique de faire dans MT5, mais cela permet un portage plus facile du code.

 
Aleksey Vyazmikin:

Eh bien, puisqu'il n'y a aucune volonté de montrer la meilleure façon pour les débutants...

Je ne vois pas l'horreur, dans MT4 la période de temps est souvent désignée par des nombres divisibles par des minutes, ce qui n'est pas logique de faire déjà dans MT5, mais facilite le portage du code.

Pourquoi le traduire en nombre de minutes et le remettre ensuite ?

Le 16408 est-il plus compréhensible que le PERIOD_D1 ou le 49153 plus compréhensible que le PERIOD_MN1 ?

Периоды графиков - Константы графиков - Стандартные константы, перечисления и структуры - Справочник MQL4
Периоды графиков - Константы графиков - Стандартные константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Все предопределенные периоды графиков имеют уникальные идентификаторы. Идентификатор PERIOD_CURRENT означает текущий период графика, на котором запущена mql4-программа. Перечисление ENUM_TIMEFRAMES содержит значения стандартных таймфреймов, онлайновые графики финансовых...
 

Bonjour, dans l'EA je veux connaître la valeur actuelle de l'ATR à partir de la période haute du graphique. Une valeur entière.

#include <Trade\SymbolInfo.mqh> 
CSymbolInfo    m_symbol;
//===
input int             ATRper=7;         //ATR Period
input ENUM_TIMEFRAMES ATRtimeframe=PERIOD_CURRENT;//«Time_Frame_ ATR»
int            handle_iCustom;
double atr_tp;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(!m_symbol.Name(Symbol())) // sets symbol name
      return(INIT_FAILED);
   handle_iCustom=iATR(m_symbol.Name(),ATRtimeframe,ATRper);
//--- if the handle is not created 
   if(handle_iCustom==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iCustom indicator for the symbol %s/%s, error code %d",
                  m_symbol.Name(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   int Bar_=0;
   atr_tp= iCustomGet(handle_iCustom  ,0,Bar_);
   atr_tp=NormalizeDouble(atr_tp,Digits())/_Point;
   atr_tp=(int)atr_tp;
   Comment("atr_",atr_tp);
  }
//+------------------------------------------------------------------+
double iCustomGet(int handle,const int buffer,const int index)
  {
   double Custom[1];
//--- reset error code 
   ResetLastError();
//--- fill a part of the iCustom array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(handle,buffer,index,1,Custom)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iCustom indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(0.0);
     }
   return(Custom[0]);
  }
///

Où se trouve l'erreur ?

 
lil_lil:

Bonjour, dans l'EA je veux connaître la valeur actuelle de l'ATR à partir de la période haute du graphique. Une valeur entière.

Où se trouve l'erreur ?

Qu'est-ce que ça dit ? Qu'est-ce qu'il dit ?

 
Sergey Savinkin:

Qu'est-ce que ça dit ? Qu'est-ce qu'il jure ?

Ce n'est pas le cas, c'est un mensonge. L'indicateur du haut indique "8", mais le conseiller dit "6" dans le commentaire.

 
lil_lil:

Il ne jure pas, il ment. L'indicateur sur le haut montre "8", mais dans le commentaire l'EA dit "6".

J'ai exécuté votre EA sur une période de 5 minutes, période ATR 14, cadre temporel ATR - 1 heure. Tout s'affiche uniformément, tant dans les commentaires que sur le graphique.

 
lil_lil:

Il se trouve également sur mon modèle actuel, avec ATRtimeframe=PERIOD_CURRENT.


Je ne pense pas que ce soit à propos du code du tout. Voici mon PERIOD_CURRENT