Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 413

 
first_may:
Non è chiaro cosa si intendeva?
Significato:inserire il codice correttamente nel forum
 
Karputov Vladimir:
Intendevo quanto segue:inserire il codice correttamente nel forum

Capisco. Controllo la posizione del tenkan e del kinjun sulla prima e sulla seconda candela. Se c'è un segnale, inserisco un allarme. Ma vorrei che fosse una cosa unica. Per favore, aiutatemi. Ecco il codice.

 
//+------------------------------------------------------------------+
//|                                                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:

Capisco. Controllo la posizione del tenkan e del kinjun sulla prima e sulla seconda candela. Se c'è un segnale, inserisco un allarme. Ma vorrei che fosse una cosa unica. Per favore, aiutatemi. Ecco il codice.

Non più di un allarme su una barra:

//+------------------------------------------------------------------+
//|                                                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:

Non c'è più di un allarme per barra:

Grazie mille!!!
 

Ciao a tutti!

Come fare in modo che un EA salti 1 segnale dopo un trade perdente? (strategia Z molto buona)

Spiegare in parole, il codice stesso è in grado di implementare.

 
Leanid Aladzyeu:

Ciao a tutti!

Come fare in modo che un EA salti 1 segnale dopo un trade perdente? (strategia Z molto buona)

Spiegare in parole, il codice stesso è in grado di implementare.

In perdita dare un certo valore alla variabile globale del terminale e azzerarla al primo segnale. La funzione di trading monitora questo valore e decide se aprire un nuovo trade o no.

In altre parole, l'ordine di lavoro è approssimativamente il seguente:

a) Tracciare il profitto;

b) contare i segnali, spuntare la casella in caso di perdita, se non c'è ancora un altro segnale da scambiare, azzerare la casella quando si riceve il primo segnale dopo la perdita;

c) spuntare la casella e decidere se fare trading o aspettare.

GPT è più comodo da usare, sono salvati in caso di guasto del terminale, semplici variabili nel codice possono essere resettate da qualsiasi starnuto e l'Expert Advisor funzionerà con errori.

 
Vitalie Postolache:

In perdita, assegnate un certo valore alla variabile globale del terminale e azzeratelo al primo segnale. La funzione di trading monitora questo valore e decide se aprire un nuovo trade o no.

Cioè, l'ordine di lavoro è approssimativamente il seguente:

a) Tracciare il profitto;

b) contare i segnali, spuntare la casella in caso di perdita, se non abbiamo ancora avuto un altro segnale per fare trading, azzerare la casella quando arriva il primo segnale dopo una perdita;

c) spuntare la casella e decidere se fare trading o aspettare.

GPT è più comodo da usare, vengono salvati quando il terminale si blocca, semplici variabili nel codice possono resettarsi da qualsiasi starnuto e l'Expert Advisor funziona con gli errori.

Tutti hanno capito tranne uno. Come fare un contatore di segnali?
Quindi?
if("Condizione" == тру)
i ++;
 
Leanid Aladzyeu:
Presi tutti tranne uno. Come fare un contatore di segnali?
Giusto?
se("Condizione"==vero)
i ++;
Così:variabili statiche.
 

sputa

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

possibile perdita di dati dovuta alla conversione del tipo .mq4 1697 29

tipo Doble a SL.