Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 799

 
Artyom Trishkin:
Les déchets sont dans les tampons. Vous devez d'abord entrer une valeur vide dans tous les tampons à dessiner (s'il s'agit de tampons de flèches), et seulement ensuite calculer l'indicateur. Je ne peux pas voir le code depuis mon portable, je ne peux pas dire exactement.

Vous voulez dire faire ArrayInitialize en premier ?

 
Roman Sharanov:

Vous voulez dire faire ArrayInitialize en premier ?

Ceci est déjà en place.
Dans la boucle de l'indicateur, vous devez affecter le tampon à une "valeur vide" dans la cellule du tampon avec l'index de la boucle.
 
Artyom Trishkin:
Ceci est déjà en place.
Dans la boucle de l'indicateur, vous devez affecter une "valeur vide" à la cellule tampon avec l'index de la boucle.

OK, merci.

 
Artyom Trishkin:

Oui. Étudiez l'exemple :

Merci, je vais aller à la source de la connaissance :-)


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

Toute question pour les débutants sur MQL4, aide et discussion sur les algorithmes et les codes

Artyom Trishkin, 2019.03.31 09:10

Il est déjà là.
Dans une boucle d'indicateur, vous devez affecter une valeur tampon "valeur vide" à la cellule tampon avec l'index de la boucle.

Est-ce que chaque tableau doit être explicitement doté d'une valeur nulle ?

Ces déchets peuvent être traités par PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0) ?

 
psyman:

Merci, je vais aller à la source de la connaissance :-)



Est-il nécessaire de définir explicitement chaque tableau à une valeur nulle ?

Ces déchets peuvent-ils être traités par PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0) ?

Mettez le curseur sur le nom de la fonction dans l'éditeur et appuyez sur F1 et un miracle apparaîtra.
 
J'ai téléchargé le bot, à quoi peut être liée cette erreur ?
Tous ceux qui ont installé le bot fonctionnent, je suis le seul à avoir ce problème. J'ai réinstallé le terminal, je l'ai ouvert en tant qu'administrateur, mais rien n'y fait.

 
Aucune erreur ou avertissement pendant la compilation. Mais les positions ne s'ouvrent pas (j'ai ouvert une seule position pour acheter et je l'ai fermée sur la ligne de prise).

Je ne sais pas encore quel est le problème.

//+------------------------------------------------------------------+
//|                                    Test advisor on iDeMarker.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                         https:/goga342@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//------------------параметры советника -------------------------------
extern double lots=0.01; //
extern int Magic=1111678111;
extern int Slippage=1;
//double sell_level=0.7;
//double buy_level=0.3;

extern double StopLoss=50;
extern double TakeProfit=50;
extern double TrailingStop=30;
double SL,TP;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(Digits==3 || Digits==5)
     {
      TakeProfit *=10;
      StopLoss   *=10;
      Slippage   *=10;
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start()
  {
   int ticket;
// int cnt,total;

// открытие продаж

   if(CountSell()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
     {
      SL = NormalizeDouble(Bid+StopLoss*Point, Digits);
      TP = NormalizeDouble(Bid-TakeProfit*Point, Digits);
        {

         ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
         if(ticket>0)
           {
            // закрытие продаж
            if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
                        if(OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на покупку !");
                    }
                 }
              }
           }
        }
     }
// открытие покупок

   if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     {
      TP = NormalizeDouble(Ask+TakeProfit*Point, Digits);
      SL = NormalizeDouble(Ask-StopLoss*Point, Digits);
        {
         ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);
         if(ticket>0)
           {
            // закрытие покупок    
            if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
                        if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на продажу!");
                    }
                 }
              }
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
int CountSell()//проверкна открытие ордеров на продажу
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true)
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
           {
            if(OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
int CountBuy()// проверкна открытие ордеров на покупку
  {
   int count=0;
   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true)
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
           {
            if(OrderType()==OP_BUY)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
 
Roman Sharanov:
J'ai téléchargé le bot, à quoi peut être liée cette erreur ?
Je ne sais pas quoi en faire. J'ai réinstallé le terminal, je l'ai ouvert en tant qu'administrateur, rien n'y fait.

La seule chose qui reste à faire est de réinstaller le système d'exploitation, ou de changer... tu sais quoi.




Vous vous trompez. Je voulais dire le conseiller expert.

 
Alexey Viktorov:

La seule chose qui reste à faire est de réinstaller le système d'exploitation, ou de changer... tu sais quoi.




Vous vous trompez. Je voulais dire le conseiller.

Quelle en est la raison ?
 
Roman Sharanov:
Quelle en est la raison ?

Je n'essaie pas de le comprendre ou de le réparer dans de tels cas. Je le jette toujours sans regret et l'oublie.