EMAとアダプティブ・フィボナッチ・リトレースメントに基づく短期ダウントレンド戦略

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

概要

この戦略は,トレンドの方向性を決定するためのEMAと,転換点を自動的に識別するための適応型フィボナッチリトラセーションを使用して,トレンドを把握して高値で低値で売却することを目指します.短期取引に適した頻繁な取引を含む.

戦略の論理

  1. トレンド方向を決定するには 9 日間の EMA と 21 日間の EMA の黄金十字と死十字を使用します. 21 日間の EMA が 55 日間の EMA 以下の値を越えると下向きのトレンドが始まると示されます.

  2. 100 期間の適応型フィボナッチリトレースメントを導入し,最近の価格変動に基づいてキーリトレースメントレベルを自動的に決定します.

  3. 0.236 フィボナッチリトレースは,逆転を示し,既存のポジションを閉じる.

  4. 9日間のEMAが21日間のEMAを下回り 価格が適応性フィボナッチ高値を下回ると ショートします

  5. 長期利益目標は200日間のEMAの横断です ショートストップ損失は0.236フィボナッチ回転を突破しています

利点

  • EMA は 明確 な 傾向 の 信号 を 与え, 容易 に 実行 する

  • 適応型フィボナッチは,手動パラメータ調整を回避する

  • 高周波戦略の短期的な動きを頻繁に取引する

  • 適切なストップ・ロスのキーリトラクションレベル

  • サイクル間での最適化のための設定可能なパラメータ

リスク

  • EMAの遅れは他の指標から確認される必要がある

  • アダプティブ・フィボナッチリスクは,不安定なレベルに過剰に適合する

  • 高周波取引は,手数料やスリップから生じるコストを増加させる

  • 範囲内トレンドを非効率にフィルタリングすることで 誤った信号が発信される

  • 借入管理とリスク報酬管理の改善が必要

強化

  • 価格・量差からの誤った信号を避けるため,ボリューム指標を追加する

  • 現在の市場状況に適した EMA 期間を最適化する

  • より良いリスク管理のために動的ストップ損失を導入する

  • トレンド強度インデックスを組み込む

  • 取引コストの影響を考慮し,最低利益目標を設定する

結論

この戦略は,EMAでトレンド方向を特定し,適応型フィボナッチリトレースメントを使用して,異なる市場状況に自動的に適応する逆転レベルを動的に決定する.しかし,トレンドセグメント化やエリオット・ウェーブ論理のない指標ヒントにより依存し,最適化のための余地を残している.全体として,高周波の短期取引戦略として,急速な価格変動を把握できるが,トレーダーが管理する必要がある頻繁なストップ損失とオーバートレードのリスクを含む.


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © CheatCode1

//@version=5
strategy("CC-Trend strategy 2", overlay=true, initial_capital = 10000, commission_type = strategy.commission.percent, commission_value = 0.01, default_qty_type =  strategy.percent_of_equity, default_qty_value = 100 )
ema9 = ta.ema(close, 9)
ema21 = ta.ema(close, 21)
ema55 = ta.ema(close, 55)
ema200 = ta.ema(close, 200)


plot(ema200, '22', color.blue, 2)

FibL = input.int(100, 'Fibonacci Length', 1, 500, group = 'Automatic Fibonacci Retracement')
len1 = input.int(1, 'Show Last', 0, 1000, group = 'Automatic Fibonacci Retracement')
len2 = input.int(5, 'Offset Length', 0, 1000, group = 'Automatic Fibonacci Retracement')

highF = ta.highest(ema55 >= ema9 ? ema55:ema9, FibL)
lowF = ta.lowest(ema55 >= ema9 ? ema9:ema55, FibL)
AvgFib = highF - lowF

//Fibonacci Executions
LL2 = highF + .618 * AvgFib
LL1 = highF + .272 * AvgFib
L1 = highF
L236 = highF - 0.236 * AvgFib
L382 = highF - 0.382 * AvgFib
Mid =  highF - 0.50 * AvgFib
S382 = lowF + 0.382 * AvgFib
S236 = lowF + 0.236 * AvgFib
S1 = lowF
SS1 = lowF - .272 * AvgFib
SS2 = lowF - .618 * AvgFib
//Fibonacci Plot's


high2FP = plot(LL2, 'Highe2', color.red,offset = len2, show_last = len1, trackprice = true)
high1FP = plot(LL1, 'Highe1', color.red,offset = len2, show_last = len1, trackprice = true)
highFP = plot(highF, 'High', color.red,offset = len2, show_last = len1, trackprice = true)
L236P = plot(L236, "0.764", #ED381C, offset = len2, show_last = len1, trackprice = true )
L382P = plot(L382, "0.618", color.white,offset = len2, show_last = len1, trackprice = true )
MidP = plot(Mid, "0.5", color.orange,offset = len2, show_last = len1, trackprice = true )
S382P = plot(S382, "0.382", color.yellow ,offset = len2, show_last = len1, trackprice = true)
S236P = plot(S236, "0.236", color.lime ,offset = len2, show_last = len1, trackprice = true)
lowFP = plot(lowF, 'Low', color.green,offset = len2, show_last = len1, trackprice = true)
low1FP = plot(SS1, 'Lowe1', color.green,offset = len2, show_last = len1, trackprice = true)
low2FP = plot(SS2, 'Lowe2', color.green,offset = len2, show_last = len1, trackprice = true)

plot(ema9, '22', color.yellow, 2)

plot(ema55, '55', color.aqua, 2)

plot(ema200, '200', color.maroon, 2)



shortCondition = close[1] < highF and ema21 < ema55
if (shortCondition)
    strategy.entry("Short", strategy.short)

shorttp = ta.crossover(close, ema200) and strategy.openprofit >= 0
if (shorttp)
    strategy.close('Short', 'Short TP', qty_percent = 100)

shortclose2 = close[1] > L236 and not (shortCondition) 
if(shortclose2)
    strategy.close('Short', 'Short RM', qty_percent = 100)

もっと