Formula per tradare le valute con un rischio fisso calcolato

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #91861 quote
    Albert FX
    Participant
    Average

    Buonasera,

    avrei bisogno di una indicazione su come impostare una formula per poter rischiare una somma (euro) sempre fissa indipendentemente dalla coppia di valute negoziate.

    mi spiego meglio:

    all’inizio del codice vorrei memorizzare due parametri del tipo:

    MyCash = 10000       //importo versato sul conto destinato al trading

    MyRisk% = 1               // percentuale del mio capitale che voglio rischiare ad ogni operazione

    L’ 1% di 10000 è 100 ed io vorrei impostare automaticamente il valore di 100 euro come perdita massima per ogni operazione andando ad agire sul quantitativo di valuta acquistata.

    il parametro di base dovrebbe essere in numero di Pips che intercorrono tra il mio valore Buy Stop (prezzo di apertura della posizione) ed il valore dello Stop Loss, qualora l’operazione venisse chiusa in perdita che conosco ancor prima di aprire la posizione, appena si è completato il pattern.

    inoltre come posso calcolare sempre i soliti 100 euro di perdita massima anche quando le valute tradate non sono contro euro ma, ad esempio, AUD/USD, JPY/CHF, GBP/USD….

    Grazie mille.

    #91950 quote
    robertogozzi
    Moderator
    Master

    Puoi usare

    SET STOP %LOSS MyRisk  //MyRisk% sull'operazione in corso (sul prezzo d'entrata) espresso in percentuale (senza indicare %)

    oppure

    SET STOP $LOSS MyCash * (MyRisk / 100)  //MyRisk% del tuo capitaleespresso in denaro (senza indicare il simbolo della valuta, è quella del tuo conto)
    #91976 quote
    Albert FX
    Participant
    Average

    ok, grazie. Conoscevo già il comando $LOSS, ma temo che la soluzione che mi hai proposto non sia quella che volevo…

    faccio un esempio per spiegarmi meglio e cercare di ottenere il risultato che desidero.

    io ho un pattern (un qualsiasi pattern, in questo caso non importa quale…) che al suo completamento mi fornisce un prezzo di ingresso e contemporaneamente anche un prezzo di SL al di sotto del quale chiudo l’operazione in perdita.

    ipotizziamo che voglio tradare EUR/USD, il mio BuyStop è a 1,1330 ed il mio SL è a 1,1290 (40 Pips di differenza tra entry e stop che sarebbero la mia perdita se l’operazione andasse male)

    io vorrei acquistare un quantitativo “x” di valuta affinché i miei 40 Pips, qualora li perdessi, corrispondessero a 100 euro ad esempio.

    se poi trado USD/JPY con Buy a 110,80 e SL a 110,65 vorrei che i miei 15 Pips in questo caso, se dovessi perderli, corrispondessero sempre a 100 euro, acquistando di conseguenza un quantitativo di valuta adeguato ad avere 15Pips=100 euro.

    il numero di Pips tra Buy e SL è sempre diverso da operazione ad operazione ed è una variabile.

    il valore del cross delle due valute è l’altra variabile e la perdita che sono disposto a subire in caso di operazione andata male è fisso ed è scritto in cima al codice.

    penso che in questo caso ci voglia una formula un po’ più articolata di un semplice $LOSS (o mi sbaglio ?)

    Grazie mille come sempre.

    🙂

    #91995 quote
    robertogozzi
    Moderator
    Master

    Già avevi fatto questa domanda qui https://www.prorealcode.com/topic/calcolo-della-positionsize/#post-88457.

    Cos’è che non ti ha funzionato di quella formula?

    #92013 quote
    Albert FX
    Participant
    Average

    ciao,

    più che riproporre la stessa domanda avevo risposto chiedendo all’utente “StefanoCG” se era poi riuscito ad ottenere ciò che desiderava e che pensavo fosse ciò che desideravo anche io (ma senza ricevere risposta).

    ho provato ad inserire il codice ma qualcosa non ha funzionato e pensando di essere stato in a non spiegarmi bene o a non aver compreso bene l’utilizzo della formula ho pensato di essere più “preciso” aprendo un topic specifico inserendo un mio esempio pratico.

    ti chiedo scusa se ho involontariamente duplicato un argomento.

    per ogni nuovo post che scrivo ne leggo decine di quelli già esistenti proprio per evitare di riproporre domande/argomenti già trattati, come giustamente indicato nelle regole del forum.

    adesso riprovo a vedere la formula e a capire dove sbagliavo e poi posterò il codice.

    grazie mille.

    #92052 quote
    robertogozzi
    Moderator
    Master

    Non preoccuparti, magari può esserci un errore, fammi sapere.

    Se c’è qualcosa che non va, oltre a dirmi i dettagli allega anche il codice, così che possa replicare tutto sul mio PC.

    #92087 quote
    Albert FX
    Participant
    Average

     

    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = True // Posizioni cumulate disattivate
    
    //DEFPARAM FlatAfter = 220000
    //DEFPARAM FLATBEFORE = 090000
    
    // Condizioni per entrare su posizioni long
    //indicator6 = CurrentDayOfWeek = 1
    
    ONCE CapitaleMassimo = 10000
    ONCE MaxLoss                = 1 / 100
    PositionSize = Round(CapitaleMassimo/(Close - Close*MaxLoss)/PointValue*PointSize)
    Graph PositionSize
    
    
    
    IF OnMarket OR Close < low[3] THEN               //Azzerare il prezzo serve a non inserire ancora l'ordine pendente...
    Prezzo = 0                                    //... una volta entrato oppure quando non ci sono più le condizioni
    ENDIF
    
    
    IF LOW[0] > LOW[2] AND LOW[1] > LOW[2] AND LOW[1] > LOW[0] AND HIGH[1] > HIGH[2] AND HIGH [1] > HIGH[0] THEN
    Prezzo       = HIGH[1]                        //Salvo il prezzo d'entrata
    StopLoss     = abs(LOW[2] - Prezzo)           //SL sul minimo del pattern
    TargetProfit = (Prezzo + StopLoss)            //Target Profit pari all'ampiezza del pattern
    ENDIF
    
    
    IF Prezzo AND Not OnMarket THEN                  //Inserire l'ordine pendente ad ogni candela
    BUY positionsize SHARES AT Prezzo STOP
    SET STOP LOSS   StopLoss
    SET TARGET PROFIT TargetProfit
    ENDIF
    

    Buonasera,

    sto procedendo (parallelamente all’altro topic) anche con il test del position size però non riesco ad ottenere i risultati sperati

    indipendentemente dal fatto che il pattern utilizzato ancora non funziona, mi trovo ad avere tutta una serie di operazioni in perdita (anche se molte dovrebbero essere in utile 😉  ) che se rispettassero la formula dovrebbero avere tutte una perdita di 100 euro ognuna.

    ma questo non avviene.

    Potresti cortesemente verificare e correggermi il codice oppure dirmi le modifiche che devo apportare ?

    allego la videata ottenuta con il backtest (EUR/USD). Se il position size funzionasse, è corretto che per tutte le operazioni in perdita nella colonna ABS PERF dovrei trovarmi tutti valori uguali a -100 euro ??

    grazie mille.

    PosSize.png PosSize.png
    #92101 quote
    robertogozzi
    Moderator
    Master

    Per favore, fornisci sempre TUTTE le informazioni per potere ripetare i test:

    • strumento usato (EurUsd)
    • TF usato
    • periodo di backtest usato
    • foto esplicative (manca quella dove sono indicati i quantitativi tradati)

    Tra l’altro i conti demo hanno qualche problema di connessione stamani, mi sa che ci stanno lavorando per fare prove o aggiornamenti.

    Buon fine settimana.

    #92142 quote
    Albert FX
    Participant
    Average

    ciao,

    il test è stato effettuato su EUR/USD, 1000 unita dal gennaio 2013 a ieri e con TF daily.

    ti allego l’elenco delle operazioni con i quantitativi tradati. sembra che la formula calcoli un qualche valore probabilmente con base 100 euro perché quando nel 2013 il cambio valeva 1,30 ne venivano tradati 7700 circa mentre quando nel 2017 il cambio valeva 1,06 ne venivano tradati 9500 circa (ovviamente di più).

    bisognerebbe però partire con il calcolo prendendo in considerazione il numero di Pips che intercorrono tra il prezzo di SL ed il prezzo di ingresso long e far valere questo numero di Pips (che varia di volta in volta per ogni operazione) 100 euro agendo sul quantitativo di valuta acquistato. Cosi che ogni eventuale perdita subita vale sempre 100 euro, ovvero l’1% del mio capitale.

    Grazie mille.

    ciao.

    SIZE.png SIZE.png
    #92429 quote
    robertogozzi
    Moderator
    Master

    La formula per il dimensionamento della posizione (position sizing) è:

    PositionSize  =  (CapitaleMassimo * MaxLoss)  *  Leva  /  ValoreContratto

    Se ti restituisce un numero intero è il numero di contratti regolari che puoi acquistare, se è un decimale indica quanti mini contratti puoi acquistare.

    Ti allego il codice modificato con la formula corretta:

    DEFPARAM CumulateOrders = True // Posizioni cumulate disattivate
    ONCE CapitaleMassimo    = 10000
    ONCE MaxLoss            = 1 / 100
    ONCE Leva               = 10
    ONCE ValoreContratto    = 100000
    //PositionSize = Round(CapitaleMassimo/(Close - Close*MaxLoss)/PointValue*PointSize)
    PositionSize = (CapitaleMassimo * MaxLoss) * Leva / ValoreContratto
    //PositionSize = max(1,(CapitaleMassimo * MaxLoss) * Leva / ValoreContratto)
    graph PositionSize
    IF OnMarket OR Close < low[3] THEN
       Prezzo = 0
    ENDIF
    IF LOW[0] > LOW[2] AND LOW[1] > LOW[2] AND LOW[1] > LOW[0] AND HIGH[1] > HIGH[2] AND HIGH [1] > HIGH[0] THEN
       Prezzo       = HIGH[1]                        //Salvo il prezzo d'entrata
       StopLoss     = abs(LOW[2] - Prezzo)           //SL sul minimo del pattern
       TargetProfit = (Prezzo + StopLoss)            //Target Profit pari all'ampiezza del pattern
    ENDIF
    IF Prezzo AND Not OnMarket THEN                  //Inserire l'ordine pendente ad ogni candela
       BUY positionsize SHARES AT Prezzo STOP
       SET STOP LOSS   StopLoss
       SET TARGET PROFIT TargetProfit
    ENDIF

    La riga 8 puoi usarla al posto della 7 per avere la certezza che la posizione minima sia 1.

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

Formula per tradare le valute con un rischio fisso calcolato


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
Albert FX @albert-fx Participant
Summary

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

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 02/20/2019
Status: Active
Attachments: 2 files
Logo Logo
Loading...