Incrocio medie mobili in sequenza

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #121244 quote
    frapasqua
    Participant
    Junior

    Ciao a tutti

    sono nuovissimo alla programmazione e vorrei capire come far eseguire un comando al verificarsi di due condizioni in sequenza temporale, cioè due condizioni che non si verifichino nello stesso momento ma una dopo l’altra.

    In particolare, aprire una posizione long soltanto se si verificano in sequenza tutte e due le condizioni seguenti:

    1) la media mobile MM1 incrocia al rialzo la media mobile MM2 e in seguito

    2) la MM3 incrocia al rialzo la MM4.

    Ovviamente il comando non deve essere eseguito all’incrocio tra MM1 e MM2, ma soltanto se successivamente si verifica anche l’incrocio tra MM3 e MM4.

    Il problema è che non si può sapere se e quando, dopo il primo incrocio, si verificherà anche l’altro, per cui non è possibile inserire limiti temporali o di prezzo o numero di barre.

    Ho provato con la sequenza IF/THEN/IF/ ma non funziona, probabilmente perché assume che le due condizioni debbano verificarsi contemporaneamente – il che ovviamente non può mai accadere.

    Riporto comunque quello che ho scritto e ringrazio chiunque vorrà darmi una mano.

    Lo strumento è il Mini S&P500 Only0320, il TF 1 min. su un intervallo di 5 giorni.
    <pre class=”lang:probuilder decode:true” title=”Cross M1/M2 poi M3/M4″>defparam cumulateorders=false

    M1=average [20](close)
    M2=average [50](close)
    M3=average [30](close)
    M4=average [60](close)

    if M1 crosses over M2 then
    if M3 crosses over M4 then
    buy 1 shares at market
    endif
    endif

    #121249 quote
    robertogozzi
    Moderator
    Master

    Provalo:

    ONCE Cross1 = 0
    ONCE Cross2 = 0
    M1=average [20](close)
    M2=average [50](close)
    M3=average [30](close)
    M4=average [60](close)
    //
    // Verificare se c'è il primo incrocio (ed azzerare tutto se c'è l'incrocio opposto)
    //
    if M1 crosses over  M2 then
       Cross1 = 1
       Cross2 = 0
    endif
    if M1 crosses under M2 then
       Cross1 = 0
    endif
    //
    // Verificare se c'è il secondo incrocio, purché cia sia stato il primo (ed azzerare solo il secondo se avviene quello opposto)
    //
    if M3 crosses over  M4 then
       If Cross1 THEN
          Cross2 = 1
       endif
    endif
    if M3 crosses under M4 then
       Cross2 = 0
    endif
    //
    IF Cross1 AND Cross2 AND Not OnMarket THEN
       buy 1 shares at market
    ENDIF
    #121352 quote
    frapasqua
    Participant
    Junior

    Grazie Roberto per la risposta prontissima.

    Purtroppo non mi funziona neanche questo, mi dà solo un primo acquisto in apertura poi più nulla. Ti allego il risultato del backtesting.

    Tu l’hai provato? Non vorrei che fosse un problema soltanto della mia piattaforma, da quando c’è stato l’aggiornamento alla versione 11 succedono cose strane.

    In ogni caso studiando il codice che mi hai mandato ho capito un sacco di cose, ti ringrazio.

    ES0320-1-minute-2020_03_06-04h27.png ES0320-1-minute-2020_03_06-04h27.png
    #121359 quote
    robertogozzi
    Moderator
    Master

    Tu mi hai chiesto come mettere insieme le condizioni per entrare e l’ho fatto (solo Long, lo Short è opposto).

    Devi mettere te le condizioni per uscire. Non è prevista un’uscita, quindi immagino la posizione resti aperta all’infinito.

    Basta che metti un target profit ed uno stop loss ed uscirà, prova ad aggiungere alla fine:

    SET STOP   pLOSS   30
    SET TARGET pPROFIT 100

    oviamente cambierai i valori come vorrai tu.

    Oppure puoi scegliere di uscire quando c’è un incrocio opposto.

    frapasqua thanked this post
    #121376 quote
    frapasqua
    Participant
    Junior

    Sì con gli stop funziona. Ogni volta che vende poi riapre il long esattamente al secondo incrocio.

    Non avevo provato ad inserire gli stop perchè pensavo che dovesse comunque darmi sul grafico un acquisto ogni volta che si verificava un doppio incrocio al rialzo, invece non è così.

    Grazie mille!

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

Incrocio medie mobili in sequenza


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
frapasqua @frapasqua Participant
Summary

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

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