【実装】スリングショット
http://ameblo.jp/traderssystem/entry-10116514516.html
------------------------------------------------------
Input : entryPoint(10), fltrPoint(10);
//1日目、株価は過去2ヶ月間の高値を更新
If High[1] == Highest(High, 40) and
//2日目の安値は1日目の安値を少なくともNポイント下回る
Low[0] < Low[1] - fltrPoint Then {
//2日目、3日目に1日目の高値のNポイント上で逆指し買い
Buy("SW5601新規買", AtStop, High[0] + entryPoint);
}
//損切りは買値の2ポイント下
ExitLong("SW5601買決済", OnClose);
------------------------------------------------------
3日目のみの注文となっています。
アイデアを忠実に実現しようとしたら
下記のような分足ベースのロジックに変える必要がありそうです。
2日目
DayLow(0) < DayLow(1) - fltrPoint
のとき発注。
【実装】ブーマーズ
http://ameblo.jp/traderssystem/entry-10116513998.html
--------------------------------------------------------
Input : entryPoint(10), adxPeriod(14), adxPoint(30), diPeriod(10);
//ADXが30以上
If ADX(adxPeriod)[2] >= adxPoint and
//+DI>-DI
Diplus(diPeriod)[2] > DiMinus(diPeriod)[2] and
//2日目ははらみ足
High[2] > High[1] and Low[2] < Low[1] and
//3日目もはらみ足
High[1] > High[0] and Low[1] < Low[0] Then {
//4日目に3日目の高値からNポイント上で逆指し買い
Buy("SW5501新規買", AtStop, High[0] + entryPoint);
}
//損切りは3日目の安値からNポイント下
ExitLong("SW5501買決済", OnClose);
--------------------------------------------------------
引けでの決済としていますが、アイデアどおりならば
3日目の安値を変数に格納しておいてAtStop注文を出すような
形になると思います。
【実装】ジャック・イン・ザ・ボックス
http://ameblo.jp/traderssystem/entry-10116513482.html
------------------------------------------------------------
Input : entryPoint(10), highPeriod(60), rangePeriod(10);
//株価は過去60日間の高値を更新
If High[1] == Highest(High[1], highPeriod) and
//当日の値幅は過去9日間で最大
//(ここまで拡大ブレイクアウトの考え方)
NthHighestBar(1, Range[1], rangePeriod) == 1 and
//翌日ははらみ足(前日高値>当日高値 かつ 前日安値<当日安値)
High[1] > High[0] and Low[1] < Low[0] Then {
//はらみ足の翌日、拡大ブレイクアウトした日の高値からNポイント上で逆指し買い
Buy("SW5401新規買", AtStop, High[0] + entryPoint);
}
//損切りは買値の1ポイント下
//強く引けるならば少なくともポジションの半分を持ち越す → どう実装するか!
ExitLong("SW5401買決済", OnClose);
------------------------------------------------------------
実運用するときは当面1枚で取引を行おうと思っているので
「//強く引けるならば少なくともポジションの半分を持ち越す」
の部分は実装していません。
はらみ足という用語がありますが、
「前日高値>当日高値 かつ 前日安値<当日安値」
とおきかえれば難しくはないと思います。
DVD 岩本祐介さん
- DVD 日経225先物デイトレード戦略のアイディア・検証・改良/岩本祐介
- ¥5,040
- Amazon.co.jp
GAPアップしたとき、GAPダウンしたときのエントリー方法
レンジブレイクアウトと曜日によるフィルター
日経225とTOPIX先物の関連性
などについて語っています。
曜日フィルターについては自作ソースで試してみようと思いました。
【実装】180
http://ameblo.jp/traderssystem/entry-10116512754.html
----------------------------------------------------
Input : entryPoint(10), profitPrice(50), lssPoint(10),
rangePrcnt1(0.25), rangePrcnt2(0.75),
shortPeriod(10), longPeriod(50);
//1日目、株価はその日の値幅の25%以下で終了
If Close[1] <= Low[1] + Range[1] * rangePrcnt1 and
//2日目、株価はその日の値幅の75%以上で終了
Close[0] >= Low[1] + Range[1] * rangePrcnt2 and
//2日目の終値は10日移動平均、50日移動平均を上回る
Close[0] >= Ma(Close, shortPeriod) and
Close[0] >= Ma(Close, longPeriod) Then {
//3日目に2日目高値のNポイント上で逆指し買い
Buy("SW5301新規買", AtStop, High[0] + entryPoint);
}
//損切りは買値の1ポイント下
//ExitShort("SW5301売決済_損切", AtStop, EntryPrice - lssPoint);
//トレーリングストップを利用(日足で使うときは注意が必要)
//SetStopProfittarget(profitPrice, PointStop);
ExitLong("SW5301買決済", OnClose);
----------------------------------------------------
損切り、トレーリングストップをコメントアウトして大引け決済としています。
検証するときはいろいろ試してみる必要があると思います。
【実装】拡大ピボット
http://ameblo.jp/traderssystem/entry-10116512108.html
---------------------------------------------------------------
Input : entryPoint(10), profitPrice(50), lssPoint(10), fltrPoint(100);
//本日値幅が過去9日間の値幅よりも大きい
If NthHighestBar(1, Range, 10) == 0 and
//昨日または本日、株価はその50日移動平均線と同じか下回っている
(Close[0] <= Ma(Close, 50) or Close[1] <= Ma(Close[1], 50)) and
//株価は急上昇 → どう定義するか!
Close[0] >= Close[1] + fltrPoint Then {
//明日、今日の高値のNポイント上で逆指し買い
Buy("SW5201新規買", AtStop, High[0] + entryPoint);
}
//損切りは買値の1ポイント下
ExitLong("SW5201買決済_損切", AtStop, EntryPrice - lssPoint);
//トレーリングストップを利用(日足で使うときは注意が必要)
SetStopProfittarget(profitPrice, PointStop);
---------------------------------------------------------------
アイデアではトレーリングストップを利用していますが、
ここでは利益確定の決済条件を使っています
株価の急上昇という考えに対しては
前日比XX円プラスという形で変数化しています。
未来の価格?
TradeStationのEasyLanguageで
Open of tommorow というのがあるのですが、どう処理されるのでしょうか?
(使用例)
stb = open of tommorrow + 0.5 * (hige - low);
TradeStadiumのYesLanguageではどう実行したらいいでしょうか?
ご存知の方がいましたらご指導ください。
【実装】SlowD関数
SlowD()関数を実装してみました。
アイデアは
http://www.investechno.com/et/help/shihyou/techoff/B19.htm
http://www.investechno.com/et/help/shihyou/techoff/B18.htm
を参考にしています。
----------------------------------------------------
Input : period1(Numeric), period2(Numeric), period3(Numeric);
SlowD = Ma(SlowK(period1, period2), period3);
----------------------------------------------------
SlowK()関数の単純移動平均を算出しています。
----------------------------------------------------
Input : Period(NumericSimple), Period1(NumericSimple);
SlowK = FastD(Period, Period1);
----------------------------------------------------
SlowK()関数です
FastD()関数の結果を返しています。
----------------------------------------------------
Input : Period(NumericSimple), Period1(NumericSimple);
FastD = ema(FastK(Period), Period1);
----------------------------------------------------
FastD()関数です
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;
----------------------------------------------------
FastK()関数です
(終値-指定期間の最安値)÷(指定期間の最高値-指定期間の最安値)×100
を結果として返しています。
【実装】King Keltner Program
- 勝利の売買システム (ウィザードブックシリーズ 113)/ジョン・R・ヒル
- ¥8,190
- Amazon.co.jp
Easy→Yesへの変換です。
-----------------------------------------------
Input : avgLength(40), atrLength(40);
Var : upBand(0), dnBand(0), liquidPoint(0), movAvgVal(0);
movAvgVal = Average((High + Low + Close) / 3, avgLength);
upBand = movAvgVal + ATR(atrLength);
dnBand = movAvgVal - ATR(atrLength);
If movAvgVal[0] > movAvgVal[1] Then {
Buy("新規買", AtStop, upBand);
}
If movAvgVal[0] < movAvgVal[1] Then {
Sell("新規売", AtStop, dnBand);
}
liquidPoint = movAvgVal;
If MarketPosition == 1 Then {
ExitLong("買決済", AtStop, liquidPoint);
}
If MarketPosition == -1 Then {
ExitShort("売決済", AtStop, liquidPoint);
}
-----------------------------------------------
ATR()関数でAverageTrueRangeを出しているくらいで
後は難しくないと思います。
【実装】Bollinger Bandit
- 勝利の売買システム (ウィザードブックシリーズ 113)/ジョン・R・ヒル
- ¥8,190
- Amazon.co.jp
に記載されているEasyLanguageコードの変換です。
---------------------------------------------
Var : upBand(0), dnBand(10), liqDays(50);
upBand = BollBandUp(50, 1.25);
dnBand = BollBandDown(50, 1.25);
If MarketPosition <> 1 Then {
Buy("新規買", AtStop, upBand);
}
If MarketPosition <> -1 Then {
Sell("新規売", AtStop, dnBand);
}
If MarketPosition == 0 Then {
liqDays = 50;
}
If MarketPosition <> 0 Then {
liqDays = liqDays - 1;
liqDays = MaxList(liqDays, 10);
}
If MarketPosition == 1 and
Average(Close, liqDays) < upBand Then {
ExitLong("買決済", AtStop, Average(Close, liqDays));
}
If MarketPosition == -1 and
Average(Close, liqDays) > dnBand Then {
ExitShort("売決済", AtStop, Average(Close, liqDays));
}
---------------------------------------------
EasyLanguageでは、BollingerBand()関数というのがあるようですが、
YesLanguageにはないので、BollBandUp()関数、BollBandDown()関数で代用しています。
(機能としては同じだと思っています)
決済はX日移動平均の逆指値ですが、
X日がliqDays(上記のソースでは50日)から始まって
10日まで徐々に短くなってきます。
約定した当日は50日、翌日は49日、2日後は48日・・・
と徐々に狭まってくるイメージです。
---------------------------------------------
//BollBandUp()関数
Input : Period(Numeric), D(Numeric);
BollBandUp = ma(C, Period) + (D * std(C, Period));
---------------------------------------------
---------------------------------------------
//BollBandDown()関数
Input : Period(Numeric), D(Numeric);
BollBandDown = ma(C, Period) - (D * std(C, Period));
---------------------------------------------
指定期間の単純移動平均に指定期間の標準偏差×掛目
を加減算しています。