এই কৌশলটি টিটিএম সূচকের উপর ভিত্তি করে একটি গতিশীল গ্রিড ট্রেডিং সিস্টেম, যা উচ্চ এবং নিম্নের এক্সপোনেন্সিয়াল চলমান গড় (ইএমএ) গণনা করে বাজারের প্রবণতার দিক নির্ধারণ করে এবং গতিশীলভাবে আপডেট হওয়া বেস মূল্যের চারপাশে একটি গ্রিড ট্রেডিং সিস্টেম স্থাপন করে। গ্রিডের দিক এবং মূল্যের স্তরগুলি প্রবণতা অনুসারে সামঞ্জস্য করে, যখন দাম পূর্বনির্ধারিত গ্রিডের স্তরগুলি অতিক্রম করে, তখন প্রতিটি বাণিজ্য অ্যাকাউন্টের মূলধনের একটি নির্দিষ্ট শতাংশ ঝুঁকিপূর্ণ।
মূল যুক্তিটি নিম্নলিখিত ধাপগুলির মাধ্যমে বাস্তবায়িত TTM রাষ্ট্র গণনাতে রয়েছেঃ 1. ttmPeriod পরামিতির উপর ভিত্তি করে দুটি EMA গণনা করুনঃ নিম্নতম EMA (lowMA) এবং উচ্চতম EMA (highMA) ২. উচ্চ এমএ এবং নিম্ন এমএ এর মধ্যে দুটি থ্রেশহোল্ড স্তর নির্ধারণ করুনঃ - কম তৃতীয়ঃ1⁄3নীচে থেকে অবস্থান - উচ্চ তৃতীয়ঃ2⁄3নীচে থেকে অবস্থান ৩. নিম্নলিখিত থ্রেশহোল্ডের তুলনায় বন্ধের মূল্য অবস্থানের ভিত্তিতে TTM অবস্থা নির্ধারণ করুনঃ - বন্ধ উচ্চতর হলে 1 (উপরে প্রবণতা) ফেরত দেয় - close low এর নিচে থাকলে 0 (downtrend) রিটার্ন করে - close lowThird এবং highThird এর মধ্যে থাকলে -1 (নিরপেক্ষ অবস্থা) প্রদান করে
গ্রিড ট্রেডিং সিস্টেম টিটিএম স্টেটের উপর ভিত্তি করে গতিশীলভাবে সামঞ্জস্য করেঃ 1. যখন টিটিএম অবস্থা পরিবর্তন হয় তখন গ্রিড বেস মূল্য এবং দিক আপডেট করে ২. গ্রিডের দিকনির্দেশনা এবং দূরত্বের উপর ভিত্তি করে ক্রয় / বিক্রয় মূল্যের স্তর গণনা করে ৩. যখন দাম গ্রিডের স্তরগুলি অতিক্রম করে তখন সংশ্লিষ্ট ক্রয় বা বিক্রয় অপারেশন সম্পাদন করে
এই কৌশলটি একটি অভিযোজিত, ঝুঁকি-নিয়ন্ত্রিত ট্রেডিং সিস্টেম তৈরি করতে ডায়নামিক গ্রিড ট্রেডিংয়ের সাথে টিটিএম প্রবণতা সনাক্তকরণকে একত্রিত করে। গ্রিডের দিকনির্দেশ এবং মূল্য স্তরের গতিশীল সমন্বয়ের মাধ্যমে কৌশলটি কার্যকরভাবে বিভিন্ন বাজারের পরিবেশে অভিযোজিত হতে পারে। যদিও অন্তর্নিহিত ঝুঁকি রয়েছে, উপযুক্ত পরামিতি সেটিং এবং অপ্টিমাইজেশন ব্যবস্থাগুলির মাধ্যমে কৌশলটি ভাল ব্যবহারিক মূল্য এবং বিকাশের সম্ভাবনা প্রদর্শন করে।
/*backtest start: 2024-12-04 00:00:00 end: 2024-12-11 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("TTM Grid Strategy", overlay=true) // Input parameters int ttmPeriod = input.int(6, minval=1, title="TTM Period") int gridLevels = input.int(5, minval=2, title="Grid Levels") float gridSpacing = input.float(0.01, minval=0.0001, title="Grid Spacing (%)") // Calculate TTM State ttmState() => lowMA = ta.ema(low, ttmPeriod) highMA = ta.ema(high, ttmPeriod) lowThird = (highMA - lowMA) / 3 + lowMA highThird = 2 * (highMA - lowMA) / 3 + lowMA if close > highThird 1 else if close < lowThird 0 else -1 // State tracking variables var float gridBasePrice = 0.0 var int gridDirection = -1 // Determine grid state updateGridState(float currentClose, int currentState) => float newBasePrice = gridBasePrice int newDirection = gridDirection if currentState != -1 and currentState != gridDirection newBasePrice := currentClose newDirection := currentState [newBasePrice, newDirection] // Calculate grid levels calcGridLevels(float basePrice, int direction, int levels) => float[] buyLevels = array.new_float(levels) float[] sellLevels = array.new_float(levels) for i = 1 to levels multiplier = i * gridSpacing if direction == 1 // Buy grid array.set(buyLevels, i-1, basePrice * (1 - multiplier)) array.set(sellLevels, i-1, basePrice * (1 + multiplier)) else // Sell grid array.set(buyLevels, i-1, basePrice * (1 + multiplier)) array.set(sellLevels, i-1, basePrice * (1 - multiplier)) [buyLevels, sellLevels] // Execute grid trades executeGridTrades(float basePrice, int direction, int levels) => [buyLevels, sellLevels] = calcGridLevels(basePrice, direction, levels) for i = 0 to levels - 1 float buyLevel = array.get(buyLevels, i) float sellLevel = array.get(sellLevels, i) if direction == 1 // Buy grid if low <= buyLevel strategy.entry("GridBuy" + str.tostring(i), strategy.long, comment="Buy Level " + str.tostring(i)) if high >= sellLevel strategy.entry("GridSell" + str.tostring(i), strategy.short, comment="Sell Level " + str.tostring(i)) else // Sell grid if high >= buyLevel strategy.entry("GridBuy" + str.tostring(i), strategy.long, comment="Buy Level " + str.tostring(i)) if low <= sellLevel strategy.entry("GridSell" + str.tostring(i), strategy.short, comment="Sell Level " + str.tostring(i)) // Main strategy logic currentState = ttmState() [newGridBasePrice, newGridDirection] = updateGridState(close, currentState) // Update global variables if newGridBasePrice != gridBasePrice gridBasePrice := newGridBasePrice if newGridDirection != gridDirection gridDirection := newGridDirection // Execute grid trades executeGridTrades(newGridBasePrice, newGridDirection, gridLevels) // Visualization plotColor = newGridDirection == 1 ? color.green : color.red plot(newGridBasePrice, color=plotColor, style=plot.style_cross)