Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 413

 
first_may:
Não é claro o que se pretendia dizer?
Significado:inserir o código correctamente no fórum
 
Karputov Vladimir:
Referia-me ao seguinte:inserir o código correctamente no fórum

Vejo. Verifico a localização do tenkan e do kinjun na primeira e segunda vela. Se houver um sinal, introduzo um alerta. Mas eu gostaria que fosse uma coisa única. Por favor, ajudem-me. Aqui está o código.

 
//+------------------------------------------------------------------+
//|                                                main_Ichimoku.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"



//+------------------------------------------------------------------+
//| Объявим переменные для хранения настроек индикаторов             |
//+------------------------------------------------------------------+
int IKHtenkansen=8;
int IKHkijunsen=24;
int IKHsenkouspanb=48;
//+------------------------------------------------------------------+
//| Объявим переменные для хранения хэндлов индикаторов              |
//+------------------------------------------------------------------+
int h_ich=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Объявим необходимые массивы для хранения данных индикаторов      |
//+------------------------------------------------------------------+
double ich1_buffer[]; 
double ich2_buffer[]; 
//+------------------------------------------------------------------+
//| Объявим переменные для хранения сигналов индикаторов             |
//+------------------------------------------------------------------+
int SignalICH;



//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   SignalICH=TradeSignal_20();
   
   
   Comment("SignalICH: "+(string)SignalICH);
}



