勝てば官軍! ~ 日経225システムトレード編 -40ページ目

【実装】Moving Average Cross Over with p and ts

【実装】ADXギャッパー

http://ameblo.jp/traderssystem/entry-10117444521.html


-------------------------------------------------------

Input : adxPeriod(12), diPeriod(12), adxValue(30), profitPrice(50);


//12期間のADXと+DI/-DIを利用
//ADXは30以上
//買いの場合、+DI>-DI
//売りの場合、-DI>+DI

If ADX(adxPeriod) >= adxValue Then {

If Diplus(diPeriod) > DiMinus(diPeriod) Then {


//当日の寄り付きは前日の安値以下で窓を開ける
If Open[0] < Low[1] Then {

//前日安値付近で逆指し買い
Buy("SW4401新規買", AtStop, Low[1]);
}
}


If Diplus(diPeriod) < DiMinus(diPeriod) Then {
If Open[0] > High[1] Then {
Sell("SW4401新規売", AtStop, High[1]);
}
}
}


//当日安値で損切り
ExitLong("SW4401買決済", AtStop, Low[0]);
ExitShort("SW4401売決済", AtStop, High[0]);


SetStopProfittarget(profitPrice, PointStop);

-------------------------------------------------------


元のアイデアではドテン売買のようですが、

利確の決済も加えています。


【実装】聖杯

http://ameblo.jp/traderssystem/entry-10117444098.html


--------------------------------------------------------------------------

Input : adxPeriod(14), adxValue(30), emaPeriod(20), lsctPrice(10), prftPrice(10);


//14期間のADXが30以上になり、上昇している
If ADX(adxPeriod) > adxValue and ADX(adxPeriod)[0] > ADX(adxPeriod)[1] Then {
Value1 = 1;
}


If ADX(adxPeriod) <= adxValue Then {
Value1 = 0;
}


//20期間の指数移動平均線に向かって押しが入るところを探す
//値段が20期間の指数移動平均線に触れたとき、逆指値の買い注文を前日高値に設定
If Value1 == 1 and
Close[0] < Ema(Close, emaPeriod) Then {

Buy("SW4301新規買", AtStop, High[1]);
}


//直近の押し目底で損切り → ?
ExitLong("SW4301買決済_損切り", AtStop, Lowest(Low, lsctPrice));


//直近の高値で決済
ExitLong("SW4301買決済", AtLimit, Highest(High, prftPrice));

--------------------------------------------------------------------------


「20期間の指数移動平均線に向かって押しが入る」

というアイデアを終値が20日指数移動平均より下と解釈して実装しましたが、

変数を加えてプラスマイナスXX円としても面白いかもしれません。


Value1はADXの条件を満たすかどうかのフラグになっています。


国会図書館

最近は2週に1度くらいのペースで

土曜日に国会図書館に行っている気がします。


昨日チェックした本


キャズム/ジェフリー・ムーア

¥2,100
Amazon.co.jp

戦略不全の因果―1013社の明暗はどこで分かれたのか/三品 和広
¥3,360
Amazon.co.jp

カリスマ・ファンド・マネージャーの投資極意/アンソニー・ボルトン
¥1,785
Amazon.co.jp

コンサルティングの基本/神川 貴実彦
¥1,575
Amazon.co.jp

トレーディングエッジ入門―利益を増やしてドローダウンを減らす方法 [ウィザードブック138] (ウィザードブックシリーズ 138)/ボー・ヨーダー
¥3,990
Amazon.co.jp

ほとんど目次だけで今は読む必要なしと判断した本です。



【実装】2期間変化率

http://ameblo.jp/traderssystem/entry-10117439678.html


--------------------------------------------------------

//短期ピボット = 本日終値 - 2日前終値 + 前日終値
//売りシグナル中に本日終値>短期ピボットのとき、大引けで買い
//買いシグナル中に本日終値<短期ピボットのとき、大引けで売り

Value1 = Close[0] - Close[2] + Close[1];


If Close[0] > Value1 Then {
Buy("SW4501新規買", OnClose);
}


If Close[0] < Value1 Then {
Sell("SW4501新規売", OnClose);
}

--------------------------------------------------------


説明することは特にありません。

AtMarketなら? 短期ピボットの定義を変えてみたら?

などいろいろ試せるとおもいます

【実装】モメンタム・ピンボール

http://ameblo.jp/traderssystem/entry-10117438472.html


-----------------------------------------------------------------

Input : rsiPeriod(3);


//1日目、3日間のRSIが30を下回る
//2日目、寄りから1時間の変動幅における高値を逆指し買い
//寄りから1時間の変動幅における安値で損切り
//3日目、2日目高値を超えたところで決済
//3日目の大引けで手仕舞い

Value1 = TimeHigh(090000, 095959);
Value2 = TimeLow(090000, 095959);


if Data2(RSI(rsiPeriod)[1]) <= 30 and
Data1(sTime) >= 100000 and
Data1(sTime) <= 140000 Then {

Buy("DT1501新規買", AtStop, Value1);
}


If MarketPosition == 1 Then {
ExitLong("DT1501買決済_損切り", AtStop, Value2);
}

If Data2(BarsSinceEntry()) == 1 Then {
ExitLong("DT1501買決済_利確", AtLimit, DayHigh(1));
SetStopEndofday(151000);
}

