[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 548

 
artmedia70 писал(а) >>
Qu'est-ce que l'erreur 4051 et comment la corriger ?


https://docs.mql4.com/ru/constants/errors

ERR_INVALID_FUNCTION_PARAMVALUE 4051 Valeur non valide du paramètre de fonction

 
artmedia70 >>:
А кто сказал, что именно тот кусочек работает неправильно? Если б я выложил весь код - места бы не хватило...
Сначала вызываете на общение, потом в кусты... :)


Non. J'ai suggéré que vous démontiez un morceau de code qui ne fonctionne pas. Démontez-le dans les moindres détails. Au lieu de cela, vous avez exposé l'ensemble du code. :)

Je ne vais pas me cacher dans les buissons. >> Je cite :

>>Démontons ligne par ligne un morceau de votre code qui ne fonctionne pas correctement...

>> allons-nous ?

Voici mes mots. Au lieu d'une pièce qui ne fonctionne pas, vous avez sorti un tas de choses incompréhensibles - un ensemble de fonctions. C'est ce que je n'aime pas.

 

D'une manière générale, pour trouver une erreur, vous devez bloquer certaines parties du code. Par exemple, le code se compose des blocs suivants :

- Vérification des blocs pour les signaux de trading

- Bloquer les ordres d'ouverture/fermeture/annulation

- Bloquer le maintien des positions ouvertes.

Nous bloquons les deux derniers blocs à l'aide du commentaire multiligne /**/, exécutons l'EA et utilisons l'impression ou l'alerte pour vérifier les valeurs des variables clés - juste pour nous assurer que ce bloc fonctionne correctement. Si nous rencontrons une erreur, corrigez-la. Déverrouillez ensuite le bloc de code suivant et répétez la procédure. Et ainsi de suite jusqu'à ce que tout le code soit débogué. L'autre méthode serait plus fastidieuse.

 
drknn >>:

Вообще, чтоб найти ошибку, нужно заблокировать некоторые участки кода. Например, код состоит из следующих блоков:

- Блок проверки наличия торгового сигнала

- Блок открытия/закрытия/переворота ордеров

- Блок сопровождения открытых позиций.

Блокируем при помощи многострочного комментария /**/ два последних блока, запускаем советника и с помощью принта или алерта снимаем значения ключевых переменных - просто убеждаемся, что этот блок работает корректно. Если натыкаемся на ошибку, то исправляем её. Затем снимаем блокировку со следующего блока кода и повторяем процедуру. И так далее до тех пор, пока весь код ни окажется отлажен. Другой путь будет более утомителен.

Oui, merci, je connais déjà ça... Je manque un peu de connaissances. Et j'ai posté tout le code simplement parce que je ne sais pas quelle partie de celui-ci ne fonctionne pas. Il ne doit pas nécessairement s'agir de celui qui a été posté à l'origine. Merci de votre participation... :)
 
Pourriez-vous me conseiller sur la façon d'ajouter un indicateur dans un Expert Advisor pour prendre les données du cf h4 ?
#property copyright "Krokus"
#property link      ""
//----
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//----
extern int       N=20; // период канала 
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int limit;
   double upPrice,downPrice;
//---- 
   if (counted_bars==0) limit=Bars-N;
   if (counted_bars>=0) limit=Bars-counted_bars;
   limit--;
   for(int i=limit;i>=0;i--)
     {
      upPrice=High[iHighest(Symbol(),0,MODE_HIGH,N,i)];//максимум за N баров 
      downPrice=Low[iLowest(Symbol(),0,MODE_LOW,N,i)]; //минимум за N баров 
      ExtMapBuffer1[i]=(upPrice-downPrice)/Point;

     }
//---- 
   return(0);
  }
//+------------------------------------------------------------------+
 
dans le code de l'examinateur, pas dans l'appel
 
Andrei01 >>:
Скажите, должны ли рисоваться графические объекты советником в тестере не в ценовом окне, а в отдельном? Почему-то это не работает при замене нуля на единицу при создании объекта.

Créez un indicateur iCustom vide avec une fenêtre séparée et appelez-le depuis l'EA,

Si vous n'avez pas de fenêtre, vous donnez une commande pour dessiner, et il n'est pas nécessaire de le faire.

La seule chose à laquelle il faut faire attention est la balance,

Le moyen le plus simple est de définir deux tampons à la couleur de fond,

Dans une fenêtre vous assignez le maximum et dans l'autre le minimum, c'est pratique et vous pouvez l'ajuster depuis le paramètre externe de l'indicateur.

 
sllawa3 >>:
подскажите пожалуйста как вписать индюк в эксперт чтоб снимал данные с тф н4 ???
for(int i=limit;i>=0;i--)
     {
      int ii=iBarShift(Symbol(), 240, i);//Symbol() или NULL

      upPrice=iHigh( NULL, 240,  iHighest(NULL, 240 ,MODE_HIGH,N, ii) );//максимум за N баров 
      downPrice=iLow( NULL, 240,  iLowest(NULL, 240 ,MODE_LOW, N, ii) ); //минимум за N баров 

      ExtMapBuffer1[i]=(upPrice-downPrice)/Point;

     }
pour calculer le TF de droite (H4) indépendamment du graphique, quelque chose comme ceci
 
cela ne marchera pas... La limite n'est pas prescrite et comment la prescrire ?
int    counted_bars=IndicatorCounted();
тоже в эксперте не потянет
 
Tonneau ! !! Les positions ouvertes sont chacune chalutées, tout en fermant sur les TP et SL des "autres"... Par conséquent, c'est un désordre... Comment gagner ?
Raison: