এই কৌশলটি প্রবণতাটি সঠিকভাবে ট্র্যাক করার জন্য হাল এমএ মসৃণ চলমান গড় এবং এসটিসি সূচককে একত্রিত করে। হাল এমএ লাইন সবুজ হয়ে গেলে এবং এসটিসি সূচক লাল থেকে সবুজ হয়ে গেলে এবং 25 এর নীচে থাকলে এটি দীর্ঘ হয়; হাল এমএ লাইন লাল হয়ে গেলে এবং এসটিসি সূচক সবুজ থেকে লাল হয়ে গেলে এবং 75 এর উপরে থাকলে এটি সংক্ষিপ্ত হয়। এদিকে, কৌশলটি প্রবণতা সংকেতগুলি আরও নিশ্চিত করতে ইউটি বট সূচককেও সংহত করে।
কৌশলটি মূল্যের প্রবণতা দিক নির্ধারণের জন্য হাল এমএ মসৃণ চলমান গড় রেখা ব্যবহার করে। হাল এমএ রেখার রঙের পরিবর্তন সবুজ থেকে লাল বা বিপরীতভাবে প্রবণতা বিপরীত বিচার করতে ব্যবহার করা যেতে পারে।
এসটিসি সূচকটি এমএসিডি সূচকের অনুরূপ। এর সূচক রেখাটি বুলিশ / হ্রাস বিপরীততা নির্ধারণের জন্য ব্যবহার করা যেতে পারে। যখন সূচক রেখাটি নীচে থেকে 25 এর উপরে ভেঙে যায়, এটি একটি ক্রয় সংকেত; যখন এটি উপরে থেকে 75 এর নীচে ভেঙে যায়, এটি একটি বিক্রয় সংকেত।
হাল এমএ এবং এসটিসি সূচকগুলিকে একত্রিত করে, যখন উভয় সূচক একই সাথে ক্রয় / বিক্রয় সংকেত উত্পন্ন করে, এটি বাণিজ্য প্রবেশের জন্য প্রবণতা বিপরীত নির্দেশ করে।
এছাড়াও, কৌশলটিতে ইউটি বট সূচকও অন্তর্ভুক্ত রয়েছে, যা প্রবণতা সংকেতগুলি আরও নিশ্চিত করার জন্য, এটিআর-ভিত্তিক গতিশীল স্টপ লস লাইনের সাথে মূল্যের সম্পর্কের উপর ভিত্তি করে উত্থান / হ্রাস প্রবণতা প্রকাশ করে।
বিশেষ করে, কৌশলগত যুক্তি হলঃ
যখন Hull MA লাইন সবুজ হয়ে যায় এবং STC ইন্ডিকেটর লাইন লাল থেকে সবুজ হয়ে যায়, 25 এর নিচে, এটি একটি দীর্ঘ সংকেত।
যখন Hull MA লাইন লাল হয়ে যায় এবং STC সূচক লাইন সবুজ থেকে লাল হয়ে যায়, 75 এর উপরে, এটি একটি সংক্ষিপ্ত সংকেত।
যখন উপরের মানদণ্ড পূরণ করা হয়, তখন লং পজিশন খোলার জন্য ইউটি বটকে উর্ধ্বমুখী দেখানোর প্রয়োজন হয়।
যখন উপরের মানদণ্ড পূরণ করা হয়, তখন শর্ট পজিশন খোলার জন্য ইউটি বটকে হ্রাস দেখায়।
কৌশলটি প্রবণতা নির্ধারণের জন্য তিনটি সূচককে একত্রিত করে, যা সংকেতগুলির নির্ভরযোগ্যতা উন্নত করতে পারে।
মসৃণ হাল এমএ বক্ররেখা সঠিকভাবে প্রবণতা দিক নির্ধারণ এবং whipsaws এড়াতে পারেন। এসটিসি সূচক কৌশল বাস্তব সময় কর্মক্ষমতা উন্নত করতে প্রবণতা বিপরীত পয়েন্ট ক্যাপচার করতে পারেন। ইউটি বট আরও মিথ্যা সংকেত ফিল্টার করতে পারেন।
এই তিনটি সূচকের সংমিশ্রণ একটি সুনির্দিষ্ট প্রবণতা ট্র্যাকিং সক্ষম করে এবং স্থিতিশীলতা বৃদ্ধি করে। এটি কৌশলটির সবচেয়ে বড় শক্তি।
কৌশলটির প্রধান ঝুঁকিঃ
এসটিসি ইন্ডিকেটর মিথ্যা সংকেত উৎপন্ন করে, যা অপ্রয়োজনীয় এন্ট্রি সৃষ্টি করে।
ভুল Hull MA প্যারামিটার সেটিং এছাড়াও প্রবণতা ভুল মূল্যায়ন করতে পারে।
এই তিনটি সূচকের ভুল সংমিশ্রণ একে অপরের সাথে হস্তক্ষেপ করতে পারে।
হুল এমএ প্যারামিটারগুলি অপ্টিমাইজ করে, এসটিসি প্যারামিটার মিশ্রণটি সামঞ্জস্য করে, ইউটি বট প্যারামিটারগুলি পরীক্ষা করে ঝুঁকিগুলি হ্রাস করা যেতে পারে।
এছাড়াও, স্টপ লস ব্যবহার করে একক ট্রেড লস নিয়ন্ত্রণ করা যায়। মিথ্যা সংকেত হার কমাতে কম্বো যাচাইয়ের জন্য আরও সূচক চালু করা যেতে পারে।
কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ
প্রবণতা আরও ভালভাবে ফিট করার জন্য মসৃণ বক্ররেখার জন্য সর্বোত্তম দৈর্ঘ্য খুঁজে বের করতে Hull MA পরামিতিগুলি অপ্টিমাইজ করুন।
STC পরামিতি মিশ্রণ সামঞ্জস্য করুন বিপরীত সনাক্তকরণের জন্য আরো সঠিক সমন্বয় খুঁজে পেতে।
প্রবণতা বিচার সঠিকতা উন্নত করতে ইউটি বট পরামিতি অপ্টিমাইজ করুন।
সিগন্যাল নির্ভরযোগ্যতা আরও উন্নত করার জন্য কম্বো ভেরিফিকেশনের জন্য অন্যান্য সূচক প্রবর্তনের পরীক্ষা।
একক ট্রেড হ্রাসকে গ্রহণযোগ্য পরিসরের মধ্যে নিয়ন্ত্রণ করার সময় লাভ বজায় রাখার জন্য স্টপ লস কৌশলটি অনুকূল করুন।
উচ্চতর রিওয়ার্ড / ঝুঁকি অনুপাতের জন্য অবস্থান আকার কৌশল অপ্টিমাইজ করুন।
কৌশলটি হুল এমএ, এসটিসি এবং ইউটি বট সূচকগুলিকে একত্রিত করে প্রবণতাটি সুনির্দিষ্টভাবে ট্র্যাক করে। এর সূচক বৈচিত্র্যের সুবিধা রয়েছে, যা ভুল বিচার ঝুঁকি হ্রাস করে এবং স্থিতিশীলতা বাড়ায়। পরামিতিগুলি ক্রমাগত অনুকূল করে, অন্যান্য সূচকগুলি প্রবর্তন করে, স্টপ লস কৌশলগুলিকে নিখুঁত করে ইত্যাদির মাধ্যমে কৌশলটি আরও উন্নত করা যেতে পারে।
/*backtest start: 2023-09-06 00:00:00 end: 2023-10-06 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © myn //@version=5 strategy('Strategy Myth-Busting #1 - UT Bot+STC+Hull+ [MYN]', max_bars_back=5000, overlay=true, pyramiding=0, initial_capital=20000, currency='USD', default_qty_type=strategy.percent_of_equity, default_qty_value=100.0, commission_value=0.075) ///////////////////////////////////// //* Put your strategy logic below *// ///////////////////////////////////// //2oVDibie_bk /// UT Bot Alerts by QuantNomad - https://www.tradingview.com/script/n8ss8BID-UT-Bot-Alerts/ // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ //study(title="UT Bot Alerts", overlay = true) // Inputs a = input(2, title='Key Vaule. \'This changes the sensitivity\'') c = input(6, title='ATR Period') h = input(false, title='Signals from Heikin Ashi Candles') xATR = ta.atr(c) nLoss = a * xATR src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close xATRTrailingStop = 0.0 iff_1 = src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss iff_2 = src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : iff_1 xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), src - nLoss) : iff_2 pos = 0 iff_3 = src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0) pos := src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0) ? 1 : iff_3 xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue ema = ta.ema(src, 1) above = ta.crossover(ema, xATRTrailingStop) below = ta.crossover(xATRTrailingStop, ema) buy = src > xATRTrailingStop and above sell = src < xATRTrailingStop and below barbuy = src > xATRTrailingStop barsell = src < xATRTrailingStop //plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny) //plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, transp = 0, size = size.tiny) barcolor(barbuy ? color.green : na) barcolor(barsell ? color.red : na) alertcondition(buy, 'UT Long', 'UT Long') alertcondition(sell, 'UT Short', 'UT Short') /////////////////////////////////////////////// //======[ Position Check (long/short) ]======// /////////////////////////////////////////////// last_longCondition = float(na) last_shortCondition = float(na) last_longCondition := buy ? time : nz(last_longCondition[1]) last_shortCondition := sell ? time : nz(last_shortCondition[1]) in_longCondition = last_longCondition > last_shortCondition in_shortCondition = last_shortCondition > last_longCondition UTBotBuyZone = in_longCondition UTBotSellZone = in_shortCondition /// STC Indicator - A Better MACD [SHK] By shayankm - https://www.tradingview.com/script/WhRRThMI-STC-Indicator-A-Better-MACD-SHK/ // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ //[SHK] STC colored indicator //https://www.tradingview.com/u/shayankm/ //indicator(title='[SHK] Schaff Trend Cycle (STC)', shorttitle='STC', overlay=false) STCDivider = input(false, '░░░░░░░░░░░░░░░░░░░░░░░░░') EEEEEE = input(80, 'Length') BBBB = input(27, 'FastLength') BBBBB = input(50, 'SlowLength') AAAA(BBB, BBBB, BBBBB) => fastMA = ta.ema(BBB, BBBB) slowMA = ta.ema(BBB, BBBBB) AAAA = fastMA - slowMA AAAA AAAAA(EEEEEE, BBBB, BBBBB) => AAA = input(0.5) var CCCCC = 0.0 var DDD = 0.0 var DDDDDD = 0.0 var EEEEE = 0.0 BBBBBB = AAAA(close, BBBB, BBBBB) CCC = ta.lowest(BBBBBB, EEEEEE) CCCC = ta.highest(BBBBBB, EEEEEE) - CCC CCCCC := CCCC > 0 ? (BBBBBB - CCC) / CCCC * 100 : nz(CCCCC[1]) DDD := na(DDD[1]) ? CCCCC : DDD[1] + AAA * (CCCCC - DDD[1]) DDDD = ta.lowest(DDD, EEEEEE) DDDDD = ta.highest(DDD, EEEEEE) - DDDD DDDDDD := DDDDD > 0 ? (DDD - DDDD) / DDDDD * 100 : nz(DDDDDD[1]) EEEEE := na(EEEEE[1]) ? DDDDDD : EEEEE[1] + AAA * (DDDDDD - EEEEE[1]) EEEEE mAAAAA = AAAAA(EEEEEE, BBBB, BBBBB) mColor = mAAAAA > mAAAAA[1] ? color.new(color.green, 20) : color.new(color.red, 20) if mAAAAA[3] <= mAAAAA[2] and mAAAAA[2] > mAAAAA[1] and mAAAAA > 75 alert('Red', alert.freq_once_per_bar) if mAAAAA[3] >= mAAAAA[2] and mAAAAA[2] < mAAAAA[1] and mAAAAA < 25 alert('Green', alert.freq_once_per_bar) //plot(mAAAAA, color=mColor, title='STC', linewidth=2) //ul = plot(25, color=color.new(color.white, 0 )) //ll = plot(75, color=color.new(color.purple, 0)) //fill(ul, ll, color=color.new(color.gray, 96)) STCGreenAndBelow25AndRising = mAAAAA > mAAAAA[1] and mAAAAA < 25 STCRedAndAndAbove75AndFalling = mAAAAA < mAAAAA[1] and mAAAAA > 75 /// Hull Suite by InSilico // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ //Basic Hull Ma Pack tinkered by InSilico - https://www.tradingview.com/script/hg92pFwS-Hull-Suite/ //study("Hull Suite by InSilico", overlay=true) HullDivider = input(false, '░░░░░░░░░░░░░░░░░░░░░░░░░') //INPUT srcHull = input(close, title='Source') modeSwitch = input.string('Hma', title='Hull Variation', options=['Hma', 'Thma', 'Ehma']) length = input(55, title='Length(180-200 for floating S/R , 55 for swing entry)') lengthMult = input(1.0, title='Length multiplier (Used to view higher timeframes with straight band)') useHtf = input(false, title='Show Hull MA from X timeframe? (good for scalping)') htf = input.timeframe('240', title='Higher timeframe') switchColor = input(true, 'Color Hull according to trend?') candleCol = input(false, title='Color candles based on Hull\'s Trend?') visualSwitch = input(true, title='Show as a Band?') thicknesSwitch = input(1, title='Line Thickness') transpSwitch = input.int(40, title='Band Transparency', step=5) //FUNCTIONS //HMA HMA(_src, _length) => ta.wma(2 * ta.wma(_src, _length / 2) - ta.wma(_src, _length), math.round(math.sqrt(_length))) //EHMA EHMA(_src, _length) => ta.ema(2 * ta.ema(_src, _length / 2) - ta.ema(_src, _length), math.round(math.sqrt(_length))) //THMA THMA(_src, _length) => ta.wma(ta.wma(_src, _length / 3) * 3 - ta.wma(_src, _length / 2) - ta.wma(_src, _length), _length) //SWITCH Mode(modeSwitch, src, len) => modeSwitch == 'Hma' ? HMA(src, len) : modeSwitch == 'Ehma' ? EHMA(src, len) : modeSwitch == 'Thma' ? THMA(src, len / 2) : na //OUT _hull = Mode(modeSwitch, srcHull, int(length * lengthMult)) HULL = useHtf ? request.security(syminfo.ticker, htf, _hull) : _hull MHULL = HULL[0] SHULL = HULL[2] //COLOR hullColor = switchColor ? HULL > HULL[2] ? #00ff00 : #ff0000 : #ff9800 //PLOT ///< Frame Fi1 = plot(MHULL, title='MHULL', color=hullColor, linewidth=thicknesSwitch, transp=50) Fi2 = plot(visualSwitch ? SHULL : na, title='SHULL', color=hullColor, linewidth=thicknesSwitch, transp=50) alertcondition(ta.crossover(MHULL, SHULL), title='Hull trending up.', message='Hull trending up.') alertcondition(ta.crossover(SHULL, MHULL), title='Hull trending down.', message='Hull trending down.') ///< Ending Filler fill(Fi1, Fi2, title='Band Filler', color=hullColor, transp=transpSwitch) ///BARCOLOR barcolor(color=candleCol ? switchColor ? hullColor : na : na) HullGreen = hullColor == #00ff00 HullRed = hullColor == #ff0000 ////////////////////////////////////// //* Put your strategy rules below *// ///////////////////////////////////// longCondition = STCGreenAndBelow25AndRising and HullGreen and UTBotBuyZone shortCondition = STCRedAndAndAbove75AndFalling and HullRed and UTBotSellZone //define as 0 if do not want to use closeLongCondition = 0 closeShortCondition = 0 //░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ useStartPeriodTime = input.bool(true, 'Start', group='Date Range', inline='Start Period') startPeriodTime = input(timestamp('1 Jan 2019'), '', group='Date Range', inline='Start Period') useEndPeriodTime = input.bool(true, 'End', group='Date Range', inline='End Period') endPeriodTime = input(timestamp('31 Dec 2030'), '', group='Date Range', inline='End Period') start = useStartPeriodTime ? startPeriodTime >= time : false end = useEndPeriodTime ? endPeriodTime <= time : false calcPeriod = not start and not end // Trade Direction // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ tradeDirection = input.string('Long and Short', title='Trade Direction', options=['Long and Short', 'Long Only', 'Short Only'], group='Trade Direction') // Percent as Points // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ per(pcnt) => strategy.position_size != 0 ? math.round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na) // Take profit 1 // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ tp1 = input.float(title='Take Profit 1 - Target %', defval=100, minval=0.0, step=0.5, group='Take Profit', inline='Take Profit 1') q1 = input.int(title='% Of Position', defval=100, minval=0, group='Take Profit', inline='Take Profit 1') // Take profit 2 // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ tp2 = input.float(title='Take Profit 2 - Target %', defval=100, minval=0.0, step=0.5, group='Take Profit', inline='Take Profit 2') q2 = input.int(title='% Of Position', defval=100, minval=0, group='Take Profit', inline='Take Profit 2') // Take profit 3 // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ tp3 = input.float(title='Take Profit 3 - Target %', defval=100, minval=0.0, step=0.5, group='Take Profit', inline='Take Profit 3') q3 = input.int(title='% Of Position', defval=100, minval=0, group='Take Profit', inline='Take Profit 3') // Take profit 4 // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ tp4 = input.float(title='Take Profit 4 - Target %', defval=100, minval=0.0, step=0.5, group='Take Profit') /// Stop Loss // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ stoplossPercent = input.float(title='Stop Loss (%)', defval=15, minval=0.01, group='Stop Loss') * 0.01 slLongClose = close < strategy.position_avg_price * (1 - stoplossPercent) slShortClose = close > strategy.position_avg_price * (1 + stoplossPercent) /// Leverage // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ leverage = input.float(1, 'Leverage', step=.5, group='Leverage') contracts = math.min(math.max(.000001, strategy.equity / close * leverage), 1000000000) /// Trade State Management // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ isInLongPosition = strategy.position_size > 0 isInShortPosition = strategy.position_size < 0 /// ProfitView Alert Syntax String Generation // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ alertSyntaxPrefix = input.string(defval='PV-AccountNameHere_Strategy-Name-Here', title='Alert Syntax Prefix', group='ProfitView Alert Syntax') alertSyntaxBase = alertSyntaxPrefix + '\n#' + str.tostring(open) + ',' + str.tostring(high) + ',' + str.tostring(low) + ',' + str.tostring(close) + ',' + str.tostring(volume) + ',' /// Trade Execution // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ if calcPeriod if longCondition and tradeDirection != 'Short Only' and isInLongPosition == false strategy.entry('Long', strategy.long, qty=contracts) alert(message=alertSyntaxBase + 'side:long', freq=alert.freq_once_per_bar_close) if shortCondition and tradeDirection != 'Long Only' and isInShortPosition == false strategy.entry('Short', strategy.short, qty=contracts) alert(message=alertSyntaxBase + 'side:short', freq=alert.freq_once_per_bar_close) //Inspired by Multiple %% profit exits example By adolgo https://www.tradingview.com/script/kHhCik9f-Multiple-profit-exits-example/ strategy.exit('TP1', qty_percent=q1, profit=per(tp1)) strategy.exit('TP2', qty_percent=q2, profit=per(tp2)) strategy.exit('TP3', qty_percent=q3, profit=per(tp3)) strategy.exit('TP4', profit=per(tp4)) strategy.close('Long', qty_percent=100, comment='SL Long', when=slLongClose) strategy.close('Short', qty_percent=100, comment='SL Short', when=slShortClose) strategy.close_all(when=closeLongCondition or closeShortCondition, comment='Close Postion')