Risposta

REGOLA DI USCITA nel problema MT4!!!

18 risposte

Gaudio Fx

Abbonato, bbp_partecipante, comunità, 22 risposte.

Visita il profilo

8 anni fa #114590

Salve,
Vi contatto perché ho un grosso problema che si presenta in molte circostanze nella generazione di strategie e strategie di miglioramento.
Il problema che si è presentato molte volte è il seguente:
quando controllo la "Regola di uscita (prezzo + + operatori indicatori ...)", strategyquant in condizioni specifiche, utilizzando una soluzione molto buona come questo esempio che vi do qui sotto:
queste sono le condizioni della strategia di uscitaquant
e questo è ciò che accade al posto di metatrader4
Entrambe le posizioni short in questo caso presentano le condizioni di uscita prima dell'entrata, poiché il volume è superiore alla media di 50 (linea rossa) e MetaTrader apre e chiude nello stesso momento.
Questo, tuttavia, 'non accade in strategyquant, in quanto si presume che la condizione di uscita debba essere avviata solo alla chiusura della candela di entrata
Sarebbe come dire che la condizione di uscita è alla chiusura della candela di entrata e questa, in molte circostanze è molto buono. ma metatrader non accadere e si apre e si chiude allo stesso tempo senza attendere la finalizzazione della candela, come avviene in strategyquant, dandomi buoni risultati
come faccio a far capire a metatrader che deve aspettare la chiusura della candela di entrata e poi attivare le regole di uscita come strategiaquant?
Grazie mille
PS:
LA LOGICA CHE USO NON È BUONA PER IL TRADING... MA LA DOMANDA È LA STESSA
non è logico lo so... ma era solo un esempio... è il concetto che ritengo importante, ovvero se l' exit rule è attiva prima dell'apertura del trade, PERCHE' in metatrader4 è attiva contemporaneamente all'apertura mentre su strategyquant è attiva solo in chiusura di candela ????? ... QUESTA E' LA DOMANDA... non per esempio logico l'exit... 

Posso cambiare questa regola di uscita con un'altra logica come questa:

 

 

ma se questa condizione è vera prima dell'ordine, in metatrader la chiusura è allo stesso punto dell'apertura ..ma in strategyquant la chiusura è dopo la chiusura della candela!!! Voglio la stessa condizione in MT4...è possibile?

0

mikeyc

Cliente, bbp_partecipante, comunità, 877 risposte.

Visita il profilo

8 anni fa #134663

Questa regola di uscita non ha senso logico per me.

 

Perché un volume superiore alla media indica la chiusura di una posizione corta e un volume inferiore alla media indica la chiusura di una posizione lunga o viceversa? Questo sembra un altro esempio di strana logica nella scelta di regole simmetriche.

 

Il volume superiore o inferiore alla media non ha un orientamento direzionale.

0

Gaudio Fx

Abbonato, bbp_partecipante, comunità, 22 risposte.

Visita il profilo

8 anni fa #134664

non è logico lo so... ma era solo un esempio... è il concetto che ritengo importante, ovvero se l' exit rule è attiva prima dell'apertura del trade, PERCHE' in metatrader4 è attiva contemporaneamente all'apertura mentre su strategyquant è attiva solo in chiusura di candela ????? ... QUESTA E' LA DOMANDA... non per esempio logico l'exit...

Posso cambiare questa regola di uscita con un'altra logica come questa:

 

ma se questa condizione è vera prima dell'ordine, in metatrader la chiusura è allo stesso punto dell'apertura ..ma in strategyquant la chiusura è dopo la chiusura della candela!!! Voglio la stessa condizione in MT4...è possibile?

0

mikeyc

Cliente, bbp_partecipante, comunità, 877 risposte.

Visita il profilo

8 anni fa #134665

Sembra che si tratti di ordini in sospeso (ordini limite o stop). Siete sicuri che siano stati chiusi e non cancellati?

 

Cosa mostra la scheda dei risultati nella MT4 piuttosto che il grafico?

0

Gaudio Fx

Abbonato, bbp_partecipante, comunità, 22 risposte.

Visita il profilo

8 anni fa #134666

sì sì sono 100% sicuro ... gli ordini vengono aperti e chiusi in una sola volta
il report su mt4 è chiaro riguardo all'apertura e alla chiusura .
 
Ripeto: strategyquant attiva la regola di uscita immediatamente dopo la chiusura della candela in cui è stata aperta l'operazione.
invece mt4 questo non accade, la regola di uscita è attiva allo stesso tempo di apertura.
 
come si controlla l'attesa della chiusura della candela?
Devo aggiungere manualmente una modifica alle strategie? Potete spiegarmi come devo compilare questa modifica affinché ciò avvenga?
 