//+------------------------------------------------------------------+
//| Функция                                             |
//+------------------------------------------------------------------+
int TradeSignal_20()
{
   int sig=0;

   if(h_ich==INVALID_HANDLE)
   {
      h_ich=iIchimoku(Symbol(),Period(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);
      return(0);
   }
   else
   {
      if (CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // TENKANSEN_LINE
      if (CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // KIJUNSEN_LINE
      if (!ArraySetAsSeries(ich1_buffer,true)) return(0);
      if (!ArraySetAsSeries(ich2_buffer,true)) return(0);
   }
   
   //--- проводим проверку условия и устанавливаем значение для sig
   if (ich1_buffer[1]>ich2_buffer[1]) sig=1;
   else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;
   else sig=0;
   
   if (ich1_buffer[1]>ich2_buffer[1])
      if (ich1_buffer[2]<ich2_buffer[2])
         Alert(Symbol()+": покупка");
   
   if (ich1_buffer[1]<ich2_buffer[1])
      if (ich1_buffer[2]>ich2_buffer[2])
         Alert(Symbol()+": продажа");
   
   
   //--- возвращаем торговый сигнал
   return (sig);
}
 
first_may:

Vejo. Verifico a localização do tenkan e do kinjun na primeira e segunda vela. Se houver um sinal, introduzo um alerta. Mas eu gostaria que fosse uma coisa única. Por favor, ajudem-me. Aqui está o código.

Não mais do que um alerta num bar:

//+------------------------------------------------------------------+
//|                                                main_Ichimoku.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Объявим переменные для хранения настроек индикаторов             |
//+------------------------------------------------------------------+
int IKHtenkansen=8;
int IKHkijunsen=24;
int IKHsenkouspanb=48;
//+------------------------------------------------------------------+
//| Объявим переменные для хранения хэндлов индикаторов              |
//+------------------------------------------------------------------+
int h_ich=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Объявим необходимые массивы для хранения данных индикаторов      |
//+------------------------------------------------------------------+
double ich1_buffer[];
double ich2_buffer[];
//+------------------------------------------------------------------+
//| Объявим переменные для хранения сигналов индикаторов             |
//+------------------------------------------------------------------+
int SignalICH;
//+------------------------------------------------------------------+
//| Объявим переменную-флаг разрешения/запрета алерта                |
//+------------------------------------------------------------------+
bool bool_alert=false;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   static datetime prevtime=0;
   datetime time_zero[];
   CopyTime(Symbol(),Period(),0,1,time_zero);
   
   if(!bool_alert)
      if(prevtime!=time_zero[0])
         bool_alert=true;
   prevtime=time_zero[0];
   
   SignalICH=TradeSignal_20();

   Comment("SignalICH: "+(string)SignalICH);
  }
//+------------------------------------------------------------------+
//| Функция                                                          |
//+------------------------------------------------------------------+
int TradeSignal_20()
  {
   int sig=0;

   if(h_ich==INVALID_HANDLE)
     {
      h_ich=iIchimoku(Symbol(),Period(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);
      return(0);
     }
   else
     {
      if(CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // TENKANSEN_LINE
      if(CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // KIJUNSEN_LINE
      if(!ArraySetAsSeries(ich1_buffer,true)) return(0);
      if(!ArraySetAsSeries(ich2_buffer,true)) return(0);
     }

//--- проводим проверку условия и устанавливаем значение для sig
   if(ich1_buffer[1]>ich2_buffer[1]) sig=1;
   else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;
   else sig=0;8

   if(ich1_buffer[1]>ich2_buffer[1])
      if(ich1_buffer[2]<ich2_buffer[2])
         if(bool_alert)
           {
            Alert(Symbol()+": покупка");
            //--- опускаем флаг
            bool_alert=false;
           }

   if(ich1_buffer[1]<ich2_buffer[1])
      if(ich1_buffer[2]>ich2_buffer[2])
         if(bool_alert)
           {
            Alert(Symbol()+": продажа");
            //--- опускаем флаг
            bool_alert=false;
           }

//--- возвращаем торговый сигнал
   return (sig);
  }
//+------------------------------------------------------------------+
 
Karputov Vladimir:

Não há mais do que um alerta por barra:

Muito obrigado!!!!
 

Olá a todos!

Como fazer uma EA para saltar 1 sinal após uma troca perdida? ( muito boa estratégia Z )

Explique por palavras, o próprio código é capaz de implementar.

 
Leanid Aladzyeu:

Olá a todos!

Como fazer uma EA para saltar 1 sinal após uma troca perdida? ( muito boa estratégia Z )

Explique por palavras, o próprio código é capaz de implementar.

Com uma perda dá um certo valor à variável global do terminal e redefine-a para zero no primeiro sinal. A função comercial controla este valor e decide se deve ou não abrir um novo comércio.

Por outras palavras, a ordem de trabalho é aproximadamente a seguinte:

a) Rastrear o lucro;

b) contar sinais, marcar a caixa em caso de perda, se ainda não houver outro sinal para negociar, repor a caixa quando o primeiro sinal for recebido após a perda;

c) marque a caixa e decida se vai negociar ou esperar.

O GPT é mais conveniente de utilizar, são guardados em caso de falha do terminal, variáveis simples no código podem ser repostas por qualquer espirro e o Expert Advisor irá trabalhar com erros.

 
Vitalie Postolache:

Com perda, atribuir um certo valor à variável global do terminal e repor a zero no primeiro sinal. A função comercial controla este valor e decide se deve ou não abrir uma nova transacção.

Ou seja, a ordem de trabalho é, aproximadamente, a seguinte:

a) Rastrear o lucro;

b) contar sinais, marcar a caixa em caso de perda, se ainda não tivemos outro sinal para negociar, repor a caixa quando o primeiro sinal chegar depois de uma perda;

c) marque a caixa e decida se vai negociar ou esperar.

O GPT é mais conveniente de utilizar, são guardados quando o terminal se avaria, variáveis simples no código podem ser repostas a partir de qualquer espirro e o Expert Advisor irá trabalhar com erros.

Todos entendidos excepto um . Como fazer um contador de sinais?
Então?
if("Condition" == тру)
i ++;
 
Leanid Aladzyeu:
Tem tudo menos um. Como fazer um contador de sinais?
Certo?
se("Condição"==verdadeiro)
i ++;
Como isto:variáveis estáticas.
 

cospe

sl = NormalizeDouble(sl,MarketInfo(symbol,MODE_DIGITS));

possível perda de dados devido à conversão do tipo .mq4 1697 29

tipo Doble no SL.


Razão: