-
PHP Code:
//@version=4
indicator('15dk Son 2 Sinyal Arası Zemin', overlay = true)
// Ayarlar
tol = input(0.0001, title = 'Eşitlik toleransı')
// 1dk en yakın SAR hesaplama fonksiyonu
f_nearestSar() =>
s1 = ta.sar(0.01, 0.02, 0.2)
s2 = ta.sar(0.02, 0.02, 0.2)
s3 = ta.sar(0.03, 0.02, 0.2)
s4 = ta.sar(0.04, 0.02, 0.2)
s5 = ta.sar(0.05, 0.02, 0.2)
d1 = math.abs(close - s1)
d2 = math.abs(close - s2)
d3 = math.abs(close - s3)
d4 = math.abs(close - s4)
d5 = math.abs(close - s5)
m = math.min(d1, math.min(d2, math.min(d3, math.min(d4, d5))))
nearest_1m = d1 == m ? s1 : d2 == m ? s2 : d3 == m ? s3 : d4 == m ? s4 : s5
nearest_1m
// 15dk sinyal hesaplama fonksiyonu
f_15m_signal() =>
nearest_1m_15 = f_nearestSar()
sar_5m_15 = request.security(syminfo.tickerid, '5', nearest_1m_15)
sar_15m_15 = request.security(syminfo.tickerid, '15', nearest_1m_15)
sar_avg_15 = (nearest_1m_15 + sar_5m_15 + sar_15m_15) / 3
longSig = ta.crossover(close, sar_avg_15)
shortSig = ta.crossunder(close, sar_avg_15)
[longSig, shortSig]
// 15dk sinyalleri 1dk grafikte al
[longSignal, shortSignal] = request.security(syminfo.tickerid, '15', f_15m_signal())
// 15dk sinyal bar indexlerini tutmak için değişkenler (persistent)
var int lastLongBarIndex = na
var int lastShortBarIndex = na
// 15dk sinyal oluştuğunda bar index güncelle
if longSignal
lastLongBarIndex := bar_index
lastLongBarIndex
if shortSignal
lastShortBarIndex := bar_index
lastShortBarIndex
// Son iki sinyalin bar indexlerini bul
// Burada örnek olarak lastLongBarIndex ve lastShortBarIndex'i karşılaştırıp renk vereceğiz
// Ama sen istediğin mantığa göre bunu değiştirebilirsin
// Eğer ikisi de var ise ve farklıysa zemin boya
bgcolor(not na(lastLongBarIndex) and not na(lastShortBarIndex) and bar_index >= math.min(lastLongBarIndex, lastShortBarIndex) and bar_index <= math.max(lastLongBarIndex, lastShortBarIndex) ? color.new(color.yellow, 80) : na)
// 1dk grafikte sinyalleri çiz (isteğe bağlı)
plotshape(longSignal, title = '15dk AL', style = shape.triangleup, location = location.belowbar, color = color.new(color.lime, 0), size = size.tiny)
plotshape(shortSignal, title = '15dk SAT', style = shape.triangledown, location = location.abovebar, color = color.new(color.red, 0), size = size.tiny)
-
PHP Code:
//@version=4
indicator('..', overlay = true)
/////////////
// SYMBOLS //
u01 = input.bool(true, title = '', group = 'Symbols', inline = 's01')
u02 = input.bool(true, title = '', group = 'Symbols', inline = 's02')
u03 = input.bool(true, title = '', group = 'Symbols', inline = 's03')
u04 = input.bool(true, title = '', group = 'Symbols', inline = 's04')
u05 = input.bool(true, title = '', group = 'Symbols', inline = 's05')
u06 = input.bool(true, title = '', group = 'Symbols', inline = 's06')
u07 = input.bool(true, title = '', group = 'Symbols', inline = 's07')
u08 = input.bool(true, title = '', group = 'Symbols', inline = 's08')
u09 = input.bool(true, title = '', group = 'Symbols', inline = 's09')
u10 = input.bool(true, title = '', group = 'Symbols', inline = 's10')
s01 = input.symbol('BIST:XU100', group = 'Symbols', inline = 's01')
s02 = input.symbol('BIST:YKBNK', group = 'Symbols', inline = 's02')
s03 = input.symbol('BIST:KCHOL', group = 'Symbols', inline = 's03')
s04 = input.symbol('BIST:THYAO', group = 'Symbols', inline = 's04')
s05 = input.symbol('BIST:ASELS', group = 'Symbols', inline = 's05')
s06 = input.symbol('BIST:TUPRS', group = 'Symbols', inline = 's06')
s07 = input.symbol('BIST:SANFM', group = 'Symbols', inline = 's07')
s08 = input.symbol('BIST:SKYMD', group = 'Symbols', inline = 's08')
s09 = input.symbol('BIST:SAMAT', group = 'Symbols', inline = 's09')
s10 = input.symbol('BIST:ARENA', group = 'Symbols', inline = 's10')
//////////////////
// CALCULATIONS //
// Get only symbol
only_symbol(s) =>
array.get(str.split(s, ':'), 1)
id_symbol(s) =>
switch s
1 => only_symbol(s01)
2 => only_symbol(s02)
3 => only_symbol(s03)
4 => only_symbol(s04)
5 => only_symbol(s05)
6 => only_symbol(s06)
7 => only_symbol(s07)
8 => only_symbol(s08)
9 => only_symbol(s09)
10 => only_symbol(s10)
=> na
screener_func() =>
// MAs
ma = ta.sar(0, 0.9, 0.1)
ma_signal = 0.0
ma_signal := ta.crossover(close, ma) ? 1 : ta.crossunder(close, ma) ? -1 : ma_signal[1] + math.sign(ma_signal[1])
[math.round_to_mintick(close), math.round_to_mintick(ma), ma_signal]
// Set Up Matrix
screenerMtx = matrix.new<float>(0, 4, na)
screenerFun(numSym, sym, flg) =>
[cl, ma, ma_sig] = request.security(sym, timeframe.period, screener_func())
arr = array.from(numSym, cl, ma, ma_sig)
if flg
matrix.add_row(screenerMtx, matrix.rows(screenerMtx), arr)
// Security call
screenerFun(01, s01, u01)
screenerFun(02, s02, u02)
screenerFun(03, s03, u03)
screenerFun(04, s04, u04)
screenerFun(05, s05, u05)
screenerFun(06, s06, u06)
screenerFun(07, s07, u07)
screenerFun(08, s08, u08)
screenerFun(09, s09, u09)
screenerFun(10, s10, u10)
///////////
// PLOTS //
var tbl = table.new(position.top_center, 4, 11, frame_color = #151715, frame_width = 1, border_width = 2, border_color = color.new(color.white, 100))
order_arr = array.new_string(0)
if barstate.islast
table.clear(tbl, 0, 0, 3, 10)
table.cell(tbl, 0, 0, 'Adı', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 1, 0, 'Fiyat', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 2, 0, 'Sar', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 3, 0, 'Sinyal', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
array.clear(order_arr)
if matrix.rows(screenerMtx) > 0
for i = 0 to matrix.rows(screenerMtx) - 1 by 1
sig = matrix.get(screenerMtx, i, 3)
if sig == 1
order = '{"ticker": "' + id_symbol(matrix.get(screenerMtx, i, 0)) + '","action": "buy","price": "' + str.tostring(matrix.get(screenerMtx, i, 1)) + '","time": "' + str.tostring(timenow) + '"}'
array.push(order_arr, order)
if sig == -1
order = '{"ticker": "' + id_symbol(matrix.get(screenerMtx, i, 0)) + '","action": "sell","price": "' + str.tostring(matrix.get(screenerMtx, i, 1)) + '","time": "' + str.tostring(timenow) + '"}'
array.push(order_arr, order)
ma_signal_txt = sig == 1 ? 'Long' : sig == -1 ? 'Short' : sig > 0 ? 'Long [' + str.tostring(math.abs(sig) - 1) + ']' : sig < 0 ? 'Short [' + str.tostring(math.abs(sig) - 1) + ']' : ''
ma_col = sig == 1 ? color.green : sig == -1 ? color.red : #aaaaaa
table.cell(tbl, 0, i + 1, id_symbol(matrix.get(screenerMtx, i, 0)), text_halign = text.align_left, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 1, i + 1, str.tostring(matrix.get(screenerMtx, i, 1)), text_halign = text.align_center, bgcolor = #aaaaaa, text_color = color.white, text_size = size.small)
table.cell(tbl, 2, i + 1, str.tostring(matrix.get(screenerMtx, i, 2)), text_halign = text.align_center, bgcolor = #aaaaaa, text_color = color.white, text_size = size.small)
table.cell(tbl, 3, i + 1, ma_signal_txt, text_halign = text.align_center, bgcolor = ma_col, text_color = color.white, text_size = size.small)
varip last_alert_bar_sent = 0
if barstate.isconfirmed
if array.size(order_arr) > 0 and time_close > last_alert_bar_sent
log.info(str.tostring(last_alert_bar_sent) + ' ' + str.tostring(time_close))
last_alert_bar_sent := time_close
log.info(str.tostring(order_arr))
for i = 0 to array.size(order_arr) - 1 by 1
alert(array.pop(order_arr), freq = alert.freq_all)
///////////////////////////////////
// === Parameters ===
length = input.int(1, minval = 1, title = 'SMA Length for Candle Midpoint')
scale = input.float(200.0, minval = 1.0, step = 1.0, title = 'Band Scaling (% of Average Candle Height)')
fill_type = input.string('Gradient', title = 'Fill Type', options = ['Gradient', 'Solid', 'None'], group = 'Style')
// === Color Parameters ===
colUpper = input.color(color.rgb(162, 16, 6), title = 'Upper Band and Gradient Color', group = 'Style')
colLower = input.color(color.rgb(6, 162, 47), title = 'Lower Band and Gradient Color', group = 'Style')
solidFillColor = input.color(color.gray, title = 'Solid Fill Color', group = 'Style')
// === Signal Parameters ===
show_return_signals = input.bool(true, title = 'Show Band Reversal Signals', group = 'Signals')
bullishSignalColor = input.color(color.green, title = 'Lower Band Reversal Signal Color', group = 'Signals')
bearishSignalColor = input.color(color.red, title = 'Upper Band Reversal Signal Color', group = 'Signals')
show_sma_signals = input.bool(true, title = 'Show SMA Crossover Signals', group = 'Signals')
smaCrossUpColor = input.color(color.green, title = 'SMA Crossover Up Signal Color', group = 'Signals')
smaCrossDownColor = input.color(color.red, title = 'SMA Crossover Down Signal Color', group = 'Signals')
// === Calculations ===
// 1. Candle Midpoint
candleMid = (high + low) / 2
// 2. SMA of Candle Midpoint
midSma = ta.sma(candleMid, length)
// 3. Average Candle Height
avgRange = ta.sma(high - low, length)
// 4. Offset = % of Average Candle Height
offset = avgRange * scale / 100
// 5. Bands
upperBand = midSma + offset
lowerBand = midSma - offset
// === Reversal Signals ===
// Condition: Price closes above upper band
aboveUpper = close[1] > upperBand[1]
// Condition: Reversal candle (bearish, closes below upper band)
returnToUpper = show_return_signals and aboveUpper and close < upperBand and close < open
// Condition: Price closes below lower band
belowLower = close[1] < lowerBand[1]
// Condition: Reversal candle (bullish, closes above lower band)
returnToLower = show_return_signals and belowLower and close > lowerBand and close > open
// === SMA Crossover Signals ===
smaCrossUp = show_sma_signals and ta.crossover(close, midSma)
smaCrossDown = show_sma_signals and ta.crossunder(close, midSma)
// === Visualization ===
// Middle Line
plot(midSma, color = color.new(#e9f109, 70), title = 'Candle Midpoint SMA', linewidth = 1)
// Channel and Boundaries
plotUpper = plot(upperBand, title = 'Upper Band', color = colUpper, display = display.all)
plotLower = plot(lowerBand, title = 'Lower Band', color = colLower, display = display.all)
midCenter = (upperBand + lowerBand) / 2
plotMid = plot(midCenter, title = 'Midpoint', display = display.none)
// Gradient Levels (12 equal layers per half)
mid0 = plot(upperBand - (upperBand - midCenter) * 0 / 12, display = display.none)
mid1 = plot(upperBand - (upperBand - midCenter) * 1 / 12, display = display.none)
mid2 = plot(upperBand - (upperBand - midCenter) * 2 / 12, display = display.none)
mid3 = plot(upperBand - (upperBand - midCenter) * 3 / 12, display = display.none)
mid4 = plot(upperBand - (upperBand - midCenter) * 4 / 12, display = display.none)
mid5 = plot(upperBand - (upperBand - midCenter) * 5 / 12, display = display.none)
mid6 = plot(upperBand - (upperBand - midCenter) * 6 / 12, display = display.none)
mid7 = plot(upperBand - (upperBand - midCenter) * 7 / 12, display = display.none)
mid8 = plot(upperBand - (upperBand - midCenter) * 8 / 12, display = display.none)
mid9 = plot(upperBand - (upperBand - midCenter) * 9 / 12, display = display.none)
mid10 = plot(upperBand - (upperBand - midCenter) * 10 / 12, display = display.none)
mid11 = plot(upperBand - (upperBand - midCenter) * 11 / 12, display = display.none)
// Lower Half
mid12 = plot(midCenter + (lowerBand - midCenter) * 1 / 12, display = display.none)
mid13 = plot(midCenter + (lowerBand - midCenter) * 2 / 12, display = display.none)
mid14 = plot(midCenter + (lowerBand - midCenter) * 3 / 12, display = display.none)
mid15 = plot(midCenter + (lowerBand - midCenter) * 4 / 12, display = display.none)
mid16 = plot(midCenter + (lowerBand - midCenter) * 5 / 12, display = display.none)
mid17 = plot(midCenter + (lowerBand - midCenter) * 6 / 12, display = display.none)
mid18 = plot(midCenter + (lowerBand - midCenter) * 7 / 12, display = display.none)
mid19 = plot(midCenter + (lowerBand - midCenter) * 8 / 12, display = display.none)
mid20 = plot(midCenter + (lowerBand - midCenter) * 9 / 12, display = display.none)
mid21 = plot(midCenter + (lowerBand - midCenter) * 10 / 12, display = display.none)
mid22 = plot(midCenter + (lowerBand - midCenter) * 11 / 12, display = display.none)
mid23 = plot(midCenter + (lowerBand - midCenter) * 12 / 12, display = display.none)
// Gradient Fill - Upper Half
fill(plotUpper, mid0, color = fill_type == 'Gradient' ? color.new(colUpper, 60) : na)
fill(mid0, mid1, color = fill_type == 'Gradient' ? color.new(colUpper, 63) : na)
fill(mid1, mid2, color = fill_type == 'Gradient' ? color.new(colUpper, 66) : na)
fill(mid2, mid3, color = fill_type == 'Gradient' ? color.new(colUpper, 69) : na)
fill(mid3, mid4, color = fill_type == 'Gradient' ? color.new(colUpper, 72) : na)
fill(mid4, mid5, color = fill_type == 'Gradient' ? color.new(colUpper, 75) : na)
fill(mid5, mid6, color = fill_type == 'Gradient' ? color.new(colUpper, 78) : na)
fill(mid6, mid7, color = fill_type == 'Gradient' ? color.new(colUpper, 81) : na)
fill(mid7, mid8, color = fill_type == 'Gradient' ? color.new(colUpper, 84) : na)
fill(mid8, mid9, color = fill_type == 'Gradient' ? color.new(colUpper, 87) : na)
fill(mid9, mid10, color = fill_type == 'Gradient' ? color.new(colUpper, 90) : na)
fill(mid10, mid11, color = fill_type == 'Gradient' ? color.new(colUpper, 93) : na)
// Middle Transition - Neutral
fill(mid11, mid12, color = fill_type == 'Gradient' ? color.new(color.gray, 95) : na)
// Gradient Fill - Lower Half
fill(mid12, mid13, color = fill_type == 'Gradient' ? color.new(colLower, 90) : na)
fill(mid13, mid14, color = fill_type == 'Gradient' ? color.new(colLower, 87) : na)
fill(mid14, mid15, color = fill_type == 'Gradient' ? color.new(colLower, 84) : na)
fill(mid15, mid16, color = fill_type == 'Gradient' ? color.new(colLower, 81) : na)
fill(mid16, mid17, color = fill_type == 'Gradient' ? color.new(colLower, 78) : na)
fill(mid17, mid18, color = fill_type == 'Gradient' ? color.new(colLower, 75) : na)
fill(mid18, mid19, color = fill_type == 'Gradient' ? color.new(colLower, 72) : na)
fill(mid19, mid20, color = fill_type == 'Gradient' ? color.new(colLower, 69) : na)
fill(mid20, mid21, color = fill_type == 'Gradient' ? color.new(colLower, 66) : na)
fill(mid21, mid22, color = fill_type == 'Gradient' ? color.new(colLower, 63) : na)
fill(mid22, mid23, color = fill_type == 'Gradient' ? color.new(colLower, 60) : na)
// Solid Fill
fill(plotUpper, plotLower, color = fill_type == 'Solid' ? color.new(solidFillColor, 90) : na, title = 'Solid Fill')
-
PHP Code:
//@version=4
indicator('Optimized SAR Eşleşme (1dk Saatlik SAR)', overlay = true)
// Kullanıcı inputları
start_min = input.float(0.01, 'Start Min', step = 0.01)
start_step = input.float(0.1, 'Start Step', step = 0.01)
inc = input(0.1, 'Increment')
max_val = input(0.1, 'Max')
tol = input(0.0001, 'Tolerans')
// 5 farklı start değeri oluştur
s1 = start_min
s2 = start_min + start_step
s3 = start_min + 2 * start_step
s4 = start_min + 3 * start_step
s5 = start_min + 4 * start_step
// 1dk SAR hesapla
sar_1 = ta.sar(s1, inc, max_val)
sar_2 = ta.sar(s2, inc, max_val)
sar_3 = ta.sar(s3, inc, max_val)
sar_4 = ta.sar(s4, inc, max_val)
sar_5 = ta.sar(s5, inc, max_val)
// 60dk SAR hesapla
sar_60_1 = request.security(syminfo.tickerid, '15', ta.sar(s1, inc, max_val), lookahead = barmerge.lookahead_off)
sar_60_2 = request.security(syminfo.tickerid, '15', ta.sar(s2, inc, max_val), lookahead = barmerge.lookahead_off)
sar_60_3 = request.security(syminfo.tickerid, '15', ta.sar(s3, inc, max_val), lookahead = barmerge.lookahead_off)
sar_60_4 = request.security(syminfo.tickerid, '15', ta.sar(s4, inc, max_val), lookahead = barmerge.lookahead_off)
sar_60_5 = request.security(syminfo.tickerid, '15', ta.sar(s5, inc, max_val), lookahead = barmerge.lookahead_off)
// Eşleşme kontrolü (1dk grafikte)
match_60_1 = timeframe.period == '1' and math.abs(sar_1 - sar_60_1) <= tol
match_60_2 = timeframe.period == '1' and math.abs(sar_2 - sar_60_2) <= tol
match_60_3 = timeframe.period == '1' and math.abs(sar_3 - sar_60_3) <= tol
match_60_4 = timeframe.period == '1' and math.abs(sar_4 - sar_60_4) <= tol
match_60_5 = timeframe.period == '1' and math.abs(sar_5 - sar_60_5) <= tol
// Eşleşen noktaları göster
plotshape(match_60_1, location = location.top, color = color.new(color.yellow, 0), style = shape.triangleup, size = size.normal, title = 'SAR 1')
plotshape(match_60_2, location = location.top, color = color.new(color.yellow, 0), style = shape.triangleup, size = size.normal, title = 'SAR 2')
plotshape(match_60_3, location = location.top, color = color.new(color.yellow, 0), style = shape.triangleup, size = size.normal, title = 'SAR 3')
plotshape(match_60_4, location = location.top, color = color.new(color.yellow, 0), style = shape.triangleup, size = size.normal, title = 'SAR 4')
plotshape(match_60_5, location = location.top, color = color.new(color.yellow, 0), style = shape.triangleup, size = size.normal, title = 'SAR 5')
/////////////////////////////////
incx1 = 0.02
maxx1 = 0.2
tolx1 = input(0.0001, 'tolx1erans')
// SAR parametreleri (örnek 5 farklı)
s1x1 = 0.02
s2x1 = 0.04
s3x1 = 0.06
s4x1 = 0.08
s5x1 = 0.10
// 1dk SAR
sar_1x1 = ta.sar(s1x1, incx1, maxx1)
sar_2x1 = ta.sar(s2x1, incx1, maxx1)
sar_3x1 = ta.sar(s3x1, incx1, maxx1)
sar_4x1 = ta.sar(s4x1, incx1, maxx1)
sar_5x1 = ta.sar(s5x1, incx1, maxx1)
// 60dk SAR
sar_60_1x1 = request.security(syminfo.tickerid, '45', ta.sar(s1x1, incx1, maxx1), lookahead = barmerge.lookahead_off)
sar_60_2x1 = request.security(syminfo.tickerid, '45', ta.sar(s2x1, incx1, maxx1), lookahead = barmerge.lookahead_off)
sar_60_3x1 = request.security(syminfo.tickerid, '45', ta.sar(s3x1, incx1, maxx1), lookahead = barmerge.lookahead_off)
sar_60_4x1 = request.security(syminfo.tickerid, '45', ta.sar(s4x1, incx1, maxx1), lookahead = barmerge.lookahead_off)
sar_60_5x1 = request.security(syminfo.tickerid, '45', ta.sar(s5x1, incx1, maxx1), lookahead = barmerge.lookahead_off)
// Eşleşme kontrolü
match_60_1x1 = timeframe.period == '1' and math.abs(sar_1x1 - sar_60_1x1) <= tolx1
match_60_2x1 = timeframe.period == '1' and math.abs(sar_2x1 - sar_60_2x1) <= tolx1
match_60_3x1 = timeframe.period == '1' and math.abs(sar_3x1 - sar_60_3x1) <= tolx1
match_60_4x1 = timeframe.period == '1' and math.abs(sar_4x1 - sar_60_4x1) <= tolx1
match_60_5x1 = timeframe.period == '1' and math.abs(sar_5x1 - sar_60_5x1) <= tolx1
// plotshape koşulu parametresi olarak verilir
plotshape(match_60_1x1, location = location.top, color = color.new(color.purple, 0), style = shape.triangleup, size = size.huge, title = 'SAR 0.02')
plotshape(match_60_2x1, location = location.top, color = color.new(color.purple, 0), style = shape.triangleup, size = size.huge, title = 'SAR 0.04')
plotshape(match_60_3x1, location = location.top, color = color.new(color.purple, 0), style = shape.triangleup, size = size.huge, title = 'SAR 0.06')
plotshape(match_60_4x1, location = location.top, color = color.new(color.purple, 0), style = shape.triangleup, size = size.huge, title = 'SAR 0.08')
plotshape(match_60_5x1, location = location.top, color = color.new(color.purple, 0), style = shape.triangleup, size = size.huge, title = 'SAR 0.10')
////////////////////
-
PHP Code:
//@version=4
indicator('..', shorttitle = '.', overlay = true, max_lines_count = 100, max_labels_count=100, max_boxes_count = 100, max_bars_back = 100)
//////////////////////////////////////////////İMZA AT//////////////////////////////////////////////////
/////////////////////////////EN HIZLI SARLA BAR RENKLENDİR////////////////////
// —————————————————————————————————————————
f_colorNew(_color, _transp) =>
var _r = color.r(_color)
var _g = color.g(_color)
var _b = color.b(_color)
color _return = color.rgb(_r, _g, _b, _transp)
_return
//automatic higher timeframe chooser
f_autoHTF(str) =>
str == '1S' or str == '5S' or str == '10S' or str == '15S' or str == '20S' or str == '30S' or str == '40S' or str == '45S' or str == '50S' ? '1' : str == '1' or str == '2' or str == '3' or str == '4' ? '5' : str == '5' or str == '10' ? '15' : str == '15' or str == '20' ? '30' : str == '30' or str == '45' or str == '50' ? '60' : str == '60' or str == '90' or str == '100' ? '120' : str == '120' or str == '180' ? '240' : str == '240' ? 'D' : str == 'D' ? 'W' : str == 'W' ? '2W' : 'M'
var string ticker = syminfo.tickerid
var string tfp = timeframe.period
htf1 = f_autoHTF(tfp)
htf2 = f_autoHTF(htf1)
htf3 = f_autoHTF(htf2)
htf4 = f_autoHTF(htf3)
f_security(_sym, _res, _src, _rep) =>
request.security(_sym, _res, _src[not _rep and barstate.isrealtime ? 1 : 0])[_rep or barstate.isrealtime ? 0 : 1]
//PSAR inputs
grpin = '⚙=====-----'
grpout = '-----=====⚙'
grpPSAR = grpin + 'Dual PSAR Options:' + grpout
colorBull = input.color(defval = color.rgb(3, 7, 248, 50), group = grpPSAR, title = 'Bullish Color') //Light Blue
colorBear = input.color(defval = #fc07072f, group = grpPSAR, title = 'Bearish Color') //yellow
colorWait = input.color(defval = color.rgb(241, 191, 9, 50), group = grpPSAR, title = 'Wait Color') //grey
showRecolorCandles = input.bool(true, 'Show Trend Full-Candle Recoloring?', group = grpPSAR, tooltip = 'Recolor the full candle including wick and border with trend color.')
psar_start = input.float(defval = 0.1, group = grpPSAR, title = 'PSAR: Start', minval = 0., maxval = 2, step = 0.01)
psar_accel = input.float(defval = 0.1, group = grpPSAR, title = 'PSAR: Acceleration Factor', minval = 0.01, maxval = 2, step = 0.01)
psar_maximum = input.float(defval = 0.9, group = grpPSAR, title = 'PSAR: Extreme Point', minval = 0.01, maxval = 2)
f_psar() =>
ta.sar(psar_start, psar_accel, psar_maximum)
psar_ctf = f_psar()
psar_htf = f_security(ticker, htf1, f_psar(), false)
longZone = psar_ctf < low and psar_htf < low
shortZone = psar_ctf > high and psar_htf > high
waitZone = not longZone and not shortZone
trendSupportColor = longZone ? colorBull : shortZone ? colorBear : colorWait
plotcandle(showRecolorCandles ? open : na, high, low, close, color = trendSupportColor, wickcolor = trendSupportColor, bordercolor = trendSupportColor, title = 'BAR')
barcolor(trendSupportColor)
//////////////////////////EN HIZLI SAR İLE MTF HESAPLA TABLO YAP/////////////////////////////////////
-
PHP Code:
//@version=4
indicator('.', overlay = true)
// Kullanıcı Girişleri
slow_sar_set = input.float(0.3, 'Slow SAR', minval = 0.01, maxval = 0.3, group = 'SAR Settings')
sar_set = input.float(0.2, 'Normal SAR', minval = 0.01, maxval = 0.2, group = 'SAR Settings')
fast_sar_set = input.float(0.1, 'Fast SAR', minval = 0.01, maxval = 0.1, group = 'SAR Settings')
sar_avg_length = input.int(1, 'Hareketli Ortalama Uzunluğu', minval = 1, group = 'SAR Settings')
// Hesaplamalar
// ta.sar(baslangic, artis, maksimum) - sayı küçüldükçe değişim hızı artar
fast_sar = ta.sar(fast_sar_set, fast_sar_set, 0.1)
sar = ta.sar(sar_set, sar_set, 0.1)
slow_sar = ta.sar(slow_sar_set, slow_sar_set, 0.1)
// Hareketli Ortalama
sar_avg = ta.sma(sar, sar_avg_length)
// Çizimler
//plot(fast_sar, title = '1Z', color = close > fast_sar ? #00ff0000 : #ffbbba00, style = plot.style_circles, linewidth = 1)
//plot(sar, title = '2Z', color = close > sar ? #00b80000 : #ff010100, style = plot.style_circles, linewidth = 1)
//plot(slow_sar, title = '3Z', color = close > slow_sar ? #14571500 : #aa000000, style = plot.style_circles, linewidth = 1)
///////////////////////////
// Ortak başlangıç değeri
start = 0.01
// 3 SAR (farklı hızlarda)
sar1 = ta.sar(start, 0.2, 0.2)
sar2 = ta.sar(start, 0.3, 0.3)
sar3 = ta.sar(start, 0.4, 0.4)
// 4. SAR ve EMA(5) ile yumuşatma
sar4_raw = ta.sar(start, 1, 1)
sar4_ema = ta.ema(sar4_raw, 50)
// SAR4 EMA çizgi rengi: fiyatın üstünde yeşil, altında kırmızı
sar4_color = close > sar4_ema ? color.lime : color.red
//plot(sar1, title = '1Y', color = close > sar1 ? #00ff0000 : #ffbbba00, style = plot.style_circles, linewidth = 1)
//plot(sar2, title = '2Y', color = close > sar2 ? #00b80000 : #ff010100, style = plot.style_circles, linewidth = 1)
//plot(sar3, title = '3Y', color = close > sar3 ? #14571500 : #aa000000, style = plot.style_circles, linewidth = 1)
// SAR4 EMA çizgisi (renkli)
//plot(sar4_ema, title = 'Z', color = sar4_color, style = plot.style_line, linewidth = 2)
/////////////////////////
// === SAR'lar
sar19 = ta.sar(0., 0.1, 0.1)
sar59 = ta.sar(0., 0.1, 0.1)
sar109 = ta.sar(0., 0.1, 0.1)
// === Gerçek eşitlik kontrolü
equalAll = sar19 == sar59 and sar59 == sar109
sort9 = (sar19 + sar59 + sar109) / 3
//plot(sort9, title = 'X', color = sar4_color, style = plot.style_stepline, linewidth = 1)
////////////////////////
price7 = hl2
tolerans7 = 0.001
// === SAR'lar ===
sar17 = ta.sar(0.001, 0.02, 0.2)
sar27 = ta.sar(0.001, 0.03, 0.3)
sar37 = ta.sar(0.001, 0.04, 0.4)
//plot(sar17, title = '1X', color = close > sar17 ? #00ff0000 : #ffbbba00, style = plot.style_circles, linewidth = 1)
//plot(sar27, title = '2X', color = close > sar27 ? #00b80000 : #ff010100, style = plot.style_circles, linewidth = 1)
//plot(sar37, title = '3X', color = close > sar37 ? #14571500 : #aa000000, style = plot.style_circles, linewidth = 1)
// === SAR yakınlığı kontrolü ===
yakinsar7 = math.abs(sar17 - sar27) < tolerans7 or math.abs(sar17 - sar37) < tolerans7 or math.abs(sar27 - sar37) < tolerans7
longSignal7 = yakinsar7 and price7 > sar17
shortSignal7 = yakinsar7 and price7 < sar17
// === Sinyal üçgenleri ===
//plotshape(longSignal7, location = location.belowbar, style = shape.triangleup, color = color.fuchsia, size = size.tiny)
//plotshape(shortSignal7, location = location.abovebar, style = shape.triangledown, color = color.fuchsia, size = size.tiny)
//////////////////
// 5 SAR hesapla
sar18 = ta.sar(0.1, 0.1, 0.1)
sar28 = ta.sar(0.1, 0.3, 0.3)
sar38 = ta.sar(0.1, 0.5, 0.5)
sar48 = ta.sar(0.1, 0.7, 0.7)
sar58 = ta.sar(0.1, 1.0, 1.0)
// SAR ortalaması ve EMA(3) ile smooth
sarAvg8 = (sar18 + sar28 + sar38 + sar48 + sar58) / 5
smoothedSar8 = ta.ema(sarAvg8, 200)
// EMA(1) (fiyat çizgisi)
ema18 = ta.ema(close, 1)
// Çizgiler
//plot(smoothedSar8, title = 'Y', color = sar4_color, style = plot.style_stepline, linewidth = 1)
TREND789=(smoothedSar8+sort9+sar4_ema)/3
plot(TREND789, title = 'TR', color = sar4_color, style = plot.style_stepline, linewidth = 1)
// Sinyaller
longSignal8 = ta.crossover(ema18, smoothedSar8) // AL
shortSignal8 = ta.crossunder(ema18, smoothedSar8) // SAT
// Sinyal üçgenleri
//plotshape(longSignal8, title = 'AL Sinyali', location = location.belowbar, style = shape.triangleup, color = color.lime, size = size.small)
//plotshape(shortSignal8, title = 'SAT Sinyali', location = location.abovebar, style = shape.triangledown, color = color.red, size = size.small)
/////////////////////
-
-
yapay zekaya sistem tasarlatma....
güzel bir sistem yapalım dedim....
Tamam, güçlü ve görseli temiz bir sistem yapabiliriz.
Senin önceki isteklerinden anladığım kadarıyla PSAR + farklı periyot/parametreler + teyitli sinyal mantığı seviyorsun.
Ben sana şöyle bir yapı önereyim:
📌 Sistem Fikri: “Çoklu PSAR + ATR Destek/Direnç + Çoklu Zaman Dilimi Teyit”
5 farklı PSAR (farklı hız parametreleriyle)
ATR tabanlı destek/direnç çizgileri (dinamik olarak güncellenen)
15 dk sinyali 1 dk grafikte gösterme
Teyitli sinyal: En az 3 PSAR aynı yönde → sinyal
Zemin boyama: Teyitli sinyal yeşil/kırmızı arka plan
Breakout hedefleri: ATR çarpanı ile otomatik hedef belirleme
💡 Avantajı: Hem hızlı sinyaller hem de güçlü teyit alırsın, aynı zamanda 1 dk’da bile 15 dk trendini görebilirsin.
İstersen ilk olarak bu sistemin iskelet Pine Script v4 kodunu yazayım, sonra sinyal/etiket/görselliği ekleriz.
Hazırlayayım mı?
dedi.....çünkü sar karşı olan ilgimi biliyor......
PHP Code:
//@version=4
study("Fiyata En Yakın SAR", overlay=true)
// Denenecek SAR parametreleri
sar1 = sar(0.01, 0.02, 0.2)
sar2 = sar(0.02, 0.02, 0.2)
sar3 = sar(0.03, 0.02, 0.2)
sar4 = sar(0.04, 0.02, 0.2)
sar5 = sar(0.05, 0.02, 0.2)
// Farklar
diff1 = abs(close - sar1)
diff2 = abs(close - sar2)
diff3 = abs(close - sar3)
diff4 = abs(close - sar4)
diff5 = abs(close - sar5)
// Minimum farkı bul
minDiff = min(diff1, min(diff2, min(diff3, min(diff4, diff5))))
// En yakın SAR'ı seç
nearestSar = diff1 == minDiff ? sar1 :
diff2 == minDiff ? sar2 :
diff3 == minDiff ? sar3 :
diff4 == minDiff ? sar4 : sar5
// Çizim
plot(nearestSar, color=color.fuchsia, linewidth=2, title="En Yakın SAR")
bunu önerdi.....
genellikle v4 veya v5 yazıyor....
tw rahatlıkla v6 yapılıyor....
-