এই কৌশলটি মূল দ্বৈত চলমান গড় কৌশল ভিত্তিক একটি সময় সীমা মডিউল বাস্তবায়ন করে কৌশলটির শুরু সময় নিয়ন্ত্রণ করতে। সময় সীমা মডিউল কার্যকরভাবে কৌশলটির চলমান সময় পরিচালনা করতে পারে এবং অনুকূল বাজার অবস্থার অধীনে ট্রেডিং ঝুঁকি হ্রাস করতে পারে।
এই কৌশলটি দ্রুত এবং ধীর এমএ ব্যবহার করে ট্রেডিং সংকেত তৈরি করে। দ্রুত এমএ-র সময়কাল 14 দিন এবং ধীর এমএ-র সময়কাল 21 দিন। যখন দ্রুত এমএ ধীর এমএ-র উপরে অতিক্রম করে তখন একটি ক্রয় সংকেত উত্পন্ন হয়। যখন দ্রুত এমএ ধীর এমএ-র নীচে অতিক্রম করে তখন একটি বিক্রয় সংকেত উত্পন্ন হয়।
এই কৌশলটি মূল বাণিজ্যের দিকটি বিপরীত করার জন্য একটি বাণিজ্য বিপরীত বিকল্পও অন্তর্ভুক্ত করে।
টাইম লিমিট মডিউলটি টাইমস্ট্যাম্প ব্যবহার করে বর্তমান সময়টি কনফিগার করা শুরু সময়ের সাথে তুলনা করে, কৌশলটি শুরু হয় কিনা তা নিয়ন্ত্রণ করতে সত্য বা মিথ্যা ফেরত দেয়। শুরু বছর, মাস, দিন, ঘন্টা এবং মিনিট সেট করা দরকার। বর্তমান সময়টি কনফিগার করা শুরু সময় অতিক্রম করার সময়ই কৌশলটি শুরু হবে।
এমএ সময়ের অপ্টিমাইজেশন ট্রেডিং ফ্রিকোয়েন্সি হ্রাস করতে পারে। মিস সুযোগ এড়ানোর জন্য শুরু সময়টিও যুক্তিসঙ্গতভাবে সেট করা উচিত। অবশেষে, বাজারের অবস্থার উপর ভিত্তি করে সংকেতগুলি বিপরীত করতে হবে কিনা তা সাবধানে চয়ন করুন।
এই কৌশলটি দ্বৈত এমএ ব্যবহার করে ট্রেডিং সিগন্যাল তৈরি করে এবং টাইম লিমিট মডিউল দিয়ে চলমান সময় নিয়ন্ত্রণ করে, অনুপযুক্ত বাজার পরিস্থিতি এড়ানোর সময় কার্যকরভাবে প্রবণতা ক্যাপচার করে। প্রতিটি ব্যবসায়ের স্থিতিশীলতা এবং লাভজনকতা উন্নত করার সময় ট্রেডিং ফ্রিকোয়েন্সি হ্রাস করতে প্যারামিটার টিউনিং, স্টপ লস মডিউল, ক্রস-অ্যাসেট সিগন্যাল জেনারেশন ইত্যাদির মাধ্যমে আরও উন্নতি করা যেতে পারে।
/*backtest start: 2023-11-06 00:00:00 end: 2023-11-13 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Strategy Code Example", shorttitle = "Strategy Code Example", overlay = true) // Revision: 1 // Author: @JayRogers // // *** THIS IS JUST AN EXAMPLE OF STRATEGY TIME LIMITING *** // // This is a follow up to my previous strategy example for risk management, extended to include a time limiting factor. // === GENERAL INPUTS === // short ma maFastSource = input(defval = open, title = "Fast MA Source") maFastLength = input(defval = 14, title = "Fast MA Period", minval = 1) // long ma maSlowSource = input(defval = open, title = "Slow MA Source") maSlowLength = input(defval = 21, title = "Slow MA Period", minval = 1) // === STRATEGY RELATED INPUTS === tradeInvert = input(defval = false, title = "Invert Trade Direction?") // Risk management inpTakeProfit = input(defval = 1000, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 200, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 200, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) // *** FOCUS OF EXAMPLE *** // Time limiting // a toggle for enabling/disabling useTimeLimit = input(defval = true, title = "Use Start Time Limiter?") // set up where we want to run from startYear = input(defval = 2016, title = "Start From Year", minval = 0, step = 1) startMonth = input(defval = 05, title = "Start From Month", minval = 0,step = 1) startDay = input(defval = 01, title = "Start From Day", minval = 0,step = 1) startHour = input(defval = 00, title = "Start From Hour", minval = 0,step = 1) startMinute = input(defval = 00, title = "Start From Minute", minval = 0,step = 1) // === RISK MANAGEMENT VALUE PREP === // if an input is less than 1, assuming not wanted so we assign 'na' value to disable it. useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na // *** FOCUS OF EXAMPLE *** // === TIME LIMITER CHECKING FUNCTION === // using a multi line function to return true or false depending on our input selection // multi line function logic must be indented. startTimeOk() => // get our input time together inputTime = timestamp(syminfo.timezone, startYear, startMonth, startDay, startHour, startMinute) // check the current time is greater than the input time and assign true or false timeOk = time > inputTime ? true : false // last line is the return value, we want the strategy to execute if.. // ..we are using the limiter, and the time is ok -OR- we are not using the limiter r = (useTimeLimit and timeOk) or not useTimeLimit // === SERIES SETUP === /// a couple of ma's.. maFast = ema(maFastSource, maFastLength) maSlow = ema(maSlowSource, maSlowLength) // === PLOTTING === fast = plot(maFast, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50) slow = plot(maSlow, title = "Slow MA", color = red, linewidth = 2, style = line, transp = 50) // === LOGIC === // is fast ma above slow ma? aboveBelow = maFast >= maSlow ? true : false // are we inverting our trade direction? tradeDirection = tradeInvert ? aboveBelow ? false : true : aboveBelow ? true : false // *** FOCUS OF EXAMPLE *** // wrap our strategy execution in an if statement which calls the time checking function to validate entry // like the function logic, content to be included in the if statement must be indented. if( startTimeOk() ) // === STRATEGY - LONG POSITION EXECUTION === enterLong = not tradeDirection[1] and tradeDirection exitLong = tradeDirection[1] and not tradeDirection strategy.entry( id = "Long", long = true, when = enterLong ) strategy.close( id = "Long", when = exitLong ) // === STRATEGY - SHORT POSITION EXECUTION === enterShort = tradeDirection[1] and not tradeDirection exitShort = not tradeDirection[1] and tradeDirection strategy.entry( id = "Short", long = false, when = enterShort ) strategy.close( id = "Short", when = exitShort ) // === STRATEGY RISK MANAGEMENT EXECUTION === strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset) strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)