Strategia piramide rovesciata

Viewing 15 posts - 1 through 15 (of 19 total)
  • Author
    Posts
  • #207217 quote
    Ciccarelli Franco
    Participant
    New

    Tempo fa mi sono imbattuto nella descrizione di una strategia che mi ha incuriosito. Provo a descriverla e speriamo che  venga codificata. Sottostante EURUSD TF 15 minuti, in uno scenario rialzista, si entra long a una determinata condizione e SL a 50 Euro, se il gain diventa 50 E si compra un altro contratto e si  alza lo SL a 0 (praticante a paraggio), se l’incremento cresce ancora  es 100 si compra una altro contratto e si sposta ancora lo SL a 50 e cosi ad andare. Quando vi è un rintracciamento le posizioni si chiudono con diverse possibilità , per esempio da un minimo di – 50 , ad un pareggio, ed una vincita. La stessa cosa ma a rovescio per un mercato ribassista.

    Grazie

    #207793 quote
    robertogozzi
    Moderator
    Master

    Prova questa:

    DEFPARAM CumulateOrders = True
    ONCE SL     = 50
    ONCE TP     = SL
    ONCE Uscita = 0
    ONCE myTP   = TP
    Sma200  = average[20,0](close)
    Rialzo  = close > Sma200
    Ribasso = close < Sma200
    L1      = Rsi[14](close) CROSSES OVER  50
    S1      = Rsi[14](close) CROSSES UNDER 50
    CondizioniLong  = L1 AND Not OnMarket
    CondizioniShort = S1 AND Not OnMarket
    IF CondizioniLong  THEN
    BUY 1 Contract at Market
    Prezzo = close
    myTP   = TP
    Uscita = Prezzo - SL * PipSize
    SET STOP Price Uscita
    ENDIF
    IF CondizioniShort THEN
    SELLSHORT 1 Contract at Market
    Prezzo = close
    myTP   = TP
    Uscita = Prezzo + SL * PipSize
    SET STOP Price Uscita
    ENDIF
    Profitto = PositionPrice * PositionPerf / PipSize / PipValue
    IF Profitto >= myTP THEN
    IF LongOnMarket THEN
    BUY 1 Contract at Market
    IF myTP = TP THEN
    Uscita = Prezzo
    ELSE
    Uscita = Prezzo + (TP * PipSize)
    ENDIF
    Prezzo = close
    myTP   = myTP + TP
    SET STOP Price Uscita
    ENDIF
    ELSIF ShortOnMarket THEN
    SELLSHORT 1 Contract at Market
    IF myTP = TP THEN
    Uscita = Prezzo
    Prezzo = close
    ELSE
    Uscita = Prezzo - (TP * PipSize)
    Prezzo = close
    myTP   = myTP + TP
    ENDIF
    SET STOP Price Uscita
    ENDIF
    graphonprice Uscita
    graphonprice Prezzo coloured("Blue")

    non sono sicuro di avere interpretato bene la tua richiesta.

    #207802 quote
    Ciccarelli Franco
    Participant
    New

    Grazie, sempre molto gentile, lo proverò.

    #207844 quote
    Ciccarelli Franco
    Participant
    New

    Sembra che funzioni, ma non da gran risultati. Forse bisogna ottimizzare i valori della mm e del rsi. Tu lo hai provato?

    Grazie

    #208059 quote
    robertogozzi
    Moderator
    Master

    L’ho provata solo per fare i test di funzionamento. Ho notato che non da buoni risultati.

    Prova ad ottimizzarla.

    #208086 quote
    Ciccarelli Franco
    Participant
    New

    Che cosa devo ottimizzare?

    #208093 quote
    robertogozzi
    Moderator
    Master

    Più che altro devi inserirci le tue condizioni, si per individuare il trend che per entrare a mercato.

    Per il trend ho utilizzato una media a 20 periodi (in realtà volevo scrivere 200), per l’entrata l’RSI quando passa sopra o sotto il valore 50.

    E’ solo un esempio.

    #208094 quote
    phoentzs
    Participant
    New

    Dovresti leggere il manuale per sapere cosa stai effettivamente facendo qui.

    #208141 quote
    Ciccarelli Franco
    Participant
    New

    Roberto, io di sicuro non so programmare, ma rileggendo il tuo codice per cercare di capire, ho visto le righe  7 e 8 e  non vedo come lavorano.

    Grazie

    #208146 quote
    robertogozzi
    Moderator
    Master

    Stabiliscono il trend a seconda che il prezzo sia sopra o sotto la media mobile semplice a 20 periodi (anche se volevo scrivere 200).

    #208152 quote
    Ciccarelli Franco
    Participant
    New

    OK ma non vedo collegamenti con altre istruzioni.

    #208157 quote
    GraHal
    Participant
    Master
    #208177 quote
    robertogozzi
    Moderator
    Master

    Solo adesso mi sono reso conto! Scusami è stata una svista.

    Vanno modificate le linee 11 e 12 così:

    CondizioniLong  = L1 AND Not OnMarket AND Rialzo
    CondizioniShort = S1 AND Not OnMarket AND Ribasso
    #208309 quote
    Ciccarelli Franco
    Participant
    New

    Roberto buongiorno,

    Ho provato con la modifica e sembra andare meglio, ma fa tanti trade short di poca entità e non capisco il motivo. Comunque ho apportato delle modifiche e sembra andare meglio, è più regolare,  anche se il gain è più o meno equivalente .

    Ho tolto la media mobile perchè ritengo possa interferire e per gli ingressi ho usato l’indicatore “RSI e regressione lineare” di Nicolas.

    Se hai tempo dagli un occhiata , lo allego.

     

    Grazie

    #208557 quote
    robertogozzi
    Moderator
    Master

    1)  la riga 14 non serve e rischia di fare confusione, oltre a rallentare l’esecuzione. L’indicatore è già stato richiamato con CALL precedentemente e non cambierà più fino alla prossima candela;

    2) quando fai la CALL utilizzi solo i primi due parametri, ma il secondo è la banda bassa e va bene per i LONG, mentre per gli SHORT devi usare la banda ALTA che è il quarto (ed ultimo)  parametro. Il terzo non viene effettivamente utilizzato (è la banda mediana).

    Ho fatto anche qualche piccola modifica nella logica, in modo particolare ho messo lo Stop & Reverse nella prima entrata (sia Long che Short).

    Ti allego il codice modificato:

    // Stop e target: Inserisci qui i tuoi stop di protezione e profit target
    DEFPARAM CumulateOrders = True
    ONCE SL     = v
    ONCE TP     = SL
    ONCE Uscita = 0
    ONCE myTP   = TP
    
    // Condizioni per entrare su posizioni long
    indicator1, indicator2, ignored, indicator4 = CALL "rsi e regressione lineare"
    
    L1 = (indicator1 CROSSES OVER  indicator2)
    S1 = (indicator1 CROSSES UNDER indicator4)
    CondizioniLong  = L1 AND Not LongOnMarket  //OnMarket
    CondizioniShort = S1 AND Not ShortOnMarket //OnMarket
    
    IF CondizioniLong  THEN
    BUY 1 Contract at Market
    Prezzo = close
    myTP   = TP
    Uscita = Prezzo - SL * PipSize
    SET STOP Price Uscita
    ENDIF
    IF CondizioniShort THEN
    SELLSHORT 1 Contract at Market
    Prezzo = close
    myTP   = TP
    Uscita = Prezzo + SL * PipSize
    SET STOP Price Uscita
    ENDIF
    Profitto = PositionPrice * PositionPerf / PipSize / PipValue
    IF Profitto >= (myTP * PipSize) THEN
    IF LongOnMarket THEN
    BUY 1 Contract at Market
    IF myTP = TP THEN
    Uscita = PositionPrice
    Prezzo = TradePrice
    ELSE
    Uscita = TradePrice + (TP * PipSize)
    ENDIF
    Prezzo = close
    myTP   = myTP + TP
    SET STOP Price Uscita
    ENDIF
    ELSIF ShortOnMarket THEN
    SELLSHORT 1 Contract at Market
    IF myTP = TP THEN
    Uscita = PositionPrice
    Prezzo = TradePrice
    ELSE
    Uscita = TradePrice - (TP * PipSize)
    Prezzo = close
    myTP   = myTP + TP
    ENDIF
    SET STOP Price Uscita
    ENDIF
    graphonprice Uscita
    graphonprice Prezzo                    coloured("Blue")
    graphonprice Uscita + (myTP * PipSize) coloured("Green")
    //graph L1 coloured("Green")
    //graph S1 coloured("Red")
    //graph myTP
    GraHal thanked this post
Viewing 15 posts - 1 through 15 (of 19 total)
  • You must be logged in to reply to this topic.

Strategia piramide rovesciata


Supporto ProOrder

New Reply
Summary

This topic contains 18 replies,
has 4 voices, and was last updated by Ciccarelli Franco
2 years, 11 months ago.

Topic Details
Forum: Supporto ProOrder
Language: Italian
Started: 01/11/2023
Status: Active
Attachments: 4 files
Logo Logo
Loading...