Domande da un "manichino" - pagina 54

 
Urain:
Correggere gli errori dell'uomo con il soprannome Expert? che dovrebbe andare nel thread di umorismo.
Quanto del tuo post è trolling su una scala di 10? =)
 
Expert:
Per quanto riguarda il tuo post si riferisce al trolling su una scala di 10? =)

All'inizio ho pensato che fosse Andrei a fare queste domande, ma poi mi sono ricordato che il suo soprannome è TheXpert, a cui corrisponde.

Visto che ci sei andato così vicino, preparati che sarai doppiamente richiesto.

Meglio cambiarlo, non è troppo tardi per 3 post, c'è abbastanza esperto su questo forum.

 
tol64:

Si prega di consigliare come implementare correttamente il nuovo controllo delle barre in EA multivaluta nello schema presentato.

Ho aggiunto un array statico per memorizzare il tempo di apertura di una nuova barra per ogni simbolo:

void OnTick()
{ 
 // Объявление массивов переменных для торговых сигналов
 static datetime New_Bar[2];  
 static bool UpSignal[2], DnSignal[2];

 // Получение торговых сигналов
 TradeSignalCounter(0, остальные параметры);
 TradeSignalCounter(1, остальные параметры);

 // Совершение торговых операций
 TradePerformer(0, остальные параметры);
 TradePerformer(1, остальные параметры);
}

Modificata la funzione isNewBar(string Symbol_, ENUM_TIMEFRAMES Timeframe); Ora funziona con l'arrayNew_Bar[].

bool isNewBar(int Number,string Symbol_,ENUM_TIMEFRAMES Timeframe,datetime &New_Bar[])
{
 // Текущее время
 datetime lastbar_time = (ENUM_SERIES_INFO_INTEGER)SeriesInfoInteger(Symbol_,Timeframe,SERIES_LASTBAR_DATE);

 // Если это первый вызов функции
 if(New_Bar[Number] == 0)
   {
    // Установим время и выйдем 
    New_Bar[Number] = lastbar_time;
    return(false);
   }

 // Если время отличается
 if(New_Bar[Number] != lastbar_time)
   {
    // Запомним время и вернем true
    New_Bar[Number] = lastbar_time;
    return(true);
   }
 // Дошли до этого места - значит бар не новый, вернем false
 return(false);
}
I risultati sono ancora diversi per diversi strumenti con parametri invariati. Potete dirmi dove mi sbaglio?
 
Urain:

All'inizio ho pensato che fosse Andrei a fare queste domande, ma poi mi sono ricordato che il suo soprannome è TheXpert, a cui corrisponde.

Dato che sei così vicino, preparati che sarai doppiamente richiesto.

Meglio cambiarlo, 3 messaggi non è troppo tardi, il forum un esperto è sufficiente.

All'inizio ho pensato che Andrew sta facendo tali domande (nel contesto capire lo stupido) chiede, ma poi mi sono ricordato che ha soprannominatoTheXpert, che corrisponde (ops, insulto nascosto TheXpert) =)

P.S. Seduto a pensare ad un nuovo soprannome.

 
papaklass:
I risultati saranno diversi perché la funzione OnTick() si attiva quando arriva un nuovo tick per il simbolo, sul grafico su cui lavora l'Expert Advisor. I tick per i diversi simboli non arrivano allo stesso tempo. Questo porta alla divergenza dei risultati finali. Se hai impostato il tuo EA per lavorare sulla valuta più liquida, con i tick più alti del giorno (eurusd), non preoccuparti.

Il motivo per cui i risultati sono diversi mi è chiaro. È già stato discusso molte volte in diversi thread. Nel mio caso non si può fare a meno del vapore). C'è un problema che deve essere risolto per ottenere risultati corretti dei test. Schema proposto da Nicholas Kositsin per me al momento il più comprensibile e abbastanza adatto. Non c'è proprio modo di risolvere il problema espresso sopra.

Konstantin Gruzdev ha suggerito un metodo interessante con "spie" e "agenti" nel suo articolo. )) Ma il suo "agente" exSpy Control panel MCM non sembra funzionare per me.

Qualcuno ha provato a risolvere il problema di cui sopra con l'aiuto degli "agenti" di Konstantin Gruzdev?

 
tol64:

Qualcuno ha provato a risolvere il problema di cui sopra con gli "agenti" di Konstantin Gruzdev?

Non credo che questa tecnica funzionerà nel tester.

// Lavora con il timer. Cosa c'è che non va?

 
MetaDriver:
Penso che questa tecnologia non funzionerà nel tester.

Konstantin stesso ha commentato nel thread di discussione dell'articolo in questo modo:

OnChartEvent() non funziona ancora nel tester. Gli sviluppatori hanno promesso di farlo. Ho testato, se si può chiamare test, la metodologia con la chiamata di "spie" direttamente dall'Expert Advisor nel tester, sostituendo il trasferimento di eventi attraverso variabili globali - funziona.

Questo è il modo per provarlo.

Ho altre varianti in testa, ma mi sembrano abbastanza complicate. In ogni caso dovrò risolvere questo problema. Sono solo stanco di sbagliare i risultati. Ho iniziato a studiare MQL5 esclusivamente per la possibilità di testare sistemi di trading multivaluta. Prima caricavo i risultati dei test su Excel e facevo i calcoli lì. Ma ho bisogno di vedere i risultati direttamente nel tester della strategia.

Vladimir, come hai risolto questo problema?

MetaDriver:

// Lavora con il timer. Cosa c'è che non va?

Ah, già risposto)). Sì, alcuni "squali" del forum hanno già suggerito anche questa opzione, ma devo ancora vedere come può essere implementata. Ora cercherò di concentrarmi e di fare finalmente questa funzione necessaria. Se avete una soluzione pronta, vi sarei profondamente grato per almeno un semplice esempio, se non vi dispiace)).

 
MetaDriver:

// Lavora su un timer. Cosa c'è che non va?

Ho provato a testarlo nel timer. Mi sembrava tutto più complicato, ma qui risulta essere sufficiente spostare il codice dalla funzione OnTick() a OnTimer(). I risultati sono identici. Per essere precisi, dovrete impostare il timer, per esempio, ogni 10 secondi. Tuttavia, ci vuole molto più tempo per testare, che è l'unica cosa che potrebbe non essere di vostro gradimento a prima vista.
Документация по MQL5: Работа с событиями / EventSetTimer
Документация по MQL5: Работа с событиями / EventSetTimer
  • www.mql5.com
Работа с событиями / EventSetTimer - Документация по MQL5
 
tol64:
Ho provato a testarlo in un timer. Ho trovato tutto più complicato, ma qui si scopre che ho solo bisogno di tradurre il codice della funzione OnTick() in OnTimer(). I risultati sono identici. Per essere precisi, dovrete impostare il timer, per esempio, ogni 10 secondi. È vero, i test richiedono molto più tempo; è l'unica cosa che può essere sgradevole a prima vista.

Dipende dal periodo del timer. Puoi farlo per 10 giorni (60*60*24*10), sarà più veloce. :))

Ci sono anche delle sottigliezze. Per esempio, non è necessario spuntare nei fine settimana. ;)

 
tol64:
Ma ci vuole molto più tempo per testarlo

Se il "ticchettio" è necessario solo per catturare una nuova barra, è sufficiente impostare un timer per il tempo di apparizione della barra (00 minuti 00 secondi per H1) e spuntare ogni 1 secondo per un paio di minuti finché la barra appare su tutti i TF necessari. Sarà più preciso ed economico.

Ma una soluzione con eventi personalizzati è, ovviamente, molto più elegante.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5