
この戦略は,複数の技術指標を組み合わせて,長短双方向の取引決定を制定する.主にブリンライン,RSI,ADXなどの指標を含む.同時に均線を組み合わせてトレンドの方向を判断する.
この戦略は,主にブリンラインによって価格の揺れ状態を判断する.ブリンラインの収縮は,価格の変動が低下し,突破が起こる可能性があることを意味する.同時に,RSIと組み合わせて,超買い超売り現象を判断する.RSIが70を超えると超買い領域であり,30を下回ると超売り領域である.ブリンラインが収縮し,RSI指標が超買い超売り領域に近づくと,反転取引が行われます.
さらに,この戦略は,ADXが価格動向の強さを判断するために使用されます.ADXが高く,傾向が強いことを代表する場合は,順位取引を選択できます.ADXが低い場合は,明らかな傾向がないことを代表する場合は,逆転取引を検討できます.最後に,均線と組み合わせて,長期の傾向の方向を判断し,価格が上昇傾向にある場合は,購入を検討することができます.価格が下降傾向にある場合は,販売を検討することができます.
具体的には,ブリン帯が収縮すると,RSI指数が超買い超売り区に接近し,価格が下落すると,市場が反発する可能性があり,このとき多めに考慮する.ブリン帯が収縮すると,RSI指数が超売り区に接近し,価格が上位に突破すると,市場が下落する可能性があり,このとき空白を考慮する.また,ADXが高く,価格が上昇傾向にある場合は,多めに押すことができます.ADXが低い場合は,価格が下落傾向にある場合は,空白を押すことができます.複数の指標を組み合わせて操作することで,取引システムの安定性を向上させることができます.
複数の指標を組み合わせた戦略は以下の利点があります.
複数の技術指標を総合的に考慮することで,取引シグナルの正確性と安定性が向上する.単一の指標は偽の突破などの誤導に容易であり,複数の指標の組み合わせはシグナルを検証し,誤った取引を防ぐことができる.
トレンドを考慮し,震動も考慮し,異なる市場状況に適応し,柔軟性がある.トレンド取引は大きなトレンドを追求し,震動取引は小さな利益を目標とする.
また,空白を多めにすることで,単一市場でのポジションリスクを低減し,極端な状況から身を守ることができます.
ポジションが失敗すると,いくつかの利益と損失を制限するストップ・ロストを設定します.
パラメータの最適化により,戦略の効果を向上させ,市場の変化に適応することができます.
この戦略にはいくつかのリスクがあります.
複数の指標の組み合わせは戦略の複雑さを増し,パラメータの設定を不適切にすると効果が低下する可能性がある.十分なテストと最適化が必要である.
基本情報を無視して技術指標に過度に依存すると,取引シグナルが不正確になる可能性があります.
指標が信号を生成する時には,市場が一定に変化している可能性があり,追いつくリスクがあります. 適切な回調を待つ必要があります.
多空双開会は取引頻度を増やし,手数料コストと資金圧力を高めます. ポジションの規模を制御する必要があります.
曲線適合のリスクがあるため,複数の市場で戦略の強さをテストする方が良い.
厳格なストップ,慎重な加仓,合理的なポジションコントロールなどの方法によってリスクを制御することができる.全体的に,この戦略は強力な実用性を持っています.
この戦略は,以下の観点から最適化できる:
異なるパラメータの組み合わせをテストし,最適のパラメータを探します. ステップ進法,ランダム検索,遺伝的アルゴリズムなどの方法を使用してパラメータ最適化することができます.
KDJ,Williamの指標などを追加し,指標群を形成し,戦略の安定性を向上させる.
ポジション管理を最適化し,ポジションを動的に調整することでリスクを制御する.
機械学習のアルゴリズムと組み合わせて,価格の動向と将来の動きを判断するために,定量モデルを使用します.
異なる品種,時間,市場でテストし,戦略の適応性を向上させる.
入場タイミングと出場タイミングを最適化して,トレンドを早期にキャプチャし,逆転前に退場する.
ストップ・ストップ・トラッキング,移動・ストップなどの方法により,利益をロックし,リスクをコントロールする.
基本的要素や市場構造の判断を足し,技術指標からの信号をフィルターする.
この戦略は,複数の指標を用いて価格の傾向を判断し,取引を自動化する.戦略は,指標群検証,双方向取引,止損停止などの優位性があり,取引効率を高めることができる.しかし,最適化,偽信号などの問題にも注意する必要があります.継続的にテストを最適化することで,この戦略は,安定した,実用的量化取引システムになることができます.それは,量化取引戦略の設計の発展方向を代表しています.
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 2h
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/
// © The_Bigger_Bull
//@version=5
strategy("Best TradingView Strategy", overlay=true, margin_long=0, margin_short=0)
//Bollinger Bands
source1 = close
length1 = input.int(15, minval=1)
mult1 = input.float(2.0, minval=0.001, maxval=50)
basis1 = ta.sma(source1, length1)
dev1 = mult1 * ta.stdev(source1, length1)
upper1 = basis1 + dev1
lower1 = basis1 - dev1
//buyEntry = ta.crossover(source1, lower1)
//sellEntry = ta.crossunder(source1, upper1)
//RSI
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"Bollinger Bands" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")
up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"
//plot(rsi, "RSI", color=#7E57C2)
//plot(rsiMA, "RSI-based MA", color=color.yellow)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
bbUpperBand = plot(isBB ? rsiMA + ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Upper Bollinger Band", color=color.green)
bbLowerBand = plot(isBB ? rsiMA - ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Lower Bollinger Band", color=color.green)
fill(bbUpperBand, bbLowerBand, color= isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill")
//ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
up1 = ta.change(high)
down1 = -ta.change(low)
plusDM = na(up1) ? na : (up1 > down1 and up1 > 0 ? up1 : 0)
minusDM = na(down1) ? na : (down1 > up1 and down1 > 0 ? down1 : 0)
truerange = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
out = ta.sma(close, 14)
sma1=ta.sma(close,55)
ema200=ta.ema(close,200)
longCondition = (out>sma1) and ta.crossover(source1, lower1)
if (longCondition )
strategy.entry("long", strategy.long)
shortCondition = (out<sma1) and ta.crossunder(source1, lower1)
if (shortCondition )
strategy.entry("short", strategy.short)
stopl=strategy.position_avg_price-50
tptgt=strategy.position_avg_price+100
stopshort=strategy.position_avg_price+50
tptgtshort=strategy.position_avg_price-100
strategy.exit("longclose","long",trail_offset=5,trail_points=45,when=ta.crossover(sma1,out))
strategy.exit("shortclose","short",trail_offset=5,trail_points=45,when=ta.crossover(out,sma1))
//if strategy.position_avg_price<0
plot(sma1 , color=color.blue)
plot(out, color=color.green)
//plot(ema200,color=color.red)