資源の読み込みに... 荷物...

金 VWAP MACD SMO トレーディング戦略

作者: リン・ハーンチャオチャン,日付: 2023-10-20 16:23:33
タグ:

img

概要

ゴールドVWAP MACD SMO取引戦略は,12時間タイムフレームグラフを使用して,金市場のために設計された完全な戦略である.これは,VWAP月間,SMOオシレーターおよびMACDヒストグラムを組み合わせ,金市場での取引機会を特定する.

戦略の論理

この戦略は,主要トレンド指標として月間VWAPを使用している.VWAPは平均取引価格を表し,月間とはVWAPを計算するための時間範囲が過去1ヶ月であることを意味します.現在の閉鎖が月間VWAPよりも高くなった場合,現在の上昇傾向を示します.閉じるが月間VWAP以下であれば,傾向が低下していることを意味します.

SMOオシレータは,現在の過剰購入および過剰販売状況を決定するために使用されます.それは長サイクル成分と短サイクル成分で構成されています.オシレータが0を超えると,過剰購入状態を示し,0を下回ると,過剰販売を表します.

MACDヒストグラムはモメントの方向性を決定することができます.列が割れるとき,それはモメントがロングに行くために強化されていることを表しています.列が割れるとき,それはショートに行くことを考慮するためにモメントが弱まっていることを意味します.

この3つの指標に基づいて,取引戦略の具体的な規則を確立することができます.

ロングエントリー: 閉じる値がVWAP月額以上になると,MACDヒストグラムが分解し,SMOオシレーターは0以上になります. ショートエントリー: 閉じる値がVWAP月額を下回ると,MACDヒストグラムが崩れ,SMOオシレーターは0を下回ります.

利益とストップロスはインプットパーセントに基づいて設定されます.

利点分析

この戦略は,複数の時間枠と指標を組み合わせて,トレンドの方向性と強さを効果的に決定し,以下の利点があります.

  1. VWAPは毎月,反トレンド取引を避けるために,主要なトレンド方向を決定することができます.
  2. MACDヒストグラムは 動力変化を タイムリーに把握できます
  3. SMOオシレーターは 過買い・過売状態を判断し,潜在的逆転点に入るために役立ちます.
  4. 複数の指標を組み合わせることで,互いに検証し,信号の信頼性を向上させることができます.
  5. リスクをコントロールするために 利得率とストップ損失率を調整できます

リスク分析

戦略は合理的に設計されていますが,注意すべきリスクはまだあります.

  1. VWAPは,誤った信号を生成する 鞭に敏感です.
  2. MACD パラメータの設定が正しくない場合 誤ったブレイクの可能性が高まります
  3. SMOのパラメータが正しくない場合,買い過ぎや売り過ぎのゾーンを誤って判断する可能性があります.
  4. 過剰な幅の利益とストップ・ロスの設定は,単一の損失を効果的に制御することはできません.

上記のリスクを制御するために,VWAPとMACDパラメータは,幅が広い範囲をなくして合理的に最適化されるべきである.また,取利益とストップ損失の割合は,あまりにも高くなく,シングル損失は3%の範囲で制御されるべきである.

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

戦略は,次の側面でも最適化できます.

  1. MAのボリュームブレイクなどのボリューム確認を追加します.
  2. ATR のような変動指標を組み込み,市場の変動に基づいてポジションサイズを調整する.
  3. 利益の損失を避けるため 高度にライトアップメカニズムを追加します
  4. トレイリングストップ損失,アダプティブストップ損失など,利益とストップ損失の戦略をテストします.
  5. 異常信号をフィルタリングするモデル検証モジュールを追加します

結論

ゴールドVWAPMACDSMO戦略は,トレンドとオーバーバイト/オーバーセール条件を決定するための複数の指標を組み合わせ,中長期の機会を効果的に把握することができる.いくつかのリスクがあるにもかかわらず,パラメータ最適化とリスク管理を通じて制御することができます.この戦略は非常に強いスケーラビリティを持ち,実際のニーズに基づいてモジュール的に最適化することができます.これは長期追跡に値する取引システムです.


/*backtest
start: 2023-09-19 00:00:00
end: 2023-10-19 00:00:00
period: 4h
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/
// © exlux99

//@version=4
// strategy("VWAP Gold strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 10000, calc_on_every_tick = true, commission_type = strategy.commission.percent, commission_value = 0.005)


source = input(low)


//vwap monthly
timeframeM = time("M")
beginningM = na(timeframeM[1]) or timeframeM > timeframeM[1]

sumsourceM = source * volume
sumVolM = volume
sumsourceM := beginningM ? sumsourceM : sumsourceM + sumsourceM[1]
sumVolM := beginningM ? sumVolM : sumVolM + sumVolM[1]
vwapMonthly= sumsourceM / sumVolM

//macd
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)


fast_ma = ema(src, fast_length)
slow_ma = ema(src, slow_length)
macd = fast_ma - slow_ma
signal =  ema(macd, signal_length)
hist = macd - signal


//SMO
longlen = input(22, minval=1, title="Long Length SMO")
shortlen = input(6, minval=1, title="Short Length SMO")
siglen = input(5, minval=1, title="Signal Line Length SMO")
erg = tsi(close, shortlen, longlen)
sig = ema(erg, siglen)
osc = erg - sig


shortCondition =  close < vwapMonthly and hist < hist[1] and osc < 0
longCondition =  close > vwapMonthly and hist> hist[1] and osc > 0

tplong=input(0.085, step=0.005, title="Take profit % for long")
sllong=input(0.03, step=0.005, title="Stop loss % for long")
tpshort=input(0.05, step=0.005, title="Take profit % for short")
slshort=input(0.025, step=0.005, title="Stop loss % for short")

strategy.entry("long",1,when=longCondition)
strategy.entry("short",0,when=shortCondition)

strategy.exit("short_tp/sl", "long", profit=close * tplong / syminfo.mintick, loss=close * sllong / syminfo.mintick, comment='LONG EXIT',  alert_message = 'closeshort')
strategy.exit("short_tp/sl", "short", profit=close * tpshort / syminfo.mintick, loss=close * slshort / syminfo.mintick, comment='SHORT EXIT',  alert_message = 'closeshort')




もっと