Risposta

StrategiaQuant Strategie non redditizie quando vengono codificate in C

8 risposte

Carlo

Cliente, bbp_partecipante, comunità, 0 risposte.

Visita il profilo

5 anni fa #237334

Ho ricodificato le strategie generate da strategyquant in Zorro Trader, che utilizza il C lite, e i risultati sono stati sorprendenti.

SQ X mostra un enorme profitto mentre Zorro mostra una perdita. La quantità di operazioni non è neanche lontanamente paragonabile ed entrambi i sistemi utilizzano gli stessi dati in quanto ho esportato le candele direttamente dal mio broker attraverso Zorro.

La strategia è stata trovata utilizzando le barre EURUSD a 15 minuti e quando ho codificato Zorro per le barre a 15 minuti, ci sono 29.568 operazioni contro le 3902 di SQ. Anche se cambio Zorro per utilizzare le barre a 1H, il numero di operazioni è ancora doppio... con un risultato di 7154 operazioni. Sia Zorro 15 min che 60 min producono rendimenti annuali (perdite) di -14% e -15% rispettivamente, mentre SQ X dice che ogni anno è stato una vittoria e con enormi fattori di profitto.

Posso capire leggere differenze utilizzando gli stessi dati, ma queste differenze sono enormi. SQ dice che il suo sistema è vincente anno su anno, mentre Zorro dice che sta perdendo -14% all'anno.

Si prega di consigliare.

 

 

Allegati:
Dovete essere collegato per visualizzare i file allegati.

0

Carlo

Cliente, bbp_partecipante, comunità, 0 risposte.

Visita il profilo

5 anni fa #237338


//--------------------------------------------------------------------
// Pseudo codice sorgente della strategia 0.850460
//
// Generato da StrategyQuant X Build 115 per MetaTrader
// al 12/12/2018 01:03
//--------------------------------------------------------------------

//--------------------------------------------------------------------
// Parametri della strategia
//--------------------------------------------------------------------
int MagicNumber = 11111;

Grafico principale = Simbolo corrente / TF corrente

//--------------------------------------------------------------------
// Regola di trading: Segnali di trading (all'apertura della barra)
//--------------------------------------------------------------------
LongEntrySignal = (CCI(grafico principale,30)[2] è superiore a 25.0);

ShortEntrySignal = (CCI(grafico principale,30)[2] è inferiore a -25)
;

