Per saperne di più su altre "Strategie di trading" - pagina 4

 
doshur: fare una media è sempre ok, quando hai un lotto enorme e vuoi uscire, potrebbe non esserci volume per te per uscire al prezzo che vuoi.

quando il rilascio delle notizie, mi chiedo se questo sistema può sopravvivere come aud in questi giorni

Imo, tutto può sopravvivere se il lot_size è abbastanza piccolo. Se ne varrà la pena per te è un'altra questione. Puoi presentare un sistema che possa fare meglio su Aud in questi giorni? Come promemoria, questo non è un thread sui sistemi redditizi di altre persone. Questo è un thread dove la mia intenzione è che la gente presenti diversi esperti e recensisca il bene e il male della strategia. Profittevole o no non ha importanza.
 

Ho trovato un bug nella funzione YesLstTrdWin().

bool YesLstTrdWin(){
    if(!PositionSelect(CurSetSymbol)){return(false);}
    ulong   PosType=PositionGetInteger(POSITION_TYPE);
    ulong   PosOpTime=PositionGetInteger(POSITION_TIME);
    double  PosPrice=PositionGetDouble(POSITION_PRICE_CURRENT);
    HistorySelect(PosOpTime,TimeCurrent());
    int DealsTotal=HistoryDealsTotal();
    for(int i=DealsTotal-1; i>=0; i--){
        ulong DealTicket=HistoryDealGetTicket(i);
        ulong DealEntry=HistoryDealGetInteger(DealTicket,DEAL_ENTRY);
        if(DealEntry!=DEAL_ENTRY_IN){continue;}
        ulong DealMagic=HistoryDealGetInteger(DealTicket,DEAL_MAGIC);
        if(DealMagic!=SystemMagic1){continue;}
        string DealSymb=HistoryDealGetString(DealTicket,DEAL_SYMBOL);
        if(DealSymb!=CurSetSymbol){continue;}
        ulong  DealType=HistoryDealGetInteger(DealTicket,DEAL_TYPE);
        double DealPrice=HistoryDealGetDouble(DealTicket,DEAL_PRICE);
        if(DealType==DEAL_TYPE_BUY  && PosPrice>DealPrice){return(true);}
        if(DealType==DEAL_TYPE_SELL && PosPrice<DealPrice){return(true);} //This Line Was Left Out.
        return(false);
    }   return(false);
}

Ho dimenticato l'ultimo controllo dell'operazione di vendita che ha fatto sì che facesse la media all'interno del range della posizione.

*Su un'altra nota: fare la media all'interno e/o anti-griglia può essere una strategia efficace per i sistemi di tendenza.

 
Ubzen:

Ho trovato un bug nella funzione YesLstTrdWin().

Ho dimenticato l'ultimo controllo dell'operazione di vendita che ha fatto sì che facesse la media all'interno del range della posizione.

*Su un'altra nota: fare la media all'interno e/o anti-griglia può essere una strategia efficace per i sistemi di tendenza.

Ciao Ubzen,

Ho visto questo thread un po' di tempo fa e avevo intenzione di contribuire, scusa il ritardo, spero che questo diventi uno di quei mini forum all'interno di mql5. Il fatto che tu stia usando un segnale casuale non ottimizzato per ottenere profitti costanti è certamente promettente. Devo ancora studiare il segnale, infatti ho visto il codice solo oggi e sono andato direttamente alla tua funzione MaxDDCurrency(). Ha una linea che penso possa essere un bug...

Questo dovrebbe

if(TempDD>MaxDDCurency){return;}

essere questo?

if(TempDD<=MaxDDCurency){return;}

Un'altra nota generale. Quanto credi che siano affidabili i dati dei prezzi in strategy tester soprattutto per quanto riguarda lo spread?

PS: presto posterò anche uno dei miei.

 

Sembra anche che tu chiami

BrkEveEquity();

