Fehler ist klar:
das Programm berechnet den SL bei jedem neuen Balken neu. Trifft die Bedingung (High oder Close > tradeprice then SL 0) nicht mehr zu, dann setzt es den SL eben wieder auf 18. Es müsste also eine Möglichkeit geben, das High für der gesamten Periode der offenen Position zu berechnen, also von buy weg. Ich finde aber nur Perioden über eine Anzahl von (n) Balken. Wieviele Balken sinds aber seit der Positionseröffnung?
sl=18
if high >40 then (sollte etwa so lauten: if high from open Position till now > 40 then)
sl=0
endif
set stop ploss sl