NetProfit的意思是淨利。先來看兩張圖
該策略回測從2008年11月開始。
上圖中的Total Net Profit 就是NetProfit的紀錄結果
這張圖中可以看到,在5K中,每一根K線都有NetProfit。
而且NetProfit的計算是從K線圖中的第一根K線開始
然後有交易,NetProfit才會開始累積,不然就維持0。
好~ 廢話結束。用策略解釋比較清楚~
宣告兩變數,Net和Diff。
Net:把開盤時的NetProfit儲存起來
Diff:計算K線的淨利與Net的差
現在有一個15k策略,交易時間是上午9點到下午1點之間
突破前10根K線高點作多,跌破前10根K線低點作空。
30點停損,50點停利,每天下午1點半平倉。
程式碼如下:
vars:net(0),diff(0);
if date[0] < > date[1] then net=netprofit;
diff=netprofit-net;
print(date,time,net,netprofit,diff);
if true then begin
{*******************************************************}
if time >= 0900 and 1300 >= time then begin
if close cross over Highest(high[1],10) then
buy ("Buy") next bar at market;
if close cross under Lowest(Low[1],10) then
sell ("Sell") next bar at market;
end;
{*******************************************************}
end;
{********************Day End Exit********************}
if marketposition = 1 and time = 1330 then
exitlong("ExitB") next bar at market;
if marketposition = -1 and time = 1330 then
exitshort("ExitS") next bar at market;
{********************Exit********************}
if marketposition = 1 then begin
exitlong("StopB") next bar at entryprice(0)-30 stop;
exitlong("EarnB") next bar at entryprice(0)+50 Limit;
end;
if marketposition = -1 then begin
exitshort("StopS") next bar at entryprice(0)+30 stop;
exitshort("EarnS") next bar at entryprice(0)-50 Limit;
end;
這只是一個隨便想策略,別亂用!!!賠錢別找我算帳。
如圖,此策略在2008.11.18號出現3筆空單。
分別是
0915空,1000停損;1100空,1130停損;1245空,1315停損
3連巴,還真慘~
回測成本2000,停損30點要在加上10點成本
所以回測表上顯示是損失8000,6000停損+2000成本。
記得剛剛在程式碼中有加入一段 print(date,time,net,netprofit,diff)嗎??
策略verify結束後會顯示這些值,分別表示
K線日期,K線時間,Net值,NetProfit值,Diff值。如下圖
2008.11.18開盤時,Net為-44800,也就是在這一天Net都是-44800
在0915下空單,1000停損,損失8000,淨利變成-52800
而Diff由0變成-8000
同理,之後的兩筆停損,NetProfit會變成-60800和-68800
Diff也會變成-16000和-24000。
2008.11.18三連巴結束。NetProfit(累積淨利)為-68800
2008.11.19來到。這時變數Net已經變成-68800了
而NetProfit也是-68800,所以Diff的值為0。
除非當天有交易,讓NetProfit改變,Diff才會有變化,不然會一直為0。
所以我們可以利用Diff來計算當天損益。
現在把先前策略中的
if true then begin 改成
if Diff > -6000 then begin 看看有什麼變化。
從上面3張圖可以看到,本來的3筆交易變成了1筆。
之後的兩筆都不見了!!!
因為加了Diff大於負6000這個判斷。
只要這個判斷不成立就不會在進場。
而第一筆交易已經讓Diff由0變成-8000
Diff也從大於-6000變成小於-6000,所以不會進場第二次。
不過這方法會把手續費考慮進去
所以要注意一下。