これはボリンジャー帯に基づいた外為ギャップ取引システムです.主要通貨ペアに適しており,可能な限り最低な佣金 (1ピップ以下) と1-15分までのタイムフレームがあります.
このシステムは,取引機会を特定するためにボリンジャーバンド,RSI,ADXインジケーターを使用します.
ボリンジャー帯は価格ブレイクを識別するために使用される.価格が上部帯を超えるとロング,下部帯を下回るとショートする.RSIは偽ブレイクを避けるために使用される.ブレイクはRSIが逆転するときにのみ有効とみなされる (過剰購入ゾーンから落ちるまたは過剰販売ゾーンから上昇する).ADXは明確なトレンドのない市場をフィルタリングするために使用され,ADXが32を下回るときにのみ取引を行う.
特定のエントリールールは:ロングエントリーには,価格が上部帯を超越し,RSIが超売れ区から上昇し,同時に30線,ADXが32線を下回る.ショートエントリーには,価格が下部帯を超越し,RSIが超買い区から落ち,同時に70線,ADXが32線を下回る.
出口規則には,取利益/ストップ損失とミドルライン逆転が含まれます.すなわち:固定取利益/ストップ損失ポイントを設定します.価格がボリンジャーミドルラインに戻るとポジションを閉じる.
このシステムには以下の利点があります.
ギャップ取引の機会を捉えるため ボリンガー帯を使用します
RSI指標を組み合わせて 偽のブレイクアウトを回避し 利益の確率を向上させる
ADX指標を使用して,明確なトレンドのない市場をフィルタリングし,不必要な取引を避ける.
中間線逆転で閉じると,ほとんどの利益が確保され,利益の逆転は避けられます.
高レバレッジの取引に適しており,利益は迅速に拡大できます.
リスクもあります:
ギャップブレイクに頼る ギャップキャプチャなしでは利益はない
バックテストの過適度リスク リアルタイムでの検査結果は バックテストと異なる可能性があります
トレンド期間が不十分で ストローが損失を招く
高いレバレッジはリスクを増大させる 単一の損失は大きくなる
取引時間の制限により,取引が欠けている可能性があります.
この制度は以下の側面から改善できる:
インディケーターの有効性を向上させるパラメータを最適化します.例えば,ボリンジャー周期,RSI設定など.
勝った取引の割合を増やすためにフィルターを追加または改善します.例えば,より多くの指標や基本要素を組み合わせます.
トレーリングストップ損失,ATRベースのストップ損失など,取引ごとに利益を最大化するために利得戦略を最適化します.
期待されるリターンを最大化するために適切なレバレッジレベルを自動的に決定します.
機械学習技術を使用して 手動的な繰り返しの代わりに 最適なパラメータを自動的に探します
ゴールデンボリンガーバンドギャップリバーションシステムは,典型的な短期間のブレイクアウトシステムである. 価格ギャップから利益を得ることを目的としている. 信号の質を改善するために複数のフィルタが使用されている. バックテストで良い収益性を示している. しかし,現生パフォーマンスはまだ検証されず,流動性とスリップが結果に影響を与える. 全体的にこれは有望な短期間の取引戦略であり,現生テストと最適化に値する.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 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/ // © exlux99 //@version=4 strategy("Bollinger Bands, RSI and ADX Trading System", overlay=true) timeinrange(res, sess) => time(res, sess) != 0 timer = color.red //bgcolor(timeinrange(timeframe.period, "0300-0600") or timeinrange(timeframe.period, "0900-1300") or timeinrange(timeframe.period, "2030-2300") ? timer : na, transp=70) //RSI length = input( 20 ) overSold = input( 35 ) overBought = input( 65 ) price = close vrsi = rsi(price, length) co = crossover(vrsi, overSold) cu = crossunder(vrsi, overBought) //if (not na(vrsi)) //BB lengthB = input(60, minval=1) src = input(close, title="Source") mult = input(2.0, minval=0.001, maxval=50, title="StdDev") basis = sma(src, lengthB) dev = mult * stdev(src, lengthB) upper = basis + dev lower = basis - dev //adx adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") dirmov(len) => up = change(high) down = -change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = rma(tr, len) plus = fixnan(100 * rma(plusDM, len) / truerange) minus = fixnan(100 * rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) longEntry = close < upper and crossover(vrsi,overSold) and sig < 32 //and (timeinrange(timeframe.period, "0301-0600") or timeinrange(timeframe.period, "0901-1300") or timeinrange(timeframe.period, "2031-2300")) shortEntry = close > upper and crossunder(vrsi,overBought) and sig < 32 //and (timeinrange(timeframe.period, "0301-0600") or timeinrange(timeframe.period, "0901-1300") or timeinrange(timeframe.period, "2031-2300")) tp=input(90, step=10) sl=input(90, step=10) strategy.entry("long",1,when=longEntry) strategy.exit("X_long", "long", profit=tp, loss=sl ) strategy.close("long",when=crossunder(close,basis)) strategy.entry('short',0,when=shortEntry) strategy.exit("x_short", "short",profit=tp, loss=sl) strategy.close("short",when=crossover(close,basis))