OBV指標に基づくピラミッド戦略


作成日: 2023-12-08 15:58:29 最終変更日: 2023-12-08 15:58:29
コピー: 0 クリック数: 705
1
フォロー
1621
フォロワー

OBV指標に基づくピラミッド戦略

概要

この戦略は,OBVピラミッドと呼ばれるもので,OBV指標に基づいて開設戦略を設計し,トレンドが現れた後,複数回分批で開設し,トレンドを追跡して利益を得るピラミッド加設方法を採用している.

戦略原則

この戦略は,OBV指標を使用してトレンドの方向を判断する.OBV指標は,取引量の変化に基づいて価格の傾向を判断し,取引量の変化は,市場参加者の態度を反映する.OBV上の0軸を横切ると,買取力道が強化され,多頭トレンドが形成される.OBVの下の0軸を横切ると,売り力道が強化され,空頭トレンドが形成される.

この戦略は,OBVが0軸を横切っているかどうかを判断することによって,多頭トレンドの形成を確認する.多頭トレンドが形成されたときに,ピラミッド式加仓ルールを設定し,最大7回加仓することができる.トレンドを追跡して利益を得るために,止損退出メカニズムを設定する.

優位分析

この戦略の最大の利点は,トレンドを捕捉し,ピラミッド加仓方式でトレンドの運行を追跡し,利益の潜在性が高いことです.また,戦略のリスクは制御され,止損設定があります.

具体的には,その優位性は以下の通りです.

  1. OBVでトレンドの方向を正確に判断する.
  2. ピラミッドの加減は,トレンドの利益を追跡する.
  3. リスクコントロールのストップ・ストップ・パワーを設定します
  4. 戦略の論理はシンプルでわかりやすい.

リスク分析

この戦略のリスクは以下の2つから生じます.

  1. OBVの判断の誤りにより,チャンスが失われ,誤ったポジションが作られました.
  2. リスクは拡大する

対応方法:

  1. OBVパラメータを最適化して判断を確実にする.
  2. リスクの管理を図るため,加仓の回数を適切に管理する.

最適化の方向

この戦略は以下の方向に最適化できます.

  1. OBVパラメータの最適化により,判断の精度が向上する.
  2. 貯蓄回数と金額の最適化
  3. ストップポイントの最適化
  4. 他の指標の判断と組み合わせて,OBV単独のリスク判断を避ける.

コンテンツを最適化することで,戦略をより安定し,制御し,拡張できるようになるでしょう.

要約する

この戦略は全体的に非常に実用的です。OBV指標を使ってトレンドの方向性を判断し,次にピラミッド加仓を通してトレンドを追跡する動作です。戦略の論理は簡潔で明確で,容易に理解し,反測できます。実戦での運用価値があります。パラメータ,ストップ・ロスト・ストップ・ロス,加仓方法などの深層の最適化により,戦略の効果はさらに向上させられ,さらなる研究に値します。

ストラテジーソースコード
/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 1h
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/
// © RafaelZioni

//@version=4

strategy(title = " OBV Pyr", overlay = true, pyramiding=5,initial_capital = 10000, default_qty_type= strategy.percent_of_equity, default_qty_value = 20, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.075)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)

//
fastLength = input(250, title="Fast filter length ", minval=1)
slowLength = input(500,title="Slow filter length",  minval=1)
source=close
v1=ema(source,fastLength)
v2=ema(source,slowLength)
 
//
 
filter=true 
src = close


LengthOBV = input(20)

nv = change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume 
c = cum(nv) 
c_tb = c - sma(c,LengthOBV) 

// Conditions

longCond = crossover(c_tb,0)
//shortCond =crossunder(cnv_tb,0)

//

longsignal  = (v1 > v2 or filter == false ) and longCond
//shortsignal = (v1 < v2 or filter == false ) and shortCond 
 
//set take profit
 
ProfitTarget_Percent = input(3)
Profit_Ticks = close * (ProfitTarget_Percent / 100) / syminfo.mintick
 
//set take profit
 
LossTarget_Percent = input(10)
Loss_Ticks = close * (LossTarget_Percent / 100) / syminfo.mintick
 
 
////Order Placing
//
strategy.entry("Entry 1", strategy.long, when=strategy.opentrades == 0 and longsignal)
//
strategy.entry("Entry 2", strategy.long, when=strategy.opentrades == 1 and longsignal)
//
strategy.entry("Entry 3", strategy.long, when=strategy.opentrades == 2 and longsignal)
//
strategy.entry("Entry 4", strategy.long, when=strategy.opentrades == 3 and longsignal)
//
strategy.entry("Entry 5", strategy.long, when=strategy.opentrades == 4 and longsignal)
//
strategy.entry("Entry 6", strategy.long, when=strategy.opentrades == 5 and longsignal)
//
strategy.entry("Entry 7", strategy.long, when=strategy.opentrades == 6 and longsignal)
//
//
//
if strategy.position_size > 0
    strategy.exit(id="Exit 1", from_entry="Entry 1", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 2", from_entry="Entry 2", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 3", from_entry="Entry 3", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 4", from_entry="Entry 4", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 5", from_entry="Entry 5", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 6", from_entry="Entry 6", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 7", from_entry="Entry 7", profit=Profit_Ticks, loss=Loss_Ticks)