指標を算出するための準備
作った戦略(システム)のバックテストを行うためには、TradeStationにあるバックテストの結果「Performance Report」では不足なため、自分で指標を算出する必要がある。
そのため戦略のプログラムの最後にコードを追加する。
これによりバックテスト後にCSVファイルとして結果が出力される。
さらにこの結果をExcelに取り込み、さらなる指標を算出する。
繰り返しの掲載になるが、
指標のための追加コードは本書61,62ページにあり、ここではすこし変更してある。
指標算出コード1
{ *********** calculate performance ****************** }
Vars:
FName(“”), TotTr(0), Prof(0), CumProf(1),
ETop(1), TopBar(0), TopInt(0), BotBar(0), BotInt(0),
EBot(1), EDraw(1), TradeStr2(“”);
if CurrentBar = 1 then begin
FName = “C:\Temp\” + LeftStr(GetSymbolName,2) + “.csv”;
FileDelete(FName);
TradeStr2 = “E Date” + “,” + “Position” + “,” + “E Price” + “,” +
”X Date” + “,” + “X Price” + “,” + “Profit” + “,” +
”Cum.prof.” + “,” + “E-Top” + “,” + “E-Bottom” + “,” +
”Flat time” + “,” + “Run up” + “,” + “Drawdown” + “,” +
”PointValue” + NewLine;
FileAppend(FName,TradeStr2);
end;
TotTr = TotalTrades;
if TotTr > TotTr[1] then begin
Prof = 1 + PositionProfit(1)/(EntryPrice(1)*BigPointValue);
CumProf = CumProf * Prof;
ETop = MaxList(ETop,CumProf);
if ETop > ETop[1] then begin
TopBar = CurrentBar;
EBot = Etop;
end;
EBot = MinList(EBot,CumProf);
if EBot < EBot[1] then BotBar = CurrentBar;
TopInt = CurrentBar – TopBar;
BotInt = CurrentBar – BotBar;
EDraw = CumProf / Etop;
TradeStr2 = NumToStr(EntryDate(1),0) + "," +
NumToStr(MarketPosition(1),0) + "," +
NumToStr(EntryPrice(1),2) + "," +
NumToStr(ExitDate(1),0) + "," +
NumToStr(ExitPrice(1),2) + "," +
NumToStr((Prof - 1)*100,2) + "," +
NumToStr((CumProf - 1)*100,2) + "," +
NumToStr((ETop - 1)*100,2) + "," +
NumToStr((EBot - 1)*100,2) + "," +
NumToStr(TopInt,0) + "," +
NumToStr(BotInt,0) + "," +
NumToStr((EDraw - 1)*100,2) + "," +
NumToStr(PointValue,2) + NewLine;
FileAppend(FName,TradeStr2);
end;
{ ********************************************* }
豆知識
TotalTradesとは過去におこなったトレードの回数の合計
PositionProfit(1)とは(現在もっているポジションではなく)1つ前のポジションの損益の金額
EntryPrice(1)とは(現在もっているポジションではなく)1つ前のポジションのEntryした時のプライス
BigPointValueとはチャート上の1ポイント分のプライスをドル(金額)に換算した値。
if TotTr > TotTr[1] then begin
Prof = 1 + PositionProfit(1)/(EntryPrice(1)*BigPointValue);
これは、新たなトレードがはじまった時点で、「前回のトレードが決済したときの金額」を「前回のトレードがEntryした時の金額」で割った値、を計算している。
しかしこの後指標”Profit”としては(Profit – 1)*100の計算値を出力している。
これは
PositionProfit(1)/(EntryPrice(1)*BigPointValue) * 100%
ということであり、「前回のトレードの損益の金額をEntryした時の金額で割りパーセントに換算したもの」を意味する。
この指標算出コード1 をstrategyのEasyLanguageプログラムの最後に追加することでバックテスト時にCドライブのTempフォルダ内にExcel対応のファイルができる。T
empフォルダがない場合は自分でフォルダを作る。
そうでないとExcel対応のファイルができない。
もちろんTempフォルダ以外に出力することもできる。
次に、できた(出力された)ファイルをExcelまたはExcel互換ソフトで開く。
今回はフリーウェア”OpenOffice”のCalcを使って作業を行った。
本書62-65ページの説明をもとに、各指標の計算式をセルに入力していき表2.1と同じものを作成する。
本書の説明と表2.1と一致しない表現がいくつかあるので注意が必要だ。