
이 전략은 동력 기반의 거래 시스템으로, 주로 균형 힘 ((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)