Erreurs, bugs, questions - page 256

 

Veuillez me dire comment déclarer un tableau dynamique à deux dimensions. L'aide ne contient qu'un exemple avec une seule dimension dynamique :

double matrix[][10][20] ;// tableau dynamique en 3 dimensions

ArrayResize(matrix,5) ;// définit la taille de la première dimension


Et la déclaration :

double matrice[][];

ne fonctionne pas, le compilateur écrit : ']'. - valeur d'index invalide

 

Au secours, je n'arrive pas à comprendre ce qu'il n'aime pas... il n'arrête pas d'écrire 10016 (comme si un stop loss n'était pas réglé correctement) Merci.

#property version   "1.00"
//+------------------------------------------------------------------+
#define MAGIC_NUMBER 12937
input double BASELOT=0.5;
input double stoploss=0.0;
input double takeprofit=0.0;
//+------------------------------------------------------------------+
int OnInit()
  {
   int send;
   int signalMA=signalMA();
   if(signalMA==1)
     {
      send=1;
      Send(send);
        } else if(signalMA==2) {
      send=2;
      Send(send);
     }
   return(0);
  }
//+------------------------------------------------------------------+
int signalMA() 
  {
   int signalMA=0;
   double inMA6 = iMA(NULL,0,6,0,MODE_SMA,0);
   double inMA1 = iMA(NULL,0,1,0,MODE_SMA,0);
   if(inMA6>inMA1)
     {
      signalMA=1;
     }
   if(inMA6<inMA1)
     {
      signalMA=2;
     }
   return(signalMA);
  }
//+------------------------------------------------------------------+
void Send(int send)
  {
   MqlTick tick;
   MqlTradeRequest request;
   MqlTradeResult tradeResult;
   MqlTradeCheckResult checkResult;
   static bool br=false;
   if(!br) 
     {
      if(send==1) 
        {
         br=true;
         request.price=tick.bid;
         request.sl = stoploss;
         request.tp = takeprofit;
         request.type=ORDER_TYPE_SELL;
           } else if(send==2){
         br=true;
         request.price=tick.ask;
         request.sl = stoploss;
         request.tp = takeprofit;
         request.type=ORDER_TYPE_BUY;
        }
      if(br) 
        {
         request.action       = TRADE_ACTION_DEAL;
         request.symbol       = _Symbol;
         request.volume       = BASELOT;
         request.deviation    = 5;
         request.type_filling = ORDER_FILLING_AON;
         request.type_time    = ORDER_TIME_GTC;
         request.comment      = "";
         request.magic        = MAGIC_NUMBER;
         if(OrderCheck(request,checkResult)) 
           {
            OrderSend(request,tradeResult);
              } else {
            Print("Error: ",checkResult.retcode);
           }
        }
     }
  }
//+------------------------------------------------------------------+
 
tmt0086:

Aide, je ne peux pas comprendre ce qu'il n'aime pas ... écrit tout le temps 10016 (comme la perte d'arrêt n'est pas correctement mis) Je vous remercie

Tout d'abord, vous avez mal écrit cette fonction.

int signalMA() 
  {
   int signalMA=0;
   double inMA6 = iMA(NULL,0,6,0,MODE_SMA,0);
   double inMA1 = iMA(NULL,0,1,0,MODE_SMA,0);
   if(inMA6>inMA1)
     {
      signalMA=1;
     }
   if(inMA6<inMA1)
     {
      signalMA=2;
     }
   return(signalMA);
  }

Ça devrait être comme ça. Je ne peux pas vous parler de l'erreur d'arrêt.


//+------------------------------------------------------------------+
#define MAGIC_NUMBER 12937
input double BASELOT=0.5;
input double stoploss=0.0;
input double takeprofit=0.0;

int handleMA1=INVALID_HANDLE;
int handleMA2=INVALID_HANDLE;

double inMA6[];
double inMA1[];

