Vorrei compilare un programma che mi permetta di uscire da una posizione quando, dopo un apprezzamento di almeno il 3%, il titolo subisce un ritracciamento di almeno il 20% dell'escursione fra il massimo raggiunto ed il prezzo di entrata (dato per es. da un breakout degli ultimi N massimi). Mi potete aiutare? Come si puo' fissare nel programma il prezzo di entrata (ad es. il prezzo di apertura della barra successiva al segnale d'ingresso) per poter calcolare la successiva escursione del prezzo? Grazie per l'aiuto.
Per far si che il prezzo di entrata sia visibile anche dagli altri moduli del trading system devi utilizzare una variabile globale dichiarata nel modulo "Opzioni Comuni".
Ad esempio:
"Opzioni Comuni"
Dim pdPrezzoDiEntrata as Numeric
Nel modulo "Entra in acquisto" setta la variabile globale che memorizzer? il prezzo di entrata:
Function Main()
............... ...............
pdPrezzoDiEntrata = Open
........................ ........................
Return ...........
EndFunction
Modulo "Chiudi posizioni in acquisto"
Dim pdHigher as Numeric
Function Main() Dim bSignal as Boolean Dim dDiff as Numeric
bSignal = false
if (pdHigher < high) then pdHigher = high endif
dDiff = (pdHigher - pdPrezzoDiEntrata)
If (dDiff >= (pdPrezzoDiEntrata * 0.03)) Then if ((dDiff * 0.2) <= (pdHigher - Low)) then bSignal = true Endif EndIf
Return bSignal
EndFunction
Ovviamente questa ? solo una traccia da elaborare meglio e completare, ma sicuramente potr? aiutarti a capire qualche concetto in pi?.
Grazie per l'aiuto! Purtroppo pero' sto incontrando altre difficolta'. Ad esempio, ho cercato di impostare due livelli di stop: uno che prevede l'uscita al ritracciamento del 30% della differenza fra massimo raggiunto e prezzo di entrata, quando questa escursione e' compresa fra 3% e 5%, e un altro stop che prevede l'uscita al ritracciamento del 20% della differenza fra massimo raggiunto e prezzo di entrata, quando questa escursione e' superiore al 5%. Per far questo ho modificato la vostra traccia inserendo un if annidato nella maniera seguente, ma ottengo un messaggio di errore di sintassi ('N) proprio su una riga del if annidato. Dove sbaglio? Grazie...e auguri:
Opzioni Comuni"
Dim pdPrezzoDiEntrata as Numeric
Nel modulo "Entra in acquisto" setta la variabile globale che memorizzer? il prezzo di entrata:
Function Main()
............... ...............
pdPrezzoDiEntrata = Open
........................ ........................
Return ...........
EndFunction
Modulo "Chiudi posizioni in acquisto"
Dim pdHigher as Numeric
Function Main() Dim bSignal as Boolean Dim dDiff as Numeric
bSignal = false
if (pdHigher < high) then pdHigher = high endif
dDiff = (pdHigher - pdPrezzoDiEntrata)
If (dDiff >= (pdPrezzoDiEntrata * 0.05)) Then if ((dDiff * 0.2) <= (pdHigher - Low)) then bSignal = true endif else if (dDiff >= (pdPrezzoDiEntrata * 0.03) and (dDiff < (pdPrezzoDiEntrata * 0.05) ) Then if ((dDiff * 0.3) <= (pdHigher - Low)) then bSignal = true Endif EndIf