有網友問到如何撰寫移動停利的腳本,我以RSI低檔回昇的進場腳本為例,請優秀的同仁寫出對應的停利腳本作為出場腳本,跟大家說明如何用停利腳本來作回測。
首先,RSI低檔回昇的腳本如下
if rsi(close,12) cross over 20 then ret=1;
那麼這個進場腳本的移動停利腳本寫法可以如下
input:ratio(10); //設定回檔幅度 //用condition1來代表進場的觸發條件 condition1=false; if rsi(close,12) cross over 20 then condition1=true; value1=barslast(condition1); //計算上一次觸發到現在共歷經幾根bar value2=highest(high,value1); //計算觸發後到目前為止的最高價 if close*(1+ratio/100)<value2 then condition2=true else condition2=false; value3=barslast(condition2); if value3 cross under value1 then ret=1; //觸發移動停利
這當中用condition1代表進場的條件,用barslast來計算符合進場條件後至今共有幾根bar,再拿這數字去找出條件成立後的最高點,接下來就是計算最新價跟這最高價之間是否差了一成以上,如果是的話就是出場條件成立。如果股價往上走,這個自觸發後以來的最高價就會一直走高,也就達到移動停利的目的。
接下來就可以把這個腳本加在回測的出場設定中 如下圖
這樣就可以在回測中做到移動停利了。
大家可以把自己的進場腳本設為condition1的條件,其餘的,follow這個出場腳本的寫法就可以作出特定進場策略的移動停利腳本了。