Ho provato a chiudere (1) aprire (1), ma non va, poi ho provato con cloase (2) aprire (1) e qualsiasi ordine si apre correttamente ..: /

0

tomas262

Amministratore, sq-ultimate, 2 risposte.

Visita il profilo

8 anni fa #134667

Gaudio, mi sembra che le condizioni di entrata e uscita a volte possano "collidere" e a seconda della precisione del backtesting si ottiene un comportamento diverso, come l'uscita immediata dopo l'entrata. Puoi inviarmi la strategia (file *.STR) a [email protected] in modo da poterlo verificare? La soluzione può essere una correzione per SQ o la modifica del codice della strategia per attendere la chiusura della barra.

0

geektrader

Customer, bbp_participant, community, 522 replies.

Visita il profilo

8 anni fa #134673

Sì, è un problema di precisione. Se si esegue il backtest di una strategia di questo tipo con dati tick reali, si comporterà allo stesso modo anche in SQ e fallirà. Assicuratevi quindi di verificare sempre le strategie con dati tick reali almeno per gli ultimi anni per evitare queste cose. Personalmente non utilizzerei mai il "volume" per nessuna logica di trading, poiché il volume è totalmente diverso da un broker all'altro. Lo stesso vale per "ora", tranne nel caso in cui sappiate che i dati storici che state utilizzando sono assolutamente sincronizzati con il vostro broker attuale.


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

mikeyc

Cliente, bbp_partecipante, comunità, 877 risposte.

Visita il profilo

8 anni fa #135652

 

 
Ripeto: strategyquant attiva la regola di uscita immediatamente dopo la chiusura della candela in cui è stata aperta l'operazione.
invece mt4 questo non accade, la regola di uscita è attiva allo stesso tempo di apertura.
 

 

 

Ho appena riscontrato questo problema anche con SQ vs MT4.

 

In SQ, la posizione viene aperta all'apertura della barra e chiusa alla fine della barra o all'apertura della barra successiva. In MT4 (utilizzando la precisione di ogni tick), l'ordine viene aperto e chiuso immediatamente all'apertura della barra.

 

Quindi in MT4 non si vede alcun profitto, in SQ una redditività molto buona. I risultati sono completamente diversi.

 

Questo accade nelle strategie che hanno una regola di uscita che è vera nello stesso momento in cui è vera la regola di entrata, ovvero aprire un'operazione e chiudere un'operazione in questa barra. Sembra che SQ lo intenda come aprire l'operazione all'apertura della barra e chiuderla alla fine della barra, mentre la logica di MT4 esegue entrambe le operazioni all'apertura della barra.

 

La cosa preoccupante è che questo si applica a molte strategie con regole di entrata e di uscita.....

0

mikeyc

Cliente, bbp_partecipante, comunità, 877 risposte.

Visita il profilo

8 anni fa #135653

I test iniziali mostrano che è possibile "aggiustare" le strategie MT4 affinché funzionino come in SQ aggiungendo una riga di codice alla seguente funzione:

void closePositionAtMarket() {
   Aggiornamenti();
   doppio prezzoCP;

   if(OrderType() == OP_BUY) {
      priceCP = Bid;
   } altrimenti {
      priceCP = Ask;
   }
   
   if(OrderOpenTime() >= Time[0]) return; // Nuova riga di codice! Uscire se l'ordine è stato appena aperto

   rettmp = OrderClose(OrderTicket(), OrderLots(), priceCP, MaxSlippage);
}

0

Gaudio Fx

Abbonato, bbp_partecipante, comunità, 22 risposte.

Visita il profilo

8 anni fa #135655

 

I test iniziali mostrano che è possibile "aggiustare" le strategie MT4 affinché funzionino come in SQ aggiungendo una riga di codice alla seguente funzione:

void closePositionAtMarket() {
   Aggiornamenti();
   doppio prezzoCP;

   if(OrderType() == OP_BUY) {
      priceCP = Bid;
   } altrimenti {
      priceCP = Ask;
   }
   
   if(OrderOpenTime() >= Time[0]) return; // Nuova riga di codice! Uscire se l'ordine è stato appena aperto

   rettmp = OrderClose(OrderTicket(), OrderLots(), priceCP, MaxSlippage);
}

 

Sono molto contento che finalmente qualcuno abbia capito che il problema non era nel backtest di mt4 ma è un problema di STRATEGYQUANT .
Ora, se ho capito bene, quando la strategia è finita, per risolvere il problema, devo scrivere nel codice della strategia, le stringhe che hai appena riportato .. giusto?
Ma in quale punto delle righe di codice della strategia dovrei inserire questa riga di script?
Hai spiegato meglio dove li ho messi?
 
sei un genio
 
Grazie mille

0

geektrader

Customer, bbp_participant, community, 522 replies.

Visita il profilo

