EMAの骨格戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-07 17:20:44
タグ:

img

概要

この戦略は,EMAとRSIインジケーターを組み合わせて,ビットコインの短期調整機会を特定する.主にEMAを主なグラフィックツールとして,RSIを補助判断指標として使用し,明らかな調整パターンを発見する.価格がEMA線以下に突破または上り回ったときに取引信号が生成される.また,パラメータ化できるストップ損失と取利益制御も備わっている.

戦略原則

この戦略は主に50期EMA線と25期RSIインジケーターを使用している.EMA線は主要なグラフィック指標とみなされ,RSIは取引信号を生成するのに役立つオーバーバイトとオーバーセール条件を決定するために使用される.価格はEMA線を下回るときにセール信号が生成され,価格がEMA線を超えると購入信号が生成され,RSIインジケーターはオーバーバイトではない信号 (RSI値が70未満) を表示する.間違ったエントリの確率を減らすため,戦略は追加のフィルター条件として長期EMA線 (70期など) も組み込む.

ストップ・ロストとテイク・プロフィートのレベルを設定する.ストップ・ロスト距離は5.1%に設定され,テイク・プロフィートの距離は9.6%に設定され,最大損失を制限する.

要約すると,この戦略は主にEMAラインパターンに依存し,過剰購入および過剰販売条件を避けるためにRSI指標を補完し,ストップ損失と利益のコントロールを備えています.短期BTビットコイン調整を把握するのに適しています.

利点分析

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

  1. 戦略シグナルは,ランダムな誤ったエントリが多くなく,比較的明確である.EMAとRSIの組み合わせは,単一の指標に依存するのではなく,シグナルをより信頼性のあるものにする.

  2. ストップ・ロストと取利益制御が組み込まれています.これは取引毎の損失を効果的に制限し,非常に重要なリスク管理ツールです.

  3. 戦略パラメータは最適化できます. EMA長さ,RSI長さなど,調整可能なパラメータです.ユーザーは異なる市場条件に最適なパラメータセットを見つけることができます.

  4. バックテストが有効.この戦略は,パフォーマンスを検証するために内部でバックテスト日付範囲を設定することを可能にします.

リスク分析

この戦略には,主に次のリスクも含まれます.

  1. BTビットコインは変動性があり,ストップが実行される可能性があります.ストップが設定されているにもかかわらず,BTビットコインはしばしば予想以上に大きな損失をもたらすストップを取り出す大きな価格変動があります.

  2. 引き上げリスク. 戦略は,全体的な引き上げ管理を考慮していない. 長期的調整期間中に引き上げが発生する可能性があります.

  3. 強いトレンドにおける弱信号.BTビットコインのトレンドは,特定の市場条件下でかなり拡張される可能性があります.短期信号は,良い取引から停止される傾向があります.

これらのリスクを制御し軽減するために:

  1. ストップ・ロスの範囲を広げます.強いトレンド条件では,ストップ・ロスの範囲を10%まで広げることができ,早めにストップアウトされないようにします.

  2. 他の指標フィルターを追加する.トレンドをフォローする指標を追加することで,長期間の統合期間中に取引を避けることができます.

  3. パラメータを最適化する. テストパラメータは異なる市場条件に設定される. 強力なトレンドが現れるときにパラメータを切り替える. 信号品質を改善する.

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

この戦略の最適化にはさらに余地があります.

  1. 総引き上げ制御を追加します.最大引き上げパーセントを設定できます.例えば20%,損失を制限するために取引が達成されると停止します.

  2. 入場頻度を制限する.超取引を防ぐために,1時間単位あたり最大2取引などの取引数を制限することができます.

  3. パラメータを最適化する. 異なる市場条件にパラメータの組み合わせをテストする. パラメータテンプレートを作成して,現在の条件にリアルタイムで切り替える.

  4. 他の指標と組み合わせ,トレンド,変動率,その他のメトリックを統合して,より包括的な取引システムエントリールールを作成します.

概要

ストップ・ロストとテイク・プロフィートコントロールを備えて,EMAとRSIを使用して明確な取引シグナルを生成し,短期的なBTビットコイン調整パターンに依存している.しかし,より一貫した余剰リターンを生み出すために他の戦略と組み合わせることで最も効果的です.


/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 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/
// © mmoiwgg

//@version=4
strategy(title="EMA+RSI Pump & Drop Swing Sniper (With Alerts & SL+TP) - Strategy", shorttitle="EMA+RSI Swing Strategy", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=50, minval=0)
emarsiSource = input(close, title="EMA+RSI Source")
condSource = input(high, title="Long+Short Condition Source")
emaVal = ema(emarsiSource, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(emarsiSource, rsiLength)

//Safety 
emaLength2 = input(title="Safety EMA Length", type=input.integer, defval=70, minval=0)
emaSource2 = input(close, title="Safety EMA Source")
ema = ema(emaSource2, emaLength2)
emaColorSource2 = close
emaBSource2 = close

// Backtest+Dates
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2019, title = "From Year", minval = 2017)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)        // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest end window
window()  => time >= start and time <= finish ? true : false       // create function - add window() to entry/exit/close

// Conditions
exit_long = crossover(emaVal, condSource)
longCond = crossunder(emaVal, condSource) and close > ema

//Stoploss + TakeProfit
sl = input(0.051, step=0.001, title="Stop Loss")
tp = input(0.096, step=0.001, title="Take Profit")

// Plots Colors
colors = emarsiSource > emaVal and rsiVal > 14 ? color.green : color.red
emaColorSource = input(close, title="Line Color Source")
emaBSource = input(close, title="Line Color B Source")

// Plots
plot(ema, color=emaColorSource2[1] > ema and emaBSource2 > ema ? color.green : color.red, linewidth=1)
plot(emaVal, color=emaColorSource[1] > emaVal and emaBSource > emaVal ? color.green : color.red, linewidth=3)
plotcandle(open, high, low, close, color=colors)


//Strategy Entry+Exits
strategy.entry("long",1,when=window() and longCond)
strategy.close("long",when=window() and exit_long)
strategy.exit("long tp/sl", "long", profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick)


もっと