এই কৌশলটি একাধিক টাইমফ্রেম জুড়ে TEMA সূচকের ক্রসওভারের উপর ভিত্তি করে বাজার প্রবণতা দিক চিহ্নিত করে এবং নির্দিষ্ট প্রবেশ এবং প্রস্থান পয়েন্টগুলি খুঁজে পেতে কম সময়সীমার মধ্যে TEMA ক্রসওভার ব্যবহার করে। কৌশলটি কেবল দীর্ঘ, কেবল স্বল্প বা উভয় দিকের জন্য কনফিগার করা যেতে পারে।
কৌশলটি দুটি টিইএমএ সূচক ব্যবহার করে, একটি 5 এবং 15 সময়ের উপর ভিত্তি করে দ্রুত এবং ধীর রেখার সাথে, অন্যটি ব্যবহারকারীর দ্বারা নির্ধারিত উচ্চতর সময়সীমার উপর ভিত্তি করে যেমন দৈনিক বা সাপ্তাহিক। উচ্চতর সময়সীমার টিইএমএর ক্রসওভার সামগ্রিক প্রবণতা পক্ষপাত নির্ধারণ করে, ধীর রেখার উপরে দ্রুত রেখার ক্রসিং বুলিশ ভিউ নির্দেশ করে এবং নীচে হ্রাসের দৃষ্টিভঙ্গি নির্দেশ করে। কম সময়সীমার টিইএমএ ক্রসওভারটি কংক্রিট প্রবেশ এবং প্রস্থান সময় নির্ধারণের জন্য ব্যবহৃত হয়।
যখন উচ্চতর টাইমফ্রেম টিইএমএ দ্রুত লাইন ধীর লাইনের উপরে অতিক্রম করে, যখন নিম্নতর টাইমফ্রেম টিইএমএ দ্রুত লাইন ধীর লাইনের উপরে অতিক্রম করে তখন একটি দীর্ঘ এন্ট্রি ট্রিগার করা যেতে পারে; যখন দ্রুত লাইন ধীর লাইনের নীচে অতিক্রম করে তখন একটি প্রস্থান সংকেত দেওয়া হয়। একইভাবে, যখন উচ্চতর টাইমফ্রেম দ্রুত লাইন ধীর লাইনের নীচে পড়ে, তখন নিম্নতর টাইমফ্রেম টিইএমএ হ্রাস ক্রসওভারে একটি সংক্ষিপ্ত এন্ট্রি ট্রিগার করা হয় এবং যখন একটি উত্থান ক্রসওভার ঘটে তখন প্রস্থান করা হয়।
ঝুঁকি সমাধানঃ
কৌশলটি সামগ্রিকভাবে সহজ এবং যৌক্তিকভাবে স্পষ্ট, একাধিক সময়সীমার উপর টিইএমএ ক্রসওভারের মাধ্যমে প্রবণতা পক্ষপাত সনাক্ত করে এবং সময় এন্ট্রিগুলিতে নিম্ন টিএফ-এর উপর অতিরিক্ত ক্রসওভারের উপর নির্ভর করে। এর কিছু গুণাবলী রয়েছে তবে উন্নতির জন্যও কিছু জায়গা রয়েছে। সামগ্রিকভাবে, এটি কোয়ান্ট ট্রেডিং অনুশীলনের জন্য মূল্যবান রেফারেন্স সরবরাহ করে।
/*backtest start: 2023-01-01 00:00:00 end: 2023-12-24 00:00:00 period: 1d basePeriod: 1h 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/ // © Seltzer_ //@version=4 strategy(title="TEMA Cross +HTF Backtest", shorttitle="TEMA_X_+HTF_BT", overlay=true) orderType = input("Longs+Shorts",title="What type of Orders", options=["Longs+Shorts","LongsOnly","ShortsOnly"]) isLong = (orderType != "ShortsOnly") isShort = (orderType != "LongsOnly") // Backtest Section { // Backtest inputs FromMonth = input(defval=1, title="From Month", minval=1, maxval=12) FromDay = input(defval=1, title="From Day", minval=1, maxval=31) FromYear = input(defval=2020, title="From Year", minval=2010) ToMonth = input(defval=1, title="To Month", minval=1, maxval=12) ToDay = input(defval=1, title="To Day", minval=1, maxval=31) ToYear = input(defval=9999, title="To Year", minval=2017) // Define backtest timewindow start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // } //TEMA Section { //LTF Section xLength = input(20, minval=1, title="Fast Length") xPrice = close xEMA1 = ema(xPrice, xLength) xEMA2 = ema(xEMA1, xLength) xEMA3 = ema(xEMA2, xLength) xnRes = (3 * xEMA1) - (3 * xEMA2) + xEMA3 xnResP = plot(xnRes, color=color.green, linewidth=2, title="TEMA1") yLength = input(60, minval=1, title="Slow Length") yPrice = close yEMA1 = ema(yPrice, yLength) yEMA2 = ema(yEMA1, yLength) yEMA3 = ema(yEMA2, yLength) ynRes = (3 * yEMA1) - (3 * yEMA2) + yEMA3 ynResP = plot(ynRes, color=color.red, linewidth=2, title="TEMA2") fill(xnResP, ynResP, color=xnRes > ynRes ? color.green : color.red, transp=65, editable=true) //HTF Section HTFres = input(defval="D", type=input.resolution, title="HTF Resolution") HTFxLength = input(5, minval=1, title="HTF Fast Length") HTFxPrice = close HTFxEMA1 = security(syminfo.tickerid, HTFres, ema(HTFxPrice, HTFxLength), barmerge.gaps_off, barmerge.lookahead_on) HTFxEMA2 = security(syminfo.tickerid, HTFres, ema(HTFxEMA1, HTFxLength), barmerge.gaps_off, barmerge.lookahead_on) HTFxEMA3 = security(syminfo.tickerid, HTFres, ema(HTFxEMA2, HTFxLength), barmerge.gaps_off, barmerge.lookahead_on) HTFxnRes = (3 * HTFxEMA1) - (3 * HTFxEMA2) + HTFxEMA3 HTFxnResP = plot(HTFxnRes, color=color.yellow, linewidth=1,transp=30, title="TEMA1") HTFyLength = input(15, minval=1, title="HTF Slow Length") HTFyPrice = close HTFyEMA1 = security(syminfo.tickerid, HTFres, ema(HTFyPrice, HTFyLength), barmerge.gaps_off, barmerge.lookahead_on) HTFyEMA2 = security(syminfo.tickerid, HTFres, ema(HTFyEMA1, HTFyLength), barmerge.gaps_off, barmerge.lookahead_on) HTFyEMA3 = security(syminfo.tickerid, HTFres, ema(HTFyEMA2, HTFyLength), barmerge.gaps_off, barmerge.lookahead_on) HTFynRes = (3 * HTFyEMA1) - (3 * HTFyEMA2) + HTFyEMA3 HTFynResP = plot(HTFynRes, color=color.purple, linewidth=1, transp=30, title="TEMA2") fill(HTFxnResP, HTFynResP, color=HTFxnRes > HTFynRes ? color.yellow : color.purple, transp=90, editable=true) bgcolor(HTFxnRes > HTFynRes ? color.yellow : na, transp=90, editable=true) bgcolor(HTFxnRes < HTFynRes ? color.purple : na, transp=90, editable=true) // } // Buy and Sell Triggers LongEntryAlert = xnRes > ynRes and HTFxnRes > HTFynRes and window() LongCloseAlert = xnRes < ynRes and window() ShortEntryAlert = xnRes < ynRes and HTFxnRes < HTFynRes and window() ShortCloseAlert = xnRes > ynRes // Entry & Exit signals if isLong strategy.entry("Long", strategy.long, when = LongEntryAlert) strategy.close("Long", when = LongCloseAlert) if isShort strategy.entry("Short", strategy.short, when = ShortEntryAlert) strategy.close("Short", when = ShortCloseAlert)