Creare condizione TS profit factor

Viewing 15 posts - 1 through 15 (of 17 total)
  • Author
    Posts
  • #163387 quote
    MauroPro
    Participant
    Veteran

    Ciao Roberto, è possibile creare una condizione che esprima semplicemente il valore di profit factor? Vorrei che un TS abbia come requisito un profit factor delle ultime 20 operazioni chiuse maggiore di 2.

    Penso che bisogna separare le operazioni chiuse positive, positionPerf(x)>0 da quelle negative positionPerf(x)<0, e sapere con strategyProfit chiaramente il guadagno/perdita di queste operazioni. Poi “forse” usare un doppio  Summation per conoscere i profitti di quelle positive delle ultime venti  e di quelle negative, poi dividere il risultato di questi due Summation per ottenere il proft factor.

    Questa l’idea generica che mi è venuta in mente (probabilmente conoscerai un modo molto più semplice). Riesci a scrivermi la condizione? Grazie

    #163389 quote
    robertogozzi
    Moderator
    Master

    Qualcosa di simile, ma usando i vettori (array) sarà più semplice.

    Questo è il codice, alla fine le variabili PROFITTO e PERDITA conterranno il numero di operazioni in profitto ed in perdita. Tu potrai utilizzarli come vuoi:

    ONCE MaxOperazioni = 20
    If BarIndex = 0 Then
       For i = 1 to MaxOperazioni
          $Risultato[i] = 0
       Next
    Endif
    If StrategyProfit <> StrategyProfit[1] Then
       Profitto = 0
       Perdita  = 0
       For i = 1 to MaxOperazioni - 1
          $Risultato[i] = $Risultato[i+1]
          If $Risultato[i] > 0 then
             Profitto = Profitto + 1
          Elsif $Risultato[i] < 0 then
             Perdita = Perdita + 1
          Endif
       Next
       $Risultato[MaxOperazioni] = StrategyProfit - StrategyProfit[1]
       If $Risultato[MaxOperazioni] > 0 then
             Profitto = Profitto + 1
       Elsif $Risultato[MaxOperazioni] < 0 then
             Perdita = Perdita + 1
       Endif
    Endif
    #163390 quote
    MauroPro
    Participant
    Veteran

    Grazie lo provo!

    #163416 quote
    MauroPro
    Participant
    Veteran

    Ciao Roberto, ho provato a scrivere la condizione del ProfitFactor con le due variabile che hai indicato, aggiungendo la condizione alle altre di entrata (vd sotto), ma il TS non gira (non fa operazioni). Sai quale può essere il motivo?

    cProfitFactor=(Profitto/Perdita)>=2

    #163419 quote
    robertogozzi
    Moderator
    Master

    Evidentemente non è >= 2.

    Hai provato ad usare GRAPH per vedere  i valori di PROFITTO e PERDITA (e poi verificarne la correttezza con le operazioni fatte) ?

    #163434 quote
    MauroPro
    Participant
    Veteran

    Ciao Roberto, non gira proprio il TS, non posso vedere con i graph i valori di profitto e perdita. Lo hai provato su un tuo TS se gira?

    #163437 quote
    robertogozzi
    Moderator
    Master

    Non l’ho provato. ma tu devi verificare se registra valori corretti senza mettere la condizione del fattore.

    Una volta verificato che va bene, la questioine è solo del fattore.

    #163438 quote
    MauroPro
    Participant
    Veteran

    Plottando il TS con solo i graph di profitto (verde) e perdita(rosso), senza inserire la condizione sopra riportata funziona (vd immagine).

    Potresti riscrivermi quindi meglio la condizione? (che poi non è altro che il rapporto di profitto/perdita che deve esser maggiore di un certo livello, non capisco perchè scritta come sopra non fa girare per niente il TS). GRAZIE

    #163441 quote
    MauroPro
    Participant
    Veteran
    #163444 quote
    robertogozzi
    Moderator
    Master

    La tua condizione è corretta, se anche il numero di operazioni in Perdita e Profitto corrispondono, c’è poco da fare, significa che il rapporto è < 2.

    Hai verificato, con GRAPH, che i numeri riportati siano corretti? Quante perdite c’erano e quanti profitti?

    Manualmente erano>= 2 oppure inferiori?

    #163446 quote
    robertogozzi
    Moderator
    Master

    Dipende dalle condizionidel tuo TS, questo funziona:

    DEFPARAM CumulateOrders = FALSE
    ONCE MaxOperazioni = 20
    If BarIndex = 0 Then
    For i = 1 to MaxOperazioni
    $Risultato[i] = 0
    Next
    Endif
    If StrategyProfit <> StrategyProfit[1] Then
    Profitto = 0
    Perdita  = 0
    For i = 1 to MaxOperazioni - 1
    $Risultato[i] = $Risultato[i+1]
    If $Risultato[i] > 0 then
    Profitto = Profitto + 1
    Elsif $Risultato[i] < 0 then
    Perdita = Perdita + 1
    Endif
    Next
    $Risultato[MaxOperazioni] = StrategyProfit - StrategyProfit[1]
    If $Risultato[MaxOperazioni] > 0 then
    Profitto = Profitto + 1
    Elsif $Risultato[MaxOperazioni] < 0 then
    Perdita = Perdita + 1
    Endif
    Endif
    IF close crosses over average[200] and not LongOnMarket Then
    BUY at Market
    elsIF close crosses under average[200] and not ShortOnMarket Then
    sellshort at Market
    endif
    set target pprofit 100
    set stop   ploss   500
    //
    GRAPH Perdita                  coloured(255,0,0,255)
    GRAPH Profitto                 coloured(0,128,0,200)
    graph (Profitto/Perdita) >= 2  coloured(0,0,255,255)
    #163449 quote
    robertogozzi
    Moderator
    Master

    Ho capito quak’è il problema.

    Quando parte il rapporto non può essere che 0, quindi < 2 e non apre operazioni.

    Modifica la condizione come segue;

    Once cProfitFactor = 1
    If (Profitto + Perdita) > 20 Then
       cProfitFactor=(Profitto/Perdita)>=2
    Endif
    #163452 quote
    robertogozzi
    Moderator
    Master

    Però funziona solo all’inizio e solo se nelle prime 20 operazioni ce ne sono almeno 2/3 in profitto.

    In ogni caso se arriva a < 2 si blocca e non permette al TS di recuperare,

    Secondo me è proprio la logica della condizione che non può essere applicata, oppure potresti calcolare una media di quel rapporto e andare avanti solo se non scende sotto un certo livello, ma 1.2-1.4 non di più.

    #163453 quote
    MauroPro
    Participant
    Veteran

    Infatti, gira ma ho visto che si bloccava. Provo a fare delle prove con una media. Si potrebbe comunque utilizzare un filtro di performance più semplice del profit factor tipo la media del profitto delle ultime n operazioni.

    #163457 quote
    robertogozzi
    Moderator
    Master

    Si, certo.

    Il problema è non bloccarlo del tutto, ad esempio 10 o 20 o N barre, ma poi permettergli di ricominciare.

Viewing 15 posts - 1 through 15 (of 17 total)
  • You must be logged in to reply to this topic.

Creare condizione TS profit factor


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
MauroPro @mauropro Participant
Summary

This topic contains 16 replies,
has 2 voices, and was last updated by robertogozzi
4 years, 11 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 03/07/2021
Status: Active
Attachments: 1 files
Logo Logo
Loading...