এটি একাধিক সুপারট্রেন্ড সূচকগুলির উপর ভিত্তি করে একটি পিরামিডিং ট্রেডিং কৌশল। এটি বিভিন্ন সময়কাল এবং গুণক সহ তিনটি সুপারট্রেন্ড সূচক ব্যবহার করে উচ্চ-সম্ভাব্যতার ট্রেডিং সুযোগগুলি সনাক্ত করে। কৌশলটি ঝুঁকি নিয়ন্ত্রণের সময় লাভ সর্বাধিকীকরণের জন্য গতিশীল স্টপ-লস এবং নমনীয় প্রস্থান শর্তগুলির সাথে একত্রিত হয়ে তিনটি অবস্থান পর্যন্ত অনুমতি দেয় এমন গতিশীল পিরামিডিং এন্ট্রিগুলি ব্যবহার করে।
কৌশলটি বিভিন্ন পরামিতি সেটিং সহ তিনটি সুপারট্রেন্ড সূচক ব্যবহার করেঃ দ্রুত, মাঝারি এবং ধীর। এন্ট্রি সংকেতগুলি এই সূচকগুলির ক্রসওভার এবং প্রবণতা দিকের উপর ভিত্তি করে, একটি তিন স্তরের পিরামিডিং পদ্ধতি বাস্তবায়ন করেঃ প্রথম এন্ট্রি যখন দ্রুত সূচক নীচে নির্দেশ করে যখন মাঝারি পয়েন্ট আপ এবং ধীর পয়েন্ট ডাউন; দ্বিতীয় এন্ট্রি যখন দ্রুত এবং মাঝারি সূচক উভয়ই নীচে নির্দেশ করে; তৃতীয় এন্ট্রি যখন দাম নতুন উচ্চতা তৈরি করে তখন ব্রেকআউট মাধ্যমে। প্রস্থানগুলি গতিশীল স্টপ-লস, গড় মূল্য স্টপ এবং সামগ্রিক প্রবণতা বিপরীত সহ একাধিক প্রক্রিয়াগুলির মাধ্যমে পরিচালিত হয়।
কৌশলটি একাধিক সুপারট্রেন্ড সূচক এবং পিরামিডিং এন্ট্রিগুলির মাধ্যমে প্রবণতার সুযোগগুলি ক্যাপচার করে, গতিশীল স্টপ-লস এবং নমনীয় প্রস্থান প্রক্রিয়াগুলির সাথে ঝুঁকিগুলি নিয়ন্ত্রণ করে। নির্দিষ্ট সীমাবদ্ধতা সত্ত্বেও, ক্রমাগত অপ্টিমাইজেশন এবং কঠোর ঝুঁকি নিয়ন্ত্রণের সাথে, কৌশলটি ভাল ব্যবহারিক প্রয়োগের মান দেখায়।
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy('4Vietnamese 3x Supertrend', overlay=true, max_bars_back=1000, initial_capital = 10000000000, slippage = 2, commission_type = strategy.commission.percent, commission_value = 0.013, default_qty_type=strategy.percent_of_equity, default_qty_value = 33.33, pyramiding = 3, margin_long = 0, margin_short = 0) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Inputs // Supertrend Settings STATRLENGTH1 = input.int(10, title='Fast Supertrend ATR Length', group='SUPERTREND SETTINGS') STATRMULT1 = input.float(1, title='Fast Supertrend ATR Multiplier', group='SUPERTREND SETTINGS') STATRLENGTH2 = input.int(11, title='Medium Supertrend ATR Length', group='SUPERTREND SETTINGS') STATRMULT2 = input.float(2, title='Medium Supertrend ATR Multiplier', group='SUPERTREND SETTINGS') STATRLENGTH3 = input.int(12, title='Slow Supertrend ATR Length', group='SUPERTREND SETTINGS') STATRMULT3 = input.float(3, title='Slow Supertrend ATR Multiplier', group='SUPERTREND SETTINGS') isUseHighestOf2RedCandleSetup = input.bool(false, group = "Setup Filters") /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Calculations [superTrend1, dir1] = ta.supertrend(STATRMULT1, STATRLENGTH1) [superTrend2, dir2] = ta.supertrend(STATRMULT2, STATRLENGTH2) [superTrend3, dir3] = ta.supertrend(STATRMULT3, STATRLENGTH3) // directionST1 = dir1 == 1 and dir1[1] == 1 ? false : dir1 == -1 and dir1[1] == -1 ? true : false // directionST2 = dir2 == 1 and dir2[1] == 1 ? false : dir2 == -1 and dir2[1] == -1 ? true : false // directionST3 = dir3 == 1 and dir3[1] == 1 ? false : dir3 == -1 and dir3[1] == -1 ? true : false /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Calculate highest from supertrend1 uptrend var float highestGreen = 0 if dir1 < 0 and highestGreen == 0 and (isUseHighestOf2RedCandleSetup ? close < open : true) highestGreen := high if highestGreen > 0 and (isUseHighestOf2RedCandleSetup ? close < open : true) if high > highestGreen highestGreen := high if dir1 >= 0 highestGreen := 0 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Entry SL var entrySL4Long1 = false var entrySL4Long2 = false var entrySL4Long3 = false isUseEntrySL = input.bool(true, group = "Entry SL Option") dataToCalculate = input.source(low, group = "Entry SL Option") if isUseEntrySL and (dir1 > 0 and dir2 < 0 and dir3 < 0) if strategy.opentrades >= 1 if dataToCalculate > strategy.opentrades.entry_price(0) entrySL4Long1 := true else entrySL4Long1 := false if entrySL4Long1 and close > strategy.opentrades.entry_price(0) strategy.exit('exit1', from_entry = 'long1', stop = strategy.opentrades.entry_price(0)) if strategy.opentrades >= 2 if dataToCalculate > strategy.opentrades.entry_price(1) entrySL4Long2 := true else entrySL4Long2 := false if entrySL4Long2 and close > strategy.opentrades.entry_price(1) strategy.exit('exit2', from_entry = 'long2', stop = strategy.opentrades.entry_price(1)) if strategy.opentrades >= 3 if dataToCalculate > strategy.opentrades.entry_price(2) entrySL4Long3 := true else entrySL4Long3 := false if entrySL4Long3 and close > strategy.opentrades.entry_price(2) strategy.exit('exit3', from_entry = 'long3', stop = strategy.opentrades.entry_price(2)) if strategy.closedtrades > strategy.closedtrades[1] if strategy.closedtrades.exit_id(strategy.closedtrades-1) == 'exit3' entrySL4Long3 := false if strategy.closedtrades.exit_id(strategy.closedtrades-1) == 'exit2' entrySL4Long2 := false if strategy.closedtrades.exit_id(strategy.closedtrades-1) == 'exit1' entrySL4Long1 := false /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Entry if dir3 < 0 if dir2 > 0 and dir1 < 0 strategy.entry('long1', strategy.long) else if dir2 < 0 strategy.entry('long2', strategy.long, stop=superTrend1) else if dir1 < 0 and highestGreen > 0 strategy.entry('long3', strategy.long, stop=highestGreen) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Exit isUseAllDowntrendExit = input.bool(true, group = "Exit Type") if isUseAllDowntrendExit and dir3 > 0 and dir2 > 0 and dir1 > 0 and close < open strategy.close_all() isUseAvgPriceInLoss = input.bool(true, group = "Exit Type") if isUseAvgPriceInLoss and strategy.position_avg_price > close //and strategy.position_avg_price <= close[1] // and (dir1 > 0 or dir2 > 0 or dir3 > 0) // and strategy.opentrades >= 1 // and strategy.opentrades >= 3 strategy.close_all() isUseAllPositionsInLoss = input.bool(false, group = "Exit Type") if isUseAllPositionsInLoss and ( false or (strategy.opentrades == 1 and ((not na(strategy.opentrades.entry_price(0))) and strategy.opentrades.entry_price(0) > close)) or (strategy.opentrades == 1 and ((not na(strategy.opentrades.entry_price(0))) and strategy.opentrades.entry_price(0) > close) and ((not na(strategy.opentrades.entry_price(1))) and strategy.opentrades.entry_price(1) > close)) or (strategy.opentrades == 1 and ((not na(strategy.opentrades.entry_price(0))) and strategy.opentrades.entry_price(0) > close) and ((not na(strategy.opentrades.entry_price(1))) and strategy.opentrades.entry_price(1) > close) and ((not na(strategy.opentrades.entry_price(2))) and strategy.opentrades.entry_price(2) > close)) ) strategy.close_all() /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Plot plot(superTrend1, title='Fast Supertrend', color=dir1 == 1 and dir1[1] == 1 ? color.red : dir1 == -1 and dir1[1] == -1 ? color.green : na) plot(superTrend2, title='Medium Supertrend', color=dir2 == 1 and dir2[1] == 1 ? color.red : dir2 == -1 and dir2[1] == -1 ? color.green : na) plot(superTrend3, title='Slow Supertrend', color=dir3 == 1 and dir3[1] == 1 ? color.red : dir3 == -1 and dir3[1] == -1 ? color.green : na)