su tick. Non dovresti chiamarlo dall'interno della funzione HighestEquity() cioè quando viene impostato un nuovo massimo di equity. Mi dispiace se i miei commenti sembrano fuori Sono ancora in realtà testare l'EA me stesso in strategy tester, ma ho pensato che vorrei ottenere un tatto per quello che stavi pensando quando hai scritto questo.

 
ssn: Ciao Ubzen, ho visto questo thread un po' di tempo fa e avevo intenzione di contribuire, scusa il ritardo spero che questo diventi uno di quei mini forum all'interno di mql5. Il fatto che tu stia usando un segnale casuale non ottimizzato per ottenere profitti costanti è certamente promettente. Devo ancora studiare il segnale, infatti ho visto il codice solo oggi e sono andato direttamente alla tua funzione MaxDDCurrency(). Ha una linea che penso possa essere un bug...

Dovrebbe essere questo? Un'altra nota generale. Quanto credi che siano affidabili i dati dei prezzi in strategy tester soprattutto per quanto riguarda lo spread? PS: presto posterò anche uno dei miei.

L'intera funzione:

void MaxDDCurency(){
    int TempDD=AcountEquity-HighesEquity;
    if(TempDD>MaxDDCurency){return;}
    MaxDDCurency=TempDD;
}

1) Imposta il DrawDown massimo in valuta. Questa funzione imposta la variabile globale con lo stesso nome a -Negative lowest drawdown in account currency. Poiché il suo valore è negativo, vorrete pensare al contrario. Esempio Highest_Equity=10.000. Account_Equity=9.500. Voglio il massimo drawdown in $ di -500. Funziona come [9.500 - 10.000]. Quindi se il Draw Down temporaneo è inferiore a -500, voglio che sia registrato come nuovo MaxDD.

2) Gli spreads sono molto più alti nel tester della strategia di quanto la maggior parte delle persone pagherebbe oggi. È la mia opinione perché molti broker offrono sub-pips. I dati di prezzo non hanno molta importanza. L'EA non elabora le barre da un minuto, ma solo all'apertura della barra m1 del grafico a cui è collegato. A meno che i tuoi dati non manchino di molte barre m1, questo metodo dovrebbe essere abbastanza affidabile.

3) Il risultato che ho ricevuto è stato il primo risultato che ho ottenuto dopo averlo messo insieme. Dopo di che ho eseguito altri test che non erano così promettenti. Ma anche con gli altri 3 test che ho eseguito, il sistema si è concluso in modo leggermente redditizio o leggermente non redditizio. Ma sì, resta il fatto che un sistema casuale e non ottimizzato è sopravvissuto alla crisi del 2008 fino al 2012. Forse l'ottimizzazione di un tale sistema potrebbe essere oggetto di ulteriori studi. Esempio: la tua direzione personale, **non si può fare peggio del random giusto ;)

4) Certo, postate un sistema che avete sempre insegnato essere interessante e tutto ciò che vi disturba di quel sistema. Cercherò di suggerirti delle idee che potrebbero contrastare quei problemi.

 
ssn: Sembra anche che tu stia chiamando On tick. Non dovresti chiamarlo dall'interno della funzione HighestEquity() cioè quando viene impostato un nuovo massimo di equity. Scusa se i miei commenti sembrano fuori luogo. Devo ancora testare io stesso l'EA in strategy tester, ma ho pensato di farmi un'idea di cosa stavi pensando quando hai scritto questo.

Tutta la funzione:

void BrkEveEquity(){
    if(SysMagTotCnt()!=0){return;}
    BrkEveEquity=HighesEquity;
    BrkEveEquTme=(int)TimeCurrent();
    SysCloseMode=false;
}
Il Break-Even Equity l'ho usato per un bel po' di tempo. A volte questa funzione è all'interno della funzione Equity_High ma credo di averla rimossa da quella posizione molto tempo fa per i seguenti motivi. 1) Se il Break-Even Equity è all'interno di Equity_High allora non ho bisogno del BE perché potrei semplicemente usare Equity_High. 2) Voglio impostare l'Equity_High quando viene raggiunto un nuovo Account_Equity High e non quando System_Magic_Total_Count==0. 3) Voglio impostare il Break_Even quando tutti i simboli sono chiusi. Questo offre i seguenti vantaggi quando si fa trading in Live. Quando chiudi tutte le posizioni, potresti soffrire di qualche slippage negativo. Il tuo nuovo target diventa Equity_High + Target$$$ invece di Account_Balance + Target$$ per esempio.
 

- Sì, il DD è negativo, non l'avevo visto. Grazie

