Citazione Originariamente Scritto da DICECC Visualizza Messaggio
Caro alex69
visto che da solo non ci sono riuscito, e quindi le mie capacità di programmazione sono oltremodo più modeste delle tue, mi potresti indicare in dettaglio come hai modificato lo script per risolvere il problema da te in origine evidenziato?
Grazie e cordiali saluti.

Ciao DICECC,
lo script di Smash serve a verificare che non si verifichi più di 1 trade dello stesso segno.

Intanto si impostano le 2 condizioni si Buy e di Sell:
SET ConditionBuy = (WPR (P) > -35 AND REF (WPR (P), 1) <= - 35)
SET ConditionSell = (WPR (P) < -65 AND REF (WPR (P), 1) >= - 65)

Di seguito si impostano i parametri di verifica:
SET Position = ConditionBuy - ConditionSell
SET LastPosition = CHANGEIF(Position <> 0, Position)
Infine la condizione per far partire il segnale Buy:
ConditionBuy AND REF(LastPosition, 1) <> 1
Quest'ultima condizione, nel Sell Script diventa:
ConditionSell AND REF(LastPosition, 1) <> -1
Le condizioni Exit Long ed Exit Short restano immutate.
Ci devi inoltre aggiungere il set per il take profit.

Da solo non ci sarei mai arrivato, ma rileggendo i vari passaggi con l'aiuto contestuale, si riesce a capire la logica che sta dietro.

Ecco il risultato finale del Buy Script:
INPUTS: @periods(300), @takeprofit(100)
SET TAKE_PROFIT= @takeprofit
SET P= @periods

#Criteri alternanza Buy-Sell
SET ConditionBuy = (WPR (P) > -35 AND REF (WPR (P), 1) <= - 35)
SET ConditionSell = (WPR (P) < -65 AND REF (WPR (P), 1) >= - 65)
SET Position = ConditionBuy - ConditionSell
SET LastPosition = CHANGEIF(Position <> 0, Position)
 
ConditionBuy AND REF(LastPosition, 1) <> 1
Penso che così non avrai problemi.
Se ho scritto qualche inesattezza Smash o Apo penso che me lo segnaleranno.
Magari si potrebbero condividere i risultati più interessanti dei backtest che faremo in futuro.
Saluti.

Alex