-----------------------------------------------------------------


Data1(分足)とData2(日足)を使って実装しています。

複数チャートを使う場合はData1と明記した方が後でわかりやすいと思います。



【実装】タートル・スープ・プラス・ワン

http://ameblo.jp/traderssystem/entry-10117437225.html


-----------------------------------------------------------

Input : longPeriod(20), shortPeriod(3), profitPrice(50);
Var : lowValue(999999), highValue(0);


//マーケットが過去20日間の最安値をつける
//直近20本の足における前回の最安値は少なくとも3営業日より前
//その新安値での引け値は前回の過去20本の足での安値と同値以下
If Low[0] == Lowest(Low, longPeriod) Then {
lowValue = Low[0];


If Lowest(Low, shortPeriod)[1] > Lowest(Low, longPeriod)[1] and
lowValue[0] <= lowValue[1] Then {

//次の日、前回の過去20日間の最安値で逆指し買い
Buy("SW4601新規買", AtStop, lowValue[1]);
}
}

//1日目か2日目の低い方の安値の1ティック下に損切り注文
ExitLong("SW4601買決済", AtStop, Low[0]);


If High[0] == Highest(Low, longPeriod) Then {
highValue = High[0];

If Highest(High, shortPeriod)[1] < Highest(High, longPeriod)[1] and
highValue[0] >= highValue[1] Then {

Sell("SW4601新規売", AtStop, highValue[1]);
}
}

ExitShort("SW4601売決済", AtStop, High[0]);

SetStopProfittarget(profitPrice, PointStop);

-----------------------------------------------------------


一応こんな感じで実装してみました。


【実装】80-20's

http://ameblo.jp/traderssystem/entry-10117437623.html


-----------------------------------------------------------------

Input : fltrPrice(15), mrktRange(0.8), profitPrice(50);


//前日、マーケットはその日の変動幅の上部20%の位置以上で寄り付き、
//変動幅の下部20%以下の位置で引ける
If DayOpen(1) >= DayLow(1) + (DayHigh(1) - DayLow(1)) * mrktRange and
DayClose(1) <= DayLow(1) + (DayHigh(1) - DayLow(1)) * (1 - mrktRange) and

//当日、マーケットは前日安値より少なくとも5~15ティック下回って売買
DayOpen <= DayLow(1) - fltrPrice Then {


//前日安値が逆指値となる買い注文
Buy("DT1601新規買", AtStop, DayLow[1]);
}


//当日の最安値付近に損切り
ExitLong("DT1601買決済", AtStop, DayLow[0]);


If DayOpen(1) <= DayLow(1) + (DayHigh(1) - DayLow(1)) * (1 - mrktRange) and
DayClose(1) >= DayLow(1) + (DayHigh(1) - DayLow(1)) * mrktRange and
DayOpen >= DayHigh(1) + fltrPrice Then {
Sell("DT1601新規売", AtStop, DayHigh[1]);
}


ExitShort("DT1601売決済", AtStop, DayHigh[0]);

SetStopProfittarget(profitPrice, PointStop);

-----------------------------------------------------------------


DayXX()関数を利用して条件判定をしていますが、

複数銘柄選択で分足と日足のチャートを同時に表示させて

日足の値をとってくる方がきれいになりそうです。


【実装】Donchian Break Out with p and ts

【実装】値幅拡大ダブルスティック

http://ameblo.jp/traderssystem/entry-10116812796.html


----------------------------------------------------------

Input : entryPoint(10), lssPoint(10), profitPrice(50),
highPeriod(60), rangePeriod(10);


//1日目、過去60日間の高値を更新
If High[1] == Highest(High[1], highPeriod) and

//1日目の値幅が過去10日間で少なくとも3番以内に入る大きさ
(NthHighestBar(1, Range()[1], rangePeriod) == 0 or
NthHighestBar(2, Range()[1], rangePeriod) == 0 or
NthHighestBar(3, Range()[1], rangePeriod) == 0) and

//2日目、寄付きよりも下で引ける
Close[0] < Open[0] and


//2日目の値幅が過去10日間で少なくとも3番以内に入る大きさ
(NthHighestBar(1, Range()[0], rangePeriod) == 0 or
NthHighestBar(2, Range()[0], rangePeriod) == 0 or
NthHighestBar(3, Range()[0], rangePeriod) == 0) Then {


//3日目、2日目の安値からNポイント下で逆指し売り
Sell("SW4801新規売", AtStop, Low[0] - entryPoint);
}


//損切りは買値の1ポイント上
ExitShort("SW4801売決済_損切", AtStop, EntryPrice + lssPoint);


//トレーリングストップ
SetStopProfittarget(profitPrice, PointStop);

----------------------------------------------------------


NthHighestBar()関数についてはトレードスタジアムのマニュアルに記載があります。


関 数 : NthHighestBar(Nth,value,Period)
※ Nth : 順位(1=一番目、2=二番目…)
※ value : 比較データや算式
※ Period : 期間


説 明 : Period 期間中、value 値の中で Nth 番目に大きい値の発生時点


ソースで確認すると

rangePeriodの期間中のRange()[1]の中で1番大きな値が0(現在足)であるか

という条件になっています。