【実装】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()関数を利用して条件判定をしていますが、
複数銘柄選択で分足と日足のチャートを同時に表示させて
日足の値をとってくる方がきれいになりそうです。
【実装】値幅拡大ダブルスティック
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(現在足)であるか
という条件になっています。
