Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1770

 
MakarFX #:

Ma perché hai bisogno di questo array, ancora non capisco...

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 funzione funzionerà senza di essa.

 
Mihail Matkovskij #:

Ma perché avete bisogno di questo array, ancora non capisco...

La funzione funzionerà anche senza.

E non c'è bisogno di un ciclo qui

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

E non c'è bisogno di un loop.

L'ho fatto, ma volevo capire perché l'array non funzionava.

e comunque

ArraySize(Buffer,limit);

non ha aiutato (


'ArraySize' - numero di parametri errato

corretto senza limiti

array fuori range in '_exp.mq4' (267,17)

 
MakarFX #:


ArrayResize, non ArraySize.

 
Yurij Kozhevnikov #:

ArrayResize, non ArraySize.

array fuori portata
 
MakarFX #:

L'ho fatto, ma volevo capire perché l'array non funzionava.

e comunque

non ha aiutato (


'ArraySize' - numero di parametri errato

corretto senza limiti

array fuori range in '_exp.mq4' (267,17)


Ho notato e corretto subito dopo. E devi aver copiato il codice non corretto.

E se volete sapere perché l'array non ha funzionato, ecc. Vedere: Operazioni di matrice .

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


Ho notato e corretto subito dopo. E devi aver copiato il codice non corretto.
Grazie, funziona!
 
MakarFX #:
Grazie, funziona!

Prego! Completato il messaggio...

 
//+------------------------------------------------------------------+
//| prova di muving.mq4 |
///+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#proprietà link"https://www.mql5.com"
#proprietà versione "1.00"
#proprietà rigorosa
extern string Moving_Averages1= "Parametri dell'indicatore";
extern int MA_Period=13;
extern int MA_Shift=0;
extern int MA_Method=0;

extern int int TakeProfit= 300;
extern int StopLoss= 50;
doppio ma1,ma2,Lotti,SL,TP;

int res;



//+------------------------------------------------------------------+
//| Funzione di inizializzazione dell'esperto |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Funzione di deinizializzazione dell'esperto |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| funzione tick esperto |
//+------------------------------------------------------------------+
void OnTick()
{
se(!OllCount()==0)
{
switch(OrderType())
{
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);
se((ma1-ma2)>0)
{
ritorno;
}else
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,0,Red))
ritorno;
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);
se((ma1-ma2)<0)
{
ritorno;
}
else
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,0,Black))
ritorno;
}
}
ma1=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,0);
ma2=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,1);
se((ma1-ma2)<0)
{
SL=NormalizeDouble(Bid+StopLoss*Point,5);
TP=NormalizeDouble(Bid-TakeProfit*Point,5);
res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,",0,0,0,Red);
se(res<0)
{
Stampa("Errore di apertura dell'ordine di vendita");
}
}
else
SL=NormalizeDouble(Ask-StopLoss*Point,5);
TP=NormalizeDouble(Ask+TakeProfit*Point,5);
if(OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,",0,0,0,Blue))
ritorno;
}
//+------------------------------------------------------------------+
int OllCount()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
se (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
//+---/| Copyright 2021, MetaQuotes Software Corp.
---------------------------------------------------------------+

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

Ho provato a scrivere il mio consulente MA, ho seguito tutti gli esempi, ma continua a restituire errori.

'ma1' - qualche operatore atteso prova da muving.mq4 47 21

'=' - ':' segno di due punti previsto mq4 prova di muving 47 24

'=' - operando previsto muving.mq4 47 24

'ma1' - qualche operatore atteso muving.mq4 60 15

'=' - ':' segno di due punti previsto muving.mq4 60 18

'=' - operando previsto muving.mq4 60 18


 
Sanjakotik78 #:


La vostra logica degli ordini è sbagliata fin dall'inizio. Trova un semplice EA su MA(per esempio CodeBase) e usalo. Oppure potete modificarlo per adattarlo alla vostra idea. Per quanto riguarda il tuo codice nel suo insieme, tutto è sbagliato lì. Fate più attenzione alla codifica. Comincia con uno semplice. O, come ho detto, trovare un esempio già pronto.

Aggiungere snippet di codice usando l'apposito pulsante in alto: