2重移動平均戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-21 14:43:26
タグ:

img

概要

この戦略は,チャネルを形成し,トレンド方向を把握するために二重移動平均を使用する. 価格がチャネルを通過すると取引信号が生成される. RSIインジケーターも偽のブレイクをフィルターするために組み込まれている. ロンドンセッション中に1日5回の取引と最大2日の損失で取引する.

戦略の論理

この戦略は,価格チャネルを形成するために,長さ5の移動平均を2つ採用し,一つは最高価格から計算され,もう一つは最低価格から計算されます. 長信号は,価格が上部帯を超えて閉じる時,短信号は下部帯を下回るときに起動します.

誤ったブレイクを避けるため,RSIインジケーターは過買い/過売りレベルを計測するために追加されます.RSIが80を超える場合にのみロング,RSIが20未満の場合のみショートします.

また,この戦略はロンドンのセッション (3時~11時) の間のみ取引され,最大5回の注文と最大2日の資本損失があります.

利点分析

トレンドを捉える

ダブルMAチャネルは,価格傾向の方向性を効果的に検出できます.上帯を突破すると上向きの傾向が捉えられ,下帯を突破すると下向きの傾向が捉えられます.

偽の脱出を減らす

RSIの過買い/過売フィルターを使用すると,価格変動による誤ったブレイクシグナルが減少します.

効果的なリスク管理

メジャーセッションでの取引のみで,1日当たり最大注文を制限する取引頻度.最大2日間の損失はリスク寛容も定義します.

リスク分析

波動性のある虚偽ブレイク

大幅な価格変動は誤ったブレイクシグナルを引き起こし,不必要な損失につながる.パラメータを最適化し,より多くのフィルターを追加してそのようなリスクを軽減することができます.

固定リスク SL/TP

SL/TPの固定ピップを使用すると,不安定な市場で利益が停止/損なわれるリスクがあります.代わりにパーセントベースのまたは動的SL/TPを考慮してください.

取引セッションリスクが限られている

固定セッションでのみポジションを開設すると,他の時間に潜在的な取引を逃すリスクがあります.セッションを拡大するか,リアルタイム状況に基づいて動的に調整することを検討してください.

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

パラメータ調整

最適な組み合わせを見つけるために,MA長さ,RSI数,固定SL/TPピップなどのパラメータを最適化します.

追加フィルター

信号の検証のためにより多くの指標や条件を追加します.例えば,より大きな音量,BB幅の減少など,偽のブレイクを避けるために.

ダイナミック SL/TP

固定ピップの代わりに 百分比ベースまたは動的ストップ損失/取利益を使用することで,一方的な市場の動きをよりうまく処理できます.

手書きのレビュー

信号を手動で確認するか 確認された脱出時に入力してください

結論

戦略は比較的シンプルで,全体的に実用的で,トレンドとRSIをフィルタリングするためにダブルMAチャネルを使用して誤ったブレイクを決定する. 取引時間と損失制限によるリスクマネジメントによってリスクトレランスを定義する. パラメータチューニング,より良いSL/TPメカニズムなど,改善のための余地がまだ大きい.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-16 23:59:59
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/
// © SoftKill21
//@version=4
strategy(title="Moving Average", shorttitle="MA", overlay=true)
timeinrange(res, sess) => time(res, sess) != 0
len = input(5, minval=1, title="Length")
src = input(high, title="Source")
offset = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out = sma(src, len)
plot(out, color=color.white, title="MA", offset=offset)

len2 = input(5, minval=1, title="Length")
src2 = input(low, title="Source")
offset2 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out2 = sma(src2, len2)
plot(out2, color=color.white, title="MA", offset=offset2)

length = input( 5 )
overSold = input( 10 )
overBought = input( 80 )
price = input(close, title="Source RSI")

vrsi = rsi(price, length)

longcond= close > out and close > out2 and vrsi > overBought
shortcont = close < out and close < out2 and vrsi < overSold
tp=input(150,title="tp")
sl=input(80,title="sl")


strategy.entry("long",1,when=longcond)
//strategy.close("long",when= close < out2)
strategy.exit("long_exit","long",profit=tp,loss=sl)

strategy.entry("short",1,when=shortcont)
//strategy.close("short",when=close >out)
strategy.exit("short_exit","short",profit=tp,loss=sl)

// maxOrder = input(6, title="max trades per day")
// maxRisk = input(2,type=input.float, title="maxrisk per day")
// strategy.risk.max_intraday_filled_orders(maxOrder)

// strategy.risk.max_intraday_loss(maxRisk, strategy.percent_of_equity)


// strategy.close_all(when =not timeinrange(timeframe.period, "0300-1100"))






もっと