シェフ・トレンド・サイクルの二重移動平均のクロスオーバー戦略

作者: リン・ハーンチャオチャン開催日:2023年12月12日 17:43:19
タグ:

img

概要

この戦略は"ダブル・ムービング・アベア・クロスオーバー・ストラテジー"と命名される.主なアイデアは,シャフ・トレンド・サイクルの指標 (STC) とダブル・ムービング・アベア・クロスオーバーに基づいて,ロング・ショート・ポジションを決定することです.特に,STCがオーバー・バイトまたはオーバー・セール領域から突破すると,価格は高速指数的な移動平均線上にあり,高速EMAはスローEMA上にあり,ロングポジションが開かれます.逆に,ショートポジションが開かれます.

戦略の論理

この戦略は主に2つの技術指標に基づいています.

  1. トレンドインジケータ: トレンド指向を決定するためのSTCインジケータ.STCにはMACD,ストカスティック,STCインジケータラインが含まれます. 0-25ゾーンからの上向きブレイクは上昇傾向を示し,75-100ゾーンからの下向きブレイクは下向き傾向を示します.

  2. 移動平均クロスオーバー: 急速な単純な移動平均 (デフォルト期35) は,遅いSMA (デフォルト期200) の上/下をクロスする. 急速なSMAが遅いSMAの上をクロスするときに上昇信号が起動する. 逆のクロスオーバーで下落信号が起動する.

トレーディング・シグナル・ロジックは次のとおり定義される.

  1. ロングシグナル:STCは25線以上を突破し,高速SMAは遅いSMA上にあり,閉じる価格は高速SMA上にあります.

  2. ショート信号:STCは75線以下に突破し,高速SMAは遅いSMAを下回り,閉じる価格は高速SMAを下回る.

利点分析

この戦略の利点は以下の通りです.

  1. トレンドと移動平均指標を組み合わせた信頼できる取引信号.STCは全体的なトレンドを決定し,ダブルMAは特定のエントリー信号を生成します.

  2. 調整可能な移動平均期間のMA期間の異なる市場条件に最適化することができます.

  3. 制御可能なリスク.STCは,上位を購入し,下位を販売するのを避けるために過買い/過売りレベルを特定します.ターゲットストップは400ポイントの利益/損失範囲を設定します.

リスク分析

考慮すべきリスクは:

  1. STCの誤った突破の可能性は 価格動向で確認する必要がある

  2. 誤った信号が増える 誤った信号が増える

  3. 一度に1つの方向で取引する. オープンポジションのスペースを制限する. 双方向取引を許可することを検討する.

  4. マージン・FX取引ではスプレッドリスクは扱いません. ライブ・トレーディングではスプレッドは相当かもしれません.

最適化

可能な最適化経路は以下の通りである.

  1. STCの買い過ぎ/売り過ぎのパラメータを調整する.

  2. クロスオーバー信号の信頼性を向上させるために MA 期間を最適化する.

  3. ボリンジャー帯のような追加フィルターを追加して 偽のブレイクアウト取引を減らします

  4. 生産能力を増やすため 双方向取引の論理を導入する

  5. ストップロスのロジックを追加して,取引ごとに損失を制御します.

結論

概要すると,この戦略は,トレンド方向とエントリのタイミングを決定するために,トレンドと移動平均クロスオーバー指標を組み合わせます.適切なリスク制御により,良いリターンを達成することができます. シンプルな論理は,さまざまな市場条件で理解し最適化することを容易にして,初心者にとって適しています.


/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// Shaff Trend Cycle coded by Alex Orekhov (everget)
// Strategy and its additional conditions provided by greenmask
// Schaff Trend Cycle script may be freely distributed under the MIT license.
strategy("STC", shorttitle="STC")

fastLength = input(title="MACD Fast Length", type=input.integer, defval=23)
slowLength = input(title="MACD Slow Length", type=input.integer, defval=50)
cycleLength = input(title="Cycle Length", type=input.integer, defval=10)
d1Length = input(title="1st %D Length", type=input.integer, defval=3)
d2Length = input(title="2nd %D Length", type=input.integer, defval=3)
src = close
highlightBreakouts = input(title="Highlight Breakouts ?", type=input.bool, defval=true)

macd = ema(src, fastLength) - ema(src, slowLength)
k = nz(fixnan(stoch(macd, macd, macd, cycleLength)))
d = ema(k, d1Length)
kd = nz(fixnan(stoch(d, d, d, cycleLength)))
stc = ema(kd, d2Length)
stc := 	stc > 100 ? 100 : stc < 0 ? 0 : stc
stcColor = not highlightBreakouts ? (stc > stc[1] ? color.green : color.red) : #ff3013
stcPlot = plot(stc, title="STC", color=stcColor, transp=0)
upper = 75
lower = 25
transparent = color.new(color.white, 100)
upperLevel = plot(upper, title="Upper", color=color.gray)
hline(50, title="Middle", linestyle=hline.style_dotted)
lowerLevel = plot(lower, title="Lower", color=color.gray)

fill(upperLevel, lowerLevel, color=#f9cb9c, transp=90)

upperFillColor = stc > upper and highlightBreakouts ? color.green : transparent
lowerFillColor = stc < lower and highlightBreakouts ? color.red : transparent

fill(upperLevel, stcPlot, color=upperFillColor, transp=80)
fill(lowerLevel, stcPlot, color=lowerFillColor, transp=80)
strategy.initial_capital = 50000
ordersize=floor(strategy.initial_capital/close)
targetvalue = input(title="Target/stop", type=input.integer, defval=400)

ma1length = input(title="SMA1", type=input.integer, defval=35)
ma2length = input(title="SMA2", type=input.integer, defval=200)
ma1 = ema(close,ma1length)
ma2 = ema(close,ma2length)

bullbuy = crossover(stc, lower) and ma1>ma2 and close>ma1
bearsell = crossunder(stc, upper) and ma1<ma2 and close<ma1

if (bullbuy)
    strategy.entry("Riposte", strategy.long, ordersize)
    strategy.exit( "Riposte close", from_entry="Riposte", qty_percent=100, profit=targetvalue,loss=targetvalue)

if (bearsell)
    strategy.entry("Riposte", strategy.short, ordersize)
    strategy.exit( "Riposte close", from_entry="Riposte", qty_percent=100, profit=targetvalue,loss=targetvalue)

//plotshape(bullbuy,  title= "Purple", location=location.belowbar, color=#006600, transp=0, style=shape.circle, size=size.tiny, text="Riposte")
//plotshape(bearsell,  title= "Purple", location=location.abovebar, color=#006600, transp=0, style=shape.circle, size=size.tiny, text="Riposte")
















もっと