MqlTick tick;
MqlTradeRequest request;
MqlTradeResult tradeResult;
MqlTradeCheckResult checkResult;
//+------------------------------------------------------------------+
int OnInit()
  {
   handleMA1=iMA(NULL,0,6,0,MODE_SMA,0);
   handleMA2= iMA(NULL,0,1,0,MODE_SMA,0);

   int send;
   int signalMA=signalMA();
   if(signalMA==1)
     {
      send=1;
      Send(send);
        } else if(signalMA==2) {
      send=2;
      Send(send);
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int signalMA()
  {
   int sig=0;
   if(handleMA1==INVALID_HANDLE)
     {
      handleMA1=iMA(NULL,0,6,0,MODE_SMA,0);
      return(0);
     }
   if(handleMA2==INVALID_HANDLE)
     {
      handleMA2=iMA(NULL,0,1,0,MODE_SMA,0);
      return(0);
     }
   if(CopyBuffer(handleMA1,0,0,1,inMA6)<1) return(0);
   if(CopyBuffer(handleMA2,0,0,1,inMA1)<1) return(0);
   if(!ArraySetAsSeries(inMA6,true)) return(0);
   if(!ArraySetAsSeries(inMA1,true)) return(0);

   if(inMA6[0]>inMA1[0]) sig=1;
   else if(inMA6[0]<inMA1[0]) sig=2;
   else sig=0;
   return(sig);
  }
//+------------------------------------------------------------------+
void Send(int send)
  {
   static bool br=false;
   if(!br)
     {
      if(send==1)
        {
         br=true;
         request.price=tick.bid;
         request.sl = stoploss;
         request.tp = takeprofit;
         request.type=ORDER_TYPE_SELL;
           } else if(send==2){
         br=true;
         request.price=tick.ask;
         request.sl = stoploss;
         request.tp = takeprofit;
         request.type=ORDER_TYPE_BUY;
        }
      if(br)
        {
         request.action       = TRADE_ACTION_DEAL;
         request.symbol       = _Symbol;
         request.volume       = BASELOT;
         request.deviation    = 5;
         request.type_filling = ORDER_FILLING_AON;
         request.type_time    = ORDER_TIME_GTC;
         request.comment      = "";
         request.magic        = MAGIC_NUMBER;
         if(OrderCheck(request,checkResult))
           {
            OrderSend(request,tradeResult);
              } else {
            Print("Error: ",checkResult.retcode);
           }
        }
     }
  }
//+------------------------------------------------------------------+
 
-Alexey-:

Veuillez me dire comment déclarer un tableau dynamique à deux dimensions. L'aide ne contient qu'un exemple avec une seule dimension dynamique :

double matrix[][10][20] ;// tableau dynamique à 3 dimensions

ArrayResize(matrix,5) ;// définit la taille de la première dimension


Et la déclaration :

double matrice[][];

ne fonctionne pas, le compilateur écrit : ']'. - valeur d'index invalide

Dans MQL5, il n'existe qu'une seule dimension dynamique.

Pour utiliser plus d'une dimension, vous pouvez utiliser des structures

struct SDynamic
  {
   double            data[];
  };

...

SDynamic Arr2D[];

...

bool Arr2DResize(SDynamic &a2d[],int d1,int d2)
  {
   if(ArrayResize(a2d,d1)!=d1) return(false);
   for(int i=0;i<d1;i++)
      if(ArrayResize(a2d[i].data,d2)!=d2) return(false);
   return(true);
  }

...

Arr2DResize(Arr2D,10,10);

...

Print(Arr2D[0].data[3]);
 
mql5:

Il n'existe qu'une seule dimension dynamique dans MQL5.

pour en utiliser plusieurs, vous pouvez utiliser des structures

Cher mql5, merci pour votre aide, vos explications et votre exemple pratique.
 

J'aurais dû aller sur un forum voisin, mais il y a un problème avec les photos (ça n'a pas marché pour les télécharger)... :(


Aux développeurs.

Extrait du rapport MT4 229. C'est un bug ou quoi ?


 
Interesting:

J'aurais dû aller sur un forum voisin, mais il y a un problème avec les cortinas (ça n'a pas marché de les télécharger)... :(



Le tableau, tel que je le comprends, est donné.

Besoin de la version du navigateur.

 
alexvd:

Une image, telle que je la comprends, est donnée.

J'ai besoin de la version du navigateur.

J'ai essayé de mettre l'image au format Png et Gif (j'ai aussi essayé de la mettre au format Jpg, en utilisant le service de radikal.ru).

Navigateur Firefox 3.6.13.

PS

J'ai essayé de le mettre dans ce fil - Nouvelle version de MetaTrader 4 Client Terminal build 228

Ce qui est étrange, c'est que Png semble y être présent.

Новая версия MetaTrader 4 Client Terminal build 228 - MQL4 форум
  • www.mql5.com
Новая версия MetaTrader 4 Client Terminal build 228 - MQL4 форум
 
Interesting:

Les développeurs.

Extrait du rapport MT4 229. C'est un bug ou quoi ?



Ça ne semble pas être le cas.

Il s'avère qu'il n'y a eu que deux transactions perdantes (sur 45), et les deux étaient des achats.

Peut-être que je cherche au mauvais endroit ?

 
Interesting:

J'ai essayé de mettre l'image au format Png et Gif (j'ai aussi essayé de la mettre au format Jpg, en utilisant radikal.ru).

Navigateur Firefox 3.6.13.

PS

J'ai essayé de l'insérer dans ce fil de discussion - Nouvelle version MetaTrader 4 Client Terminal build 228

Ce qui est étrange, c'est que Png semble y être présent.

Essayez de nettoyer le cache. J'ai essayé différentes options, différents navigateurs - l'ajout a réussi.

Vous collez bien l'image directement dans les commentaires, pas en tant qu'atache ?