LongExitSignal = ((DeMarker(grafico principale,40) cambia direzione verso l'alto)
   e (Williams % R(grafico principale,22) > -10.0));

ShortExitSignal = ((DeMarker(grafico principale,40) cambia direzione verso il basso)
   e (Williams % R(grafico principale,22) < -90));

//--------------------------------------------------------------------
// Regola di trading: Ingresso long (all'apertura della barra)
//--------------------------------------------------------------------
se SegnaleIngressoLungo
{
    // Azione #1
    Aprire un ordine long a mercato;
        Stop Loss = 2.3 * ATR(20);
        Profit target = 2,9 * ATR(20);

        Uscire dopo 18 barre;

}

//--------------------------------------------------------------------
// Regola di trading: Entrata short (all'apertura della barra)
//--------------------------------------------------------------------
se (Segnale di entrata short
   e non LongEntrySignal)
{
    // Azione #1
    Aprire un ordine Short a mercato;
        Stop Loss = 2,3 * ATR(20);
        Profit target = 2,9 * ATR(20);

        Uscire dopo 18 barre;

}

//--------------------------------------------------------------------
// Regola di trading: Uscita lunga (all'apertura della barra)
//--------------------------------------------------------------------
se ((Segnale di Uscita Lunga
   e non LongEntrySignal)
   e (MarketPosition("Any", MagicNumber, "") è Long))
{
    // Azione #1
    Chiudere la posizione completa per Symbol = Any e Magic Number = MagicNumber;

}

//--------------------------------------------------------------------
// Regola di trading: Uscita corta (all'apertura della barra)
//--------------------------------------------------------------------
se ((Segnale di uscita short
   e non ShortEntrySignal)
   e (MarketPosition("Any", MagicNumber, "") è Short))
{
    // Azione #1
    Chiudere la posizione completa per Symbol = Any e Magic Number = MagicNumber;

}

0

mabi

Cliente, bbp_partecipante, comunità, 261 risposte.

Visita il profilo

5 anni fa #237340

Vorrei che fosse così facile ma non lo è. Ho provato ad utilizzare SQ3 e Ninjatrader, ma non ha funzionato per molte ragioni. Quindi rimanete con MT4 fino a quando non aggiungeranno il supporto per Zorry o perderete solo il vostro tempo.

0

Carlo

Cliente, bbp_partecipante, comunità, 0 risposte.

Visita il profilo

5 anni fa #237341

Ho ricodificato molte strategie negli ultimi giorni e tutte falliscono.

Zorro è piuttosto semplice nella codifica, in quanto la maggior parte delle operazioni viene eseguita per voi. Non credo quindi che sia un problema di Zorro, ma che StrategyQuant non stia generando falsi segnali o sia impreciso.

Vorrei davvero ricevere un feedback dagli sviluppatori e lavorare per risolvere questo problema!

0

Carlo

Cliente, bbp_partecipante, comunità, 0 risposte.

Visita il profilo

5 anni fa #237342

Ho appena trascorso l'ultima ora a ricodificare un'altra strategia con regole molto semplici e anch'essa fallisce.


//--------------------------------------------------------------------
// Pseudo codice sorgente della strategia 0.899785
//
// Generato da StrategyQuant X Build 115 per MetaTrader
// al 14/12/2018 01:23
//--------------------------------------------------------------------

//--------------------------------------------------------------------
// Parametri della strategia
//--------------------------------------------------------------------
int MagicNumber = 11111;

Grafico principale = Simbolo corrente / TF corrente

//--------------------------------------------------------------------
// Regola di trading: Segnali di trading (all'apertura della barra)
//--------------------------------------------------------------------
LongEntrySignal = (ADX DI Minus(grafico principale)[1] è in aumento);

ShortEntrySignal = (ADX DI Minus(grafico principale)[1] in calo);

LongExitSignal = false;

ShortExitSignal = falso;

//--------------------------------------------------------------------
// Regola di trading: Ingresso long (all'apertura della barra)
//--------------------------------------------------------------------
se SegnaleIngressoLungo
{
    // Azione #1
    Aprire un ordine Long a [Close(grafico principale)[3] + (2 * ATR(grafico principale,40)[1]]) Stop;
        Ordine valido per 1 barra;
        Stop Loss = 75.0 pip;
        Obiettivo Profit = 195,0 pip;

        Spostare lo SL a BE = 135,0 pip;

        Uscire dopo 7 barre;

}

//--------------------------------------------------------------------
// Regola di trading: Entrata short (all'apertura della barra)
//--------------------------------------------------------------------
se (Segnale di entrata short
   e non LongEntrySignal)
{
    // Azione #1
    Aprire un ordine Short a [Close(grafico principale)[3] - (2 * ATR(grafico principale,40)[1]]) Stop;
        Ordine valido per 1 barra;
        Stop Loss = 75 pip;
        Obiettivo Profit = 195 pips;

        Spostare lo SL a BE = 135 pips;

        Uscire dopo 7 barre;

}

//--------------------------------------------------------------------
// Regola di trading: Uscita lunga (all'apertura della barra)
//--------------------------------------------------------------------
se ((Segnale di Uscita Lunga
   e non LongEntrySignal)
   e (MarketPosition("Any", MagicNumber, "") è Long))
{
    // Azione #1
    Chiudere la posizione completa per Symbol = Any e Magic Number = MagicNumber;

}

//--------------------------------------------------------------------
// Regola di trading: Uscita corta (all'apertura della barra)
//--------------------------------------------------------------------
se ((Segnale di uscita short
   e non ShortEntrySignal)
   e (MarketPosition("Any", MagicNumber, "") è Short))
{
    // Azione #1
    Chiudere la posizione completa per Symbol = Any e Magic Number = MagicNumber;

}

0

Carlo

Cliente, bbp_partecipante, comunità, 0 risposte.

Visita il profilo

5 anni fa #237343

Ecco il codice zorro per chiunque voglia provarlo da solo, il codice SQ è sopra. La strategia SQ dice Sharpe di 4,12, fattore Profit di 3,82. Nessun anno di perdita. Tuttavia, quando la eseguo in Zorro, il rendimento annuo è pari a -18% PF 0,02 e lo Sharpe è pari a -0,69.

 


//--------------------------------------------------------------------
// Codice sorgente della strategia Zorro 0.899785
//
//--------------------------------------------------------------------

funzione run()
{
StartDate = 2010;
EndDate = 2015; // periodo di simulazione fisso 2010-2015

BarPeriod = 15; //
LookBack = 200;
MaxLong = MaxShort = 1;

//--------------------------------------------------------------------
// Regola di trading: Segnali di trading (all'apertura della barra)
//--------------------------------------------------------------------

/*
ADX(int TimePeriod): var
Indice medio del movimento direzionale. Media mobile dell'indicatore DX (vedi sotto). Utilizza la serie di prezzi correnti dell'attività. Non supporta il TimeFrame. I valori restituiti vanno da 0 a 100.
*/

vars close = serie ( priceClose() );
vars mDI = serie( MinusDI( 14 ) );
var *atr = serie( ATR( 40 ) );

bool LongEntrySignal ;
bool ShortEntrySignal;
bool LongExitSignal = false;
bool ShortExitSignal = false;

LongEntrySignal = mDI[1] > mDI[2];
ShortEntrySignal = mDI[1] < mDI[2];

//--------------------------------------------------------------------
// Regola di trading: Ingresso long (all'apertura della barra)
//--------------------------------------------------------------------
se ( LongEntrySignal )
{
LifeTime = 7;
EntryTime = 1;
Stop = 75 * PIP;
TakeProfit = 195 * PIP;
Percorso = 135 * PIP;
TrailLock = 1 * PIP;
Entry = close[3] + ( 2 * atr[1] );
enterLong();

}

//--------------------------------------------------------------------
// Regola di trading: Entrata short (all'apertura della barra)
//--------------------------------------------------------------------
se ((Segnale di entrata short
e !LongEntrySignal))
{
// Azione #1
LifeTime = 7;
EntryTime = 1;
Stop = 75 * PIP;
TakeProfit = 195 * PIP;
Percorso = 135 * PIP;
TrailLock = 1 * PIP;
Entry = close[3] - ( 2 * atr[1] );
enterShort();

}

plot("mDI", mDI, NEW, RED );

}

0

tnickel

Customer, bbp_participant, community, sq-ultimate, 489 replies.

Visita il profilo

5 anni fa #237349

allegare il file *.sqx

Quindi possiamo fare un backtest mt4 e confrontare i trade.

Se lo strategyquant 4.x ha un problema, il backtest di metatrader è diverso.

 

Tommaso

https://monitortool.jimdofree.com/

0

Carlo

Cliente, bbp_partecipante, comunità, 0 risposte.

Visita il profilo

5 anni fa #237351

Ciao Tomas, in allegato l'ultima strategia postata sopra.

Allegati:
Dovete essere collegato per visualizzare i file allegati.

0

mabi

Cliente, bbp_partecipante, comunità, 261 risposte.

Visita il profilo

5 anni fa #237390

Questa strategia fallisce completamente quando la provo in SQX. Controllare la qualità dei dati o le impostazioni.

Allegati:
Dovete essere collegato per visualizzare i file allegati.

0

Stai visualizzando 8 risposte - da 1 a 8 (di 8 totali)