売買判断の概要
相場の格言で言われる「週足に従い,日足に逆らえ」…
これは,長期トレンドには従う形でポジションを取るが,注文を入れるときは短期の足に逆らい,高値掴みを避けよ,ということだ.
まずは,この格言に従う形の売買判断ロジックを,お気に入りの8時間足で作ってみることにした.
考え方とコード
まず,肝となる”長期トレンド”は,8時間足120本分で計算した「移動最小二乗二次式近似値線」を使う.これは,単純移動平均に比べ,トレンド把握の遅れが少ないのが最大のメリットなので,気がついたら「トレンド変換していた!」という事態をある程度避けられる…ことを期待する.
発注タイミングは,「8時間足の動き(前回と今回の終値の動き)が,長期トレンドと逆行していること」とする.
また,いわゆるナンピンの積み増しも,ある程度の回数は許容する.
…文字にすると,たったこれだけのロジックだ…これをコードにしてみた.
とりあえず関数名は,OrderSettle_OldFushionedLogicの略として,OS_OFにした.
# ブログメモ用 # 長期トレンドに従いつつ,8時間足には逆らうヤーツ.一応,USD,EUR,GBP,AUD,NZD,CADすべてで,2005~2020年トータルで黒字. # 統一ラベル化 def OS_OF(InputData_DF, jNow,Posi_pre,Vp_pre, Amount): #jNowは,売買判断に使う最新足の位置を決定.何もなきゃ0.ひとつ前の足なら1 Settle = 0 Order = 0 #終値データ.jNow=0なら,最新の足データを参照.以降,数が増えるごとに,その分だけ古い足データを参照 Vc0 = InputData_DF.at[jNow+0, "Vc"] Vc1 = InputData_DF.at[jNow+1, "Vc"] # 長期トレンドデータ参照.この場合は,移動最小二乗二次式近似値線.これの差分(delta)と,値そのものを参照 delta0_LS2_L = InputData_DF.at[jNow+0, "LS2_120"] - InputData_DF.at[jNow+1, "LS2_120"] delta1_LS2_L = InputData_DF.at[jNow+1, "LS2_120"] - InputData_DF.at[jNow+2, "LS2_120"] LS2_L = InputData_DF.at[jNow+0, "LS2_120"] #トレンド判断のためのスレッシュ Thre_LS2_L = 0.05 # 発注可能回数 MaxNamPin=5 # 損キリ設定(円) Loss=0.8 #トレンド判断 Trend0_L = 0 if delta0_LS2_L > Thre_LS2_L: Trend0_L = 1 if delta0_LS2_L < -Thre_LS2_L: Trend0_L = -1 MaxAmount = (MaxNamPin - 1) * Amount # 買い注文ロジック if Posi_pre <=0 : if Trend0_L==1 and Vc0-Vc1<0 and Vc0-LS2_L<0.5: Order = Amount elif Posi_pre <=MaxAmount: if Vc0<Vp_pre-0.2: Order = Amount # 売り注文ロジック if Posi_pre >= 0: if Trend0_L==-1 and Vc0-Vc1>0 and Vc0-LS2_L>-0.5: Order = -Amount elif Posi_pre >= -MaxAmount: if Vc0 > Vp_pre+0.2: Order = -Amount # 買い玉を売り決済するロジック if Posi_pre > 0: if Trend0_L==-1: Settle=-1 if Vc0-Vp_pre<-Loss:#損切り Settle=-1 # 売り玉を買い決済するロジック if Posi_pre < 0: if Trend0_L==1: Settle = 1 if Vc0-Vp_pre>Loss:#損切り Settle=1 return (Settle, Order) # 決済は±1か0で出力,新規注文は±通貨量かoで出力
バックテスト
2005~2020年のデータを使い,バックテストをしてみた.通貨ペアはUSD_JPY,初回口座残高は50,000円,取引通貨量は1,000,スプレッドは0.03円(3銭)としてみた.結果は…思ったほど悪くない.基本的に,たまーに大きく儲けて,あとはちょいちょい損失を重ねて…長期的には何とか黒字…みたいな感じか.
ちなみに,EUR_JPY,GBP_JPY,AUD_JPY,NZD_JPY,CAD_JPYいずれも利益を出すことを確認した.黒字は嬉しいけど,大事なのは「損しないロジックである」こと.
まずはこのロジックをベースとして,より良いロジックがないか,探索を続けたい.
コメント