この戦略は"ダブル・ムービング・アベア・クロスオーバー・ストラテジー"と命名される.主なアイデアは,シャフ・トレンド・サイクルの指標 (STC) とダブル・ムービング・アベア・クロスオーバーに基づいて,ロング・ショート・ポジションを決定することです.特に,STCがオーバー・バイトまたはオーバー・セール領域から突破すると,価格は高速指数的な移動平均線上にあり,高速EMAはスローEMA上にあり,ロングポジションが開かれます.逆に,ショートポジションが開かれます.
この戦略は主に2つの技術指標に基づいています.
トレンドインジケータ: トレンド指向を決定するためのSTCインジケータ.STCにはMACD,ストカスティック,STCインジケータラインが含まれます. 0-25ゾーンからの上向きブレイクは上昇傾向を示し,75-100ゾーンからの下向きブレイクは下向き傾向を示します.
移動平均クロスオーバー: 急速な単純な移動平均 (デフォルト期35) は,遅いSMA (デフォルト期200) の上/下をクロスする. 急速なSMAが遅いSMAの上をクロスするときに上昇信号が起動する. 逆のクロスオーバーで下落信号が起動する.
トレーディング・シグナル・ロジックは次のとおり定義される.
ロングシグナル:STCは25線以上を突破し,高速SMAは遅いSMA上にあり,閉じる価格は高速SMA上にあります.
ショート信号:STCは75線以下に突破し,高速SMAは遅いSMAを下回り,閉じる価格は高速SMAを下回る.
この戦略の利点は以下の通りです.
トレンドと移動平均指標を組み合わせた信頼できる取引信号.STCは全体的なトレンドを決定し,ダブルMAは特定のエントリー信号を生成します.
調整可能な移動平均期間のMA期間の異なる市場条件に最適化することができます.
制御可能なリスク.STCは,上位を購入し,下位を販売するのを避けるために過買い/過売りレベルを特定します.ターゲットストップは400ポイントの利益/損失範囲を設定します.
考慮すべきリスクは:
STCの誤った突破の可能性は 価格動向で確認する必要がある
誤った信号が増える 誤った信号が増える
一度に1つの方向で取引する. オープンポジションのスペースを制限する. 双方向取引を許可することを検討する.
マージン・FX取引ではスプレッドリスクは扱いません. ライブ・トレーディングではスプレッドは相当かもしれません.
可能な最適化経路は以下の通りである.
STCの買い過ぎ/売り過ぎのパラメータを調整する.
クロスオーバー信号の信頼性を向上させるために MA 期間を最適化する.
ボリンジャー帯のような追加フィルターを追加して 偽のブレイクアウト取引を減らします
生産能力を増やすため 双方向取引の論理を導入する
ストップロスのロジックを追加して,取引ごとに損失を制御します.
概要すると,この戦略は,トレンド方向とエントリのタイミングを決定するために,トレンドと移動平均クロスオーバー指標を組み合わせます.適切なリスク制御により,良いリターンを達成することができます. シンプルな論理は,さまざまな市場条件で理解し最適化することを容易にして,初心者にとって適しています.
/*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")