【実装】20日モメンタム
http://ameblo.jp/traderssystem/entry-10102736339.html
--------------------------------------
Input : DayRange(20);
If Close[0] > Close[DayRange] then {
Buy("買", Atmarket);
}
If Close[0] < Close[DayRange] then {
Sell("売", Atmarket);
}
--------------------------------------
20日モメンタムとしていますが、
Close[0] > Close[20] とせずに
Input変数 DayRange を入れることで
最適化を計れるようにしています。
後は簡単ですね。
【実装】ブレイクアウト+RSI
http://ameblo.jp/traderssystem/entry-10102735682.html
-------------------------------------------------
Input : DayRange(50), BuyPercent(70), SellPercent(30);
MessageLog("%.0f", NthHighest(1, Close, DayRange));
MessageLog("%.0f", Close[0]);
If Close[0] == NthHighest(1, Close, DayRange) and
RSI(DayRange) > BuyPercent Then {
Buy("買", Atmarket);
}
If Close[0] == NthLowest(1, Close, DayRange) and
RSI(DayRange) < SellPercent Then {
Sell("売", Atmarket);
}
-------------------------------------------------
NthHighest()関数はマニュアルに記載があります。
DayRangeの期間のClose値の中で1番大きい値を返します。
改めて見直すとHighest(Close, DayRange)の方がシンプルでいいかと思います。
RSI()関数は
-------------------------------------------------
Input : Period(Numeric);
Var : value1(0), value2(0);
value1 = C - C[1];
if value1 > 0 Then
{
value2 = value1;
}
Else
{
value1 = 0;
value2 = C[1]-C;
}
RSI = AccumN(value1, Period) / AccumN(value2, Period) * 100;
-------------------------------------------------
となっています。
RSIの算出式を知っている人は
プログラミングに興味がなければ
あえてソースコードの中身をのぞく必要はないと思います。
【実装】10/40 移動平均交差
http://ameblo.jp/traderssystem/entry-10102734514.html
----------------------------------------------------------
Input : ShortDayRange(10), LongDayRange(40);
If CrossUp(Ma(C, ShortDayRange), Ma(C, LongDayRange)) then {
Buy("買", Atmarket);
}
If CrossDown(Ma(C, ShortDayRange), Ma(C, LongDayRange)) then {
Sell("売", Atmarket);
}
----------------------------------------------------------
特にコメントすることもありません。
CrossUp()
CrossDown()
Ma()
という基本的な関数の扱いだけ確認しておきましょう。
【実装】14日スロー%kストキャスティック
http://ameblo.jp/traderssystem/entry-10102746225.html
---------------------------------------------------------
Input : period_1(14), period_2(14), low_percent(25), high_percent(75);
If CrossUp(SlowK(period_1, period_2), low_percent) Then {
Buy("SW3201新規買", AtMarket);
}
If CrossDown(SlowK(period_1, period_2), high_percent) Then {
Sell("SW3201新規売", AtMarket);
}
---------------------------------------------------------
SlowK()関数以降のソースも一応載せておきます。
---------------------------------------------------------
SlowK()関数
Input : Period(NumericSimple), Period1(NumericSimple);
SlowK = FastD(Period, Period1);
---------------------------------------------------------
---------------------------------------------------------
FastD()関数
Input : Period(NumericSimple), Period1(NumericSimple);
FastD = ema(FastK(Period), Period1);
---------------------------------------------------------
---------------------------------------------------------
FastK()関数
Input : Period(NumericSimple);
Var : Value_Lowest(0), Value_Highest(0);
Value_Lowest = Lowest(L, Period);
Value_Highest = Highest(H, Period);
FastK = (Close - Value_Lowest) / (Value_Highest - Value_Lowest) * 100;
---------------------------------------------------------
これからの予定
明日からいよいよこれまで書いてきたアイデアの実装コードを公開していきたいと思います。
内容に間違い等あるかもしれませんが、そのときはご指摘お願いします。
これまでに何10本かロジックを実装していますが、
普段プログラムを書くのが仕事なのでそれほど難しいとは感じませんでした。
プログラミングの初心者の方がどのようなところに
難しさを感じてしまうのか判らないところがありますので、
ここがわかりにくいということがありましたら、
積極的にコメントお願いします。
【アイデア】HV&トビー・クラベル
(最終回です)
・本日、6日間ヒストリカルボラティリティ/100日間HV<=50%
・本日、ID/NR4(はらみ足&値幅最小)である
・本日高値の1ティック上に逆指し買い
・本日安値の1ティック下に逆指し売り
(ドテン)
・トレーリングストップによる利益確保
【アイデア】値幅収縮
・本日、ID/NR4を確認
ID=はらみ足
NR4=4日間で最も値幅が狭い
・本日高値の1ティック上に逆差し買い
・本日安値の1ティック下に逆差し売り
(ドテン)
・トレーリングストップ
・2日後に大引け成り行きで手仕舞い
【アイデア】3営業日以内に窓を埋める反転
・本日、下に窓を開けて、窓を埋めない
・次の3営業日にわたって、下に窓を開けた日の高値の1ティック上に逆指し買い
・窓が埋められたら、下に窓を開けた日の安値で損切り
・トレーリングストップ
【アイデア】鞭打ち
・本日、前日安値を下回って窓を開ける
・大引けは寄り付きより高く、その日の値幅の上部50%以内に入る
・大引け成り行き注文で買い
・明日、今日の終値を下回って寄り付くならば、即時に損切り
・トレーリングストップ
【アイデア】ADXギャッパー
・12期間のADXと+DI/-DIを利用
・ADXは30以上
・買いの場合、+DI>-DI
・売りの場合、-DI>+DI
・当日の寄り付きは前日の安値以下で窓を開ける
・前日安値付近で逆指し買い
・当日安値で損切り