[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 166

 

//+------------------------------------------------------------------+
//| nax.mq4 |
//| Evgenio |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Evgenio"
#property link "http://www.metaquotes.net"

//---- input parameters
extern int Fast_MACD=12;
extern int Slow_MACD=24;
extern int Signal_MACD=6;
double a,mas_1[];
int i=1;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
a=NormalizeDouble(iMACD(Symbol(),NULL,Fast_MACD,Slow_MACD,Signal_MACD,PRICE_CLOSE,MODE_MAIN,0),5);
if (a>0)
{
Print ("MACD выше 0 начинаю считывать бары");
while (NormalizeDouble(iMACD(Symbol(),NULL,Fast_MACD,Slow_MACD,Signal_MACD,PRICE_CLOSE,MODE_MAIN,i),5)>0)
{
mas_1[i]=NormalizeDouble(iMACD(Symbol(),NULL,Fast_MACD,Slow_MACD,Signal_MACD,PRICE_CLOSE,MODE_MAIN,i),5);
Print (GetLastError());
i++;
}
Print ("В массив добавлено "+ArrayRange(mas_1,0)+" баров");
}
return(0);
}
//+------------------------------------------------------------------+

¿Qué ocurre? ¿Por qué no se añade nada a la matriz?
 
evgenio писал(а) >>
¿Qué pasa, por qué no se añade nada a la matriz?

¿Dónde está la definición del tamaño de un array?

 
Vinin >> :

¿Dónde está la definición del tamaño de un array?

y si el tamaño de la matriz no se conoce antes, ¿cómo?

 
evgenio писал(а) >>

Si no se conoce de antemano el tamaño de la matriz, ¿cómo?

Entonces es necesario dinamizar y si es necesario aumentar su tamaño.

 
Vinin >> :

A continuación, hágala dinámica y aumente su tamaño si es necesario.

¿puede decirme dónde encontrarlo?

 
encontrado
 
¡Hola de nuevo! ¿Pueden decirme cómo identificar el número de billete o de artículo?
 
ArtY0m >> :
¡Hola de nuevo! ¿Pueden decirme cómo determinar el número de billete o de artículo?

int BilleteDePedido( )

Devuelve el número de billete del pedido actualmente seleccionado.
El pedido debe ser preseleccionado mediante la función OrderSelect().

 
Alex5757000 >> :

int BilleteDePedido( )

Devuelve el número de billete del pedido actualmente seleccionado.
El pedido debe ser preseleccionado mediante OrderSelect().

Y si el número no se conoce. Sólo hay tipo, lote, número mágico, moneda de posición... También sabemos que esta orden se abrió primero en este número mágico...

 
int init()
  {
   return(0);
  }
int deinit()
  {
   return(0);
  }
int start()
if (OrdersTotal()==0)
   {
      if (iRSI(NULL,0,14,PRICE_CLOSE,1)>71 && iDeMarker(NULL,0,13,1)>0.71)
      OrderSend(Symbol(),OP_SELL,lot,Bid,3,Bid+0.001,Bid-0.01,"",666,0,Green);
      if (iRSI(NULL,0,14,PRICE_CLOSE,1)<29 && iDeMarker(NULL,0,13,1)<0.29)
      OrderSend(Symbol(),OP_BUY,lot,Ask,3,Bid-0.001,Bid+0.01,"",666,0,Blue);
   }
else
  
      for (int i=1; i<= OrdersTotal(); i++)
      {
        if (OrderSelect(i-1,SELECT_BY_POS)==true)
         {
            if(OrderType()==OP_SELL)
               {
               if ((OrderStopLoss()- 0.001) < Bid)
                  {
                   if (OrderStopLoss()>OrderOpenPrice()) {
                   OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),Green);}
                   else
                   OrderModify(OrderTicket(),OrderOpenPrice(),(OrderStopLoss()-0.001),OrderTakeProfit(),Green);
                  }
               }
         }
         else
         {
             if(OrderType()==OP_BUY)
                {
                if ((OrderStopLoss()+0.001) < Bid)
                   {
                    if (OrderStopLoss()<OrderOpenPrice()){
                    OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),Blue);}
                    else
                    OrderModify(OrderTicket(),OrderOpenPrice(),(OrderStopLoss()+0.001),OrderTakeProfit(),Blue);
                   }
                }  
         }        
   } 
return(0);
} 

Código para mi primer EA, funciona en RCAI y Dem. El problema es que no mueve las órdenes, es decir, los stops... siempre jura por los stops equivocados... Incluso he encontrado otros códigos para mover los topes ... todavía el mismo error.

Gracias de antemano.

Razón de la queja: