KST指標とEMA指標に基づく取引戦略
概要
本戦略の核心は、KST指標とEMA移動平均線を組み合わせ、トレンドを判断し追随することです。KST指標がゴールデンクロスを形成し、かつ0未満のときに買い、デッドクロスを形成し、かつ0超のときに売ります。同時にEMA移動平均線をサポート・レジスタンスとして活用し、終値がEMA移動平均線をブレイクしたときのみ取引シグナルを発します。シンプルで実用的な戦略であり、自動的にトレンドを追跡できるため、中長期のポジション保有に適しています。
戦略原理
-
KST指標を算出: 10日、15日、20日、30日のROC指標をそれぞれ計算し、それらを重み付け合計した後、9日のSMAで平滑化してKST指標を得ます。
-
EMA移動平均線を算出: 期間50のEMA移動平均線を計算します。
-
買いシグナルの発生: KST指標の短期線が長期線を上抜け(ゴールデンクロス)し、かつ0未満であり、さらに終値がEMA移動平均線を上回る場合に買いシグナルを発生させます。
-
売りシグナルの発生: KST指標の短期線が長期線を下抜け(デッドクロス)し、かつ0超であり、さらに終値がEMA移動平均線を下回る場合に売りシグナルを発生させます。
-
移動ストップロスの設定: 口座価値の1%でトレーリングストップを設定し、自動的に損切りを行います。
戦略の利点
-
KST指標はトレンドの変化を識別でき、EMA移動平均線はトレンド方向を確認できます。両者を組み合わせることでエントリータイミングを正確に判断できます。
-
短期・長期のクロスと0ラインの組み合わせによりKST指標の方向を判断し、無駄な取引を回避します。
-
EMA移動平均線をサポート・レジスタンスとして使用し、偽のシグナルをさらにフィルタリングし、EMAをブレイクしたときのみエントリーします。
-
自動トレーリングストップでリスクを管理し、利益を伸ばします。
-
戦略のパラメータが少なく、実装と最適化が容易です。
戦略のリスク
-
KST指標はトレンド変化の判断に遅れが生じるため、一部の機会を逃す可能性があります。計算期間を短縮したり、重み付け方法を最適化することで対応できます。
-
EMA移動平均線には遅延性があり、トレンド転換点で機能しないことがあります。他の指標や複数の移動平均線の組み合わせを試すことも検討できます。
-
ストップロスの設定が緩すぎると損失が拡大し、きつすぎると夜間の大きな値動きで損切りされる可能性があります。バランスを見つけるために入念なテストが必要です。
-
戦略シグナルが頻繁に発生するため、取引コストが高くなる可能性があります。エントリー条件を適度に緩和し、取引回数を減らすことも検討できます。
戦略の最適化方向
-
KST指標の計算期間パラメータを最適化し、特定の銘柄に対してより感度の高いパラメータの組み合わせを見つけます。
-
異なる移動平均線(MA、WMAなど)やその組み合わせをテストし、KSTとの相性が良いものを確認します。
-
ボラティリティやATRに基づいてストップロス幅を動的に調整する方法を試します。
-
出来高の急増などフィルター条件を追加し、騙しを回避します。
-
RSI、MACDなど他の指標との組み合わせを検討し、戦略をより包括的にします。
-
異なる銘柄におけるパラメータの効果をテストし、各銘柄に適した最適化案を策定します。
まとめ
本戦略は全体的な考え方が明確で信頼性が高く、実装も容易です。KST指標でトレンド転換を判断し、EMA移動平均線でさらにフィルタリングし、ストップロスでリスクをコントロールすることで、中長期的なトレンドを自動追跡できます。パラメータの選択は合理的であり、最適化の余地も大きいため、ユーザーは必要に応じて調整することができ、様々な銘柄に適用可能で汎用性に優れています。本戦略は初心者の学習にも適していますし、プロのトレーダーにも方向性を提供します。さらに最適化とテストを重ねることで、安定した信頼性の高いトレンドフォロー戦略となることが期待されます。
/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Know Sure Thing and EMA Strategy by JLX", shorttitle="KST EMA JLX", format=format.price, precision=4, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)
roclen1 = input(10, minval=1, title = "ROC Length #1")
roclen2 = input(15, minval=1, title = "ROC Length #2")- 1

