Book Appointment Now

控制MDD的函數
MDD 就是Max drawdown 縮寫,指的是該策略「最大虧損」,整個資金曲線當中,回檔最大的那一段距離
上線中的程式,萬一策略的績效回吐超過一定的金額 就自動將程式停止交易 (程式碼範例如下)
Input: st_date(1250101), loss(100000);
Vars: MDD(0), maxnetprofit(0), N(0), strategy(true);
If netprofit > maxnetprofit then maxnetprofit = netprofit;
MDD = maxnetprofit – netprofit;
if date > st_date then begin
if marketposition <> 0 and MDD > loss then begin
strategy = false;
sell all contracts next bar at market;
buytocover all contracts next bar at market;
end;
end;
if strategy = true then begin
交易策略
end;
程式碼說明
netprofit 淨值權益曲線
maxnetprofit:紀錄策略的最大淨利
MDD:當前的浮動最大回檔(最大淨利與當前淨利的差值)
如果淨利有創新高,就更新 maxnetprofit
然後計算目前的回檔金額(MDD)
st_date:策略開始啟動的日期 (input 可以從外部調整)
loss:允許的最大回檔(輸入參數)。
條件觸發時的動作:
當日 > st_date 且持有部位,若回撤超過設定的損失(MDD > loss),就關閉策略(strategy = false)並且平倉所有部位。
策略從創新高之後拉回超過一定金額就停止交易,之後就不會再產生新的買賣訊號。長期使用程式交易者應該了解,每支策略都有它的壽命不可能永遠獲利,萬一有一天策略失效破了MDD,讓虧損鎖在一定的範圍 (為什麼策略會失效>>看這篇)