資源の読み込みに... 荷物...

KST EMAの動向傾向 戦略をフォローする

作者: リン・ハーンチャオチャン, 日付: 2023-11-07 16:36:21
タグ:

img

概要

この戦略の主なアイデアは,KST指標とEMA線を組み合わせてトレンドを特定し,追跡することです.KST指標が0を超えてEMA線上を閉ざしたとき,購入信号を生成し,0を下回ってEMA線下を閉ざしたとき,売却信号を生成します.このシンプルで実践的な戦略は,トレンドを自動的に追跡することができ,中長期保有に適しています.

戦略の論理

  1. KST指標を計算する: 10,15,20および30期間のROCを計算し,加重合計を取って9期間のSMAで均等化してKST指標を導き出す.

  2. EMA線を計算する: 50 期間の EMA線を計算する.

  3. 購入信号を生成する: 急速なKST線が遅いKST線 (黄金十字) を越えて0を下回り,閉じる線がEMA線を上回ると,購入信号が起動する.

  4. 売り信号を生成する: 快速KST線が遅いKST線 (デッドクロス) の下に横切って0を超えると,閉じる線がEMA線の下にあるとき,売り信号が起動する.

  5. 追跡ストップ損失を設定する:ストップ損失は口座価値の1%を追跡し,自動ストップ損失を実現する.

利点

  1. KSTはトレンド変化を特定し EMAは方向性を確認します 両方を組み合わせると 進出タイミングを正確に検出できます

  2. スピード・スロー・クロスオーバーと0線を使用することで,不要な取引を回避できます

  3. サポート/レジスタンスとして EMAは偽信号をさらにフィルターします. EMAのブレイクだけ入力します.

  4. 自動的なストップ・ロスは リスクを制御し 利益が稼働できるようにします

  5. シンプルなパラメータにより 実装と最適化が容易になります

リスク

  1. KSTはトレンド変化を検出するのに遅れがあり チャンスを逃すこともあります 期間を短くしたり 質量を最適化したりできます

  2. EMAはトレンド逆転に遅れている.他の指標やMAコンボはよりうまく機能するかもしれない.

  3. ストップ損失が大きすぎると損失が増加し ストップ損失が大きすぎるとストップ損失が増加します

  4. 頻繁にシグナルが送られれば 取引コストが上がり 取引を減らすために 入場規則を厳しくする可能性があります

オプティマイゼーションの方向性

  1. 特定の機器に対する敏感性のために KST 期間を最適化する.

  2. KSTとどちらがうまく合っているか調べます

  3. ATRのような変動指標に基づいて 動的停止を実験します

  4. 罠を避けるために 音量ピークのようなフィルターを追加します

  5. RSIやMACDなどの指標を組み合わせると

  6. 各機器のテストパラメータを最適化します

結論

この戦略は,実行が容易で,明確で信頼性の高い論理を持っています. 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")
roclen3 = input(20, minval=1, title = "ROC Length #3")
roclen4 = input(30, minval=1, title = "ROC Length #4")
smalen1 = input(10, minval=1, title = "SMA Length #1")
smalen2 = input(10, minval=1, title = "SMA Length #2")
smalen3 = input(10, minval=1, title = "SMA Length #3")
smalen4 = input(15, minval=1, title = "SMA Length #4")
siglen = input(9, minval=1, title = "Signal Line Length")
smaroc(roclen, smalen) => sma(roc(close, roclen), smalen)
kst = smaroc(roclen1, smalen1) + 2 * smaroc(roclen2, smalen2) + 3 * smaroc(roclen3, smalen3) + 4 * smaroc(roclen4, smalen4)
sig = sma(kst, siglen)
plot(kst, color=color.green, title="KST")
plot(sig, color=color.red, title="Signal")
hline(0, title="Zero")

len = input(50, minval=1, title="Length EMA")
src = input(close, title="Source EMA")
offset = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
fastEMA = ema(src, len)

delta = kst - sig

buySignal = crossover(delta, 0) and kst < 0 and close > fastEMA
sellSignal = crossunder(delta, 0) and kst > 0 and close < fastEMA

longTrailPerc = input(title="Trail Long Loss (%)", type=input.float, minval=0.0, step=0.1, defval=1) * 0.01
shortTrailPerc = input(title="Trail Short Loss (%)",type=input.float, minval=0.0, step=0.1, defval=1) * 0.01

// STEP 2:
// Determine trail stop loss prices
longStopPrice = 0.0, shortStopPrice = 0.0

longStopPrice := if (strategy.position_size > 0)
    stopValue = close * (1 - longTrailPerc)
    max(stopValue, longStopPrice[1])
else
    0
shortStopPrice := if (strategy.position_size < 0)
    stopValue = close * (1 + shortTrailPerc)
    min(stopValue, shortStopPrice[1])
else
    999999

// Submit entry orders
if (buySignal)
    strategy.entry(id="EL", long=true)

if (sellSignal)
    strategy.entry(id="ES", long=false)

// STEP 3:
// Submit exit orders for trail stop loss price
if (strategy.position_size > 0)
    strategy.exit(id="XL TRL STP", stop=longStopPrice)

if (strategy.position_size < 0)
    strategy.exit(id="XS TRL STP", stop=shortStopPrice)



alertcondition(crossover(delta, 0) and kst < 0 and close > fastEMA,'Long alert', 'You should buy')

alertcondition(crossunder(delta, 0) and kst > 0 and close < fastEMA, 'Short alert', 'You should sell')





もっと