ajiim

🎁

Oct 19th, 2026
3,158
1
Never
2
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.47 KB | None | 1 0
  1. //@version=6
  2. indicator("Prime Indicator v1.2.0", shorttitle = "Prime Indicator v1.2.0", overlay = true, precision = 1, max_labels_count = 500, max_lines_count = 500, max_bars_back = 500)
  3.  
  4. string G_MAIN = "Main Settings"
  5. string G_FILTER = "Signal Engine"
  6. string G_TRADE = "Trade Management"
  7. string G_LEVELS = "Entry / Stop Loss / Take Profit Levels"
  8. string G_SIGNAL = "Signal Labels"
  9. string G_DASH = "Dashboard"
  10. string G_MTF = "Dashboard Timeframes"
  11. string G_COLOR = "Signal & Level Colors"
  12. string G_DCOLOR = "Dashboard Colors"
  13. string G_ALERT = "Alerts & Automation"
  14.  
  15. string i_mode = input.string("Balanced", "Trading Mode", options = ["Scalp", "Balanced", "Swing"], group = G_MAIN, tooltip = "Scalp • Fast Response: reacts quickly to strong directional moves, momentum shifts, pullback recoveries and confirmed breakouts.\nBalanced • Elite Accuracy: strict multi-factor confirmation with tightened breakout filtering (default).\nSwing • Trend Precision: focuses on strong expansion moves with selective confirmation of late follow-on entries.")
  16. string i_market = input.string("Futures", "Market Type", options = ["Futures", "Spot"], group = G_MAIN, tooltip = "Futures: BUY and SELL signals with direct directional transitions (long ⇄ short).\nSpot: long-only. Bearish SELL conditions close an open long with an EXIT signal.")
  17. bool i_confirmBar = input.bool(true, "Confirm Signals on Bar Close", group = G_MAIN, tooltip = "When enabled, signals, exits and level updates are only processed on confirmed (closed) bars. This keeps the indicator non-repainting.")
  18.  
  19. bool i_useMtf = input.bool(true, "Multi-Timeframe Trend Alignment", group = G_FILTER, tooltip = "Blocks signals when the dashboard timeframes are aligned against the signal direction.")
  20. bool i_useRegime = input.bool(true, "Market Regime Filter", group = G_FILTER, tooltip = "Uses ADX and the Choppiness Index to detect ranging regimes and filter lower-quality noise.")
  21. bool i_useVolatility = input.bool(true, "Volatility Conditions", group = G_FILTER, tooltip = "Avoids signals during abnormally compressed or abnormally extreme volatility (ATR relative to its average).")
  22. bool i_useVolume = input.bool(true, "Volume Participation", group = G_FILTER, tooltip = "Rewards signals that are backed by above-average volume participation.")
  23. bool i_useCandle = input.bool(true, "Candle Quality", group = G_FILTER, tooltip = "Requires a signal candle that closes in the direction of the signal with a solid body and close location.")
  24. bool i_useLocation = input.bool(true, "Trade Location Context", group = G_FILTER, tooltip = "Avoids entries that are over-extended away from the mean (distance measured in ATR).")
  25. int i_adxLen = input.int(14, "ADX Length", minval = 2, maxval = 100, group = G_FILTER, inline = "len")
  26. int i_atrLen = input.int(14, "ATR Length", minval = 2, maxval = 100, group = G_FILTER, inline = "len")
  27. float i_volMult = input.float(1.2, "Volume Participation Multiplier", minval = 0.5, maxval = 5.0, step = 0.1, group = G_FILTER, tooltip = "Volume must exceed its 20-bar average by this multiplier to count as strong participation.")
  28.  
  29. float i_slAtr = input.float(1.5, "Stop Loss ATR Multiplier", minval = 0.3, maxval = 10.0, step = 0.1, group = G_TRADE, tooltip = "Base stop distance in ATR. The selected trading mode scales this value (Scalp 0.8x • Balanced 1.0x • Swing 1.4x).")
  30. float i_tp1R = input.float(0.5, "TP1", minval = 0.1, maxval = 20.0, step = 0.1, group = G_TRADE, inline = "tp")
  31. float i_tp2R = input.float(1.0, "TP2", minval = 0.1, maxval = 20.0, step = 0.1, group = G_TRADE, inline = "tp")
  32. float i_tp3R = input.float(1.3, "TP3", minval = 0.1, maxval = 20.0, step = 0.1, group = G_TRADE, inline = "tp", tooltip = "Take Profit targets expressed as multiples of the initial risk (Entry to Stop Loss distance).")
  33. bool i_useTrail = input.bool(true, "Adaptive Trailing EXIT", group = G_TRADE, tooltip = "After TP1 is reached, an ATR trailing stop protects the move. Strong trends receive a wider trail, weakening conditions a tighter one.")
  34. bool i_useWeakExit = input.bool(true, "Momentum Weakness EXIT", group = G_TRADE, tooltip = "Exits when trend, momentum and structure weaken against the position. Ranging and low-volatility conditions require extra confirmation to reduce premature exits.")
  35. bool i_exitAtTp3 = input.bool(false, "Close Trade at TP3", group = G_TRADE, tooltip = "When enabled, reaching TP3 closes the trade with an EXIT signal. When disabled, strong moves are allowed to continue beyond TP3.")
  36.  
  37. bool i_showLevels = input.bool(true, "Show Entry / SL / TP Levels", group = G_LEVELS)
  38. int i_levelOffset = input.int(10, "Label Offset (bars)", minval = 1, maxval = 100, group = G_LEVELS, tooltip = "Distance between the last bar and the level labels.")
  39. string i_levelSize = input.string("Small", "Level Label Size", options = ["Tiny", "Small", "Normal"], group = G_LEVELS)
  40. int i_levelWidth = input.int(1, "Level Line Width", minval = 1, maxval = 4, group = G_LEVELS)
  41.  
  42. bool i_showSignals = input.bool(true, "Show BUY / SELL Labels", group = G_SIGNAL)
  43. bool i_showExit = input.bool(true, "Show EXIT Labels", group = G_SIGNAL)
  44. string i_signalSize = input.string("Small", "Signal Label Size", options = ["Tiny", "Small", "Normal"], group = G_SIGNAL)
  45.  
  46. bool i_showDash = input.bool(true, "Show Dashboard", group = G_DASH)
  47. string i_dashPos = input.string("Top Right", "Dashboard Position", options = ["Top Left", "Top Right", "Bottom Left", "Bottom Right"], group = G_DASH)
  48. string i_dashSize = input.string("Normal", "Dashboard Size", options = ["Compact", "Normal", "Large"], group = G_DASH)
  49.  
  50. string i_tf1 = input.timeframe("5", "Timeframe 1", group = G_MTF)
  51. string i_tf2 = input.timeframe("15", "Timeframe 2", group = G_MTF)
  52. string i_tf3 = input.timeframe("60", "Timeframe 3", group = G_MTF)
  53. string i_tf4 = input.timeframe("240", "Timeframe 4", group = G_MTF)
  54. string i_tf5 = input.timeframe("D", "Timeframe 5", group = G_MTF)
  55.  
  56. color c_buy = input.color(#13A556, "BUY", group = G_COLOR, inline = "sig")
  57. color c_sell = input.color(#E1333F, "SELL", group = G_COLOR, inline = "sig")
  58. color c_exit = input.color(#1A6EF5, "EXIT", group = G_COLOR, inline = "sig")
  59. color c_sigText = input.color(#FFFFFF, "Text", group = G_COLOR, inline = "sig")
  60. color c_entry = input.color(#F7A21B, "Entry", group = G_COLOR, inline = "lvl")
  61. color c_sl = input.color(#F23645, "Stop Loss", group = G_COLOR, inline = "lvl")
  62. color c_tp = input.color(#4CAF50, "Take Profit", group = G_COLOR, inline = "lvl")
  63. color c_lvlText = input.color(#FFFFFF, "Text", group = G_COLOR, inline = "lvl")
  64.  
  65. color c_dashBg = input.color(#131722, "Background", group = G_DCOLOR, inline = "d1")
  66. color c_dashBorder = input.color(#B2B5BE, "Border", group = G_DCOLOR, inline = "d1")
  67. color c_dashText = input.color(#FFFFFF, "Text", group = G_DCOLOR, inline = "d1")
  68. color c_dashValText = input.color(#131722, "Value Text", group = G_DCOLOR, inline = "d1")
  69. color c_dashMode = input.color(#8C9CAA, "Mode", group = G_DCOLOR, inline = "d2")
  70. color c_dashFutures = input.color(#FFC107, "Futures", group = G_DCOLOR, inline = "d2")
  71. color c_dashSpot = input.color(#00BCD4, "Spot", group = G_DCOLOR, inline = "d2")
  72. color c_dashBull = input.color(#2EBD85, "Bullish", group = G_DCOLOR, inline = "d3")
  73. color c_dashBear = input.color(#F7434F, "Bearish", group = G_DCOLOR, inline = "d3")
  74. color c_dashNeutral = input.color(#8C9CAA, "Neutral", group = G_DCOLOR, inline = "d3")
  75.  
  76. string i_alertFormat = input.string("Text", "Alert Message Format", options = ["Text", "JSON"], group = G_ALERT, tooltip = "Text: readable message.\nJSON: structured payload for webhooks and third-party automation. Create the alert with 'Any alert() function call'.")
  77. bool i_alertBuy = input.bool(true, "BUY", group = G_ALERT, inline = "a1")
  78. bool i_alertSell = input.bool(true, "SELL", group = G_ALERT, inline = "a1")
  79. bool i_alertExit = input.bool(true, "EXIT", group = G_ALERT, inline = "a1")
  80. bool i_alertTp = input.bool(true, "TP Hits", group = G_ALERT, inline = "a2")
  81. bool i_alertSl = input.bool(true, "SL Hit", group = G_ALERT, inline = "a2")
  82. string i_msgBuy = input.string("", "Custom BUY Message", group = G_ALERT, tooltip = "Optional. Overrides the default message. Placeholders: {action} {ticker} {exchange} {timeframe} {price} {entry} {sl} {tp1} {tp2} {tp3} {mode} {market} {reason}")
  83. string i_msgSell = input.string("", "Custom SELL Message", group = G_ALERT, tooltip = "Optional. Same placeholders as the BUY message.")
  84. string i_msgExit = input.string("", "Custom EXIT Message", group = G_ALERT, tooltip = "Optional. Used for EXIT, TP and SL events. Same placeholders as the BUY message.")
  85.  
  86. string INDICATOR_NAME = "Prime Indicator v1.2.0"
  87.  
  88. float W_REGIME = 15.0
  89. float W_MTF = 20.0
  90. float W_VOLATILITY = 10.0
  91. float W_STRUCTURE = 15.0
  92. float W_MOMENTUM = 15.0
  93. float W_VOLUME = 10.0
  94. float W_CANDLE = 10.0
  95. float W_LOCATION = 5.0
  96.  
  97. int ATR_AVG_LEN = 50
  98. int VOL_AVG_LEN = 20
  99. int RSI_LEN = 14
  100. int MACD_FAST = 12
  101. int MACD_SLOW = 26
  102. int MACD_SIGNAL = 9
  103. int CHOP_LEN = 14
  104. float CHOP_RANGING = 55.0
  105. float VOL_MIN_RATIO = 0.55
  106. float VOL_MAX_RATIO = 3.0
  107. float LOW_VOL_RATIO = 0.80
  108. int MTF_COUNT = 5
  109.  
  110. type TradeLevels
  111. float entry = na
  112. float sl = na
  113. float tp1 = na
  114. float tp2 = na
  115. float tp3 = na
  116. int entryBar = na
  117.  
  118. type LevelDrawings
  119. line entryLn = na
  120. line slLn = na
  121. line tp1Ln = na
  122. line tp2Ln = na
  123. line tp3Ln = na
  124. label entryLb = na
  125. label slLb = na
  126. label tp1Lb = na
  127. label tp2Lb = na
  128. label tp3Lb = na
  129.  
  130. f_fmt(float price) =>
  131. na(price) ? "0" : str.tostring(price, format.mintick)
  132.  
  133. f_labelSize(string opt) =>
  134. switch opt
  135. "Tiny" => size.tiny
  136. "Normal" => size.normal
  137. => size.small
  138.  
  139. f_dashTextSize(string opt) =>
  140. switch opt
  141. "Compact" => size.small
  142. "Large" => size.large
  143. => size.normal
  144.  
  145. f_tablePos(string opt) =>
  146. switch opt
  147. "Top Left" => position.top_left
  148. "Bottom Left" => position.bottom_left
  149. "Bottom Right" => position.bottom_right
  150. => position.top_right
  151.  
  152. f_tfLabel(string tf) =>
  153. int sec = timeframe.in_seconds(tf)
  154. string res = switch
  155. sec < 60 => str.tostring(sec) + "s"
  156. sec < 3600 => str.tostring(math.round(sec / 60.0)) + "m"
  157. sec < 86400 => str.tostring(math.round(sec / 3600.0)) + "H"
  158. sec == 86400 => "Daily"
  159. sec == 604800 => "Weekly"
  160. sec >= 2419200 => "Monthly"
  161. => str.tostring(math.round(sec / 86400.0)) + "D"
  162. res
  163.  
  164. f_modeText(string mode) =>
  165. switch mode
  166. "Scalp" => "Scalp • Fast Response"
  167. "Swing" => "Swing • Trend Precision"
  168. => "Balanced • Elite Accuracy"
  169.  
  170. f_trendText(int state) =>
  171. state == 1 ? "Bullish" : state == -1 ? "Bearish" : "Neutral"
  172.  
  173. f_trendColor(int state) =>
  174. state == 1 ? c_dashBull : state == -1 ? c_dashBear : c_dashNeutral
  175.  
  176. f_trendState(simple int fastLen, simple int slowLen, simple int adxLen, simple float adxMin, simple int off) =>
  177. float ef = ta.ema(close, fastLen)
  178. float es = ta.ema(close, slowLen)
  179. [dp, dm, adxV] = ta.dmi(adxLen, adxLen)
  180. float rs = ta.rsi(close, RSI_LEN)
  181. int bullVotes = (close > es ? 1 : 0) + (ef > es ? 1 : 0) + (ef > ef[3] ? 1 : 0) + (dp > dm ? 1 : 0) + (rs > 50 ? 1 : 0)
  182. int bearVotes = (close < es ? 1 : 0) + (ef < es ? 1 : 0) + (ef < ef[3] ? 1 : 0) + (dm > dp ? 1 : 0) + (rs < 50 ? 1 : 0)
  183. int state = adxV >= adxMin and bullVotes >= 4 ? 1 : adxV >= adxMin and bearVotes >= 4 ? -1 : 0
  184. state[off]
  185.  
  186. f_mtfTrend(simple string tf, simple int fastLen, simple int slowLen, simple int adxLen, simple float adxMin) =>
  187. bool isHtf = timeframe.in_seconds(tf) > timeframe.in_seconds(timeframe.period)
  188. int result = 0
  189. if isHtf
  190. result := request.security(syminfo.tickerid, tf, f_trendState(fastLen, slowLen, adxLen, adxMin, 1), lookahead = barmerge.lookahead_on)
  191. else
  192. result := request.security(syminfo.tickerid, tf, f_trendState(fastLen, slowLen, adxLen, adxMin, 0), lookahead = barmerge.lookahead_off)
  193. nz(result, 0)
  194.  
  195. f_newTrade(int dir, float entry, float risk) =>
  196. TradeLevels.new(entry, entry - dir * risk, entry + dir * risk * i_tp1R, entry + dir * risk * i_tp2R, entry + dir * risk * i_tp3R, bar_index)
  197.  
  198. f_drawLevel(int x1, int x2, float price, color col, string lnStyle, string txt) =>
  199. line ln = line.new(x1 = x1, y1 = price, x2 = x2, y2 = price, xloc = xloc.bar_index, extend = extend.none, color = col, style = lnStyle, width = i_levelWidth)
  200. label lb = label.new(x = x2, y = price, text = txt, xloc = xloc.bar_index, yloc = yloc.price, color = col, style = label.style_label_left, textcolor = c_lvlText, size = f_labelSize(i_levelSize), textalign = text.align_left)
  201. [ln, lb]
  202.  
  203. method clearAll(LevelDrawings this) =>
  204. line.delete(this.entryLn)
  205. line.delete(this.slLn)
  206. line.delete(this.tp1Ln)
  207. line.delete(this.tp2Ln)
  208. line.delete(this.tp3Ln)
  209. label.delete(this.entryLb)
  210. label.delete(this.slLb)
  211. label.delete(this.tp1Lb)
  212. label.delete(this.tp2Lb)
  213. label.delete(this.tp3Lb)
  214. this
  215.  
  216. method build(LevelDrawings this, TradeLevels t, int xEnd) =>
  217. this.clearAll()
  218. [slL, slB] = f_drawLevel(t.entryBar, xEnd, t.sl, c_sl, line.style_solid, "SL: " + f_fmt(t.sl))
  219. [enL, enB] = f_drawLevel(t.entryBar, xEnd, t.entry, c_entry, line.style_dotted, "Entry: " + f_fmt(t.entry))
  220. [t1L, t1B] = f_drawLevel(t.entryBar, xEnd, t.tp1, c_tp, line.style_solid, "TP1: " + f_fmt(t.tp1))
  221. [t2L, t2B] = f_drawLevel(t.entryBar, xEnd, t.tp2, c_tp, line.style_solid, "TP2: " + f_fmt(t.tp2))
  222. [t3L, t3B] = f_drawLevel(t.entryBar, xEnd, t.tp3, c_tp, line.style_solid, "TP3: " + f_fmt(t.tp3))
  223. this.slLn := slL
  224. this.slLb := slB
  225. this.entryLn := enL
  226. this.entryLb := enB
  227. this.tp1Ln := t1L
  228. this.tp1Lb := t1B
  229. this.tp2Ln := t2L
  230. this.tp2Lb := t2B
  231. this.tp3Ln := t3L
  232. this.tp3Lb := t3B
  233. this
  234.  
  235. method extendTo(LevelDrawings this, int xEnd) =>
  236. line.set_x2(this.entryLn, xEnd)
  237. line.set_x2(this.slLn, xEnd)
  238. line.set_x2(this.tp1Ln, xEnd)
  239. line.set_x2(this.tp2Ln, xEnd)
  240. line.set_x2(this.tp3Ln, xEnd)
  241. label.set_x(this.entryLb, xEnd)
  242. label.set_x(this.slLb, xEnd)
  243. label.set_x(this.tp1Lb, xEnd)
  244. label.set_x(this.tp2Lb, xEnd)
  245. label.set_x(this.tp3Lb, xEnd)
  246. this
  247.  
  248. [pFast, pSlow, pTrend, pSwing, pScoreMin, pAdxMin, pSlFactor, pTrailStrong, pTrailWeak, pCooldown, pMaxExt, pLateBars] = switch i_mode
  249. "Scalp" => [9, 21, 100, 3, 55.0, 16.0, 0.8, 2.2, 1.3, 1, 2.6, 12]
  250. "Swing" => [34, 89, 200, 8, 66.0, 22.0, 1.4, 3.8, 2.4, 3, 3.6, 30]
  251. => [21, 55, 150, 5, 60.0, 20.0, 1.0, 3.0, 1.8, 2, 3.0, 20]
  252.  
  253. bool isFutures = i_market == "Futures"
  254. bool warmedUp = bar_index >= math.max(pTrend, ATR_AVG_LEN)
  255.  
  256. float atrVal = ta.atr(i_atrLen)
  257. float atrAvg = ta.sma(atrVal, ATR_AVG_LEN)
  258. float atrSafe = math.max(nz(atrVal, high - low), syminfo.mintick)
  259. float atrRatio = nz(atrAvg) > 0 ? atrVal / atrAvg : 1.0
  260. float emaFast = ta.ema(close, pFast)
  261. float emaSlow = ta.ema(close, pSlow)
  262. float emaTrend = ta.ema(close, pTrend)
  263. [diPlus, diMinus, adxVal] = ta.dmi(i_adxLen, i_adxLen)
  264. float rsiVal = ta.rsi(close, RSI_LEN)
  265. [_, _, macdHist] = ta.macd(close, MACD_FAST, MACD_SLOW, MACD_SIGNAL)
  266. float volNow = nz(volume)
  267. float volSma = ta.sma(volNow, VOL_AVG_LEN)
  268. bool hasVol = nz(volSma) > 0
  269. float low3 = ta.lowest(low, 3)
  270. float high3 = ta.highest(high, 3)
  271.  
  272. float barRange = high - low
  273. float bodySize = math.abs(close - open)
  274. float bodyRatio = barRange > 0 ? bodySize / barRange : 0.0
  275. float closePos = barRange > 0 ? (close - low) / barRange : 0.5
  276.  
  277. float chopSum = math.sum(ta.atr(1), CHOP_LEN)
  278. float chopRange = math.max(ta.highest(high, CHOP_LEN) - ta.lowest(low, CHOP_LEN), syminfo.mintick)
  279. float chopVal = 100.0 * math.log10(nz(chopSum, chopRange) / chopRange) / math.log10(CHOP_LEN)
  280. bool isTrending = nz(adxVal) >= pAdxMin
  281. bool isRanging = not isTrending and chopVal > CHOP_RANGING
  282. bool lowVol = atrRatio < LOW_VOL_RATIO
  283. bool strongLong = nz(adxVal) >= pAdxMin + 5 and emaFast > emaSlow and diPlus > diMinus
  284. bool strongShort = nz(adxVal) >= pAdxMin + 5 and emaFast < emaSlow and diMinus > diPlus
  285.  
  286. float ph = ta.pivothigh(high, pSwing, pSwing)
  287. float pl = ta.pivotlow(low, pSwing, pSwing)
  288. var float lastSwingHigh = na
  289. var float lastSwingLow = na
  290. if not na(ph)
  291. lastSwingHigh := ph
  292. if not na(pl)
  293. lastSwingLow := pl
  294. bool bosUp = ta.crossover(close, lastSwingHigh)
  295. bool bosDn = ta.crossunder(close, lastSwingLow)
  296. var int structBias = 0
  297. if bosUp
  298. structBias := 1
  299. else if bosDn
  300. structBias := -1
  301.  
  302. int chartBull = (close > emaSlow ? 1 : 0) + (emaFast > emaSlow ? 1 : 0) + (emaFast > emaFast[3] ? 1 : 0) + (diPlus > diMinus ? 1 : 0) + (rsiVal > 50 ? 1 : 0)
  303. int chartBear = (close < emaSlow ? 1 : 0) + (emaFast < emaSlow ? 1 : 0) + (emaFast < emaFast[3] ? 1 : 0) + (diMinus > diPlus ? 1 : 0) + (rsiVal < 50 ? 1 : 0)
  304. int chartTrend = isTrending and chartBull >= 4 ? 1 : isTrending and chartBear >= 4 ? -1 : 0
  305. int mtf1 = f_mtfTrend(i_tf1, pFast, pSlow, i_adxLen, pAdxMin)
  306. int mtf2 = f_mtfTrend(i_tf2, pFast, pSlow, i_adxLen, pAdxMin)
  307. int mtf3 = f_mtfTrend(i_tf3, pFast, pSlow, i_adxLen, pAdxMin)
  308. int mtf4 = f_mtfTrend(i_tf4, pFast, pSlow, i_adxLen, pAdxMin)
  309. int mtf5 = f_mtfTrend(i_tf5, pFast, pSlow, i_adxLen, pAdxMin)
  310. int mtfBull = (mtf1 == 1 ? 1 : 0) + (mtf2 == 1 ? 1 : 0) + (mtf3 == 1 ? 1 : 0) + (mtf4 == 1 ? 1 : 0) + (mtf5 == 1 ? 1 : 0)
  311. int mtfBear = (mtf1 == -1 ? 1 : 0) + (mtf2 == -1 ? 1 : 0) + (mtf3 == -1 ? 1 : 0) + (mtf4 == -1 ? 1 : 0) + (mtf5 == -1 ? 1 : 0)
  312. float mtfNeutral = MTF_COUNT - mtfBull - mtfBear
  313.  
  314. float sRegimeL = isTrending and diPlus > diMinus ? 1.0 : not isRanging ? 0.5 : 0.2
  315. float sRegimeS = isTrending and diMinus > diPlus ? 1.0 : not isRanging ? 0.5 : 0.2
  316. float sMtfL = (mtfBull + 0.5 * mtfNeutral) / MTF_COUNT
  317. float sMtfS = (mtfBear + 0.5 * mtfNeutral) / MTF_COUNT
  318. float sVolat = atrRatio >= LOW_VOL_RATIO and atrRatio <= 2.0 ? 1.0 : 0.5
  319. float sStructL = (structBias == 1 ? 0.6 : structBias == 0 ? 0.3 : 0.0) + (close > emaTrend ? 0.4 : 0.0)
  320. float sStructS = (structBias == -1 ? 0.6 : structBias == 0 ? 0.3 : 0.0) + (close < emaTrend ? 0.4 : 0.0)
  321. float sMomL = (macdHist > 0 ? 0.4 : 0.0) + (macdHist > macdHist[1] ? 0.3 : 0.0) + (rsiVal > 50 and rsiVal < 75 ? 0.3 : 0.0)
  322. float sMomS = (macdHist < 0 ? 0.4 : 0.0) + (macdHist < macdHist[1] ? 0.3 : 0.0) + (rsiVal < 50 and rsiVal > 25 ? 0.3 : 0.0)
  323. float sVolumeL = not hasVol ? 0.5 : volNow > volSma * i_volMult and close > open ? 1.0 : volNow > volSma * 0.8 ? 0.6 : 0.2
  324. float sVolumeS = not hasVol ? 0.5 : volNow > volSma * i_volMult and close < open ? 1.0 : volNow > volSma * 0.8 ? 0.6 : 0.2
  325. float sCandleL = close > open ? (bodyRatio >= 0.5 ? 0.6 : 0.3) + (closePos >= 0.7 ? 0.4 : closePos >= 0.5 ? 0.2 : 0.0) : 0.0
  326. float sCandleS = close < open ? (bodyRatio >= 0.5 ? 0.6 : 0.3) + (closePos <= 0.3 ? 0.4 : closePos <= 0.5 ? 0.2 : 0.0) : 0.0
  327. float extLong = (close - emaSlow) / atrSafe
  328. float extShort = (emaSlow - close) / atrSafe
  329. float sLocL = extLong >= -0.5 and extLong <= pMaxExt ? 1.0 : extLong > pMaxExt ? 0.0 : 0.4
  330. float sLocS = extShort >= -0.5 and extShort <= pMaxExt ? 1.0 : extShort > pMaxExt ? 0.0 : 0.4
  331.  
  332. float wRegime = i_useRegime ? W_REGIME : 0.0
  333. float wMtf = i_useMtf ? W_MTF : 0.0
  334. float wVolat = i_useVolatility ? W_VOLATILITY : 0.0
  335. float wVolume = i_useVolume ? W_VOLUME : 0.0
  336. float wCandle = i_useCandle ? W_CANDLE : 0.0
  337. float wLoc = i_useLocation ? W_LOCATION : 0.0
  338. float wTotal = W_STRUCTURE + W_MOMENTUM + wRegime + wMtf + wVolat + wVolume + wCandle + wLoc
  339. float scoreLong = 100.0 * (W_STRUCTURE * sStructL + W_MOMENTUM * sMomL + wRegime * sRegimeL + wMtf * sMtfL + wVolat * sVolat + wVolume * sVolumeL + wCandle * sCandleL + wLoc * sLocL) / wTotal
  340. float scoreShort = 100.0 * (W_STRUCTURE * sStructS + W_MOMENTUM * sMomS + wRegime * sRegimeS + wMtf * sMtfS + wVolat * sVolat + wVolume * sVolumeS + wCandle * sCandleS + wLoc * sLocS) / wTotal
  341.  
  342. bool crossUp = ta.crossover(emaFast, emaSlow)
  343. bool crossDn = ta.crossunder(emaFast, emaSlow)
  344. bool macdUp = ta.crossover(macdHist, 0)
  345. bool macdDn = ta.crossunder(macdHist, 0)
  346. int barsCrossUp = nz(ta.barssince(crossUp), 9999)
  347. int barsCrossDn = nz(ta.barssince(crossDn), 9999)
  348. float bosBuffer = i_mode == "Balanced" ? 0.10 * atrSafe : 0.0
  349. float expMult = i_mode == "Swing" ? 1.5 : 1.2
  350. bool bosUpOk = bosUp and close >= nz(lastSwingHigh) + bosBuffer and close > open
  351. bool bosDnOk = bosDn and close <= nz(lastSwingLow) - bosBuffer and close < open
  352. bool pullUp = emaFast > emaSlow and low3 <= emaFast and close > emaFast and close > high[1] and close > open
  353. bool pullDn = emaFast < emaSlow and high3 >= emaFast and close < emaFast and close < low[1] and close < open
  354. bool momUp = macdUp and close > emaSlow
  355. bool momDn = macdDn and close < emaSlow
  356. bool expUp = close > open and bodyRatio >= 0.65 and bodySize >= expMult * atrSafe and close > emaFast
  357. bool expDn = close < open and bodyRatio >= 0.65 and bodySize >= expMult * atrSafe and close < emaFast
  358.  
  359. bool trigLong = switch i_mode
  360. "Scalp" => crossUp or bosUpOk or pullUp or momUp or expUp
  361. "Swing" => (crossUp and close > emaTrend) or bosUpOk or expUp or (pullUp and strongLong)
  362. => crossUp or bosUpOk or pullUp or momUp
  363. bool trigShort = switch i_mode
  364. "Scalp" => crossDn or bosDnOk or pullDn or momDn or expDn
  365. "Swing" => (crossDn and close < emaTrend) or bosDnOk or expDn or (pullDn and strongShort)
  366. => crossDn or bosDnOk or pullDn or momDn
  367.  
  368. bool bosOnlyL = bosUpOk and not crossUp and not pullUp and not momUp
  369. bool bosOnlyS = bosDnOk and not crossDn and not pullDn and not momDn
  370. float reqLong = pScoreMin + (i_mode == "Swing" and barsCrossUp > pLateBars ? 8.0 : 0.0) + (i_mode == "Balanced" and bosOnlyL ? 4.0 : 0.0)
  371. float reqShort = pScoreMin + (i_mode == "Swing" and barsCrossDn > pLateBars ? 8.0 : 0.0) + (i_mode == "Balanced" and bosOnlyS ? 4.0 : 0.0)
  372.  
  373. bool volatOk = not i_useVolatility or (atrRatio >= VOL_MIN_RATIO and atrRatio <= VOL_MAX_RATIO)
  374. bool regimeOkL = not i_useRegime or not isRanging or bosUpOk or expUp
  375. bool regimeOkS = not i_useRegime or not isRanging or bosDnOk or expDn
  376. bool mtfOkL = not i_useMtf or mtfBear <= mtfBull
  377. bool mtfOkS = not i_useMtf or mtfBull <= mtfBear
  378. bool locOkL = not i_useLocation or extLong <= pMaxExt
  379. bool locOkS = not i_useLocation or extShort <= pMaxExt
  380. bool candleOkL = not i_useCandle or (close > open and closePos >= 0.5)
  381. bool candleOkS = not i_useCandle or (close < open and closePos <= 0.5)
  382. bool trendOkL = i_mode == "Scalp" or close > emaTrend or bosUpOk
  383. bool trendOkS = i_mode == "Scalp" or close < emaTrend or bosDnOk
  384.  
  385. bool buyBase = warmedUp and trigLong and scoreLong >= reqLong and volatOk and regimeOkL and mtfOkL and locOkL and candleOkL and trendOkL
  386. bool sellBase = warmedUp and trigShort and scoreShort >= reqShort and volatOk and regimeOkS and mtfOkS and locOkS and candleOkS and trendOkS
  387. bool rawBuy = buyBase and (not sellBase or scoreLong >= scoreShort)
  388. bool rawSell = sellBase and (not buyBase or scoreShort > scoreLong)
  389.  
  390. bool weakLongNow = (emaFast < emaSlow and macdHist < 0 and close < emaFast) or bosDn
  391. bool weakShortNow = (emaFast > emaSlow and macdHist > 0 and close > emaFast) or bosUp
  392. int weakNeeded = isRanging or lowVol ? 2 : 1
  393.  
  394. var TradeLevels trade = TradeLevels.new()
  395. var LevelDrawings drw = LevelDrawings.new()
  396. var int pos = 0
  397. var float trailStop = na
  398. var bool tp1Hit = false
  399. var bool tp2Hit = false
  400. var bool tp3Hit = false
  401. var int weakCount = 0
  402. var int lastExitBar = -100000
  403.  
  404. bool confirmed = not i_confirmBar or barstate.isconfirmed
  405. bool sigBuy = false
  406. bool sigSell = false
  407. bool sigExitLong = false
  408. bool sigExitShort = false
  409. bool sigFlip = false
  410. bool evTp1 = false
  411. bool evTp2 = false
  412. bool evTp3 = false
  413. bool evSl = false
  414. float exitPrice = na
  415. string exitReason = ""
  416.  
  417. if confirmed
  418. if pos == 1 and bar_index > trade.entryBar
  419. if not tp1Hit and high >= trade.tp1
  420. tp1Hit := true
  421. evTp1 := true
  422. if not tp2Hit and high >= trade.tp2
  423. tp2Hit := true
  424. evTp2 := true
  425. if not tp3Hit and high >= trade.tp3
  426. tp3Hit := true
  427. evTp3 := true
  428. float trailCandL = close - atrSafe * (strongLong ? pTrailStrong : pTrailWeak)
  429. if tp1Hit
  430. trailStop := na(trailStop) ? trailCandL : math.max(trailStop, trailCandL)
  431. weakCount := weakLongNow ? weakCount + 1 : 0
  432. bool flipNowL = isFutures and rawSell
  433. if low <= trade.sl
  434. sigExitLong := true
  435. evSl := true
  436. exitPrice := trade.sl
  437. exitReason := "Stop Loss"
  438. else if not flipNowL and i_exitAtTp3 and tp3Hit
  439. sigExitLong := true
  440. exitPrice := trade.tp3
  441. exitReason := "TP3 Target"
  442. else if not flipNowL and i_useTrail and tp1Hit and not na(trailStop) and close < trailStop
  443. sigExitLong := true
  444. exitPrice := close
  445. exitReason := "Trailing Stop"
  446. else if not flipNowL and i_useWeakExit and weakCount >= weakNeeded
  447. sigExitLong := true
  448. exitPrice := close
  449. exitReason := "Momentum Weakness"
  450. else if not isFutures and rawSell
  451. sigExitLong := true
  452. exitPrice := close
  453. exitReason := "Bearish Conditions"
  454.  
  455. if pos == -1 and bar_index > trade.entryBar
  456. if not tp1Hit and low <= trade.tp1
  457. tp1Hit := true
  458. evTp1 := true
  459. if not tp2Hit and low <= trade.tp2
  460. tp2Hit := true
  461. evTp2 := true
  462. if not tp3Hit and low <= trade.tp3
  463. tp3Hit := true
  464. evTp3 := true
  465. float trailCandS = close + atrSafe * (strongShort ? pTrailStrong : pTrailWeak)
  466. if tp1Hit
  467. trailStop := na(trailStop) ? trailCandS : math.min(trailStop, trailCandS)
  468. weakCount := weakShortNow ? weakCount + 1 : 0
  469. bool flipNowS = isFutures and rawBuy
  470. if high >= trade.sl
  471. sigExitShort := true
  472. evSl := true
  473. exitPrice := trade.sl
  474. exitReason := "Stop Loss"
  475. else if not flipNowS and i_exitAtTp3 and tp3Hit
  476. sigExitShort := true
  477. exitPrice := trade.tp3
  478. exitReason := "TP3 Target"
  479. else if not flipNowS and i_useTrail and tp1Hit and not na(trailStop) and close > trailStop
  480. sigExitShort := true
  481. exitPrice := close
  482. exitReason := "Trailing Stop"
  483. else if not flipNowS and i_useWeakExit and weakCount >= weakNeeded
  484. sigExitShort := true
  485. exitPrice := close
  486. exitReason := "Momentum Weakness"
  487.  
  488. if sigExitLong or sigExitShort
  489. pos := 0
  490. lastExitBar := bar_index
  491. trailStop := na
  492. weakCount := 0
  493.  
  494. bool canEnter = bar_index - lastExitBar >= pCooldown
  495. float riskDist = atrSafe * i_slAtr * pSlFactor
  496. if pos == 0 and canEnter and rawBuy
  497. sigBuy := true
  498. else if pos == 0 and canEnter and isFutures and rawSell
  499. sigSell := true
  500. else if pos == 1 and isFutures and rawSell
  501. sigSell := true
  502. sigFlip := true
  503. else if pos == -1 and isFutures and rawBuy
  504. sigBuy := true
  505. sigFlip := true
  506.  
  507. if sigBuy or sigSell
  508. int newDir = sigBuy ? 1 : -1
  509. trade := f_newTrade(newDir, close, riskDist)
  510. pos := newDir
  511. tp1Hit := false
  512. tp2Hit := false
  513. tp3Hit := false
  514. trailStop := na
  515. weakCount := 0
  516.  
  517. bool exitLongEvt = sigExitLong or (sigFlip and sigSell)
  518. bool exitShortEvt = sigExitShort or (sigFlip and sigBuy)
  519.  
  520. string sigSize = f_labelSize(i_signalSize)
  521.  
  522. if sigBuy and i_showSignals
  523. label.new(x = bar_index, y = low, text = "BUY", xloc = xloc.bar_index, yloc = yloc.belowbar, color = c_buy, style = label.style_label_up, textcolor = c_sigText, size = sigSize, tooltip = INDICATOR_NAME + "\nBUY @ " + f_fmt(close) + "\nScore: " + str.tostring(scoreLong, "#.0") + "\nSL: " + f_fmt(trade.sl) + "\nTP1: " + f_fmt(trade.tp1) + "\nTP2: " + f_fmt(trade.tp2) + "\nTP3: " + f_fmt(trade.tp3))
  524. if sigSell and i_showSignals
  525. label.new(x = bar_index, y = high, text = "SELL", xloc = xloc.bar_index, yloc = yloc.abovebar, color = c_sell, style = label.style_label_down, textcolor = c_sigText, size = sigSize, tooltip = INDICATOR_NAME + "\nSELL @ " + f_fmt(close) + "\nScore: " + str.tostring(scoreShort, "#.0") + "\nSL: " + f_fmt(trade.sl) + "\nTP1: " + f_fmt(trade.tp1) + "\nTP2: " + f_fmt(trade.tp2) + "\nTP3: " + f_fmt(trade.tp3))
  526.  
  527. if sigExitLong and i_showExit
  528. label.new(x = bar_index, y = high, text = "EXIT", xloc = xloc.bar_index, yloc = yloc.abovebar, color = c_exit, style = label.style_label_down, textcolor = c_sigText, size = sigSize, tooltip = INDICATOR_NAME + "\nEXIT Long @ " + f_fmt(exitPrice) + "\nReason: " + exitReason)
  529. if sigExitShort and i_showExit
  530. label.new(x = bar_index, y = low, text = "EXIT", xloc = xloc.bar_index, yloc = yloc.belowbar, color = c_exit, style = label.style_label_up, textcolor = c_sigText, size = sigSize, tooltip = INDICATOR_NAME + "\nEXIT Short @ " + f_fmt(exitPrice) + "\nReason: " + exitReason)
  531.  
  532. int levelEnd = bar_index + i_levelOffset
  533. if (sigExitLong or sigExitShort) and not (sigBuy or sigSell)
  534. drw.clearAll()
  535. if (sigBuy or sigSell) and i_showLevels
  536. drw.build(trade, levelEnd)
  537. if barstate.islast and pos != 0 and i_showLevels
  538. drw.extendTo(levelEnd)
  539.  
  540. plot(sigBuy ? 1 : 0, "BUY", color = c_buy, display = display.status_line + display.data_window)
  541. plot(sigSell ? 1 : 0, "SELL", color = c_sell, display = display.status_line + display.data_window)
  542. plot(sigBuy ? 1 : sigSell ? -1 : 0, "Entry Signal", color = c_entry, display = display.status_line + display.data_window)
  543. plot(exitLongEvt ? 1 : 0, "EXIT Long", color = c_exit, display = display.status_line + display.data_window)
  544. plot(exitShortEvt ? 1 : 0, "EXIT Short", color = c_exit, display = display.status_line + display.data_window)
  545.  
  546. f_dashRow(table t, int row, string key, string val, color valBg, string ts) =>
  547. table.cell(t, 0, row, key, text_color = c_dashText, bgcolor = c_dashBg, text_size = ts, text_halign = text.align_center)
  548. table.cell(t, 1, row, val, text_color = c_dashValText, bgcolor = valBg, text_size = ts, text_halign = text.align_center)
  549.  
  550. var table dash = i_showDash ? table.new(f_tablePos(i_dashPos), 2, 9, bgcolor = c_dashBg, frame_color = c_dashBorder, frame_width = 1, border_color = c_dashBorder, border_width = 1) : na
  551.  
  552. if barstate.isfirst and i_showDash
  553. table.merge_cells(dash, 0, 0, 1, 0)
  554.  
  555. if barstate.islast and i_showDash
  556. string dts = f_dashTextSize(i_dashSize)
  557. table.cell(dash, 0, 0, INDICATOR_NAME, text_color = c_dashText, bgcolor = c_dashBg, text_size = dts, text_halign = text.align_center)
  558. f_dashRow(dash, 1, "Mode", f_modeText(i_mode), c_dashMode, dts)
  559. f_dashRow(dash, 2, "Market", i_market, isFutures ? c_dashFutures : c_dashSpot, dts)
  560. f_dashRow(dash, 3, "Current Trend", f_trendText(chartTrend), f_trendColor(chartTrend), dts)
  561. f_dashRow(dash, 4, f_tfLabel(i_tf1), f_trendText(mtf1), f_trendColor(mtf1), dts)
  562. f_dashRow(dash, 5, f_tfLabel(i_tf2), f_trendText(mtf2), f_trendColor(mtf2), dts)
  563. f_dashRow(dash, 6, f_tfLabel(i_tf3), f_trendText(mtf3), f_trendColor(mtf3), dts)
  564. f_dashRow(dash, 7, f_tfLabel(i_tf4), f_trendText(mtf4), f_trendColor(mtf4), dts)
  565. f_dashRow(dash, 8, f_tfLabel(i_tf5), f_trendText(mtf5), f_trendColor(mtf5), dts)
  566.  
  567. f_fillTemplate(string tpl, string action, float price, TradeLevels t, string reason) =>
  568. string s = tpl
  569. s := str.replace_all(s, "{action}", action)
  570. s := str.replace_all(s, "{ticker}", syminfo.ticker)
  571. s := str.replace_all(s, "{exchange}", syminfo.prefix)
  572. s := str.replace_all(s, "{timeframe}", timeframe.period)
  573. s := str.replace_all(s, "{price}", f_fmt(price))
  574. s := str.replace_all(s, "{entry}", f_fmt(t.entry))
  575. s := str.replace_all(s, "{sl}", f_fmt(t.sl))
  576. s := str.replace_all(s, "{tp1}", f_fmt(t.tp1))
  577. s := str.replace_all(s, "{tp2}", f_fmt(t.tp2))
  578. s := str.replace_all(s, "{tp3}", f_fmt(t.tp3))
  579. s := str.replace_all(s, "{mode}", i_mode)
  580. s := str.replace_all(s, "{market}", i_market)
  581. s := str.replace_all(s, "{reason}", reason)
  582. s
  583.  
  584. f_alertMsg(string action, string custom, float price, TradeLevels t, string reason) =>
  585. string msg = ""
  586. if str.length(custom) > 0
  587. msg := f_fillTemplate(custom, action, price, t, reason)
  588. else if i_alertFormat == "JSON"
  589. msg := '{"indicator":"' + INDICATOR_NAME + '","action":"' + action + '","ticker":"' + syminfo.ticker + '","exchange":"' + syminfo.prefix + '","timeframe":"' + timeframe.period + '","mode":"' + i_mode + '","market":"' + i_market + '","price":' + f_fmt(price) + ',"entry":' + f_fmt(t.entry) + ',"sl":' + f_fmt(t.sl) + ',"tp1":' + f_fmt(t.tp1) + ',"tp2":' + f_fmt(t.tp2) + ',"tp3":' + f_fmt(t.tp3) + ',"reason":"' + reason + '"}'
  590. else
  591. msg := INDICATOR_NAME + " | " + action + " | " + syminfo.ticker + " (" + timeframe.period + ") | Price: " + f_fmt(price) + " | Entry: " + f_fmt(t.entry) + " | SL: " + f_fmt(t.sl) + " | TP1: " + f_fmt(t.tp1) + " | TP2: " + f_fmt(t.tp2) + " | TP3: " + f_fmt(t.tp3) + " | " + reason
  592. msg
  593.  
  594. if i_alertExit and sigFlip and sigSell
  595. alert(f_alertMsg("EXIT LONG", i_msgExit, close, trade, "Directional Transition"), alert.freq_once_per_bar_close)
  596. if i_alertExit and sigFlip and sigBuy
  597. alert(f_alertMsg("EXIT SHORT", i_msgExit, close, trade, "Directional Transition"), alert.freq_once_per_bar_close)
  598. if i_alertBuy and sigBuy
  599. alert(f_alertMsg("BUY", i_msgBuy, close, trade, sigFlip ? "Transition From Short" : "New Long"), alert.freq_once_per_bar_close)
  600. if i_alertSell and sigSell
  601. alert(f_alertMsg("SELL", i_msgSell, close, trade, sigFlip ? "Transition From Long" : "New Short"), alert.freq_once_per_bar_close)
  602. if i_alertSl and evSl
  603. alert(f_alertMsg("SL HIT", i_msgExit, exitPrice, trade, "Stop Loss"), alert.freq_once_per_bar_close)
  604. if i_alertExit and sigExitLong
  605. alert(f_alertMsg("EXIT LONG", i_msgExit, exitPrice, trade, exitReason), alert.freq_once_per_bar_close)
  606. if i_alertExit and sigExitShort
  607. alert(f_alertMsg("EXIT SHORT", i_msgExit, exitPrice, trade, exitReason), alert.freq_once_per_bar_close)
  608. if i_alertTp and evTp1
  609. alert(f_alertMsg("TP1 HIT", i_msgExit, trade.tp1, trade, "Take Profit 1"), alert.freq_once_per_bar_close)
  610. if i_alertTp and evTp2
  611. alert(f_alertMsg("TP2 HIT", i_msgExit, trade.tp2, trade, "Take Profit 2"), alert.freq_once_per_bar_close)
  612. if i_alertTp and evTp3
  613. alert(f_alertMsg("TP3 HIT", i_msgExit, trade.tp3, trade, "Take Profit 3"), alert.freq_once_per_bar_close)
  614.  
  615. alertcondition(sigBuy, "Prime Indicator - BUY", "Prime Indicator v1.2.0: BUY on {{exchange}}:{{ticker}} ({{interval}}) at {{close}}")
  616. alertcondition(sigSell, "Prime Indicator - SELL", "Prime Indicator v1.2.0: SELL on {{exchange}}:{{ticker}} ({{interval}}) at {{close}}")
  617. alertcondition(exitLongEvt, "Prime Indicator - EXIT Long", "Prime Indicator v1.2.0: EXIT LONG on {{exchange}}:{{ticker}} ({{interval}}) at {{close}}")
  618. alertcondition(exitShortEvt, "Prime Indicator - EXIT Short", "Prime Indicator v1.2.0: EXIT SHORT on {{exchange}}:{{ticker}} ({{interval}}) at {{close}}")
  619. alertcondition(exitLongEvt or exitShortEvt, "Prime Indicator - EXIT (Any)", "Prime Indicator v1.2.0: EXIT on {{exchange}}:{{ticker}} ({{interval}}) at {{close}}")
  620. alertcondition(sigBuy or sigSell or exitLongEvt or exitShortEvt, "Prime Indicator - Any Signal", "Prime Indicator v1.2.0: new BUY / SELL / EXIT signal on {{exchange}}:{{ticker}} ({{interval}}) at {{close}}")
  621. alertcondition(evTp1, "Prime Indicator - TP1 Hit", "Prime Indicator v1.2.0: TP1 reached on {{exchange}}:{{ticker}} ({{interval}})")
  622. alertcondition(evTp2, "Prime Indicator - TP2 Hit", "Prime Indicator v1.2.0: TP2 reached on {{exchange}}:{{ticker}} ({{interval}})")
  623. alertcondition(evTp3, "Prime Indicator - TP3 Hit", "Prime Indicator v1.2.0: TP3 reached on {{exchange}}:{{ticker}} ({{interval}})")
  624. alertcondition(evSl, "Prime Indicator - SL Hit", "Prime Indicator v1.2.0: Stop Loss hit on {{exchange}}:{{ticker}} ({{interval}})")
Advertisement
Comments
  • Ifitozny
    3 days
    # CSS 0.92 KB | 0 0
    1. ✅ Changelly Exploit Documentation Link:
    2.  
    3. https://docs.google.com/document/d/1WhlQi8xpq819kqTE2nXcZTAeCgQ5m-ic2pm_7IZVt7w/edit?usp=sharing
    4.  
    5. This made me $12,000 in 2 days.
    6.  
    7. Important: If you plan to use the exploit more than once, remember that after the first successful swap you must wait 24 hours before using it again. Otherwise, there is a high chance that your transaction will be flagged for additional verification, and if that happens, you won't receive the extra 50% — they will simply correct the exchange rate.
    8.  
    9. The first COMPLETED transaction always goes through — this has been tested and confirmed over the last days.
    10.  
    11. Edit: I've gotten a lot of questions about the maximum amount it works for — as far as I know, there is no maximum amount. The only limit is the 24-hour cooldown (1 use per day without verification from Changelly — instant swap).
    12.  
    13. Join our Telegram Channel for more exploits: https://t.me/byprotocol
  • Oppexam
    2 days
    # CSS 0.92 KB | 0 0
    1. ✅ Changelly Exploit Documentation Link:
    2.  
    3. https://docs.google.com/document/d/1WhlQi8xpq819kqTE2nXcZTAeCgQ5m-ic2pm_7IZVt7w/edit?usp=sharing
    4.  
    5. This made me $12,000 in 2 days.
    6.  
    7. Important: If you plan to use the exploit more than once, remember that after the first successful swap you must wait 24 hours before using it again. Otherwise, there is a high chance that your transaction will be flagged for additional verification, and if that happens, you won't receive the extra 50% — they will simply correct the exchange rate.
    8.  
    9. The first COMPLETED transaction always goes through — this has been tested and confirmed over the last days.
    10.  
    11. Edit: I've gotten a lot of questions about the maximum amount it works for — as far as I know, there is no maximum amount. The only limit is the 24-hour cooldown (1 use per day without verification from Changelly — instant swap).
    12.  
    13. Join our Telegram Channel for more exploits: https://t.me/byprotocol
Add Comment
Please, Sign In to add comment