Aiuto con codice Martingala countertrend

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #218633 quote
    luca_mass
    Participant
    New

    Ciao a tutti, vi scrivo per chiedere ancora ancora una volta aiuto a voi che siete sicuramente più esperti di me.

    Sto lavorando su una strategia countertrend, con acquisti e vendite limit. Ovviamente non sono mai ingressi precisi, quindi vorrei implementare attraverso il mio money management degli ingressi in martingala.

    il mio TS al momento lavora cosi:

    if miecondizioni then
    buy miaposizione contract at mioingresso limit
    set stop loss miostop
    endif

    Uguale ma opposto il lato short.
    Successivamente ho due righe che mi danno il comando di uscire dalla posizione (che sono il mio take profit)

    ad oggi questo sistema lavora con defparam cumulateorders = false in quanto voglio solo 1 trade alla volta.

    Nella mia testa ci sarebbe la volontà di aprire altre posizioni in caso di trade che va contro la mia posizione iniziale per generare 2 ingressi ( o eventualmente più) a un prezzo più favorevole.

    in poche parole vorrei quindi fare:

    defparam cumulateorders = true

    if miecondizioni then
    buy miaposizione contract at mioingresso limit
    set stop loss miostop
    endif

    questo che apra solo 1 posizione e non una ogni barra come sembra fare nelle prove che sto facendo.

    In seguito vorrei che il TS faccia più o meno questo:

    if longonmarket then

    buy miasecondaposizione contract at mioingresso ( prezzo di ingresso del mio ordine del punto sopra) – 20 * pipsize limit

    set stop ploss miostopnuovo1

    set target ppprofit miotakeprofit1

    endif

    e qualora il prezzo stesse andando ancora contro il mio trade rifarei lo stesso punto appena fatto con degli altri valori per un ingresso ancora più favorevole:

    if longonmarket then

    buy miaterzaposizione contract at mioingresso ( prezzo di ingresso del mio primo ordine ) – 50 * pipsize limit

    set stop ploss miostopnuovo2

    set target ppprofit miotakeprofit2

    endif

    Qualcuno potrebbe darmi una mano? Grazie mille

    #218648 quote
    robertogozzi
    Moderator
    Master

    E’ più comprensibile se indichi solo le condizioni, senza intervallarle dalle istruzioni.

    #219180 quote
    luca_mass
    Participant
    New

    Ciao Roberto,

    provo a incollare il codice.

    pero in questo modo mi continua ad aprire posizioni ad ogni barra e non come vorrei io. io vorrei che eseguisse 1 ordine per ogni step. Grazie mille

    
    DEFPARAM CumulateOrders = true
    
    stopluca = 60 // Stop Loss
    TakeProfit = 60 // Take Profit (opzionale)
    Mystop1 = 40 // Stop loss secondo ingresso
    MyStop2 = 20 // Stop loss terzo ingresso
    MyProfit1 = 20 // Take profit secondo ingresso
    MyProfit2 = 40 // Take profit terzo ingresso
    Position = 1
    mymedia = ExponentialAverage[20](close)
    CL1 = close < MyMedia CS1 = close > Mymedia
    
    // condizioni per entrare long
    
    IF CL1 THEN
    BUY Position CONTRACT AT Mylongentry limit
    set stop ploss StopLuca
    set target pprofit TakeProfit
    ENDIF
    
    // condizione per uscire da posizioni long
    
    if longonmarket then
    sell Position contract at mylongexit limit
    endif
    
    // secondo ingresso long in caso il prezzo scenda di 20 pips dal mio prezzo di ingresso del primo ordine
    
    if longonmarket then
    buy 2 * Position contract at tradeprice - 20 * pipsize limit
    set stop ploss MyStop1
    set target pprofit MyProfit1
    endif
    
    // terzo ingresso in caso il prezzo scenda di 40 pip dal prezzo di ingresso del primo ordine
    
    if longonmarket then
    buy 3 * Position contract at tradeprice - 40 * pipsize limit
    set stop ploss MyStop2
    set target pprofit MyProfit2
    endif
    
    // Condizioni per entrare su posizioni short
    
    IF CS1 THEN
    SELLSHORT Position CONTRACT AT myshortentry limit
    set stop ploss StopLuca
    set target pprofit TakeProfit
    ENDIF
    
    // condizione per uscire da posizioni short
    
    if shortonmarket then
    exitshort Position contract at myshortexit limit
    endif
    
    // secondo ingresso short in caso il prezzo salga di 20 pips dal mio prezzo di ingresso del primo ordine
    
    if shortonmarket then
    sellshort 2 * Position contract at tradeprice + 20 * pipsize limit
    set stop ploss MyStop1
    set target pprofit MyProfit1
    endif
    
    // terzo ingresso short in caso il prezzo salga di 40 pip dal prezzo di ingresso del primo ordine
    
    if shortonmarket then
    sellshort 3 * Position contract at tradeprice + 40 * pipsize limit
    set stop ploss MyStop2
    set target pprofit MyProfit2
    endif
    
    #219189 quote
    robertogozzi
    Moderator
    Master

    Io ti avevo chiesto il riepilogo delle condizioni, non il codice.

    #219199 quote
    luca_mass
    Participant
    New

    Scusa, letto di corsa e fatto uno schema veloce pensando fosse quello che mi avessi chiesto, comunque la condizione era una semplice finestra giornaliera e oraria.

    time => 120000 and time <= 140000 and dayofweek <> 5

    e come variabile di ingresso long e short sono valori Dhigh e Dlow o volendo anche livelli settimanali o perché no, massimi e minimi in altri TF.

    La condizione di ingresso e la finestra temporale valgono solo per il primo ingresso, poi gli altri due lavorano solo se sono in posizione long o short, è uno motore molto semplice e da implementare con altri filtri a dir la verità, il problema è legato ad avere 3 ingressi separati, ma solo quelli, e non un TS che apre 20 posizioni.

    Grazie mille

    #219304 quote
    robertogozzi
    Moderator
    Master

    Ok, ho capito.

    Però devi adesso allegare il file ITF funzionante, altrimenti non posso provarlo perché in quello che hai postato mancano delle variabili (vedi foto).

    x-5.jpg x-5.jpg
    #219378 quote
    luca_mass
    Participant
    New

    Ciao, ecco il sistema grezzissimo ma funzionante.

    X_Studio-CT.itf
    #219396 quote
    robertogozzi
    Moderator
    Master

    Ho fatto queste modifiche:

    • ho agginto la finestra temporale solo per la prima entrata
    • ho aggiunto la variabile CONTO per sapere quale entrata è già stata fatta (questa variabile viene azzerata quando il TS non è a mercato, in modo da potere ricomniciare)
    • ho modificato l’uscita parziale con ordini pendenti, in quanto non è consentita; le uscite parziali si possono fare solo con ordini a mercato; se usi ordini pendenti le uscite devono essere totali
    DEFPARAM CumulateOrders = true // Posizioni cumulate disattivate
    
    TIMEFRAME (4 hour, updateonclose)
    
    MyLongEntry = low[0]
    MyLongExit = high[1]
    MyShortEntry = high[0]
    MyShortExit = low[1]
    
    TIMEFRAME (DEFAULT)
    
    Finestra = time => 120000 and time <= 140000 and dayofweek <> 5
    
    IF Not OnMarket THEN
    conto = 0
    ENDIF
    
    stopluca = 60 // Stop Loss
    TakeProfit = 60 // Take Profit (opzionale)
    Mystop1 = 40 // Stop loss secondo ingresso
    MyStop2 = 20 // Stop loss terzo ingresso
    MyProfit1 = 20 // Take profit secondo ingresso
    MyProfit2 = 40 // Take profit terzo ingresso
    Position = 1
    mymedia = ExponentialAverage[20](close)
    CL1 = close > mymedia
    CS1 = close < Mymedia
     
    // condizioni per entrare long
     
    IF CL1 AND Conto = 0 AND Finestra THEN
    BUY Position CONTRACT AT Mylongentry limit
    set stop ploss StopLuca
    set target pprofit TakeProfit
    Conto = 1
    ENDIF
     
    // condizione per uscire da posizioni long
     
    if longonmarket then
    //sell Position contract at mylongexit limit    //non si possono fare chiusure parziali con ordini pendenti
    IF close >= mylongexit then
    SELL Position contract at Market
    endif
    endif
     
    // secondo ingresso long in caso il prezzo scenda di 20 pips dal mio prezzo di ingresso del primo ordine
     
    if longonmarket and Conto = 1 then
    buy 2 * Position contract at tradeprice - 20 * pipsize limit
    set stop ploss MyStop1
    set target pprofit MyProfit1
    Conto = 2
    endif
     
    // terzo ingresso in caso il prezzo scenda di 40 pip dal prezzo di ingresso del primo ordine
     
    if longonmarket and Conto = 2 then
    buy 3 * Position contract at tradeprice - 40 * pipsize limit
    set stop ploss MyStop2
    set target pprofit MyProfit2
    Conto = 3
    endif
     
    // Condizioni per entrare su posizioni short
     
    IF CS1 and Conto = 0 AND Finestra THEN
    SELLSHORT Position CONTRACT AT myshortentry limit
    set stop ploss StopLuca
    set target pprofit TakeProfit
    Conto = 1
    ENDIF
     
    // condizione per uscire da posizioni short
     
    if shortonmarket then
    //exitshort Position contract at myshortexit limit //non si possono fare chiusure parziali con ordini pendenti
    IF close <= myshortexit THEN
    exitshort Position contract at Market
    ENDIF
    endif
     
    // secondo ingresso short in caso il prezzo salga di 20 pips dal mio prezzo di ingresso del primo ordine
     
    if shortonmarket and Conto = 1 then
    sellshort 2 * Position contract at tradeprice + 20 * pipsize limit
    set stop ploss MyStop1
    set target pprofit MyProfit1
    Conto = 2
    endif
     
    // terzo ingresso short in caso il prezzo salga di 40 pip dal prezzo di ingresso del primo ordine
     
    if shortonmarket and Conto = 2 then
    sellshort 3 * Position contract at tradeprice + 40 * pipsize limit
    set stop ploss MyStop2
    set target pprofit MyProfit2
    Conto = 3
    endif
    luca_mass thanked this post
    X_Studio-CT-1.itf
Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.

Aiuto con codice Martingala countertrend


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
luca_mass @luca_mass Participant
Summary

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

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 08/05/2023
Status: Active
Attachments: 3 files
Logo Logo
Loading...