Untitled
unknown
plain_text
9 months ago
29 kB
15
Indexable
//@version=5
strategy("Kule Trend Strategy Long", overlay=true)
// ---------------------------- Theme --------------------------------------- //
// Colors
red = color.red
green = color.rgb(21, 194, 122)
brightred = color.rgb(158, 43, 35)
brightgreen = color.rgb(21, 194, 122)
cautioncol = color.yellow
gray= color.gray
aqua = color.aqua
orange= color.orange
darkgreen = color.rgb(21, 194, 122)
darkred = color.rgb(165, 57, 66)
// Groups
grma = "Moving Averages"
grhts = "Trend Seviyeleri"
grt = "DCA"
grll = "Leverage Liquidations"
gla= "Alerts"
// Constants
dataType = "Custom"
instructions = "Off"
smaS = "Off"
constant = 1>0
rsi=ta.rsi(close,14)
// ------------------------- Trend State ------------------------------------ //
// Code Author: © Koalafied_3
showtrend = true
// tooltip ="Check this box if you want to see the Bull, Bear, or Chop trend state background according to Hayden.\n(Page 56) 10 Lies That Traders Believe = The RSI is unable to indicate trend direction, because it's only a momentum indicator.")
showbc = input(true, title='Bar Boyama Göster?',group=grhts)
ts1 = 66
ts2 = 36
// ts1 = input.float(defval=66, title=" Bullish RSI 60 to 75", minval=60, maxval=75, step=1, group=grhts)
// ts2 = input.float(defval=36, title=" Bearish RSI 28 to 40", minval=28, maxval=40, step=1, group=grhts)
ts1a = 61
ts2a = 39
// Trend State
var state = 0
if ta.crossover(rsi, ts1)
state := 1
state
if ta.crossunder(rsi, ts2)
state := 2
state
state := state
//-----------------3 State RSI Gradient Bar Color on Chart--------------------//
cbullu = brightgreen
cbulld = darkgreen
cbearu = brightred
cbeard = darkred
cbearc = brightgreen
cbullc = brightred
barcolor(state==1 and rsi>50?cbullu: state==1 and rsi<50?cbulld: state==2 and rsi<50 ?cbearu: state==2 and rsi>50 ?cbeard:color.new(color.from_gradient(rsi, ts2, ts1, cbearu, cbullu),0),title="Chart Bar Color", display = showbc ? display.all : display.none, editable=false)
// RSI 50 Line
// @ LazyBear
obLevelM = 50
src = close
length = 14
ep = 2 * length - 1
auc = ta.ema(math.max(src - src[1], 0), ep)
adc = ta.ema(math.max(src[1] - src, 0), ep)
x7 = (length - 1) * (adc * obLevelM / (100 - obLevelM) - auc)
ub4 = x7 >= 0 ? src + x7 : src + x7 * (100 - obLevelM) / obLevelM
plot(ub4, title='Rsn Mov', color=color.new(ub4>ub4[1]?color.green:ub4<ub4[1]?color.red:color.white, 25), linewidth=3,display = display.none)
// ------------------------------- Alerts ----------------------------------- //
// alert_freq = input.string(alert.freq_once_per_bar_close, "Alarm Türü", options=[alert.freq_once_per_bar_close, alert.freq_once_per_bar, alert.freq_all], group = gla)
// bar_update_alerts = false
// ---------------------------- Trade Setup --------------------------------- //
// Inspired by @ KioseffTrading
lot_size = 1
dcaorstop = input.string("DCA 3", "DCA 3 or Stop", options=["DCA 3", "Stop"], group=grt)
// Number of Decimals for Labels
pricedecimals= 2
truncateprice(number, pricedecimals) =>
factor = math.pow(10, pricedecimals)
int(number * factor) / factor
// Define a bull/bear cross
bullcross= state==1 and state[1]==2
bearcross= state==2 and state[1]==1
// Detect what was last signal (long or short)
long_short = 0
long_last = bullcross and (nz(long_short[1]) == 0 or nz(long_short[1]) == -1)
short_last = bearcross and (nz(long_short[1]) == 0 or nz(long_short[1]) == 1)
long_short := long_last ? 1 : short_last ? -1 : long_short[1]
// Remove first bar for SL/TP (you can't enter a trade at bar close and THEN hit your SL on that same bar)
longBar1 = ta.barssince(long_last)
longBar2 = longBar1 >= 1 ? true : false
shortBar1 = ta.barssince(short_last)
shortBar2 = shortBar1 >= 1 ? true : false
// Wen entry, sir?
bullentry = ta.valuewhen(bullcross, close, 0)
bearentry = ta.valuewhen(bearcross, close, 0)
entin= state==1 and long_short==1?bullentry:state==2 and long_short==-1?bearentry:na
entout=plot(entin, 'Giriş', color=color.new(color.green, 0), style=plot.style_circles, editable=false)
// Targets
// ATR TP & SL
// ATR hesaplama yöntemi için seçenekler
atr_method = input.string(title='ATR Hesaplama Yöntemi', defval='hl2', options=['close', 'hl2', 'hlc3'], group=grt)
// ATR kaynağı (srcATR) - Kullanıcının seçimine göre hesaplanır
var float srcATR = na
if atr_method == "close"
srcATR := close
else if atr_method == "hl2"
srcATR := (high + low) / 2
else if atr_method == "hlc3"
srcATR := (high + low + close) / 3
// ATR periyodu
atrPeriod = input.int(title='ATR Period', defval=55, minval=1, group=grt)
per = atrPeriod
// ATR çarpanı
atrMultiplier = input.float(title='ATR Çarpanı', defval=3, group=grt)
// ATR hesaplama
atr_value = ta.atr(per)
// ATR çarpanı ile çarpılmış değer
atr_multiplied = atr_value * atrMultiplier
atr = ta.atr(atrPeriod)
ATRupper=srcATR + atr * atrMultiplier
ATRlower=srcATR - atr * atrMultiplier
ATRupper2=srcATR + atr * (atrMultiplier*0.800)
ATRlower2=srcATR - atr * (atrMultiplier*0.800)
ATRupper3=srcATR + atr * (atrMultiplier*0.763)
ATRlower3=srcATR - atr * (atrMultiplier*0.763)
ATRupper4=srcATR + atr * (atrMultiplier*0.618)
ATRlower4=srcATR - atr * (atrMultiplier*0.618)
ATRupper5=srcATR + atr * (atrMultiplier*0.5)
ATRlower5=srcATR - atr * (atrMultiplier*0.5)
ATRupper6=srcATR + atr * (atrMultiplier*0.382)
ATRlower6=srcATR - atr * (atrMultiplier*0.382)
ATRupper7=srcATR + atr * (atrMultiplier*0.236)
ATRlower7=srcATR - atr * (atrMultiplier*0.236)
ATRupper8=srcATR + atr * (atrMultiplier*0.146)
ATRlower8=srcATR - atr * (atrMultiplier*0.146)
bearse=srcATR + atr * (atrMultiplier*0.146)
bullse=srcATR - atr * (atrMultiplier*0.146)
bearse2=srcATR + atr * (atrMultiplier*0.236)
bullse2=srcATR - atr * (atrMultiplier*0.236)
bearse3=srcATR + atr * (atrMultiplier*0.382)
bullse3=srcATR - atr * (atrMultiplier*0.382)
ATRbulltp1=ta.valuewhen(bullcross,ATRupper,0)
ATRbeartp1=ta.valuewhen(bearcross,ATRlower,0)
ATRbulltp2=ta.valuewhen(bullcross,ATRupper2,0)
ATRbeartp2=ta.valuewhen(bearcross,ATRlower2,0)
ATRbulltp3=ta.valuewhen(bullcross,ATRupper3,0)
ATRbeartp3=ta.valuewhen(bearcross,ATRlower3,0)
ATRbulltp4=ta.valuewhen(bullcross,ATRupper4,0)
ATRbeartp4=ta.valuewhen(bearcross,ATRlower4,0)
ATRbulltp5=ta.valuewhen(bullcross,ATRupper5,0)
ATRbeartp5=ta.valuewhen(bearcross,ATRlower5,0)
ATRbulltp6=ta.valuewhen(bullcross,ATRupper6,0)
ATRbeartp6=ta.valuewhen(bearcross,ATRlower6,0)
ATRbulltp7=ta.valuewhen(bullcross,ATRupper7,0)
ATRbeartp7=ta.valuewhen(bearcross,ATRlower7,0)
ATRbulltp8=ta.valuewhen(bullcross,ATRupper8,0)
ATRbeartp8=ta.valuewhen(bearcross,ATRlower8,0)
vwbearse=ta.valuewhen(bearcross,bearse,0)
vwbullse=ta.valuewhen(bullcross,bullse,0)
vwbearse2=ta.valuewhen(bearcross,bearse2,0)
vwbullse2=ta.valuewhen(bullcross,bullse2,0)
vwbearse3=ta.valuewhen(bearcross,bearse3,0)
vwbullse3=ta.valuewhen(bullcross,bullse3,0)
bgrad = 80
tgrad = 95
exin = state==1 and long_short==1?ATRbulltp1:state==2 and long_short==-1?ATRbeartp1:na
excol = long_short == 1 and close<ATRbulltp1?green: long_short==-1 and close>ATRbeartp1?red:color.yellow
exout = plot(exin, 'Kar AL', color=color.new(excol, 0), style=plot.style_circles, editable=false)
fill(entout,exout,exin,long_short==1?bullentry:long_short==-1?bearentry:na, top_color=color.new(long_short==1?darkgreen:long_short==-1?darkred:na,bgrad), bottom_color=color.new(long_short==1?darkgreen:long_short==-1?darkred:na,tgrad))
dca3in=state==1 and long_short==1?vwbullse3:state==2 and long_short==-1?vwbearse3:na
dca3out=plot(dca3in, "Stop", color=color.new(color.red, 0), style=plot.style_circles, editable=false)
// fill(entout,dca3out,long_short==1?vwbullse3:long_short==-1?vwbearse3:na,long_short==1?bullentry:long_short==-1?bearentry:na, top_color=color.new(gray,85), bottom_color=color.new(gray,tgrad))
// Trade Setup Labels
// Profit
bullt1profit=(((ATRbulltp1/bullentry)- 1)*100)
beart1profit=((1-(bearentry/ATRbeartp1))*-100)
bullt2profit=(((ATRbulltp2/bullentry)- 1)*100)
beart2profit=((1-(bearentry/ATRbeartp2))*-100)
bullt3profit=(((ATRbulltp3/bullentry)- 1)*100)
beart3profit=((1-(bearentry/ATRbeartp3))*-100)
bullt4profit=(((ATRbulltp4/bullentry)- 1)*100)
beart4profit=((1-(bearentry/ATRbeartp4))*-100)
bullt5profit=(((ATRbulltp5/bullentry)- 1)*100)
beart5profit=((1-(bearentry/ATRbeartp5))*-100)
bullt6profit=(((ATRbulltp6/bullentry)- 1)*100)
beart6profit=((1-(bearentry/ATRbeartp6))*-100)
bullt7profit=(((ATRbulltp7/bullentry)- 1)*100)
beart7profit=((1-(bearentry/ATRbeartp7))*-100)
bullt8profit=(((ATRbulltp8/bullentry)- 1)*100)
beart8profit=((1-(bearentry/ATRbeartp8))*-100)
//-----------------------------Liquidation levels-----------------------------//
// @ mabonyi
i_show_x1 = false
i_nonlinear = false
i_maintmargin = 0.05
maint_margin = 1 - i_maintmargin
i_x1 = 100
i_showlast = 0
i_offset = 0
i_label_offset = 0
// Calculations
f_leveraged(_price, _x) =>
_xlong = i_nonlinear ? _x + 1 : _x
_xshort = i_nonlinear ? _x - 1 : _x
_liq_long = _price * (1 - 1 / _xlong * maint_margin)
_liq_short = _price * (1 + 1 / _xshort * maint_margin)
[_liq_long, _liq_short]
f_print(_y, _txt, _c) =>
t = time_close + (i_offset + i_label_offset) * timeframe.multiplier * 60 * 1000
var _lbl = label.new(t, _y, _txt, xloc.bar_time, yloc.price, color.white, label.style_none, _c, size.small)
label.set_xy(_lbl, t, _y)
label.set_text(_lbl, _txt)
[x1_long, x1_short] = f_leveraged(close, i_x1)
// Entry Liquidation Levels
longLiquidation = ta.valuewhen(long_last, x1_long, 0)
shortLiquidation = ta.valuewhen(short_last, x1_short, 0)
// Liquidation Line Adaptive Coloring
longliqlinecol = longLiquidation<vwbullse3 ? color.yellow:brightred
shortliqlinecol = shortLiquidation>vwbearse3 ? color.yellow:brightred
llcolout= long_short == 1 ? longliqlinecol : long_short==-1 ? shortliqlinecol : na
// Liquidation Lines & Fill
llin=long_short == 1 and i_show_x1 ? longLiquidation : long_short == -1 and i_show_x1 ? shortLiquidation : na
llout=plot(llin, style=plot.style_circles, color=color.new(llcolout, 0), linewidth=1, title='Liquidation Level', editable=false)
liqfiltopcol=long_short==1 and longLiquidation < vwbullse3 ? color.new(color.yellow,85) : long_short==-1 and shortLiquidation > vwbearse3 ? color.new(color.yellow,90) : na
liqfilbotcol=long_short==1 and longLiquidation < vwbullse3 ? color.new(color.yellow,97) : long_short==-1 and shortLiquidation > vwbearse3 ? color.new(color.yellow,98) : na
fill(llout,dca3out, long_short==1?longLiquidation: long_short==-1?shortLiquidation: na, long_short==1?vwbullse3: long_short==-1?vwbearse3: na, top_color=liqfiltopcol, bottom_color=liqfilbotcol)
liqtip2 = i_show_x1 ? str.tostring(truncateprice(llin, pricedecimals)) : "None"
// Liquidation Occured?
longliqhit=(ta.crossunder(low, longLiquidation) or low<longLiquidation) and long_short==1 and i_show_x1
shortliqhit=(ta.crossover(high, shortLiquidation) or high>shortLiquidation) and long_short==-1 and i_show_x1
// Last Liquidations
leverage= i_show_x1 ? i_x1 : 1
lastlliq = "💯 Leverage: " + str.tostring(leverage) + "x\n🩸 Long Liquidation: " + str.tostring(truncateprice(longLiquidation, pricedecimals)) + "\n📅 Last Long Liquidation: " + str.tostring(ta.barssince(longliqhit[1])) + " candles"
lastsliq = "💯 Leverage: " + str.tostring(leverage) + "x\n🩸 Short Liquidation: " + str.tostring(truncateprice(shortLiquidation, pricedecimals)) + "\n📅 Last Short Liquidation: " + str.tostring(ta.barssince(shortliqhit[1])) + " candles"
import HoanGhetti/SimpleTrendlines/4 as tl
input_len = 20
input_pivotType = input.string(defval = 'Normal', title = 'Trend Çizgi Türü', options = ['Normal', 'Fast'], group = 'Trend Çizimi')
input_repaint = true
input_targets = false
input_bearC = input.color(defval = #af26266b, title = 'Bear Renk', group = 'Trend Çizimi')
input_bullC = input.color(defval = #21972161, title = 'Bull Renk', group = 'Trend Çizimi')
input_extend = extend.none
input_style = line.style_dotted
input_tstyle = line.style_dotted
input_override = false
input_useSrc = true
input_source = low
pl = fixnan(ta.pivotlow(input_override ? input_source : low, input_pivotType == 'Normal' ? input_len : 1, input_len))
ph = fixnan(ta.pivothigh(input_override ? input_source : high, input_pivotType == 'Normal' ? input_len : 1, input_len))
pivot(float pType) =>
pivot = pType == pl ? pl : ph
xAxis = ta.valuewhen(ta.change(pivot), bar_index, 0) - ta.valuewhen(ta.change(pivot), bar_index, 1)
prevPivot = ta.valuewhen(ta.change(pivot), pivot, 1)
pivotCond = ta.change(pivot) and (pType == pl ? pivot > prevPivot : pivot < prevPivot)
pData = tl.new(x_axis = xAxis, offset = input_len, strictMode = true, strictType = pType == pl ? 0 : 1)
pData.drawLine(pivotCond, prevPivot, pivot, input_override ? input_source : na)
pData
breakout(tl.Trendline this, float pType) =>
var bool hasCrossed = false
if ta.change(this.lines.startline.get_y1())
hasCrossed := false
this.drawTrendline(not hasCrossed)
confirmation = not hasCrossed and (input_repaint ? not hasCrossed : barstate.isconfirmed)
if (pType == pl ? (input_override and input_useSrc ? input_source : close) < this.lines.trendline.get_y2() : (input_override and input_useSrc ? input_source : close) > this.lines.trendline.get_y2()) and confirmation
hasCrossed := true
this.lines.startline.set_xy2(this.lines.trendline.get_x2(), this.lines.trendline.get_y2())
this.lines.trendline.set_xy2(na, na)
this.lines.startline.copy()
hasCrossed
plData = pivot(pl)
phData = pivot(ph)
style(tl.Trendline this, color col) =>
this.lines.startline.set_color(col), this.lines.trendline.set_color(col)
this.lines.startline.set_width(2), this.lines.trendline.set_width(2)
this.lines.trendline.set_style(input_style), this.lines.trendline.set_extend(input_extend)
style(plData, input_bearC), style(phData, input_bullC)
cu = breakout(plData, pl)
co = breakout(phData, ph)
// plotshape(ta.change(cu) and cu ? plData.lines.startline.get_y2() : na, title = 'Bearish Breakout', style = shape.labeldown, color = input_bearC, textcolor = color.white, location = location.absolute, text = 'KIRILIM')
// plotshape(ta.change(co) and co ? phData.lines.startline.get_y2() : na, title = 'Bullish Breakout', style = shape.labelup, color = input_bullC, textcolor = #000000, location = location.absolute, text = 'KIRILIM')
// Target Levels [v4 Update]
phData_target = tl.new(phData.values.changeInX)
plData_target = tl.new(plData.values.changeInX)
phData_target.drawLine(ta.change(phData.values.y1) and input_targets, phData.values.y2, phData.values.y2)
plData_target.drawLine(ta.change(plData.values.y1) and input_targets, plData.values.y2, plData.values.y2)
target_style(tl.Trendline this, color col) =>
this.lines.startline.set_style(input_tstyle)
this.lines.trendline.set_style(input_tstyle)
this.lines.startline.set_color(col)
this.lines.trendline.set_color(col)
target_style(plData_target, input_bearC)
target_style(phData_target, input_bullC)
breakout(phData_target, ph)
breakout(plData_target, pl)
// --------------------------------- Trade Labels --------------------------- //
//-------------------- Backtesting
// @ Capissimo
bidask = close
tbase = (time - time[1]) / 1000
tcurr = (timenow - time_close[1]) / 1000
barlife = tcurr / tbase
var float start_long_trade = bidask
var float long_trades = 0.
var float start_short_trade = bidask
var float short_trades = 0.
var int wins = 0
var int trade_count = 0
longtphit = ta.crossover(high, ATRbulltp1) and longBar2
longstophit = ta.crossunder(low, vwbullse3) and dcaorstop =="Stop" and longBar2
shorttphit = ta.crossunder(low, ATRbeartp1) and shortBar2
shortstophit = ta.crossover(high, vwbearse3) and dcaorstop =="Stop" and shortBar2
if bullcross //enter bull
start_long_trade := bidask
start_long_trade
if bearcross or (i_show_x1?longliqhit:na) or longtphit or (dcaorstop=="Stop"?longstophit:na)//exit bull
ldiff = bidask - start_long_trade // long profit in dollars
wins := ldiff > 0 ? 1 : 0
long_trades := ldiff * lot_size
trade_count := 1
trade_count
if bearcross //enter bear
start_short_trade := bidask
start_short_trade
if bullcross or (i_show_x1?shortliqhit:na) or shorttphit or (dcaorstop=="Stop"?shortstophit:na)//exitbear
sdiff = start_short_trade - bidask // short profit in dollars
wins := sdiff > 0 ? 1 : 0
short_trades := sdiff * lot_size
trade_count := 1
trade_count
bullcprofit=((bidask-start_long_trade)/start_long_trade)
bearcprofit=((start_short_trade-bidask)/start_short_trade)
cumbull = ta.cum(long_trades)
cumbear = ta.cum(short_trades)
cumpbull = ta.cum(bullcprofit)
cumpbear = ta.cum(bearcprofit)
cumreturn = ta.cum(long_trades) + ta.cum(short_trades) // sum of both short profit and long profit in $
cumpreturn = ta.cum(bullcprofit) + ta.cum(bearcprofit) // sum of both short profit and long profit in %
totaltrades = ta.cum(trade_count) //# trades
totalwins = ta.cum(wins)
totallosses = totaltrades - totalwins == 0 ? 1 : totaltrades - totalwins
avgreturn = cumreturn / totaltrades
avgpreturn = cumpreturn / totaltrades
avgbulltp = bullentry*(1+ta.valuewhen(bullcross,avgpreturn,0))
avgbeartp = bearentry*(1-ta.valuewhen(bearcross,avgpreturn,0))
avgtp = long_short==1?avgbulltp:long_short==-1?avgbeartp:na
avgtpcol = long_short == 1 and avgtp>bullentry?green:long_short == 1 and avgtp<bullentry?red: long_short==-1 and avgtp<bearentry?red: long_short==-1 and avgtp>bearentry?red:na
// plot(avgtp, "Avg TP", color=color.new(avgtpcol,50), style=plot.style_circles)
info = "\n\n 📈 Backtest 📈"
+ '\nKar: ' + str.tostring(cumbull, '#.##') +'\nZarar: ' + str.tostring(cumbear, '#.##') + '\nTotal Kar: ' + str.tostring(cumreturn, '#.##') + '\nAverage Total Kar: ' + str.tostring(avgreturn, '#.##')
+ '\nKarlı Yüzde: ' + str.tostring(cumpbull, '#.## %') +'\nZararlı Yüzde: ' + str.tostring(cumpbear, '#.## %') + '\nTotal Yüzde: ' + str.tostring(cumpreturn, '#.## %') + '\nAverage Total Yüzde: ' + str.tostring(avgpreturn, '#.## %')
+ '\nBaşarılı: ' + str.tostring(totalwins, '#') + '\nBaşarısız: ' + str.tostring(totallosses, '#') + '\nTotal İşem Adedi: ' + str.tostring(totaltrades, '#') + '\nBaşarılı/İşlem: ' + str.tostring(totalwins / totaltrades, '#.## %')
// Crossover profit
bullxprofit = (((close - bullentry)/bullentry)*100)
bearxprofit = (((close - bearentry)/bearentry)*-100)
curbullprof = close-bullentry
curbearprof = bearentry-close
tradelabsize = input.string(size.normal, "Size", [size.tiny, size.small, size.normal, size.large, size.huge, size.auto], group=grt)
tradetime = ta.barssince(bullcross or bearcross)
// Plot Labels
bullentrytt = " Entry: " + (long_short==1?" AL @ ":long_short==-1?" SAT @ ":na) + str.tostring(truncateprice(bullentry, pricedecimals))
bearentrytt = " Entry: " + (long_short==1?" AL @ ":long_short==-1?" SAT @ ":na) + str.tostring(truncateprice(bearentry, pricedecimals))
var label signal = na
if bullcross
label.new(bar_index,low,yloc=yloc.belowbar,text='\AL',textcolor=color.green, style=label.style_arrowup, tooltip=bullentrytt, size = size.large)
alertsyntax_golong= " AL \n" + bullentrytt
if bearcross
label.new(bar_index,high,yloc=yloc.abovebar,text='\SAT',textcolor=color.red, style=label.style_arrowdown, tooltip=bearentrytt, size = size.large)
alertsyntax_goshort= " SAT \n" + bearentrytt
var label dca3 = na
if state==1 and long_short==1 and barstate.islast
dca3 := label.new(bar_index, y=vwbullse3, text=str.tostring(truncateprice(vwbullse3, pricedecimals)), size=tradelabsize, style=label.style_label_left, color=color.new(color.white,100), textcolor=color.new(color.gray, 0), tooltip="📍: " + str.tostring(truncateprice(vwbullse3, pricedecimals)) + "\n-" + str.tostring(truncateprice(atrMultiplier*0.382, pricedecimals)) + "x " + "ATR " + str.tostring(atrPeriod)) //, tooltip=str.tostring(truncateprice(bullt8profit, pricedecimals)) + " %")
label.delete(dca3[1])
if state==2 and long_short==-1 and barstate.islast
dca3 := label.new(bar_index, y=vwbearse3, text=str.tostring(truncateprice(vwbearse3, pricedecimals)), size=tradelabsize, style=label.style_label_left, color=color.new(color.white,100), textcolor=color.new(color.gray, 0), tooltip="📍: " + str.tostring(truncateprice(vwbearse3, pricedecimals)) + "\n-" + str.tostring(truncateprice(atrMultiplier*0.382, pricedecimals)) + "x " + "ATR " + str.tostring(atrPeriod)) //, tooltip=str.tostring(truncateprice(beart8profit, pricedecimals)) + " %")
label.delete(dca3[1])
var label cp = na
if state==1 and long_short==0 and barstate.islast
cp := label.new(bar_index, y=high, text=str.tostring(truncateprice(bullxprofit*leverage, pricedecimals)) + " %", size=tradelabsize, style=label.style_label_left, color=color.new(color.white,100), textcolor=color.new(green,0), tooltip="🚦 Giriş: " + str.tostring(truncateprice(bullentry, pricedecimals)) + "\n💵 Kar: " + str.tostring(curbullprof, '#.##') + "\n📈 Kar Yüzde: " + str.tostring(bullcprofit*leverage, '#.## %') + (i_show_x1?("\n💯 Leverage: " + str.tostring(leverage) + "x"):na) + info) // + (automan=="Auto"?optMAtip:na) + info) //, tooltip=str.tostring(truncateprice(bullt8profit, pricedecimals)) + " %")
label.delete(cp[1])
if state==2 and long_short==0 and barstate.islast
cp := label.new(bar_index, y=low, text=str.tostring(truncateprice(bearxprofit*leverage, pricedecimals)) + " %", size=tradelabsize, style=label.style_label_left, color=color.new(color.white,100), textcolor=color.new(red,0), tooltip="🚦 Giriş: " + str.tostring(truncateprice(bearentry, pricedecimals)) + "\n💵 Kar: " + str.tostring(curbearprof, '#.##') + "\n📈 Kar Yüzde: " + str.tostring(bearcprofit*leverage, '#.## %')+ (i_show_x1?("\n💯 Leverage: " + str.tostring(leverage) + "x"):na) + info) // + (automan=="Auto"?optMAtip:na) + info) //, tooltip=str.tostring(truncateprice(beart8profit, pricedecimals)) + " %")
label.delete(cp[1])
var label liq = na
if state==1 and long_short==1 and i_show_x1 and barstate.islast
liq := label.new(bar_index, y=longLiquidation, text=str.tostring(truncateprice(longLiquidation, pricedecimals)), size=tradelabsize, style=label.style_label_left, color=color.new(color.white,100), textcolor= longLiquidation < vwbullse3 ? color.yellow : brightred, tooltip=lastlliq)
label.delete(liq[1])
if state==2 and long_short==-1 and i_show_x1 and barstate.islast
liq := label.new(bar_index, y=shortLiquidation, text=str.tostring(truncateprice(shortLiquidation, pricedecimals)), size=tradelabsize, style=label.style_label_left, color=color.new(color.white,100), textcolor= shortLiquidation > vwbearse3 ? color.yellow : brightred, tooltip=lastsliq)
label.delete(liq[1])
//------------Reset long_short if SL/TP hit during bar------------------------//
tpreset = true
longclose = longtphit or longstophit
shortclose = shorttphit or shortstophit
bullstopp = ((vwbullse3 - bullentry)/bullentry)*100
bearstopp = ((bearentry - vwbearse3)/bearentry)*100
bulltpp = ((ATRbulltp1 - bullentry)/bullentry)*100
beartpp = ((bearentry - ATRbeartp1)/bearentry)*100
long_short := (long_short == 1 or long_short == 0) and (longclose or longliqhit) and tpreset ? 0 : (long_short == -1 or long_short == 0) and (shortclose or shortliqhit) and tpreset ? 0 : long_short
bgcol2 = state==1 and state[1]==2 ?color.green : state==2 and state[1]==1 ? color.red :na
// Candle Color Logic
var color candle_col = na
if bullcross
candle_col := brightgreen
if bearcross
candle_col := brightred
// Plot Candles
plotcandle(open, high, low, close, title = 'Title', color = candle_col, wickcolor = candle_col, bordercolor = candle_col)
// Plot Trend State
barcolor(state==1 and rsi>50?brightgreen: state==1 and rsi<50?darkgreen: state==2 and rsi<50 ?brightred: state==2 and rsi>50 ?darkred:color.new(color.from_gradient(rsi, ts2, ts1, brightred, brightgreen),0),title="Chart Bar Color", display = showbc ? display.all : display.none, editable=false)
// Alarmları etkinleştirme ayarları
enableKARalarm = input.bool(true, title="KAR AL Alarm", group="Alarm Ayarları")
enableTrendAlarm = input.bool(true, title="Ana Trend Alarm", group="Alarm Ayarları")
// trend Alarm Koşulları
TrendAlarmal= state==1 and state[1]==2
TrendAlarmsat= state==2 and state[1]==1
if enableTrendAlarm
if (TrendAlarmal)
alert("TRENDE GİRİŞ!", alert.freq_once_per_bar_close)
if TrendAlarmsat
alert('TREND STOP!', alert.freq_once_per_bar_close)
TPal = ta.crossover(high, ATRbulltp1) and longBar2
if enableKARalarm
if (TPal)
alert("Kar AL!", alert.freq_once_per_bar_close)
al =ta.crossover(close , ub4)
sat= ta.crossunder(close, ub4)
miidlineflt = close > ub4
// Parametreler
reentryBars = input.int(2, title="Yeniden Giriş İçin Beklenen Bar Sayısı") // Kullanıcı tarafından değiştirilebilir
// Değişkenler
var bool positionActive = false // Pozisyon açık mı?
var bool tpHit = false // Take Profit seviyesine ulaşıldı mı?
var bool reentry = false // Yeniden giriş yapıldı mı?
var float longtphit_price = na // Take Profit fiyat seviyesi
var int bars_since_tp = na // TP sonrası geçen bar sayısı
var int above_longtphit_count = 0 // LongTPHit çizgisinin üzerinde kaç bar geçtiğini sayan sayaç
// **LONG Pozisyon Giriş**
if (bullcross) // Her bullcross sinyalinde pozisyon aç
strategy.entry("Long", strategy.long)
positionActive := true // Pozisyonu açık olarak işaretle
// **Take Profit Çıkışı** (Bir kez çalışır, tekrar giriş için kilit koyuyoruz)
if (longtphit and positionActive and not reentry)
strategy.close("Long") // Pozisyondan çık
positionActive := false // Pozisyonun kapandığını işaretle
tpHit := true // Take Profit seviyesine ulaşıldığını işaretle
longtphit_price := high // Take Profit fiyat seviyesini kaydet
bars_since_tp := 0 // TP sonrası bar sayacını başlat
above_longtphit_count := 0 // Sayaç sıfırla
// **LONGTPHIT sonrası fiyat tekrar yukarı kırarsa ve 2 bar geçmişse pozisyon aç**
if (tpHit and not na(bars_since_tp))
bars_since_tp += 1
// Fiyat longtphit seviyesinin üzerindeyse sayacı artır
if (close > longtphit_price)
above_longtphit_count += 1
else
above_longtphit_count := 0 // Eğer fiyat tekrar altına düşerse sıfırla
// Eğer belirlenen bar sayısı boyunca fiyat üstte kaldıysa pozisyon aç
if (above_longtphit_count >= reentryBars)
strategy.entry("Long", strategy.long)
positionActive := true
tpHit := false // Tekrar giriş yapıldığında tpHit sıfırlanır
reentry := true // Yeniden giriş yapıldığını işaretle
bars_since_tp := na // Sayaç sıfırla
above_longtphit_count := 0 // Sayaç sıfırla
// **Bearcross ile Kesin Çıkış (Artık sadece bu çıkışı yapacak)**
if (bearcross and positionActive)
strategy.close("Long") // Bearcross her zaman çıkış sinyali
positionActive := false // Pozisyonun kapandığını işaretle
tpHit := false // Take Profit seviyesine ulaşılmadığını işaretle
reentry := false // Yeniden giriş durumunu sıfırla
bars_since_tp := na // Sayaç sıfırla
above_longtphit_count := 0 // Sayaç sıfırla
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// // LONG pozisyonları için giriş ve çıkış koşulları
// if (bullcross)
// strategy.entry("Long", strategy.long)
// if (bearcross)
// strategy.close("Long")
// SHORT pozisyonlarını devre dışı bırakma
// if (bearcross)
// strategy.entry("Short", strategy.short)
// if (shorttphit or shortstophit)
// strategy.close("Short")
// EoS made w/ ❤ by @BarefootJoey ✌💗📈
Editor is loading...
Leave a Comment