ボリンジャーバンドに基づく高頻度取引戦略


作成日: 2023-12-21 15:37:07 最終変更日: 2023-12-21 15:37:07
コピー: 0 クリック数: 905
1
フォロー
1621
フォロワー

ボリンジャーバンドに基づく高頻度取引戦略

概要

この戦略は,ブリン帯の指標に基づいて,高周波取引戦略を実現する.この戦略は,価格の標準差と移動平均を計算して,上下ブリン帯を決定する.価格が中線に触れたときに,買ったり売ったりする.各取引に全額投入を固定し,0.5%の止まり範囲を設定する.この戦略は,高波動の取引ペアと手数料のない取引所に適用する.

戦略原則

この策略は,ブリン帯の指標を使用して,価格が過買または過売に達したかどうかを判断する.ブリン帯は,上ブリン帯,下ブリン帯,中線で構成されている.中線は,価格のn日単位の移動平均である.上ブリン帯は,中線加算のk倍のn日単位の標準差である.下ブリン帯は,中線減算のk倍のn日単位の標準差である.k値は,一般的に2に設定されている.価格が上ブリン帯に近づくと,過買を意味する.価格が下ブリン帯に近づくと,過売を意味する.

この策略では,ブリン帯のパラメータの長さは20日,k値は2である. 価格が中線に触れたとき,価格が過度領域から戻り,取引信号を生成する. 多信号は価格の上部中線を貫通し,空信号は価格下部中線を貫通する.

ポジションを開くたびに,全資金を投入する (資本と浮動損失を含む). 0.5%のストップ範囲を設定する. 価格が0.5%を超えると,平仓の利回りをする.

優位分析

この戦略の利点は以下の通りです.

  1. ブリン帯は,単純移動平均などの指標よりも,価格の相対的高低点を判別する上で優れている.

  2. 高周波取引戦略により,各取引周期が短いので,すぐに利益を得ることができます.

  3. 取引の全額を投資することで,最大限の利益を得ることができます.

  4. 利潤を固定するためのストップ・レンジを設定し,リスクを効果的に制御します.

リスク分析

この戦略にはいくつかのリスクがあります.

  1. ブリン帯の指標はパラメータに敏感で,パラメータが正しく設定されていない場合,大量に誤信号を生成する.

  2. 高周波取引は手数料がかからない取引所が必要で,手数料が利潤を速やかに蝕む.

  3. 資金取引はリスクが高い. 突発的な事態が発生した場合,大きな損失を招く可能性があります.

  4. ストップ範囲が狭く,取引が多く,操作が頻繁になる.

対応方法:

  1. ブリン帯のパラメータを最適化して,最適なパラメータを見つけます.

  2. 取引料金がかからない取引所を選んでください.

  3. 損失を最大限に抑えるために,ストップを設定します.

  4. 取引の範囲を適切に拡大し,取引数を減らす.

最適化の方向

この戦略は以下の点で最適化できます.

  1. エネルギー潮の指数などの取引量指標と組み合わせた偽突破をフィルタリングする.

  2. ブリン帯のパラメータを最適化して,最適なパラメータの組み合わせを見つけます.

  3. ダイナミックなストップ・ロスの範囲を設定する.例えば,取引回数や利益回数が増えるにつれ,ストップ範囲を徐々に拡大する.

  4. 機械学習モデルを追加し,そのモデルを活用して予測する.

  5. 基本的分析と組み合わせて,重要な出来事の前後に (財務報告の発表など) 取引を避ける.

要約する

この戦略はブリン帯を基に高周波取引戦略を構築している.ブリン帯を判断して買賣点,全仓取引,小ストップを効率的に利益を得るために使用している.同時に,いくつかのパラメータの感受性,リスク管理などの問題がある.指標システム,ダイナミックストップ損失,機械学習などの改善から最適化することができ,戦略をより安定して信頼できる.

ストラテジーソースコード
/*backtest
start: 2022-12-14 00:00:00
end: 2023-12-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Estrategia Bollinger Bands", shorttitle="BB Strategy", overlay=true)

// Parámetros de las Bandas de Bollinger
length = input(20, title="Longitud")
mult = input(2.0, title="Multiplicador")

// Calcula las Bandas de Bollinger
basis = ta.sma(close, length)
upper_band = basis + mult * ta.stdev(close, length)
lower_band = basis - mult * ta.stdev(close, length)

// Condiciones para realizar operaciones
price_touches_basis_up = ta.crossover(close, basis)
price_touches_basis_down = ta.crossunder(close, basis)

// Monto inicial de inversión
monto_inicial = 10

// Lógica de la estrategia
if (price_touches_basis_up)
    qty = strategy.equity + strategy.netprofit // Invertir el total del capital más las ganancias en cada operación
    direction = close > basis ? strategy.long : strategy.short
    strategy.entry("Operacion", direction, qty = 1)

// Lógica para cerrar la operación con un movimiento del 0.5% (take profit)
target_profit = 0.005 // Actualizado a 0.5%

if (strategy.position_size != 0)
    direction = strategy.position_size > 0 ? strategy.long : strategy.short
    strategy.exit("Take Profit/Close", from_entry = "Operacion", profit = close * (1 + target_profit))

// Dibuja las Bandas de Bollinger en el gráfico
plot(upper_band, color=color.blue, title="Upper Band")
plot(lower_band, color=color.red, title="Lower Band")
plot(basis, color=color.green, title="Basis")

// Muestra el monto inicial de inversión en la barra del título
var label lbl = label.new(na, na, "")
label.set_text(lbl, "Monto Inicial: $" + str.tostring(monto_inicial, "#.########"))
label.set_xy(lbl, bar_index, low)
label.set_color(lbl, color.new(color.blue, 0))