Based on the provided code, I’ll help create an SEO-friendly article analyzing this trading strategy in both Chinese and English.
This strategy is based on Price Action analysis and Bill Williams’ bar thirds theory. It analyzes the position relationships of opening and closing prices within the three equal sections of current and previous bars to identify market trend reversal points and continuity, generating trading signals. The strategy relies solely on price action without any technical indicators, eliminating emotional bias through a systematic approach.
The core logic divides each bar’s range into three equal parts and analyzes the position of opening and closing prices within these sections to determine market trends. Specifically: 1. Bar Classification - Categorizes bars based on open/close positions: - Bullish Patterns: 1-3(low open high close), 2-3(mid open high close), 3-3(high open high close) - Bearish Patterns: 3-1(high open low close), 2-1(mid open low close), 1-1(low open low close) 2. Signal Generation - Confirms trading signals through two consecutive bars: - Buy Signal: Previous bar shows any bullish pattern, current bar is 1-3 or 3-3 - Sell Signal: Previous bar shows any bearish pattern, current bar is 1-1 or 3-1 3. Trade Execution - Automatically executes market orders: - On buy signals, closes short positions and opens long - On sell signals, closes long positions and opens short
This strategy establishes an effective trend-following system through an innovative bar-thirds approach to price action analysis. While it has limitations, proper optimization and risk control measures can generate stable returns in trending markets. Its core strengths lie in the systematic methodology and deep price action analysis, providing a valuable reference direction for quantitative trading.
/*backtest
start: 2025-01-17 00:00:00
end: 2025-02-15 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("TrinityBar", overlay=true, initial_capital=100000,
default_qty_type=strategy.percent_of_equity, default_qty_value=200)
//─────────────────────────────────────────────────────────────
// Current Bar Thirds Calculations
//─────────────────────────────────────────────────────────────
cur_range = high - low
cur_lowerThird = low + cur_range / 3
cur_upperThird = high - cur_range / 3
//─────────────────────────────────────────────────────────────
// Previous Bar Thirds Calculations
//─────────────────────────────────────────────────────────────
prev_range = high[1] - low[1]
prev_lowerThird = low[1] + prev_range / 3
prev_upperThird = high[1] - prev_range / 3
//─────────────────────────────────────────────────────────────
// Define Bullish Bar Types for Current Bar
//─────────────────────────────────────────────────────────────
is_1_3 = (open <= cur_lowerThird) and (close >= cur_upperThird)
is_3_3 = (open >= cur_upperThird) and (close >= cur_upperThird)
is_2_3 = (open > cur_lowerThird) and (open < cur_upperThird) and (close >= cur_upperThird)
//─────────────────────────────────────────────────────────────
// Define Bearish Bar Types for Current Bar
//─────────────────────────────────────────────────────────────
is_3_1 = (open >= cur_upperThird) and (close <= cur_lowerThird)
is_1_1 = (open <= cur_lowerThird) and (close <= cur_lowerThird)
is_2_1 = (open > cur_lowerThird) and (open < cur_upperThird) and (close <= cur_lowerThird)
//─────────────────────────────────────────────────────────────
// Define Bullish Bar Types for Previous Bar
//─────────────────────────────────────────────────────────────
prev_is_1_3 = (open[1] <= prev_lowerThird) and (close[1] >= prev_upperThird)
prev_is_3_3 = (open[1] >= prev_upperThird) and (close[1] >= prev_upperThird)
prev_is_2_3 = (open[1] > prev_lowerThird) and (open[1] < prev_upperThird) and (close[1] >= prev_upperThird)
//─────────────────────────────────────────────────────────────
// Define Bearish Bar Types for Previous Bar
//─────────────────────────────────────────────────────────────
prev_is_3_1 = (open[1] >= prev_upperThird) and (close[1] <= prev_lowerThird)
prev_is_1_1 = (open[1] <= prev_lowerThird) and (close[1] <= prev_lowerThird)
prev_is_2_1 = (open[1] > prev_lowerThird) and (open[1] < prev_upperThird) and (close[1] <= prev_lowerThird)
//─────────────────────────────────────────────────────────────
// Valid Signal Conditions
//─────────────────────────────────────────────────────────────
// Bullish Signal: If the previous bar is any bullish type (2‑3, 3‑3, or 1‑3)
// and the current bar is either a 1‑3 or a 3‑3 bar.
validBuy = (prev_is_2_3 or prev_is_3_3 or prev_is_1_3) and (is_1_3 or is_3_3)
// Bearish Signal: If the previous bar is any bearish type (2‑1, 1‑1, or 3‑1)
// and the current bar is either a 1‑1 or a 3‑1 bar.
validSell = (prev_is_2_1 or prev_is_1_1 or prev_is_3_1) and (is_1_1 or is_3_1)
//─────────────────────────────────────────────────────────────
// Plot Only the Signal Triangles
//─────────────────────────────────────────────────────────────
plotshape(validBuy, title="Valid Buy", style=shape.triangleup, location=location.belowbar,
color=color.green, size=size.small, text="B")
plotshape(validSell, title="Valid Sell", style=shape.triangledown, location=location.abovebar,
color=color.red, size=size.small, text="S")
//─────────────────────────────────────────────────────────────
// Market Order Execution Based on Signals
//─────────────────────────────────────────────────────────────
if validBuy
// Close any short positions.
strategy.close("Short", comment="")
// If not already long, enter a market long.
if strategy.position_size <= 0
strategy.entry("Long", strategy.long, comment="")
if validSell
// Close any long positions.
strategy.close("Long", comment="")
// If not already short, enter a market short.
if strategy.position_size >= 0
strategy.entry("Short", strategy.short, comment="")