AIUTO SU TS

Viewing 15 posts - 1 through 15 (of 36 total)
  • Author
    Posts
  • #55737 quote
    Foffo84
    Participant
    Average
    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
    // Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l'orario "Flat Before" non saranno piazzati nuovi ordini o posizioni.
    DEFPARAM FLATBEFORE = 080000
    // Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
    DEFPARAM FLATAFTER = 210000
    
    // Condizioni per entrare su posizioni long
    indicator1 = ExponentialAverage[45](close)
    c1 = (close CROSSES OVER indicator1)
    
    IF c1 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    // Condizioni per entrare su posizioni short
    indicator2 = ExponentialAverage[45](close)
    c2 = (close CROSSES UNDER indicator2)
    
    IF c2 THEN
    SELLSHORT 1 CONTRACT AT MARKET
    ENDIF
    
    // Stop e target
    SET STOP pLOSS 10
    SET TARGET pPROFIT 20
    

    Salve, ho il seguente Ts.

    Come faccio ad implementare a questo codice una funzione di ingresso long o ingresso short che sia la seguente:

    Acquista quando il prezzo supera al rialzo la media esponenziale a 45, ma quando il volume ha superato un valore n nella seguente o max precedenti 5 barre?

    Grazie anticipate

     

    #55741 quote
    robertogozzi
    Moderator
    Master

    Non può esistere la condizione “nella (barra) seguente”, il futuro non può essere esaminato.

    Devi, invece, verificare che ci siano le condizioni nella barra precedente. Quindi le righe 12 e 20 devono diventare

    IF c1[1] THEN
    IF c2[1] THEN

     

    #55742 quote
    robertogozzi
    Moderator
    Master

    In totale, per i volumi, vuoi verificare 7 barre?, quella dove avviene il crossing + la successiva + le 5 precedenti?

    #55748 quote
    Foffo84
    Participant
    Average

    Ciao Roberto mi spiego meglio: Vorrei che quando si verifica la condizione c1 come nel codice sopra, il ts mi deve verificare se nelle 5 o 6 barre precedenti il volume ha superato il valore n

    #55752 quote
    robertogozzi
    Moderator
    Master

    Ok, allora ignora le correzioni che ti ho segnalato sopra.

    La riga 12 dovrà essere

    IF c1 AND (summation[6](Vol > 10000) > 0) THEN   //indica i valori che preferisci

    e la riga 20

    IF c2 AND (summation[6](Vol > 10000) > 0) THEN   //indica i valori che preferisci

     

    Gianluca thanked this post
    #55758 quote
    Foffo84
    Participant
    Average

    Roberto, inoltre quando il ts mi apre una posizione, come faccio a dirli di impostare uno stop loss sotto il minimo assoluto delle 3 candele precedenti?

    #55761 quote
    robertogozzi
    Moderator
    Master
    StopLoss = (close - lowest[3](low(1))) * pipsize //Prezzo di chiusura - minimo delle 3 barre precedenti
    SET STOP pLOSS StopLoss

     

     

    #55763 quote
    Foffo84
    Participant
    Average

    Roberto la riga 1 è errata. c’è qualche problema nel codice. potresti controllare gentilmente?

    #55764 quote
    robertogozzi
    Moderator
    Master

    Scusami, per il riferimento ad una barra precedente occorrono le parentesi quadre

    StopLoss = (close - lowest[3](low[1])) * pipsize

     

    #55766 quote
    Foffo84
    Participant
    Average

    Roberto, scusami, ma vorrei capire bene il codice.

    Quindi io applico uno stop loss che è il minimo delle tre barre precedenti?

    Ad esempio. se il minimo assoluto delle tre barre precedenti è di 13.000 e il ts mi apre una posizione long a 13.050, lo stop loss sra’ messo a 13.000 giusto?

    #55769 quote
    robertogozzi
    Moderator
    Master

    Si, lui calcola il prezzo del minimo delle tre barre precedenti a quella corrente (se invece vuoi quello delle ultime 3 barre basta che metti[0] invece di [1] tra le quadre di low, oppure le togli del tutto. A questo punto trasforma quel prezzo in pips, facendo la differenza tra il prezzo attuale (13050) ed il minimo (13000) e lo trasforma in 50, che è lo stop loss calcolato.

    Ad ogni modo aggiungendo alla fine, solo per il backtest,

    GRAPH StopLoss

    potresti vedere il valore che ha la variabile StopLoss.

    #55774 quote
    Foffo84
    Participant
    Average

    perfetto grazie tante 🙂 Funziona 🙂

    Roberto inoltre, se io setto uno stop oss a 110 punti su un’operazione long, se a fine giornata quest’operazione long mi rimane aperta come faccio a far alzare lo stop in automatico ad esempio di 30 punti?

    #55775 quote
    robertogozzi
    Moderator
    Master
    StopLoss = StopLoss + 30     //-30 per gli SHORT
    SET STOP pLOSS = StopLoss

    Aggiungi, o togli se Short, i pips che vuoi e dai nuovamente il comando SET STOP pLOSS con il nuovo valore calcolato.

    Se vuoi metterlo a pareggio (breakeven) scrivi

    SET STOP LOSS TRADEPRICE(1)

     

    #55937 quote
    Foffo84
    Participant
    Average

    Buongiorno Roberto. Mi spiego meglio.

    Se ad esempio il Ts che lavora dalle 14:30 alle 22:00 lunedi’ mi apre un’operazione long e imposta lo stop di 100 pip, Vorrei che alle ore 22:00 se il ts è ancora in posizione, mi alza lo stop di n Pip hce decidero’ io e cosi’ facendo e cioe’ ogni giorno che passa, se il ts e ancora in posizione mi deve alzare lo stop di n pip.

    Si puo’ fare? 

    #56005 quote
    robertogozzi
    Moderator
    Master
    Buongiorno Roberto. Mi spiego meglio. Se ad esempio il Ts che lavora dalle 14:30 alle 22:00 lunedi’ mi apre un’operazione long e imposta lo stop di 100 pip, Vorrei che alle ore 22:00 se il ts è ancora in posizione, mi alza lo stop di n Pip hce decidero’ io e cosi’ facendo e cioe’ ogni giorno che passa, se il ts e ancora in posizione mi deve alzare lo stop di n pip. Si puo’ fare?
    Si, basta che le righe di cui sopra le faccia dipendere da una condizione temporale:
    IF time = 220000 AND OnMarket THEN
       StopLoss = StopLoss + 30
       SET STOP pLOSS = StopLoss
    ENDIF
    Volevo avvisarti che mi ero sbagliato nel commentare la riga 1 di cui sopra, perché occorre sempre aggiungere 30 se utilizzi STOP pLOSS, perché vanno indicati i pips di stop, non il prezzo. Tuttavia se, dopo alcuni giorni, lo StopLoss sarà positivo, n questa istruziuone non andrà bene e dovrai sostituirla con STOP LOSS indicando il prezzo a cui vuoi lo Stop Loss, allora in tal caso devi differenziare, aggiungento se LONG e sottraendo se SHORT, ma in questo caso dovrai usare pipsize per la conversione (anche se, ad esempio, col DAX non ce ne sarebbe bisogno):
    IF time = 220000 AND OnMarket THEN
       StopLoss = StopLoss + 30 * pipsize
       SET STOP LOSS = StopLoss
    ENDIF
Viewing 15 posts - 1 through 15 (of 36 total)
  • You must be logged in to reply to this topic.

AIUTO SU TS


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
Foffo84 @foffo84 Participant
Summary

This topic contains 35 replies,
has 2 voices, and was last updated by robertogozzi
8 years, 1 month ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 12/15/2017
Status: Active
Attachments: 4 files
Logo Logo
Loading...