Random(N)函式會隨機回傳0~N間任一值,如果有天異想天開想寫一個隨機進場的策略,可以派上用場,簡單舉例如下:
=========================================
Inputs: Bias(0.5);
Var:Trigger(0),Signal(0);
trigger =random(1);
if trigger < bias then signal=-1;
if trigger >1 - bias then signal=1;
{ Random Entry}
If signal =1 then Buy next bar at open;
If signal =-1 then Sellshort next bar at open;
=========================================
Random(1)會隨機回傳0~1間任一值,我們用messagelog看看實際回傳的亂數值會呈現如下:
0.74
0.14
0.35
0.66
0.82
0.73
0.28
0.94
0.05
0.78
0.95
0.37
0.82
0.15
0.09
0.22
0.39
接著在程式碼中我們設定一個參數Bias並預設為0.5,當回傳值>0.5就做多,反之做空,換言之就是多或空是很公平(各50%)的隨機決定出,如果你認為行情比較偏多,Bias可以設為0.3,等同於隨機前提下做多機率70%來決定多空。
如果是想取得0~100任一隨機整數,則可以加上Round()函式,如下:
Round(Random(100),0)
當然Random函式還有很多用法,特別是想驗證一些想法或是a跑模擬統計(例如蒙地卡羅模擬)時都可以派上用場。
沒有留言:
張貼留言
歡迎留言討論!