
¿Sabías que esta estrategia es como el triángulo de Poseidón, el dios del mar griego antiguo, que construye una poderosa arma de negociación con tres puntos clave? ¡El triángulo de Poseidón lo hace buscando los tres puntos de inflexión más importantes en el mercado (los puntos centrales) y luego traza un canal en forma de “triángulo” para capturar el momento de oro en el que el precio se rompe!
Imagina que construyes una simple tienda de campaña junto al mar con tres palos de madera. ️ - La primera es el soporte, las otras dos forman el borde de la tienda. Cuando el viento (el precio) rompe el borde de la tienda, ¡es la señal de que estamos en acción!
¡Acentrarse en las cosas!La esencia de esta estrategia es que:
Es como si estuvieras en una estación de metro abarrotada, y estuvieras observando los tres puntos clave de la afluencia de gente, y pudieras predecir en qué dirección la gente iba a fluir.
Guía para evitar las fosas¡No todos los avances valen la pena!
Hay muchas condiciones.:
Condiciones de vacío:
La parte más inteligente de esta estrategia es la administración de fondos para la ciencia.
Es como si estuvieras en un parque de diversiones y estuvieras jugando a las montañas rusas. ¡Eh, el cinturón de seguridad debe estar bien atado, pero debes dejarte espacio para la excitación!
Recuerde, el comercio es como aprender a andar en bicicleta ♀️, puede ser difícil al principio, pero cuando se aprende el equilibrio, se vuelve libre! Esta estrategia de la tríada es su “rueda auxiliar” que le ayudará a mantener el equilibrio en el mercado.
/*backtest
start: 2024-10-29 00:00:00
end: 2025-10-27 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Pitchfork Trading Friends",
overlay=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100) // We will calculate size manually
// === 1. INPUTS ===
leftBars = input.int(10, "Pivot Left Bars", minval=1)
rightBars = input.int(10, "Pivot Right Bars", minval=1)
riskPercent = input.float(1.0, "Risk Per Trade %", minval=0.1, step=0.1)
// === 2. PIVOT DETECTION & STORAGE ===
// Find pivot points
float ph = ta.pivothigh(high, leftBars, rightBars)
float pl = ta.pivotlow(low, leftBars, rightBars)
// Store the last 3 pivots (P1, P2, P3)
var float p1_price = na
var int p1_bar = na
var float p2_price = na
var int p2_bar = na
var float p3_price = na
var int p3_bar = na
var int lastPivotType = 0 // 0=none, 1=high, -1=low
// Update pivots when a new one is found, ensuring they alternate
if not na(ph) and lastPivotType != 1
p1_price := p2_price
p1_bar := p2_bar
p2_price := p3_price
p2_bar := p3_bar
p3_price := ph
p3_bar := bar_index[rightBars]
lastPivotType := 1
if not na(pl) and lastPivotType != -1
p1_price := p2_price
p1_bar := p2_bar
p2_price := p3_price
p2_bar := p3_bar
p3_price := pl
p3_bar := bar_index[rightBars]
lastPivotType := -1
// === 3. PITCHFORK CALCULATION & DRAWING ===
// We need 3 valid points to draw
bool has3Pivots = not na(p1_bar) and not na(p2_bar) and not na(p3_bar)
// Declare lines
var line medianLine = na
var line upperLine = na
var line lowerLine = na
// Declare line prices for strategy logic
var float ml_price = na
var float ul_price = na
var float ll_price = na
if (has3Pivots)
// P1, P2, P3 coordinates
p1_y = p1_price
p1_x = p1_bar
p2_y = p2_price
p2_x = p2_bar
p3_y = p3_price
p3_x = p3_bar
// Calculate midpoint of P2-P3
mid_y = (p2_y + p3_y) / 2.0
mid_x = (p2_x + p3_x) / 2.0
// Calculate Median Line (ML) slope
float ml_slope = (mid_y - p1_y) / (mid_x - p1_x)
// Calculate price on current bar for each line
// y = m*(x - x_n) + y_n
ml_price := ml_slope * (bar_index - p1_x) + p1_y
// Identify which pivot is high (P2 or P3)
float highPivot_y = p2_y > p3_y ? p2_y : p3_y
int highPivot_x = p2_y > p3_y ? p2_x : p3_x
float lowPivot_y = p2_y < p3_y ? p2_y : p3_y
int lowPivot_x = p2_y < p3_y ? p2_x : p3_x
// Upper/Lower line prices
ul_price := ml_slope * (bar_index - highPivot_x) + highPivot_y
ll_price := ml_slope * (bar_index - lowPivot_x) + lowPivot_y
// === 4. STRATEGY LOGIC ===
// Define trend by pitchfork slope
bool trendUp = ml_slope > 0
bool trendDown = ml_slope < 0
// Entry Conditions
bool longEntry = ta.crossover(close, ul_price) // Breakout
bool shortEntry = ta.crossunder(close, ll_price) // Breakdown
// Risk Calculation
float capital = strategy.equity
float riskAmount = (capital * riskPercent) / 100
// --- LONG TRADE ---
if (longEntry and trendUp)
float sl_price = ml_price // SL at median line
float stop_loss_pips = close - sl_price
float tp_price = close + stop_loss_pips // 1:1 TP
// Calculate position size
float positionSize = riskAmount / (stop_loss_pips * syminfo.pointvalue)
if (positionSize > 0)
strategy.entry("Long", strategy.long, qty=positionSize)
strategy.exit("SL/TP Long", from_entry="Long", stop=sl_price, limit=tp_price)
// --- SHORT TRADE ---
if (shortEntry and trendDown)
float sl_price = ml_price // SL at median line
float stop_loss_pips = sl_price - close
float tp_price = close - stop_loss_pips // 1:1 TP
// Calculate position size
float positionSize = riskAmount / (stop_loss_pips * syminfo.pointvalue)
if (positionSize > 0)
strategy.entry("Short", strategy.short, qty=positionSize)
strategy.exit("SL/TP Short", from_entry="Short", stop=sl_price, limit=tp_price)