Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1770

 
MakarFX #:

Pero por qué necesitas esta matriz, todavía no entiendo...

int TradeSignal() 
  {
   int limit, i, sig=-1;
   double Ma_curr, Ma_prev, value;
   limit=MaPeriod*3;
   for(i=limit;i>=0;i--)
     {
      Ma_curr=iMA(_Symbol,_Period,MaPeriod,0,MaMethod,MaPrice,i);
      Ma_prev=iMA(_Symbol,_Period,MaPeriod,0,MaMethod,MaPrice,i+1);
      value=Ma_curr-Ma_prev;
      if(value>0) sig=0;
      if(value<0) sig=1;
     }
   return(sig);
  }

La función funcionará sin ella.

 
Mihail Matkovskij #:

Pero por qué necesitas esta matriz, todavía no entiendo...

La función funcionará sin ella.

Y no hay necesidad de un bucle aquí

int TradeSignal() 
  {
   int sig=-1;
   double Ma_curr, Ma_prev, value;

   Ma_curr=iMA(_Symbol,_Period,MaPeriod,0,MaMethod,MaPrice,0);
   Ma_prev=iMA(_Symbol,_Period,MaPeriod,0,MaMethod,MaPrice,1);
   value=Ma_curr-Ma_prev;
   if(value>0) sig=0;
   if(value<0) sig=1;

   return(sig);
  }
 
Mihail Matkovskij #:

Y no hay necesidad de un bucle.

Lo hice, pero quería entender por qué la matriz no funcionaba.

y por cierto

ArraySize(Buffer,limit);

no ayudó (


'ArraySize' - recuento de parámetros erróneo

corregido sin límite

array fuera de rango en '_exp.mq4' (267,17)

 
MakarFX #:


ArrayResize, no ArraySize.

 
Yurij Kozhevnikov #:

ArrayResize, no ArraySize.

matriz fuera de rango
 
MakarFX #:

Lo hice, pero quería entender por qué la matriz no funcionaba.

y por cierto

no ayudó (


'ArraySize' - recuento de parámetros erróneo

corregido sin límite

array fuera de rango en '_exp.mq4' (267,17)


Me di cuenta y corregí inmediatamente después. Y debes haber copiado el código no corregido.

Y si quiere saber por qué no funcionó la matriz, etc., vea: Operaciones. Ver: Operaciones de la matriz .

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.11.28
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Mihail Matkovskij #:


Me di cuenta y corregí inmediatamente después. Y debes haber copiado el código no corregido.
Gracias, ¡funciona!
 
MakarFX #:
Gracias, ¡funciona!

De nada. Completado el mensaje...

 
//+------------------------------------------------------------------+
//| juicio por muving.mq4 |
///+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#enlace de propiedad"https://www.mql5.com"
#versión de la propiedad "1.00"
#propiedad estricta
extern string Moving_Averages1= "Parámetros del indicador";
extern int MA_Period=13;
extern int MA_Shift=0;
extern int MA_Method=0;

extern int TakeProfit= 300;
extern int StopLoss= 50;
doble ma1,ma2,Lots,SL,TP;

int res;



//+------------------------------------------------------------------+
//| Función de inicialización de expertos |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Función de desinicialización experta |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| función de tic experto |
//+------------------------------------------------------------------+
void OnTick()
{
if(!OllCount()==0)
{
switch(Tipo de pedido())
{
caso OP_BUY
ma1=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,0);
ma2=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,1);
si((ma1-ma2)>0)
{
volver;
}sin embargo
SL=NormalizeDouble(Bid+StopLoss*Point,5);
TP=NormalizeDouble(Bid-TakeProfit*Point,5);
if(OrderClose(OrderTicket(),OrderLots(),Ask,3,Black))
if(OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,",0,0,Red))
volver;
caso OP_SELL
ma1=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,0);
ma2=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,1);
si((ma1-ma2)<0)
{
volver;
}
si no
SL=NormalizeDouble(Ask-StopLoss*Point,5);
TP=NormalizeDouble(Ask+TakeProfit*Point,5);
if(OrderClose(OrderTicket(),OrderLots(),Bid,3,Red))
if(OrderSend(Symbol(),OP_SELL,Lots,Ask,3,0,0,",0,0,Black))
volver;
}
}
ma1=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,0);
ma2=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,1);
si((ma1-ma2)<0)
{
SL=NormalizeDouble(Bid+StopLoss*Point,5);
TP=NormalizeDouble(Bid-TakeProfit*Point,5);
res=Enviar orden(Símbolo(),OP_Venta,Lotes,Oferta,3,0,0,",0,0,Rojo);
si(res<0)
{
Print("Error de apertura de la orden de venta");
}
}
si no
SL=NormalizeDouble(Ask-StopLoss*Point,5);
TP=NormalizeDouble(Ask+TakeProfit*Point,5);
if(OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,",0,0,Blue))
volver;
}
//+------------------------------------------------------------------+
int OllCount()
{
int count=0;
for(int i=TotalPedidos()-1;i>=0;i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
cuenta++;
}
}
return(count);
}
//+------------------------------------------------------------------+
//+---/| Copyright 2021, MetaQuotes Software Corp.
---------------------------------------------------------------+

//+------------------------------------------------------------------+

He intentado escribir mi propio asesor de MA, he seguido todos los ejemplos, pero sigue devolviendo errores.

'ma1' - algún operador esperado ensayo por muving.mq4 47 21

'=' - ':' signo de dos puntos esperado mq4 muving trial 47 24

'=' - operando esperado muving.mq4 47 24

'ma1' - algún operador esperado muving.mq4 60 15

'=' - ':' signo de dos puntos esperado muving.mq4 60 18

'=' - operando esperado muving.mq4 60 18


 
Sanjakotik78 #:


La lógica de tu pedido es errónea desde el principio. Encuentre un EA sencillo en MA(por ejemplo, CodeBase) y utilícelo. O puedes modificarlo para adaptarlo a tu propia idea. En cuanto a tu código en su conjunto, todo está mal ahí. Preste más atención a la codificación. Empieza con uno sencillo. O, como he dicho, encontrar un ejemplo ya hecho.

Añade fragmentos de código utilizando el botón especial de la parte superior: