
গোল্ডেন ক্রস মুভিং এভারেজ ট্রেডিং কৌশল হল একটি তুলনামূলকভাবে ক্লাসিক পরিমাণগত ট্রেডিং কৌশল। এই কৌশলটি বিভিন্ন সময়ের চলমান গড় ব্যবহার করে, বাজার প্রবণতা আরও খালি করার জন্য। যখন স্বল্পমেয়াদী চলমান গড়ের উপরে দীর্ঘমেয়াদী চলমান গড় অতিক্রম করা হয়, তখন এটি কেনার সংকেত হিসাবে বিবেচিত হয়; যখন স্বল্পমেয়াদী চলমান গড়ের নীচে দীর্ঘমেয়াদী চলমান গড় অতিক্রম করা হয়, তখন এটি বিক্রয় সংকেত হিসাবে বিবেচিত হয়।
এই কৌশলটি তিনটি ভিন্ন পিরিয়ডের সরল চলমান গড় (এসএমএ) এর উপর ভিত্তি করে তৈরি করা হয়েছেঃ ৫০ দিনের লাইন, ১০০ দিনের লাইন এবং ২০০ দিনের লাইন। নির্দিষ্ট ট্রেডিং লজিকটি নিম্নরূপঃ
প্রবেশের সংকেতঃ যখন ৫০ দিনের চলমান গড়ের উপরে ১০০ দিনের চলমান গড় পরিধান করা হয়, তখন অতিরিক্ত প্রবেশ করুন।
প্রস্থান সংকেতঃ যখন 50 দিনের চলমান গড়ের নীচে 100 দিনের চলমান গড় অতিক্রম করে, তখন পজিশনটি ছাড়িয়ে যায়; অথবা যখন বন্ধের দাম 100 দিনের চলমান গড়ের নীচে থাকে, তখন ছাড়িয়ে যায়; অথবা যখন 100 দিনের চলমান গড়ের নীচে 200 দিনের চলমান গড় অতিক্রম করে, তখন ছাড়িয়ে যায়।
স্টপ লসঃ মোবাইল স্টপ এবং ফিক্সড স্টপ লস সেট করুন।
এই কৌশলটি মুভিং এভারেজগুলিকে ব্যবহার করে যা বাজারের গড় মূল্যের বিষয়ে কার্যকরভাবে বিচার করতে পারে, যখন স্বল্প-মেয়াদী গড়ের উপরে দীর্ঘমেয়াদী গড়টি অতিক্রম করা হয়, তখন এটি একটি বাজার-উত্তর প্রবণতার সংকেত হিসাবে বিবেচিত হয়, তাই আরও বেশি করা হয়; যখন স্বল্প-মেয়াদী গড়ের নীচে দীর্ঘমেয়াদী গড়টি অতিক্রম করা হয়, তখন এটি বাজার-উত্তর প্রবণতা হিসাবে বিবেচিত হয়, তাই বন্ধ হয়ে যায়। এইভাবে, বাজারের প্রবণতা কার্যকরভাবে ধরা যায়।
অপারেশন সহজ এবং বাস্তবায়ন করা সহজ। এই কৌশলটি কেবল তিনটি ভিন্ন সময়ের চলমান গড় ব্যবহার করে তৈরি করা যেতে পারে।
শক্তিশালী স্থিতিশীলতা রয়েছে। মুভিং এভারেজ নিজেই একটি গোলমাল-নিরোধক বৈশিষ্ট্য রয়েছে যা কার্যকরভাবে বাজারের এলোমেলো ওঠানামা দ্বারা ট্রেডিংয়ের প্রভাবকে সরিয়ে দেয়, যা সংকেতকে আরও স্থিতিশীল এবং নির্ভরযোগ্য করে তোলে।
বড় ট্রেন্ডগুলি সহজেই উপলব্ধি করা যায়। মুভিং এভারেজগুলি বাজারের গড় মূল্য পরিবর্তনের প্রবণতাকে কার্যকরভাবে প্রতিফলিত করতে পারে এবং দীর্ঘ এবং স্বল্প সময়ের লাইনগুলির ক্রস দ্বারা বড় বাজারের পরিবর্তনের বিচার করতে পারে।
কাস্টমাইজেশনের উচ্চ মাত্রা রয়েছে। বিভিন্ন স্তরের ঝুঁকি নিয়ন্ত্রণের জন্য চলমান গড়ের চক্রীয় সংমিশ্রণটি স্বয়ংক্রিয়ভাবে নির্ধারণ করা যায়।
যখন স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী মুভিং এভারেজ খুব কাছাকাছি থাকে, তখন প্রচুর পরিমাণে অকার্যকর সংকেত তৈরি করতে পারে।
চলমান গড় মূল্য পরিবর্তনের প্রতি ধীর প্রতিক্রিয়া দেখায় এবং বাজারের অপ্রত্যাশিত সংবাদ এবং গুরুত্বপূর্ণ ঘটনাগুলির প্রতি রিয়েল-টাইমে প্রতিক্রিয়া দেখায় না।
মুনাফা অর্জনের জন্য বাজারে ক্ষুদ্র মাত্রার অস্থিরতা। মুভিং এভারেজের ন্যুজ-মুক্ত বৈশিষ্ট্যের অর্থ হল বাজারে ক্ষুদ্র মাত্রার অস্থিরতা ধরা এবং মুনাফা অর্জনের জন্য এটি অসম্ভব।
প্যারামিটার সেট করা বেশ বিষয়বস্তু। চলন্ত গড়ের সময়কালের পছন্দগুলি বেশ বিষয়বস্তু, বিভিন্ন বাজারের উপর নির্ভর করে সর্বোত্তম প্যারামিটারগুলি নির্ধারণ করা প্রয়োজন।
ফিল্টারিংয়ের শর্তগুলি যুক্ত করুন, যাতে খুব বেশি মিথ্যা সংকেত তৈরি না হয়। উদাহরণস্বরূপ, একটি ফিল্টার হিসাবে মূল্যের ওঠানামা পরিসীমা সেট করুন, কেবলমাত্র একটি নির্দিষ্ট পরিসীমা অতিক্রম করার পরে একটি লেনদেনের সংকেত তৈরি করুন।
অন্যান্য সূচকগুলির সাথে সংমিশ্রণ করুন। উদাহরণস্বরূপ, ওলট-পালট হার সূচক, ক্রয় পরিমাণ সূচক ইত্যাদির সাথে সংমিশ্রণ ব্যবহার করে, সংকেতের নির্ভুলতা বাড়ানো যেতে পারে।
একটি অভিযোজিত অপ্টিমাইজেশান মডিউল যোগ করা হয়েছে। মেশিন লার্নিং এবং অন্যান্য প্রযুক্তির মাধ্যমে গতিশীলভাবে চলমান গড়ের পিরিয়ড প্যারামিটারগুলিকে অপ্টিমাইজ করা হয়েছে, যাতে এটি বহিরাগত বাজার পরিবেশে পরিবর্তনের সাথে খাপ খাইয়ে নিতে পারে।
ডিপ লার্নিং মডেলের সাথে মিলিত। আরও উন্নত ডিপ লার্নিং মডেলের সাথে চলমান গড় প্রতিস্থাপন করুন, আরও শক্তিশালী বৈশিষ্ট্য নিষ্কাশন এবং মডেলিং ক্ষমতা রয়েছে।
স্বর্ণের ক্রস সমান্তরাল ট্রেডিং কৌশলটি একটি তুলনামূলকভাবে প্রচলিত প্রবণতা অনুসরণকারী কৌশল। এটি বাজারের দামের গড় পরিবর্তনের প্রবণতা প্রতিফলিত করে, সহজ এবং ব্যবহারিক, শিক্ষানবিসদের জন্য উপযুক্ত। একই সময়ে, এই কৌশলটির কিছু ত্রুটি রয়েছে যা সংকেতের গুণমান উন্নত করা, অন্যান্য প্রযুক্তিগত সূচকগুলির সাথে সংমিশ্রণ করা এবং স্ব-অনুকূলিতকরণ ব্যবস্থা চালু করা ইত্যাদির মতো একাধিক দিক থেকে অপ্টিমাইজ করা যেতে পারে। সামগ্রিকভাবে, কৌশলটি উচ্চ রেফারেন্স এবং শেখার মূল্য রয়েছে।
/*backtest
start: 2023-12-03 00:00:00
end: 2023-12-10 00:00:00
period: 1m
basePeriod: 1m
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/
// © CJDeegan
//@version=4
strategy(title = "[LIVE] Golden Cross", overlay=true)
// ------------Functions------------
//Percent to Decimal Conversion
perToDec(a) => a * 0.01
//Price Difference to Tick
diffToTick(a,b) => (a - b) / syminfo.mintick
// ------------Strategy Inputs------------
takeProfitInput = input(300, "Take Profit Price (% Gain)")
stopLossInput = input(25, "Stop Loss (% Loss)")
startDate = input(title="Start Date", type=input.integer,
defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
defval=2018, minval=1800, maxval=2100)
endDate = input(title="End Date", type=input.integer,
defval=1, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
defval=1, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
defval=2031, minval=1800, maxval=2100)
inDateRange = (time >= timestamp(syminfo.timezone, startYear,
startMonth, startDate, 0, 0)) and
(time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))
// ------------Populate Indicators------------
//EMA
sma50 = sma(close,50)
sma100 = sma(close,100)
sma200 = sma(close,200)
// ------------Entry Logic------------
//Guards
entryGuard = true
//Triggers
entryTrigger = crossover(sma50,sma100)
//Conditions
entryCondition = entryGuard and entryTrigger
//Calculations
//Execution
if (inDateRange and entryCondition)
strategy.entry("Long", strategy.long, when = entryCondition, comment = "Entry")
//------------Exit Logic------------
//Guards
//Triggers
exitTrigger = crossunder(sma50,sma100) or close < sma100 or crossunder(sma100,sma200)
//Conditions
exitCondition = exitTrigger
//Calculations
//Take Profit
takeProfitPrice = strategy.position_avg_price + (strategy.position_avg_price * perToDec(takeProfitInput))
//Take Profit Ticks
takeProfitTicks = diffToTick(takeProfitPrice, strategy.position_avg_price)
//StopLoss
stopLossPrice = strategy.position_avg_price - (strategy.position_avg_price * perToDec(stopLossInput))
//Execution
if (inDateRange)
strategy.close("Long", when = exitCondition, comment = "Sell Trigger")
strategy.exit("Exit", "Long", comment="Stop", profit=takeProfitTicks, stop=stopLossPrice)
//Plots
plot(sma50, "SMA 50", color = color.blue)
plot(sma100, "SMA 100", color = color.green)
plot(sma200, "SMA 200", color = color.yellow)
entry = plot(strategy.position_size <= 0 ? na : strategy.position_avg_price, "Entry Price", color = color.yellow, style = plot.style_linebr)
profit = plot(strategy.position_size <= 0 ? na : takeProfitPrice, "Take Profit (Price)", color = color.green, style = plot.style_linebr)
stop = plot(strategy.position_size <= 0 ? na : stopLossPrice, "Stop Loss", color = color.red, style = plot.style_linebr)
fill(entry,profit, color=color.green)
fill(entry,stop, color=color.red)