- Penso che anche i prezzi aperti in m1 abbiano un bid e un ask. Se la tua entrata è su bid dovrai uscire su ask (ad esempio se hai shortato). Ho fatto dei test con i dati di mt5 e con uno spread fisso personalizzato, e i risultati sono clamorosamente diversi.

- Penso che il tuo approccio con il segnale casuale sia la strada da seguire se il tuo ingresso è basato su dati tecnici. Se riesci a tenere fuori qualsiasi ottimizzazione dovrebbe essere meglio... Credo. ;)...

- Il sistema che posterò usa SOM... in realtà sarà una classe riutilizzabile. Ho bisogno di fare alcune modifiche finali...

- Ok, questo è chiaro su BE. Ora il MinPerMinLot è una variabile fissa che usi per impostare il tuo volume in proporzione al tempo trascorso dalla chiusura di tutte le posizioni?

Documentation on MQL5: Standard Constants, Enumerations and Structures / Indicator Constants / Price Constants
Documentation on MQL5: Standard Constants, Enumerations and Structures / Indicator Constants / Price Constants
  • www.mql5.com
Standard Constants, Enumerations and Structures / Indicator Constants / Price Constants - Documentation on MQL5
 
ssn:

- Sì, il DD è negativo, non l'avevo visto. Grazie

- Penso che anche i prezzi aperti in m1 abbiano un bid e un ask. Se la tua entrata è su bid dovrai uscire su ask (ad esempio se hai shortato). Ho fatto dei test con i dati di mt5 e con uno spread fisso personalizzato, e i risultati sono clamorosamente diversi.

- Penso che il tuo approccio con il segnale casuale sia la strada da seguire se il tuo ingresso è basato su dati tecnici. Se riesci a tenere fuori qualsiasi ottimizzazione dovrebbe essere meglio... Credo. ;)...

- Il sistema che posterò usa SOM... in realtà sarà una classe riutilizzabile. Ho bisogno di fare alcune modifiche finali...

- Ok, questo è chiaro su BE. Ora il MinPerMinLot è una variabile fissa che usi per impostare il tuo volume in proporzione al tempo da quando tutte le posizioni sono state chiuse?

1) Non c'è di che.

2) Sono d'accordo. Vorrei poter sistemare gli spreads in mt5. Ma è anche importante testare con spread realistici e non ingannare se stessi.

3) La mia esperienza, con sistemi ottimizzati, il test dal vivo di un mese di solito è totalmente diverso dai risultati attesi. Questo modo di testare di solito produce statistiche attese durante i miei test dal vivo.... ma di solito muore nello stesso modo in cui muore nel tester di strategia.

4) k

5) Sì. Più o meno, ma molto meglio vederlo come "da quando account_equity era >= break-even equity". Ho tolto il Set_Break_Even_Time dalla funzione Break_Even_Equity. Mi sto rendendo conto che l'impostazione di variabili individuali con il proprio set_function funziona molto più riutilizzabile rispetto al raggruppamento in un altro set_function.

Sto pensando di fare un sistema trend following con l'aggiunta di lotti al progredire della tendenza.

 
Ubzen:

1) Non c'è di che.

2) Sono d'accordo. Vorrei che potessimo sistemare gli spreads in mt5. Ma è anche importante testare con spread realistici e non ingannare se stessi.

3) La mia esperienza, con i sistemi ottimizzati, il test dal vivo di un mese di solito è totalmente diverso dai risultati attesi. Questo modo di testare di solito produce statistiche attese durante i miei test live.... ma di solito muore nello stesso modo in cui muore all'interno del tester di strategia.

4) k

5) Sì. Più o meno, ma molto meglio vederlo come "da quando account_equity era >= break-even equity". Ho tolto il Set_Break_Even_Time dalla funzione Break_Even_Equity. Mi sto rendendo conto che l'impostazione di variabili individuali con il proprio set_function funziona molto più riutilizzabile rispetto al raggruppamento in un altro set_function.

Sto pensando di fare un sistema trend following con l'aggiunta di lotti al progredire della tendenza.

4)...
File:
SignalSOM.mqh  24 kb
 
ssn: 4)...
??? Hai le cose aggiuntive secondo le regole. #1, #3 e #4 sembrano mancare.