8 anni fa #135656

Sì, ma in realtà se ci pensate, è SQ che sbaglia nel backtest, non MT4. Se una regola di apertura e chiusura si applica allo stesso tempo, l'ordine dovrebbe essere aperto e chiuso entro 2 tick - tick 1 apertura, tick 2 chiusura. Trattenere l'ordine per una barra è in realtà meno valido che chiuderlo subito come fa MT4. Quindi il codice di backtesting di SQ dovrebbe essere modificato in modo da chiudere subito l'ordine e invalidare la strategia in questo modo, perché si tratta solo di questo, non è possibile applicare una regola di apertura e di chiusura nello stesso momento. Sarebbe valido se la strategia avesse anche l'opzione di mantenere l'operazione per almeno 1 barra, allora il codice MT4 di cui sopra sarebbe corretto. Ma se la regola di apertura e quella di chiusura sono valide allo stesso tempo, ciò che fa SQ è esattamente ciò che è logicamente giusto e come una strategia di questo tipo funzionerebbe se fosse negoziata manualmente. Ad esempio, le regole degli ordini direbbero: aprire un'operazione se Chiusura precedente > Apertura corrente e chiuderla se Chiusura precedente > Apertura corrente. In questo caso, per seguire le regole, si dovrebbe aprire l'ordine e chiuderlo subito dopo - sicuramente non ha senso, ma è proprio quello che fanno anche le strategie che hanno queste regole. Se dicesse: apri un'operazione se la chiusura precedente > l'apertura corrente, mantieni almeno 1 barra e chiudila se la chiusura precedente > l'apertura corrente, allora sì che avrebbe senso.


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

mikeyc

Cliente, bbp_partecipante, comunità, 877 risposte.

Visita il profilo

8 anni fa #135658

Cercare il file mq4 per chiuderePosizioneAlMercato()

 

Aggiungere la riga

 

se(Ora di apertura dell'ordine() >= Tempo[0]) ritorno; // Nuova riga di codice! Esce se l'ordine è stato appena aperto

 

Dove l'ho mostrato.

0

geektrader

Customer, bbp_participant, community, 522 replies.

Visita il profilo

8 anni fa #135660

Sì, capisco perfettamente cosa intendi, ma questo equivale a una regola aggiuntiva di "mantenere l'operazione per almeno 1 barra prima di uscire", che non è una regola di SQ per quella strategia come dici tu e quindi è sbagliata LOGICAMENTE. Sicuramente la vostra soluzione fa quello che volete, lo capisco, ma logicamente non è ancora corretta. Se le stesse regole di apertura e chiusura si applicano contemporaneamente, per tradurre correttamente la logica da SQ a MT4, l'ordine DEVE essere aperto e chiuso entro 2 tick se esposto al mercato reale. Certo, SE aggiungete la regola aggiuntiva di "mantenere almeno 1 barra", allora la vostra soluzione è corretta, ma poiché questa regola non è presente nella strategia originale in SQ, non è corretto fare così in MT4. Si tratta solo di un problema di logica e SQ agisce correttamente in questo caso, non è un vero e proprio bug ma esattamente come tali regole (senza la regola aggiuntiva "tieni l'operazione per almeno 1 barra") agirebbero nel trading live.


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

mikeyc

Cliente, bbp_partecipante, comunità, 877 risposte.

Visita il profilo

8 anni fa #135663

Sto solo proponendo una soluzione per far sì che MT4 si comporti come SQ. Nessuno è obbligato a farlo, ma se si vuole che il trading live corrisponda a SQ, questo è ciò che serve.

0

Gaudio Fx

Abbonato, bbp_partecipante, comunità, 22 risposte.

Visita il profilo

8 anni fa #135664

Cercare il file mq4 per chiuderePosizioneAtMarket()

 

Aggiungere la riga

 

if(OrderOpenTime() >= Time[0]) return; // Nuova riga di codice! Uscire se l'ordine è stato appena aperto

 

Dove l'ho mostrato.

okok..

 

Se voglio che questo sia in "or" logico e non in "if", ho cambiato "if" con "or"?

 

es: o(OrderOpenTime() >= Time[0]) return; // Nuova riga di codice! Uscire se l'ordine è stato appena aperto

0

geektrader

Customer, bbp_participant, community, 522 replies.

Visita il profilo

8 anni fa #135665

Sto solo proponendo una soluzione per far sì che MT4 si comporti come SQ. Nessuno è obbligato a farlo, ma se si vuole che il trading live corrisponda a SQ, questo è ciò che serve.

 

Sì, con il backtesting dei dati tick, SQ apre e chiude l'ordine entro 2 tick, proprio come fa MT4.


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

Stai visualizzando 15 risposte - da 1 a 15 (di 18 totali)

1 2