【検証】マーケットプロファイル2-1
先ほど実装した結果 を検証してみました。
3つのアイデアを加えましたがいろいろ組み合わせて試してみました
スリッページについて前回は5円ずつとしていましたが、
スリッページが発生しない場合や有利な結果となる場合も考えられるので、
今後は1円で検証していきたいと思います。
(とてもよさそうなアイデアが出てきたら少しきつめにするかもしれません)
1.30円条件のみ
2.トレーリングストップのみ
(続きます)
【実装】マーケットプロファイル2
先ほどのアイデア を実装してみました。
--------------------------------------------------------------------
//090000-095959までの高値、安値を算出
If Time == 100000 Then {
Value1 = TimeHighEx(090000, 095959);
Value2 = TimeLowEx(090000, 095959);
Value3 = 0;
//MessageLog("%.2f", Value1);
}
//100000以降に高値を30円上回ったら買い
If Time > 100000 and CrossUp(Close,Value1 + 30) and Value3 == 0 Then {
Buy("買新規");
Value3 = 1;
}
//100000以降に安値を30円下回ったら売り
If Time > 100000 and CrossDown(Close,Value2 - 30) and Value3 == 0 Then {
Sell("売新規");
Value3 = 1;
}
//トレーリングストップ
SetSTopTrailing(40, 100, PointStop, 0);
//ストップロス
SetStopLoss(50, PointStop);
//150500に決済
SetStopEndofday(150500);
--------------------------------------------------------------------
変更点
・IF文のVALUE1, VALUE2に30円+-を加えました。
・トレーリングストップ、ストップロストレスタ 画面から設定できますが
プログラムの勉強のために実装しています。
最適化するために変数にしてもいいかもしれません。
【アイデア】マーケットプロファイル2
昨日の検証 を受けてカスタマイズしてみようと思います。
・トレーリングストップの設定
勝率アップするはず、1回あたりの利益は減るかも
・ストップロスの設定
勝率下がるはず、1回あたりの損失は減るはず
・エントリーは高値・安値を30円更新したらに変更
だまし減るかも
【検証】マーケットプロファイル1
先ほどの記事の検証結果です。
※検証は以下のルールで行っています。
・手数料はトレイダーズ証券 の体系に合わせて105円ずつ、
・スリッページは5円ずつ
・5分足を使用
利益は出ていますが売建からのみで勝率も低いです。
収益曲線もこれでは運用できません。
素性は悪くなさそう(人からのアイデア)なので
いろいろと加えていきたいと思います。
【実装】マーケットプロファイル1
以前書いたアイデア を実装してみました
-----------------------------------------------------
//090000-095959までの高値、安値を算出
If Time == 100000 Then {
Value1 = TimeHighEx(090000, 095959);
Value2 = TimeLowEx(090000, 095959);
}
//100000以降に高値を上回ったら買い
If Time > 100000 and CrossUp(Close,Value1) Then {
Buy("買新規");
}
//100000以降に安値を下回ったら売り
If Time > 100000 and CrossDown(Close,Value2) Then {
Sell("売新規");
}
//150500に決済
SetStopEndofday(150500);
-----------------------------------------------------
CrossUPについてはトレスタ のマニュアルに下記のように記載されています
関 数 : CrossUP(A,B)
※ A : 判断対象
※ B : 比較対象
説 明 : 上向き突破の可否判断
参 照 : 前足では A が B より小さいか同じだったが、現在足では A が B より大きい。
上向き突破の場合は True(1)、 そうではない場合は False(0)値をリターン
-----------------------------------------------------
【実装】時刻指定売買3
検証に値しないソースです
-----------------------------------------------------
Input : MAKE(5), PLUS(2);
//変数宣言
Var : flgBaibai(1), //flgBaibaiの意味:-1→売り、1→買い
ProfitLossToday(0),
ProfitLossYesterday(0),
maisu(0),
RenpaiKaisu(0);
//時刻が9時0分0秒で売買フラグが買いならば買い
if Time == 090000 and flgBaibai == 1 Then {
Buy("TEST1",OnClose,DEF,maisu);
}
//30円マイナスで損きり
SetStopLoss(30, PointStop);
//時刻が14時59分0秒に当日決済
SetStopEndofday(145900);
if Time == 150000 then {
ProfitLossToday = NetProfit() - ProfitLossYesterday;
ProfitLossYesterday = NetProfit();
if ProfitLossToday < 0 then {
RenpaiKaisu = RenpaiKaisu + 1;
} else {
maisu = 1;
RenpaiKaisu = 0;
}
if RenpaiKaisu >= MAKE Then {
maisu = maisu * PLUS;
}
}
-----------------------------------------------------
ポイント
・当日損益の出し方が判らなかったので
NetProfit()関数を用いました。
前日の成績(初日は0)を使い、
当日損益 = 当日までの全損益(NetProfit) - 前日損益
で計算しています。
・当日損益が0未満を負けとして、連敗回数を1加算
連敗回数が指定回数(最適化可能)を超えると、売買枚数をX倍(これも最適化可能)
にするようにしています。
【実装】時刻指定売買2
先日書いたアイデア を実装してみました。
-----------------------------------------------------
//変数宣言
Var : flgBaibai(1); //flgBaibaiの意味:-1→売り、1→買い
//時刻が9時0分0秒で売買フラグが買いならば買い
if Time == 090000 and flgBaibai == 1 Then {
Buy("TEST1");
}
//時刻が9時0分0秒で売買フラグが売りならば売り
if Time == 090000 and flgBaibai == -1 Then {
Sell("TEST2");
}
//30円マイナスで損きり
SetStopLoss(30, PointStop);
//時刻が15時05分0秒に当日決済
SetStopEndofday(150500);
//売買の向きを逆にする
if Time == 150000 then {
flgBaibai = flgBaibai * -1;
MessageLog("%.2f",flgBaibai);
}
-----------------------------------------------------
機能は実現できていますがちょっとソースが汚いかもしれません。
ポイント
・損きりの場合、SetStopLoss()メソッドを利用する
・ある時間を持って(ここでは150000としています。090000のIF文に加えると
うまくいきませんでした)売買フラグの方向を逆にする。
値を1(買い)、2(売り)とするとコード数が多くなるのでこういう形にしてみました。
本を読む本
- 前の記事を書いていて、
- 私の現在の投資本との関わりあい方は
- 「システムトレード可能なアイデアを収集する」こと
- のみに特化して書いていると思い返していたところ
- こういう本を最近読んでいたことを思い出したので紹介しておきます。
- 本を読む本 (講談社学術文庫)/モーティマー・J. アドラー
- ¥945
- Amazon.co.jp
若いうち(特に学生のうち)に読んでおくと有益だと思います。

















