
この戦略は,動力に基づく取引システムであり,主にバランス・オブ・パワー (Balance of Power) の指標を4時間周期で取引する.買い手側の力の対比を測定し,指標が既定の値を破るときに取引シグナルをトリガーする.戦略には,ダイナミックなポジション管理,調整可能なレバレッジ,視覚的な取引追跡などの機能が含まれ,市場トレンドの転換点を効果的に捉えることができる.
戦略の核心は, ((閉盘価格 - 開盤価格) / ((最高価格 - 最低価格) を計算して市場の買入力のバランスを測定する.この値は1に近づくと強い看板動力を表示し,-1に近づくと強い下落圧力を表示する.具体的取引論理は以下の通りである.
この戦略は,市場動力の変化をバランスの取れた力の指標で捉え,ダイナミックなポジション管理とリスク管理を組み合わせて,比較的完全な取引システムを構築しています.一定のリスクがあるものの,継続的な最適化と完善によって,戦略の安定性と収益性をさらに向上させることができます.動力の取引に興味のあるトレーダーの使用と研究に適しています.
/*backtest
start: 2024-02-25 00:00:00
end: 2025-02-22 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy(title="Balance of Power for US30 4H", format=format.price, precision=2, default_qty_type=strategy.percent_of_equity, default_qty_value=100, overlay=true, commission_value=0.01, max_labels_count=500, max_lines_count = 500)
leverage = input.float(5, "Leverage 1:", tooltip="Multiply your equity (100%) times the leverage.")
p = (close - open) / (high - low)
qty = strategy.equity * leverage / close
if ta.crossover(p, 0.8)
strategy.entry("L", strategy.long, qty=qty)
if ta.crossunder(p, -0.8)
strategy.close("L")
green = color.new(#0097a7, 0)
red = color.new(#ff195f, 0)
green90 = color.new(#0097a7, 85)
red90 = color.new(#ff195f, 85)
if strategy.position_size > strategy.position_size[1]
label.new(bar_index, low * 0.999, text="▲", textcolor=green, size=size.normal, textalign=text.align_center, color=green90, style=label.style_text_outline)
label.new(bar_index, low * 0.999, text="Buy", textcolor=green, size=size.tiny, textalign=text.align_center, color=green90, style=label.style_label_up)
if strategy.position_size < strategy.position_size[1]
label.new(bar_index, high * 1.001, text="▼", textcolor=red, size=size.normal, textalign=text.align_center, color=red90, style=label.style_text_outline)
label.new(bar_index, high * 1.001, text="Close", textcolor=red, size=size.tiny, textalign=text.align_center, color=red90, style=label.style_label_down)
var float tradeEntryPrice = na
var int tradeEntryBar = na
if strategy.position_size > 0 and strategy.position_size[1] == 0
tradeEntryPrice := close
tradeEntryBar := bar_index
if strategy.position_size == 0 and strategy.position_size[1] > 0
exitPrice = close
exitBar = bar_index
tradeColor = (exitPrice - tradeEntryPrice > 0) ? green : red
topPrice = math.max(tradeEntryPrice, exitPrice)
bottomPrice = math.min(tradeEntryPrice, exitPrice)
box.new(tradeEntryBar, topPrice, exitBar, bottomPrice, border_width=0, bgcolor=color.new(tradeColor, 85))
line.new(tradeEntryBar, topPrice, exitBar, topPrice, color=tradeColor, width=1)
line.new(tradeEntryBar, bottomPrice, exitBar, bottomPrice, color=tradeColor, width=1)