EMAとフィボナッチリトレースメントに基づく下降トレンド戦略


作成日: 2023-09-21 21:36:16 最終変更日: 2023-09-21 21:36:16
コピー: 1 クリック数: 827
1
フォロー
1617
フォロワー

概要

この戦略は,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を使ってトレンドの方向を判断し,操作信号はシンプルで明快です.

  • Fibonacci の逆転に適応し,パラメータを人工的に決定する必要はありません.

  • 策略操作が頻繁で,短線の変化を捉え,高周波策略を実現

  • 逆転を決定するキー・リトラクションポイントを活用し,時効的に止損する

  • 設定可能なパラメータ,異なる周期に対応する最適化策

戦略リスク

  • EMAの指標が遅滞しており,他の指標の組み合わせで確認する必要があります.

  • Fibonacciの自己適応は過度に最適化され,逆戻り点は不安定です.

  • 高周波取引は取引コストとスライドポイントコストを増加させる

  • 震動の傾向を効果的にフィルターできず,誤った信号が多すぎる

  • 撤収管理と損益比コントロールの改善

戦略最適化の方向性

  • 量能指数を増やして,量価の偏差による誤信号を避ける

  • 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)