এই কৌশলটি একটি দ্বৈত টাইমফ্রেম গতির কৌশল। এটি একটি সাধারণ চলমান গড় (এসএমএ) ব্যবহার করে উচ্চতর সময়সীমার প্রবণতা দিক নির্ধারণ করে এবং পিভট পয়েন্টগুলি (পিভটলভ এবং পিভটহাই) ব্যবহার করে নিম্নতর সময়সীমার বিপরীত পয়েন্টগুলি সনাক্ত করে। এটি উচ্চতর সময়সীমার একটি আপট্রেন্ড দেখায় এবং নিম্নতর সময়সীমার একটি উত্থান পিভট পয়েন্ট প্রদর্শিত হলে এটি দীর্ঘ প্রবেশ করে এবং উচ্চতর সময়সীমার একটি ডাউনট্রেন্ড দেখায় এবং নিম্নতর সময়সীমার একটি bearish পিভট পয়েন্ট প্রদর্শিত হলে এটি সংক্ষিপ্ত প্রবেশ করে।
এই কৌশলটির মূল নীতি হ'ল উচ্চতর সময়সীমার প্রবণতা দিকটি নিম্নতর সময়সীমার গতিবিধিকে প্রভাবিত করবে। যখন উচ্চতর সময়সীমার একটি আপট্রেন্ড দেখায়, তখন নিম্নতর সময়সীমার pullbacks কেনার সুযোগ হওয়ার সম্ভাবনা বেশি; যখন উচ্চতর সময়সীমার একটি ডাউনট্রেন্ড দেখায়, তখন নিম্নতর সময়সীমার রিবাউন্ডগুলি শর্ট করার সুযোগ হওয়ার সম্ভাবনা বেশি। এই কৌশলটি উচ্চতর সময়সীমার প্রবণতা দিক এবং পিভট পয়েন্টগুলি (পিভটলো এবং পিভটহাই) নির্ধারণ করতে সহজ চলমান গড় (এসএমএ) ব্যবহার করে। নিম্নতর সময়সীমার বিপরীত পয়েন্টগুলি সনাক্ত করতে।
এই দ্বৈত টাইমফ্রেম গতি কৌশলটি উচ্চতর এবং নিম্নতর সময়সীমার মধ্যে সংযোগকে কাজে লাগায়, উচ্চতর সময়সীমার প্রবণতা দিকনির্দেশ নির্ধারণ করে এবং নিম্নতর সময়সীমার বিপরীত পয়েন্টগুলি ক্যাপচার করে প্রবণতা অনুসরণ এবং বিপরীত ট্রেডিং অর্জনের জন্য। কৌশলটির স্পষ্ট যুক্তি এবং সুস্পষ্ট সুবিধা রয়েছে, তবে কিছু ঝুঁকিও রয়েছে। ভবিষ্যতে, কৌশলটি প্রবণতা পরিবর্তন সনাক্তকরণ, পরামিতি অপ্টিমাইজেশন, ঝুঁকি নিয়ন্ত্রণ এবং মাল্টি-ফ্যাক্টর ফিউশন যেমন দিক থেকে অনুকূলিত করা যেতে পারে যাতে এর অভিযোজনযোগ্যতা এবং দৃust়তা উন্নত হয়।
/*backtest start: 2023-04-19 00:00:00 end: 2024-04-24 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Riester //@version=5 strategy("Dual Timeframe Momentum", overlay=true, precision=6, pyramiding=0, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=25.0, commission_value=0.05) n = input.int(20, "Moving Average Period", minval=1) src = input.source(close, "Source") high_tf = input.timeframe("240", "Resolution") pivot_l = input.int(5, "Pivot Let Bars") pivot_r = input.int(2, "Pivot Right Bars") //----------------------------------------------------------------------------------------------------------------------------------------------------------------- // Calculations //----------------------------------------------------------------------------------------------------------------------------------------------------------------- // 1. Define low and high timeframe prices low_src = src high_src = request.security(syminfo.tickerid, high_tf, src) // 2. Use simple moving average to determine trend of higher timeframe (up or down) high_tf_ma = ta.sma(high_src, n) plot(high_tf_ma, color=color.yellow) high_tf_trend = high_tf_ma > high_tf_ma[1] ? 1 : -1 // 3. Use pivots to identify reversals on the low timeframe low_tf_pl = ta.pivotlow(high_src, pivot_l, pivot_r) plot(low_tf_pl, style=plot.style_line, linewidth=3, color= color.green, offset=-pivot_r) low_tf_ph = ta.pivothigh(high_src, pivot_l, pivot_r) plot(low_tf_ph, style=plot.style_line, linewidth=3, color= color.red, offset=-pivot_r) bool long = low_tf_pl and high_tf_trend == 1 bool short = low_tf_ph and high_tf_trend == -1 //----------------------------------------------------------------------------------------------------------------------------------------------------------------- // Plots //----------------------------------------------------------------------------------------------------------------------------------------------------------------- // this message is an alert that can be sent to a webhook, which allows for simple automation if you have a server that listens to alerts and trades programmatically. enter_long_alert = '{"side": "Long", "order": "Enter", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}' exit_long_alert = '{"side": "Long", "order": "Exit", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}' if long strategy.entry(id="Long", direction=strategy.long, limit=open, alert_message=enter_long_alert) if short strategy.close(id="Long", comment="Close Long", alert_message=exit_long_alert)