দ্বৈত চলমান গড় ট্রেডিং কৌশল দ্রুত এবং ধীর চলমান গড় গণনা করে এবং ক্রসগুলি পর্যবেক্ষণ করে ট্রেডিং সংকেত উত্পন্ন করে। যখন দ্রুত চলমান গড় ধীর চলমান গড়ের উপরে অতিক্রম করে, তখন একটি দীর্ঘ অবস্থান নেওয়া হয়। যখন দ্রুত চলমান গড় ধীর চলমান গড়ের নীচে অতিক্রম করে, তখন একটি সংক্ষিপ্ত অবস্থান নেওয়া হয়। কৌশলটি ট্রেন্ড ট্রেডিং এবং কাউন্টার ট্রেন্ড ট্রেডিং উভয়ের জন্য ব্যবহার করা যেতে পারে।
কৌশলটি প্রথমে দ্রুত চলমান গড় maFastLength এবং ধীর চলমান গড় maSlowLength এর দৈর্ঘ্য সেট করে। এটি তারপরে দ্রুত চলমান গড় fastMA এবং ধীর চলমান গড় slowMA গণনা করে। দ্রুত চলমান গড় দামের পরিবর্তনে আরও দ্রুত প্রতিক্রিয়া জানায় এবং বর্তমান প্রবণতা বিচার করতে ব্যবহৃত হয়, যখন ধীর চলমান গড় আরও ধীর গতিতে প্রতিক্রিয়া জানায় এবং প্রবণতার দিক নির্ধারণ করতে ব্যবহৃত হয়।
যখন দ্রুত চলমান গড়টি ধীর চলমান গড়ের উপরে অতিক্রম করে, তখন একটি দীর্ঘ প্রবেশ সংকেত goLong (()) উত্পন্ন হয়। যখন দ্রুত চলমান গড়টি ধীর চলমান গড়ের নীচে অতিক্রম করে, তখন বিদ্যমান দীর্ঘ অবস্থানগুলি killLong (()) সংকেতের সাথে বন্ধ হয়ে যায়।
কৌশলটি শুধুমাত্র দীর্ঘ, শুধুমাত্র সংক্ষিপ্ত বা উভয় দীর্ঘ এবং সংক্ষিপ্ত ব্যবসায়ের অনুমতি দিতে পারে।
শুধুমাত্র লং মোডে, লং পজিশনগুলি goLong ((() সিগন্যালে প্রবেশ করা হয় এবং killLong ((() সিগন্যালে প্রস্থান করা হয়।
শুধুমাত্র শর্ট মোডে, শর্ট পজিশনগুলি killLong ((() সিগন্যালে প্রবেশ করা হয় এবং goLong ((() সিগন্যালে প্রস্থান করা হয়।
সোয়াপিং মোডে, লং পজিশনগুলি goLong (() এ প্রবেশ করা হয়, বন্ধ হয় এবং killLong (() এ শর্ট পজিশনে বিপরীত হয়।
কৌশলটিতে স্টপ লস, ট্রেলিং স্টপ, মেসেজিং এবং অন্যান্য অপশন রয়েছে।
সহজ এবং বাস্তবায়ন করা সহজ।
দীর্ঘ, সংক্ষিপ্ত বা উভয়ই যেতে নমনীয়তা।
অপশনাল স্টপ লস এবং ট্রেলিং স্টপ ফিচার।
ট্রেডস সতর্ক করার জন্য কাস্টমাইজযোগ্য বার্তা।
বাজারের প্রবণতা পরিবর্তনের জন্য সংবেদনশীল।
সামঞ্জস্যযোগ্য পরামিতিগুলি বিভিন্ন বাজারের সাথে খাপ খাইয়ে নেওয়া হয়।
অস্থির বা পরিবর্তিত বাজারে অত্যধিক লেনদেন সৃষ্টি করতে পারে।
হঠাৎ সংবাদে প্রতিক্রিয়া জানাতে ধীর।
পরামিতি নির্বাচন কৌশল কর্মক্ষমতা প্রভাবিত করে।
সিগন্যালগুলোকে কঠোরভাবে অনুসরণ করতে হবে, বিবেচনার ভিত্তিতে ট্রেডিং এড়াতে হবে।
ট্রেডিং খরচ বিবেচনা না করা হলে মুনাফা হ্রাস করতে পারে।
মিথ্যা সংকেত এড়াতে RSI এর মত ফিল্টার যোগ করুন।
সর্বোত্তম সেটিংস খুঁজে পেতে প্যারামিটার অপ্টিমাইজেশান বাস্তবায়ন করুন।
মুনাফা লক করতে এবং সামঞ্জস্য করতে গতিশীল স্টপ ব্যবহার করুন।
প্রবণতা পূর্বাভাসের জন্য মেশিন লার্নিং অন্তর্ভুক্ত করুন।
ব্যক্তিগত ট্রেডিং অভ্যাস অনুযায়ী মেসেজিং অপ্টিমাইজ করুন।
ডুয়াল মুভিং এভারেজ কৌশলটি তুলনামূলকভাবে সহজ এবং শক্তিশালী প্রবণতা ধরার জন্য দরকারী। তবে, কম প্রবণতা পরিবেশে উইপসা এড়ানোর জন্য যত্ন নেওয়া উচিত। সূক্ষ্ম সুরক্ষা পরামিতি এবং সহায়ক সূচক বা উন্নতি যুক্ত করা আরও দৃust়তা এবং অভিযোজনযোগ্যতা উন্নত করতে পারে।
/*backtest start: 2022-10-20 00:00:00 end: 2023-10-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("SMA Strategy", shorttitle="SMA Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // === Inputs === // short ma maFastSource = input(defval=close, title="Fast MA Source") maFastLength = input(defval=3, title="Fast MA Period", minval=1) // long ma maSlowSource = input(defval=close, title="Slow MA Source") maSlowLength = input(defval=9, title="Slow MA Period", minval=1) // Trade direction shorting = input(defval=false, title="Short only?") longonly = input(defval=true, title="Long only?") swapping = input(defval=false, title="Swap orders?") // risk management useStop = input(defval=false, title="Use Initial Stop Loss?") slPoints = input(defval=25, title="Initial Stop Loss Points", minval=1) useTS = input(defval=false, title="Use Trailing Stop?") tslPoints = input(defval=120, title="Trail Points", minval=1) useTSO = input(defval=false, title="Use Offset For Trailing Stop?") tslOffset = input(defval=20, title="Trail Offset Points", minval=1) // Messages for buy and sell message_long_entry = input("Long entry message", title="Long entry message") message_long_exit = input("Long exit message", title="Long exit message") message_short_entry = input("Short entry message", title="Short entry message") message_short_exit = input("Short exit message", title="Short exit message") // Calculate start/end date and time condition startDate = input(timestamp("2021-01-01T00:00:00"), type = input.time) finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time) time_cond = true // === Vars and Series === fastMA = sma(maFastSource, maFastLength) slowMA = sma(maSlowSource, maSlowLength) plot(fastMA, color=color.blue) plot(slowMA, color=color.purple) goLong() => crossover(fastMA, slowMA) killLong() => crossunder(fastMA, slowMA) // Long only if longonly strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_long_entry) strategy.close("Buy", when=killLong() and time_cond, alert_message = message_long_exit) // Short only if shorting strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_short_entry) strategy.close("Sell", when=goLong() and time_cond, alert_message = message_short_exit) // Order Swapping if swapping strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_long_entry) strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_short_entry) if useStop strategy.exit("XLS", from_entry="Buy", stop=strategy.position_avg_price / 1.08, alert_message = message_long_exit) strategy.exit("XSS", from_entry="Sell", stop=strategy.position_avg_price * 1.08, alert_message = message_short_exit)