Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1770

 
MakarFX #:

Mas por que você precisa desta matriz, eu ainda não entendo...

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

A função funcionará sem ela.

 
Mihail Matkovskij #:

Mas por que você precisa desta matriz, eu ainda não entendo...

A função funcionará sem ela.

E não há necessidade de um loop aqui

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 não há necessidade de um loop.

Eu fiz, mas eu queria entender porque a matriz não funcionava.

e, a propósito

ArraySize(Buffer,limit);

não ajudou (


'ArraySize' - parâmetros errados contam

corrigido sem limite

matriz fora do alcance em '_exp.mq4' (267,17)

 
MakarFX #:


ArrayResize, não ArraySize.

 
Yurij Kozhevnikov #:

ArrayResize, não ArraySize.

fora de alcance
 
MakarFX #:

Eu fiz, mas queria entender porque a matriz não funcionava.

e, a propósito

não ajudou (


'ArraySize' - parâmetros errados contam

corrigido sem limite

matriz fora do alcance em '_exp.mq4' (267,17)


Notei e corrigi imediatamente depois. E você deve ter copiado o código não-corrigido.

E se você quiser saber porque a matriz não funcionou, etc., veja: Operações. Ver: Operações de matriz .

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


Notei e corrigi imediatamente depois. E você deve ter copiado o código não-corrigido.
Obrigado, está funcionando!
 
MakarFX #:
Obrigado, está funcionando!

Seja bem-vindo! Completou a mensagem...

 
//+------------------------------------------------------------------+
//| trial by muving.mq4 |
///+------------------------------------------------------------------+
#direitos autorais "Copyright 2021, MetaQuotes Software Corp."
#link da propriedade"https://www.mql5.com"
#propriedade versão "1.00"
#propriedade rigorosa
cadeia externa Moving_Averages1= "Parâmetros indicadores";
externo int MA_Period=13;
externo int MA_Shift=0;
externo int MA_Método=0;

int externo int TakeProfit= 300;
externo int StopLoss= 50;
duplo ma1,ma2,Lots,SL,TP;

int res;



//+------------------------------------------------------------------+
//| Função de inicialização do especialista |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Função de desinicialização especializada |
//+------------------------------------------------------------------+
nulo OnDeinit(const int razão)
{
}
//+------------------------------------------------------------------+
//| função tick expert |
//+------------------------------------------------------------------+
nulo 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);
if((ma1-ma2)>0)
{
retornar;
}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,0,Red))
retornar;
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);
if((ma1-ma2)<0)
{
retornar;
}
senão
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,0,Black))
retornar;
}
}
ma1=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,0)
ma2=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,1);
if((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);
if(res<0)
{
Imprimir ("Sell order open error");
}
}
senão
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,0,Blue))
retornar;
}
//+------------------------------------------------------------------+
int OllCount()
{
int contagem=0;
for(int i=OrdensTotal()-1;i>=0;i--)
{
se (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==verdadeiro)
{
contar++;
}
}
devolução(contagem);
}
//+------------------------------------------------------------------+
//+---/| Copyright 2021, MetaQuotes Software Corp. |
---------------------------------------------------------------+

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

Tentei escrever meu próprio assessor de mestrado, segui todos os exemplos, mas ele continua retornando erros.

ma1 - alguns operadores esperavam trial por muving.mq4 47 21

'=' - ':' sinal de dois pontos esperado mq4 muving trial 47 24

'=' - operando esperado muving.mq4 47 24

ma1' - algum operador esperado muving.mq4 60 15

'=' - ':' sinal de dois pontos esperado muving.mq4 60 18

'=' - operando esperado muving.mq4 60 18


 
Sanjakotik78 #:


Sua lógica de pedido está errada desde o início. Encontre um simples EA no MA(por exemplo, CodeBase) e use-o. Ou você pode modificá-lo de acordo com sua própria idéia. Com relação ao seu código como um todo, tudo está errado aí. Preste mais atenção à codificação. Comece com uma simples. Ou, como eu disse, encontrar um exemplo pronto.

Adicione trechos de código usando o botão especial na parte superior:


Razão: