この戦略はブリン帯,移動平均,MACDの3つの指標を組み合わせて,より完全な取引システムを形成します.市場動向を判断しながら,逆転の機会の一部を掴むこともできます.
この戦略の名前は三角定トレンド追跡戦略。この名称は,トレンドの方向と定入場点を判断する際に同時に3種類の技術指標を使用する特性を強調している。
基本取引の論理は以下の通りです.
トレンド方向を判断する. ブリン帯中軌道,EMA移動平均とMACDのゼロ軸の比較によって,現在の市場の多頭期か空頭期かを判断する.
市場に出るタイミングを探す.多頭 (または空頭) のトレンドを決定した後,戦略はEMA移動平均がブリン中軌道を突破するか,MACD柱形線が突破信号線に向かって正 (または負) かによって市場に出る判断をする.
停止停止損失を設定する. 競技場に入ると,固定停止位置と停止損失位置を設定する.
この戦略の最大の利点は,トレンド,平均線,MACDの3つの異なるタイプの技術指標を同時に使用して意思決定を導くことです.これは,市場動向をより正確に判断することを可能にし,また,逆転の機会の一部を把握するのに有利です.
まず,ブリン帯中軌道線は,現在の段階の主要なトレンド方向を明確に反映する.EMA均線の役割は,トレンドの運行を追跡する.それらの比較と組み合わせは,現在の多頭と空頭の状態をより正確に判断することができる.
第二に,ブリン帯は,それ自体が比較的強い包容性を持っている.中軌道線の近くにも,ある種の支柱圧位が反映されているため,EMA線の突破には一定の信号価値がある.
さらに,MACDの追加は多空エネルギーの消耗も可視である.その絶対値の大きさは,大衆の感情の高さまたは冷静さを代表し,逆転の可能性を示唆する.
最後に,ストップ・ストップ・ロスの条件を設定し,単一の取引のリスク・リターンを制御し,全体の安定性を保証します.
この戦略は複数の分析ツールを使用していますが,主なリスクは以下の通りです.
ブリン帯のパラメータは正しく設定されず,中央軌道線は主動を明確に反映できない.
均線システムは多頭信号を発しているが,MACDは明確に修正されていない.空頭力は拡大する可能性がある.
ストップ・ストップ・損失の範囲は大きすぎ,単一の損失は拡大する可能性があります.
解決策は以下の通りです.
ブリン帯のパラメータを調整し,中央軌道線が主動を効果的に反映することを確認する.
余空エネルギーに関する技術的な指標を導入する.
過去の取引状況を評価し,ストップ・ストップ・ロスのパラメータを最適化します.
この戦略は,以下の点でさらに最適化できます.
KDJ,ATRなどの補助判断を導入し,判断の正確性を向上させる.
操作レベルでは,より細かい止損方法を設定する.例えば,移動止損,新高を突破した後に止損比を大きくする.
異なる品種のパフォーマンスを評価する. パラメータをより多くの状況特性に合わせる.
テスト効果と,異なる時間枠と市場のフィードバックの結果を評価した. 適当にパラメータを調整した.
機械学習アルゴリズムを追加し,パラメータの自動最適化と戦略規則の動的更新を実現する.
この戦略は,ブリン帯,移動平均,MACDの3つの主要な技術指標を同時に使用しています. それは,トレンドを明確に判断し,一定の包容性を持ち,反転の機会の一部を掴むこともできます.より多くの補助ツールを判断し,ストップ・ストップ・ストラスの戦略を最適化することで,より安定した取引パフォーマンスを得ることが期待されています.この戦略は,さらなる評価と改善に値し,定量化意思決定の強力なツールになる可能性があります.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Combined Strategy", overlay=true, shorttitle="Comb Strat", default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Precio de beneficio y Stop Loss
takeProfitTicks = 87636
stopLossTicks = 53350
// Bollinger Bands + EMA
length_bb = input(150, title="BB Length")
src_bb = input(close, title="BB Source")
mult = input(2.0, title="BB StdDev")
basis = ta.sma(src_bb, length_bb)
dev = mult * ta.stdev(src_bb, length_bb)
upper = basis + dev
lower = basis - dev
len_ema = input(34, title="EMA Length")
src_ema = input(close, title="EMA Source")
out_ema = ta.ema(src_ema, len_ema)
typeMA = input("SMA", title="Method")
smoothingLength = input(5, title="Length")
var float smoothingLine = na
if (typeMA == "SMA")
smoothingLine := ta.sma(out_ema, smoothingLength)
else if (typeMA == "EMA")
smoothingLine := ta.ema(out_ema, smoothingLength)
// MACD
fast_length = input(title="Fast Length", defval=9)
slow_length = input(title="Slow Length", defval=17)
src_macd = input(title="Source", defval=close)
signal_length = input.int(title="Signal Smoothing", minval=1, maxval=50, defval=9)
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])
fast_ma = sma_source == "SMA" ? ta.sma(src_macd, fast_length) : ta.ema(src_macd, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src_macd, slow_length) : ta.ema(src_macd, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
// Condiciones de compra y venta
longCondition = (out_ema > basis) and (macd > signal) and (signal > 0)
shortCondition = (out_ema < basis) and (macd < signal) and (signal < 0)
// Variables de estado
var bool longExecuted = na
var bool shortExecuted = na
// Estrategia
if (longCondition and not longExecuted)
strategy.entry("Long", strategy.long)
longExecuted := true
shortExecuted := na
if (shortCondition and not shortExecuted)
strategy.entry("Short", strategy.short)
shortExecuted := true
longExecuted := na
// Take Profit y Stop Loss para Compras y Ventas Cortas
strategy.exit("Take Profit/Close Long", from_entry="Long", profit=takeProfitTicks, loss=stopLossTicks)
strategy.exit("Take Profit/Close Short", from_entry="Short", profit=takeProfitTicks, loss=stopLossTicks)
// Cierre de posiciones cuando la dirección cambia
if ((out_ema < basis) and (macd < signal))
strategy.close("Long")
longExecuted := na
if ((out_ema > basis) and (macd > signal))
strategy.close("Short")
shortExecuted := na
// Plots
plot(basis, "BB Basis", color=#FF6D00)
plot(upper, "BB Upper", color=color.new(#2962FF, 0.5))
plot(lower, "BB Lower", color=color.new(#2962FF, 0.5))
plot(smoothingLine, title="Smoothing Line", color=#f37f20, linewidth=2)
hline(0, "Zero Line", color=color.new(#787B86, 50))
plot(hist, title="Histogram", style=plot.style_columns, color=(hist >= 0 ? (hist[1] < hist ? color.green : color.red) : (hist[1] < hist ? color.red : color.green)))
plot(macd, title="MACD", color=color.blue)
plot(signal, title="Signal", color=color.orange)