Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1401

 
freemovpalm #:

Ciao a tutti, potete per favore aiutarmi ad aggiungere la martingala all'EA, ho bisogno dopo l'attivazione dello stoploss (ottenendo la perdita) e su un nuovo segnale (il gufo funziona con l'indicatore) di entrare con un lotto aumentato (moltiplicato per il coeff). Ho capito bene, prima devo scrivere l'evento - evento stoploop (non so dove e come), e fare i conti con i lotti lì (ho bisogno di variabili aggiuntive)?

Per esempio, aggiungete una variabile - contatore di transazioni perdenti di fila. Ad ogni trade perdente - aumentato di 1, ad ogni profittevole - azzerato a 0.

E da questo contatore impostare lotto (per esempio - moltiplicando il lotto minimo per 2 in proporzione a questo contatore).

Ma la martingala non renderà redditizia una strategia perdente.

 
JRandomTrader #:

Per esempio, aggiungete una variabile - contatore di transazioni perdenti di fila. Ad ogni trade perdente - è aumentato di 1, ad ogni profittevole - è riportato a 0.

E da questo contatore impostare il lotto (per esempio, moltiplicare il lotto minimo per 2 nella misura di questo contatore).

Ma la martingala non renderà redditizia una strategia perdente.

Grazie, la strategia ha una media di 2 e un massimo di 4 perdite di fila, ecco perché volevo un martin. A proposito, qualcuno ha un esempio di un tale contatore o gufo che funziona secondo lo stesso principio che ho descritto? Potrei semplicemente copiare le linee necessarie da lì.

 
string Button_TP = "Panel.String1.Button3";

Print(ObjectGetInteger(0, "Panel.String1.Button3", OBJPROP_STATE));
Print(ObjectGetInteger(0, Button_TP, OBJPROP_STATE));

Puoi dirmi perché la prima opzione funziona e la seconda no? Il nome del pulsante non può essere impostato su una variabile?

 

Come può il tester automatizzare il passaggio di diverse coppie?
Per esempio, ho bisogno di passare attraverso 20 paia. Ora riavvio il tester per ogni coppia.
Non riesco a capire come creare una variabile.

Ci sono soluzioni?

 
Evgeny Dyuka #:

Come può il tester automatizzare il passaggio di diverse coppie?
Per esempio, ho bisogno di passare attraverso 20 coppie. Ora riavvio il tester per ogni coppia.
Non riesco a capire come creare una variabile.

Avete qualche soluzione?

Forum sul trading, sistemi di trading automatico e test di strategia

Come ricevere le coppie selezionate per la revisione del mercato in Strategy Tester?

Alexey Viktorov, 2022.04.14 17:11

Non è possibile utilizzare il terminale MarketWatch nello Strategy Tester. Il tester genera il proprioMarketWatch dai simboli le cui proprietà sono state richieste dal programma. Pertanto, per formare unMarketWatch, è necessario richiedere qualsiasi proprietà del simbolo richiesto.

sinput  string  Symb  = "GBPUSD,GBPAUD,GBPCAD,GBPJPY,EURUSD,EURGBP,EURAUD,EURCAD,EURJPY,AUDUSD,AUDNZD,AUDCAD,AUDJPY,NZDUSD,NZDCAD,USDCAD,USDJPY"
string s_arr[];
int OnInit()
{
  int i = 0, symbPos = 0;
  if(StringSplit(Symb, ',', s_arr) <= 0)
   {
    Print(__FUNCTION__ + " Error converting !");
    return(INIT_FAILED);
   }
  while(symbPos >= 0  && !IsStopped())
   {
    if(!SymbolInfoInteger(s_arr[i], SYMBOL_SELECT) || !SymbolInfoInteger(s_arr[i], SYMBOL_VISIBLE))
      SymbolSelect(s_arr[i], true);
    double price = SymbolInfoDouble(s_arr[i], SYMBOL_ASK);
    i++;
   }
 return(INIT_SUCCEEDED);
}/*******************************************************************/

Spero di non aver fatto errori quando ho estratto il codice dal mio programma...


 
Evgeny Dyuka #:

Come può il tester automatizzare il passaggio di diverse coppie?
Per esempio, ho bisogno di passare attraverso 20 paia. Ora riavvio il tester per ogni coppia.
Non riesco a capire come fare una variabile.

Ci sono soluzioni?

Se definiamo una coppia con un parametro EA che può cambiare durante l'ottimizzazione, allora eseguiamo semplicemente l'ottimizzazione con questo parametro per iniziare un passaggio attraverso diverse coppie.
Questo parametro non può essere di tipo 'string', ma può essere di tipo 'int' o 'enum'.
Con questo parametro, quando inizializziamo l'EA, assegniamo a un'altra variabile stringa il nome del simbolo desiderato che corrisponde al valore del parametro.
Nel codice EA, dovrete sostituire Symbol() o _Symbol con la vostra variabile con il nome della coppia.

Hai capito il principio o hai bisogno di un esempio di codice?

 
Evgeny Dyuka #:

Come può il tester automatizzare il passaggio di diverse coppie?
Per esempio, ho bisogno di passare attraverso 20 paia. Ora riavvio il tester per ogni coppia.
Non riesco a capire come creare una variabile.

Ci sono soluzioni?

Sabermultitester è la soluzione, è possibile impostare i passaggi da strumenti e impostazioni.

Библиотеки: MultiTester
Библиотеки: MultiTester
  • 2019.07.19
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: MultiTester
 
Yuriy Bykov #:

Se una coppia è definita da un parametro EA che può essere cambiato durante l'ottimizzazione, allora per eseguire un passaggio a più coppie, eseguiamo semplicemente l'ottimizzazione da questo parametro.
Questo parametro non può essere di tipo 'string', ma può essere di tipo 'int' o 'enum'.
Con questo parametro, quando inizializziamo l'EA, assegniamo a un'altra variabile stringa il nome del simbolo desiderato che corrisponde al valore del parametro.
Nel codice EA, dovrete sostituire Symbol() o _Symbol con la vostra variabile con il nome della coppia.

Hai capito il principio o hai bisogno di un esempio di codice?

Grande! Non mi è venuto in mente di passare attraverso l'ottimizzatore.

 
Yuriy Bykov #:

Se una coppia è definita da un parametro EA che può essere cambiato durante l'ottimizzazione, allora per eseguire un passaggio multi-coppia, si esegue semplicemente l'ottimizzazione da questo parametro.
Questo parametro non può essere di tipo 'string', ma può essere di tipo 'int' o 'enum'.
Con questo parametro, quando inizializziamo l'EA, assegniamo a un'altra variabile stringa il nome del simbolo desiderato che corrisponde al valore del parametro.
Nel codice EA, ovunque sia usato Symbol() o _Symbol, dovremo sostituirlo con la nostra variabile con il nome della coppia.

Il principio è chiaro o hai bisogno di un codice di esempio?

E OnTick()?
Posso sostituire il mio simbolo ovunque, maOnTick() sarà sempre preso dalsimbolo su cui il tester è in esecuzione.
Dall'aiuto: "
L'evento OnTick() è generato . quando si riceve un nuovo tick per un simbolo, al cui grafico è collegato l'Expert Advisor".

Non ci può essere un conflitto qui? Per esempio, il forex è stato fermato durante il fine settimana, ma le criptovalute no.

 
Sì, questo è un problema. Non ho lavorato con le criptovalute, quindi non ho pensato alla differenza dei periodi di trading consentiti. Ma è possibile mettere qualche criptovaluta come simbolo di lavoro nel tester, e aggiungere (o meno) il controllo che il trading è permesso nell'EA. Dopo di che, il problema principale è l'incoerenza dei tempi di arrivo dei tick per i diversi strumenti. Qui possiamo provare a scegliere lo strumento con più tick per ridurre l'errore dei risultati dei test. Negli Expert Advisor multivaluta che lavorano attaccati a un grafico, la situazione sarà la stessa - OnTick() viene attivato solo per il simbolo principale. Per tracciare correttamente l'evento di una nuova barra che arriva per diversi simboli in questo caso uso la mia libreria New Bar Event.
New Bar Event
New Bar Event
  • www.mql5.com
Позволяет определить наступление события нового бара в мультивалютном советнике. В вызове OnTick() можно многократно проверять, наступило ли на этом тике событие для нужного инструмента (symbol) и периода графика (timeframe).
Motivazione: