OPEN-SOURCE SCRIPT

Advanced Trading Strategy

//version=5
indicator("Advanced Trading Strategy", overlay=true)

// === Input Parameters ===
input_length = input.int(14, title="Length for Highs/Lows")
input_risk_reward = input.float(2.0, title="Risk-Reward Ratio")
input_stop_offset = input.float(10, title="Stop Loss Offset (ticks)")
input_take_offset = input.float(20, title="Take Profit Offset (ticks)")
input_alerts = input.bool(true, title="Enable Alerts")

// === Functions for Swings ===
swingHigh(len) =>
high > ta.highest(high[1], len) and high > ta.highest(high[len], len)

swingLow(len) =>
low < ta.lowest(low[1], len) and low < ta.lowest(low[len], len)

// === Swing High and Low Detection ===
var float swing_high = na
var float swing_low = na

if bar_index > input_length
if swingHigh(input_length)
swing_high := high
if swingLow(input_length)
swing_low := low

// === Entry Conditions ===
long_condition = not na(swing_high) and ta.crossover(close, swing_high)
short_condition = not na(swing_low) and ta.crossunder(close, swing_low)

// === Risk Management ===
var float long_entry = na
var float short_entry = na
var float stop_loss = na
var float take_profit = na

if long_condition
long_entry := swing_high
stop_loss := long_entry - input_stop_offset * syminfo.mintick
take_profit := long_entry + input_take_offset * input_risk_reward * syminfo.mintick

if short_condition
short_entry := swing_low
stop_loss := short_entry + input_stop_offset * syminfo.mintick
take_profit := short_entry - input_take_offset * input_risk_reward * syminfo.mintick

// === Plotting ===
// Entry Labels
var label long_label = na
var label short_label = na

if long_condition
if na(long_label)
long_label := label.new(bar_index, swing_high, "Buy", style=label.style_label_up, color=color.new(color.green, 0), textcolor=color.white)
else
label.set_xy(long_label, bar_index, swing_high)

if short_condition
if na(short_label)
short_label := label.new(bar_index, swing_low, "Sell", style=label.style_label_down, color=color.new(color.red, 0), textcolor=color.white)
else
label.set_xy(short_label, bar_index, swing_low)

// Stop Loss and Take Profit Lines
var line stop_loss_line = na
var line take_profit_line = na

if not na(stop_loss)
if na(stop_loss_line)
stop_loss_line := line.new(bar_index, stop_loss, bar_index + 1, stop_loss, color=color.red, width=2, style=line.style_dotted)
else
line.set_xy1(stop_loss_line, bar_index, stop_loss)
line.set_xy2(stop_loss_line, bar_index + 1, stop_loss)

if not na(take_profit)
if na(take_profit_line)
take_profit_line := line.new(bar_index, take_profit, bar_index + 1, take_profit, color=color.green, width=2, style=line.style_dotted)
else
line.set_xy1(take_profit_line, bar_index, take_profit)
line.set_xy2(take_profit_line, bar_index + 1, take_profit)

// Alerts
alertcondition(long_condition, title="Long Alert", message="Buy signal detected at {{close}}")
alertcondition(short_condition, title="Short Alert", message="Sell signal detected at {{close}}")
Candlestick analysisChart patternsCycles

Açık kaynak kodlu komut dosyası

Gerçek TradingView ruhuna uygun olarak, bu komut dosyasının yazarı komut dosyasını açık kaynak olarak yayınlamıştır, böylece yatırımcılar betiği anlayabilir ve doğrulayabilir. Yazar çok yaşa! Ücretsiz olarak kullanabilirsiniz, ancak bu kodun yayında yeniden kullanımı Ev kurallarına tabidir. Bir grafikte kullanmak için favorilere ekleyebilirsiniz.

Bu komut dosyasını bir grafikte kullanmak ister misiniz?

Feragatname