モメンタム・ブレークスルー 移動平均取引戦略

作者: リン・ハーンチャオチャン開催日:2023年12月18日 (月) 18:01:59
タグ:

img

概要

この戦略は,モメンタム指標と移動平均を組み合わせたトレンド追跡戦略である. 主なトレンド判断ツールとして指数的な移動平均を使用し,高い取引量と組み合わせて購入・売却信号を発行する. この戦略は,主要な市場動向を追跡するために中期および長期保有に適している.

戦略の原則

  1. トレンド判断の主なツールとして34期EMAを使用します.価格がEMAを超えると,それは上昇信号であり,下を横切ると,それは下落信号です.

  2. 21日間の移動平均を最近の平均の1.5倍と比較します.現在のボリュームが平均の1.5倍以上であれば,それは高いボリュームとみなされます.

  3. 価格が EMA を上向きに越え,ボリュームが高くなったときにのみ購入信号が発行されます.価格が EMA を下向きに越え,ボリュームが高くなったときにのみ販売信号が発行されます.

  4. ポジションを開いた後,ストップ・ロスを設定し 利得率を設定します.

傾向,勢い,リスク管理などの要素を包括的に考慮することで,比較的包括的で安定しています.

利点分析

  1. EMA を使って市場の主要トレンド方向を決定すれば,中長期のトレンドを効果的に追跡できる.

  2. 高取引量のフィルターと組み合わせると 偽のブレイクに惑わされないようにできます

  3. ストップ・ロストとテイク・プロフィートの比を設定することで,単一の取引のリスクを効果的に制御できます.

  4. 中期と長期の保有戦略の採用は,高周波の市場騒音の影響を受けず,安定した利益を得ています.

リスク と 解決策

  1. 高周波の誤ったブレイクによって誤導される可能性が高い. 解決策は取引量検証を追加することです.

  2. 中期および長期投資は資本の占有率を増加させる.解決策は,ポジションのサイズを適切に制御することです.

  3. 移動平均取引戦略は短期の機会を遅らせたり逃したりする.解決策は他の短期信号を組み合わせることです.

  4. 不安定な市場での大きな変動は大きな損失につながる可能性があります. 解決策は適切なストップロスの位置を設定することです.

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

  1. 最適なパラメータを見つけるために,異なるEMAサイクルパラメータの強みと弱点をテストします.

  2. ストップ・ロスの効果をテストし,戦略の収益性とリスク耐性に対する利益率のパラメータを取ります.

  3. 短期的な機会を決定するために MACD と KDJ などの他の指標を組み合わせてみてください.

  4. ポジション制御や動的ストップロスの方法などの資本管理戦略を最適化する.

概要

この戦略は,全体的に,安定した中長期保有戦略です.主要市場動向を効果的に追跡し,誤った信号をフィルターするためにボリューム指標を使用できます.同時に,単一の取引のリスクを制御するために適切なストップ損失と利益を得る手段が採用されています.これは"安定した軽量"トレンドトレーディングワークとして記述できます.適切な最適化により,より理想的な戦略収益率を達成できると信じています.


/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 3m
basePeriod: 1m
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/
// © TradingSignalHub

//@version=5
strategy("Di strategy ", overlay=true)

//date setting
fromDay = input(defval = 1, title = "Ngày bắt đầu", group = "Cài đặt thời gian")
fromMonth = input(defval = 1, title = "Tháng bắt đầu", group = "Cài đặt thời gian")
fromYear = input(defval = 2023, title = "Năm bắt đầu", group = "Cài đặt thời gian")

toDay = input(defval = 31, title = "Đến ngày", group = "Cài đặt thời gian")
toMonth = input(defval = 12, title = "Đến tháng", group = "Cài đặt thời gian")
toYear = input(defval = 2033, title = "Đến năm", group = "Cài đặt thời gian")

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond() => 
    time >= startDate and time <= finishDate ? true : false

//snr setting
price = close
ema34     = input.int(34, minval=2, title="EMA 34", group = "Cài đặt EMA")
pacC        = ta.ema(close,ema34)
pacL        = ta.ema(low,ema34)
pacH        = ta.ema(high,ema34)
L =plot(pacL, color=color.rgb(3, 139, 251), linewidth=1, title="High EMA 34")
H =plot(pacH, color=color.rgb(3, 137, 247), linewidth=1, title="Low EMA 34")
C =plot(pacC, color=color.rgb(4, 138, 248), linewidth=1, title="Close EMA 34")
fill(L,H, color=color.rgb(33, 149, 243, 85),title="Fill dãi EMA 34")

//EMA full setting
ema89 =ta.ema(close,89)
DIema= ta.ema(close,458)
plot(DIema,title="DI_ema",color=color.rgb(247, 214, 3),linewidth=2)
plot(ema89,title="EMA 89",color=color.orange,linewidth=1)
//ema200= ta.ema(close,200)
//ema610= ta.ema(close,610)
//ema144= ta.ema(close,144)
//ema258= ta.ema(close,258)
//plot(ema200,title="EMA 200",color=color.purple,linewidth=2)
//plot(ema610,title="EMA 610",color=color.white,linewidth=2)
//plot(ema144,title="144Banker",color=color.green,linewidth=1)
//plot(ema258,title="258Banker",color=color.yellow,linewidth=1)

EMAbuy = ta.crossover(price, DIema)
EMAsell = ta.crossunder(price, DIema)

//volume setting
vol = (volume)
length = input(21, "Đường Trung Bình Vol", group = "Cài đặt Volume" )
div = input(1.5, "Mức trung bình", group = "Cài đặt Volume" )
up = close > open 
down = open>close
Volhigh = volume> (ta.ema(volume, length)*div)

//Cài đặt lệnh
longCondition = EMAbuy and Volhigh
if time_cond()
    if (longCondition)
        strategy.entry("Long", strategy.long)

shortCondition = EMAsell and Volhigh
if time_cond()
    if (shortCondition)
        strategy.entry("Sell", strategy.short)


stopPer = input.float(1.0, title="Stop Loss %", group = "Cài đặt TP & SL %" ) / 100
takePer = input.float(2.0, title="Take Profit %", group = "Cài đặt TP & SL %" ) / 100

// Determine where you've entered and in what direction
longStop = strategy.position_avg_price * (1 - stopPer)
shortStop = strategy.position_avg_price * (1 + stopPer)
shortTake = strategy.position_avg_price * (1 - takePer)
longTake = strategy.position_avg_price * (1 + takePer)

if strategy.position_size > 0 
    strategy.exit(id="Đóng Long", stop=longStop, limit=longTake)
if strategy.position_size < 0 
    strategy.exit(id="Đóng Sell", stop=shortStop, limit=shortTake)

alertcondition(longCondition, title = "Tín hiệu BUY", message = "Tín hiệu BUY")
alertcondition(shortCondition, title = "Tín hiệu SELL", message = "Tín hiệu SELL")
//PLOT FIXED SLTP LINE
//plotshape(strategy.position_size > 0 ? longStop : na, shape.labelup, color=color.rgb(34, 249, 6, 50), linewidth=1, title="Long SL")
//plot(strategy.position_size < 0 ? shortStop : na, style=plot.style_circles, color=color.rgb(250, 8, 8, 50), linewidth=1, title="Short SL")
//plot(strategy.position_size > 0 ? longTake : na, style=plot.style_linebr, color=color.rgb(59, 248, 7), linewidth=1, title="Long TP")
//plot(strategy.position_size < 0 ? shortTake : na, style=plot.style_linebr, color=color.rgb(247, 7, 7), linewidth=1, title="Short TP")


もっと