Errores, fallos, preguntas - página 256

 

Por favor, dime cómo declarar un array dinámico de 2 dimensiones. Sólo hay un ejemplo con una dimensión dinámica en la ayuda para esto:

double matrix[][10][20];// matriz dinámica tridimensional

ArrayResize(matrix,5);// establecer el tamaño de la primera dimensión


Y la declaración:

double matrix[][];

no funciona, el compilador escribe: ']' - valor de índice no válido

 

Ayuda, no puedo entender lo que no le gusta ... sigue escribiendo 10016 (como una pérdida de la parada no está configurado correctamente) Gracias

#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:

Ayuda, no puedo entender lo que no le gusta ... escribe todo el tiempo 10016 (como la pérdida de la parada no se establece correctamente) Gracias

En primer lugar, tienes esta función mal escrita.

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);
  }

Debería ser así. No puedo decirte sobre el error de parada.


//+------------------------------------------------------------------+
#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-:

Por favor, dime cómo declarar un array dinámico de 2 dimensiones. Sólo hay un ejemplo con una dimensión dinámica en la ayuda para esto:

double matrix[][10][20];// matriz dinámica tridimensional

ArrayResize(matrix,5);// establecer el tamaño de la primera dimensión


Y la declaración:

double matrix[][];

no funciona, el compilador escribe: ']' - valor de índice no válido

En MQL5 sólo hay una dimensión dinámica.

Para utilizar más de una dimensión se pueden utilizar estructuras

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:

Sólo hay una dimensión dinámica en MQL5.

para utilizar más de una, puede utilizar estructuras

Estimado mql5, gracias por su ayuda, explicaciones y ejemplo práctico.
 

Debería haber ido a un foro vecino, pero hay un problema con las fotos (no funcionó para subirlas)... :(


A los desarrolladores.

Del informe de MT4 229. ¿Es un error o qué?


 
Interesting:

Debería haber ido a un foro vecino, pero hay un problema con las cortinas (no funcionaba para subirlas)... :(



La imagen, según entiendo, está dada.

Necesita la versión del navegador.

 
alexvd:

Se da una imagen, según entiendo, de la misma.

Necesito la versión del navegador.

He intentado poner la imagen en formato Png y Gif (también he intentado ponerla como Jpg, utilizando el servicio radikal.ru).

Navegador Firefox 3.6.13.

PS

Intenté ponerlo en este hilo - Nueva versión de MetaTrader 4 Client Terminal build 228

Lo que es extraño Png parece estar presente allí.

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

Los promotores.

Del informe de MT4 229. ¿Es un error o qué?



No parece serlo.

Resulta que sólo hubo 2 (de 45) operaciones perdedoras, y ambas fueron de compra.

¿Tal vez estoy buscando en el lugar equivocado?

 
Interesting:

He intentado poner la imagen en formato Png y Gif (también he intentado ponerla como Jpg, usando radikal.ru).

Navegador Firefox 3.6.13.

PS

He intentado insertarlo en este hilo - Nueva versión MetaTrader 4 Client Terminal build 228

Lo que es extraño Png parece estar presente allí.

Intenta limpiar el caché. Probé diferentes opciones, diferentes navegadores - añadiendo tuvo éxito.

¿Pegas la imagen directamente en los comentarios, no como un atach?

Razón de la queja: