Discussione sull'implementazione dei consiglieri. - pagina 6

 
Ivan_Invanov:
Salve. Potresti dirmi qual è il segnale di entrata a mercato di questo EA e dove si trova nel codice?

Si collega il modulo segnali dell'indicatore personalizzato nella linea

//--- available signals
#include <Expert\Signal\SignalMA.mqh>


e quipotete controllarei segnali di trading di questo indicatore


Ci sono abbastanza informazioni a questo punto e bisogna digerirle. Vi consiglio anche di leggere i seguenti articoli

Документация по MQL5: Стандартная библиотека / Модули стратегий / Модули торговых сигналов / Сигналы индикатора Moving Average
Документация по MQL5: Стандартная библиотека / Модули стратегий / Модули торговых сигналов / Сигналы индикатора Moving Average
  • www.mql5.com
Цена пересекла индикатор сверху вниз(цена Open анализируемого бара выше линии индикатора, а цена Close - ниже), но индикатор растет (слабый сигнал на отбой от линии индикатора). Цена пересекла индикатор нижней тенью (цены Open и Close анализируемого бара выше линии индикатора, а цена Low ниже) и индикатор растет (сигнал на отбой от линии...
 

Ragazzi, ecco una domanda

Qual è il modo giusto per fare un vincolo di ottimizzazione dei parametri in modo che non si arrampichino l'uno sull'altro, ci sono troppi overshoots inutili.

input  int                Profit_Lev1        = 5;           // |     1-я фиксация прибыли 
sinput string _p1="";//---
input  int                Profit_Lev2        = 7;           // |     2-я фиксация прибыли 
sinput string _p2="";//---
input  int                Profit_Lev3        = 10;          // |     3-я фиксация прибыли


Abbiamo 3 livelli di presa di profitto, il 1° non dovrebbe essere superiore al 2° e al 3° e il 2° non dovrebbe essere superiore al 3°

//+------------------------------------------------------------------+
//| Проверяет внешние параметры                                      |
//+------------------------------------------------------------------+
bool CheckInputParameters()
  {
     if(Profit_Lev1 >= Profit_Lev2  || Profit_Lev1 >= Profit_Lev3 || Profit_Lev2 >= Profit_Lev3)
       {
         Print(_Symbol,
               ": 1-й уровень профита ("+IntegerToString(Profit_Lev1)+") "
               "должен быть больше 2-го и 3-го уровня профита ("+IntegerToString(Profit_Lev2)+"   "+IntegerToString(Profit_Lev3)+")!");
         return(false);
        }                     
//--- Параметры корректны
   return(true);
  }

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  { 


//--- Проверим внешние параметры
   if(!CheckInputParameters())
      return(INIT_PARAMETERS_INCORRECT);


//--- Инициализаия прошла успешно
   return(INIT_SUCCEEDED);
  }


Inizio l'ottimizzazione

Il registro comincia ad avere un sacco di errori, forse qualcosa che resetta il robot


Ma il fatto è che il robot è ottimizzato per 20 minuti e l'ottimizzazione si ferma, anche se se non specifico un limite e lascio che le cose facciano il loro corso, dove il primo può essere superiore al secondo, allora l'ottimizzazione è pienamente operativa più di un giorno.

Non voglio che vadano uno per uno e non saltino l'uno sull'altro, perché ci sono altre logiche sotto forma di punti e di trasferimento di punti su questi livelli nell'algoritmo.

 
Konstantin Seredkin:

Ragazzi, ecco una domanda

Qual è il modo giusto per fare un vincolo di ottimizzazione dei parametri in modo che non si arrampichino l'uno sull'altro, troppi superamenti inutili.


Abbiamo 3 livelli di presa di profitto, il 1° non dovrebbe essere superiore al 2° e al 3° e il 2° non dovrebbe essere superiore al 3°

Introdurre non tre "livelli di profitto" ma "livello base", "2° livello sopra il livello base" e "3° livello sopra il 2° livello".

Questo è tutto. Facciamo un superamento completo.

Se vogliamo che tutti e tre i livelli rientrino in un intervallo fisso, allora introduciamo le variabili "larghezza dell'intervallo" e due "confini tra i livelli", dove il primo confine è una frazione dell'intervallo, e il secondo confine è una frazione della parte rimanente (dopo il primo confine) dell'intervallo.

Io lo farei in questo modo...

 
Georgiy Merts:

Introdurre non tre "livelli di profitto", ma "livello base", "superamento del secondo livello rispetto al livello base" e "superamento del terzo livello rispetto al secondo livello".

Questo è tutto. Facciamo un superamento completo.

Se vogliamo che tutti e tre i livelli rientrino in un intervallo fisso, allora introduciamo le variabili "larghezza dell'intervallo" e due "confini tra i livelli", dove il primo confine è una frazione dell'intervallo, e il secondo confine è una frazione della parte rimanente (dopo il primo confine) dell'intervallo.

Io lo farei in questo modo...

Fa differenza se controllo il primo livello con il secondo e il terzo, o se controllo il terzo livello con il primo e il secondo, perché il significato è lo stesso.
 
Konstantin Seredkin:
Così dal cambio di posti della sommatoria sarà la differenza che io controllo il primo livello con il secondo e il terzo, che il terzo livello con il primo e il secondo controllo, il significato dello stesso.

Avete parametri errati quando il primo livello è maggiore del secondo, ecc., e nella versione proposta questi controlli spariranno, e tutti i set saranno corretti.

 
Konstantin Seredkin:
Quindi, farà qualche differenza se controllo il primo livello con il secondo e il terzo, o se controllo il terzo livello con il primo e il secondo, il significato è lo stesso.

La domanda era più o meno come superare il "no overlap". Se il primo livello è, per esempio, il 10% della gamma - non c'è modo che il secondo livello lo salga, poiché è misurato nel restante 90%.

 
Georgiy Merts:

La domanda era più o meno come superare il "no overlap". Se il primo livello, per esempio, è il 10% della gamma - non c'è modo che il secondo livello vi salga, poiché è misurato nel restante 90%.

Ancora non capisco.

Non sono solo variabili statiche, sono variabili esterne in cui ho impostato 3 take profit.


Il robot scambia 3 lotti

in 100 pips voglio chiudere 1 lotto = questo è il primo livello di profitto

200 lotti in più = secondo livello di profitto

300 lotti in più = terzo livello di profitto


Ma con il primo livello il robot imposta uno stop loss a Breakeven

Al secondo livello trasferisce questo stop al primo livello di profitto.

Se non ci fosse il Breakeven, non avrebbe importanza come l'ottimizzatore selezionerebbe questi livelli, anche se il primo livello fosse 300, il secondo 50 punti e il terzo 150

ma il metodo Breakeven ha bisogno di un ordine preciso, quindi non voglio che l'ottimizzatore li scelga in questo modo

300 50 150

50 300 150

ecc.

Voglio solo che vada normalmente.

50 100 200

150 160 170

ecc.

Controllo della correttezza dei parametri inseriti

//+------------------------------------------------------------------+
//| Проверяет внешние параметры                                      |
//+------------------------------------------------------------------+
bool CheckInputParameters()
  {
     if(Profit_Lev1 >= Profit_Lev2  || Profit_Lev1 >= Profit_Lev3 || Profit_Lev2 >= Profit_Lev3)
       {
         Print(_Symbol,
               ": 1-й уровень профита ("+IntegerToString(Profit_Lev1)+") "
               "должен быть больше 2-го и 3-го уровня профита ("+IntegerToString(Profit_Lev2)+"   "+IntegerToString(Profit_Lev3)+")!");
         return(false);
        }                     
//--- Параметры корректны
   return(true);
  }

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  { 


//--- Проверим внешние параметры
   if(!CheckInputParameters())
      return(INIT_PARAMETERS_INCORRECT);


//--- Инициализаия прошла успешно
   return(INIT_SUCCEEDED);
  }

Quando si ottimizza c'è scritto che ci sono stati salti su un mucchio di corse, è buono che resetta le impostazioni che non possono essere applicate, ma l'ottimizzatore funziona per qualche minuto e poi si spegne.

Immagino che questo assegno debba essere giocato in qualche altro modo.

Quello che suggerisci non riesco a capirlo senza un esempio di quello di cui stai parlando.

 
Konstantin Seredkin:

Ancora non capisco.

Non si tratta solo di variabili statiche, ma anche di variabili esterne che ho impostato 3 prendere profitti in


Il robot sta scambiando 3 lotti

in 100 pips voglio chiudere 1 lotto = questo è il primo livello di profitto

200 lotti in più = secondo livello di profitto

300 lotti in più = terzo livello di profitto


Ma con il primo livello il robot imposta uno stop loss a Breakeven

Al secondo livello trasferisce questo stop al primo livello di profitto.

Se non ci fosse il Breakeven, non avrebbe importanza come l'ottimizzatore selezionerebbe questi livelli, anche se il primo livello fosse 300, il secondo 50 punti e il terzo 150

ma il metodo Breakeven ha bisogno di un ordine preciso, quindi non voglio che l'ottimizzatore li scelga in questo modo

300 50 150

50 300 150

ecc.

Voglio solo che le cose vadano normalmente.

50 100 200

150 160 170

ecc.

Controllo della correttezza dei parametri inseriti

Quando si ottimizza c'è scritto che ci sono stati salti su un mucchio di corse, è buono che resetta le impostazioni che non possono essere applicate, ma l'ottimizzatore funziona per qualche minuto e poi si spegne.

Immagino che questo assegno debba essere giocato in qualche altro modo.

Non riesco a capire cosa suggerisci senza un esempio.

Nell'ingresso, non impostare i livelli stessi, ma le distanze tra loro.

input uint firstLevel=20 ; // пунктов от цены до первого ТП

input uint secondDistance=30; // пунктов от первого ТП до второго

input uint thirdDistance=50; // пунктов от второго ТП до конечного

Allora l'ottimizzatore non sarà fisicamente in grado di scambiare i livelli

 

Buon pomeriggio, ci sono ragazzi che hanno impostato a distanza un EA su mt4, che fa trading automatico, su una macchina vm sulla nuvola Yandex. Se non mi sbaglio, potrò avere una copia del gioco sul mio hard disk e farlo funzionare. Cp

P.s scusa per il mio linguaggio ottuso, non capisco la terminologia e l'essenza di queste cose.

 

Buon pomeriggio!

Ho deciso di scrivere un EA. A questo proposito, è necessario cambiare i segnali che saranno utilizzati dall'EA per aprire gli ordini. Per esempio, l'indicatore DeMarker - voglio che il mio Expert Advisor apra gli ordini solo quando questo indicatore incrocia 0,3 dal basso verso l'alto (acquisto) e 0,7 dall'alto verso il basso (vendita). Ho capito bene che devo correggere il file SignalDeMarker.mqh (le sezioni di codice con i commenti "Votando" che il prezzo crescerà e "Votando" che il prezzo calerà)?