এই কৌশলটি চলমান গড়ের সোনার ক্রস নীতির উপর ভিত্তি করে ডিজাইন করা হয়েছে। বিশেষত, এটি বিভিন্ন সময়ের দুটি সহজ চলমান গড় ব্যবহার করে, যথা 50 পিরিয়ড লাইন এবং 200 পিরিয়ড লাইন। যখন 50 পিরিয়ড লাইন নীচে থেকে 200 পিরিয়ড লাইনটি ভেঙে যায়, তখন একটি ক্রয় সংকেত উত্পন্ন হয়। যখন 50 পিরিয়ড লাইন উপরে থেকে 200 পিরিয়ড লাইনটি ভেঙে যায়, তখন একটি বিক্রয় সংকেত উত্পন্ন হয়।
কৌশলটি পাইন স্ক্রিপ্ট ভাষায় লেখা হয়েছে, যার মূল যুক্তি নিম্নরূপঃ
এখানে এসএমএ সূচক ব্যবহারের গুরুত্ব হ'ল এটি কার্যকরভাবে বাজারের গোলমাল ফিল্টার করতে পারে এবং দীর্ঘমেয়াদী প্রবণতা ক্যাপচার করতে পারে। যখন দ্রুত এসএমএ লাইন ধীর এসএমএ লাইনের উপরে অতিক্রম করে, এটি সংক্ষিপ্ত মেয়াদী আপট্রেন্ড গতি দীর্ঘমেয়াদী ডাউনট্রেন্ডকে পরাজিত করে, একটি ক্রয় সংকেত তৈরি করে।
এই কৌশলটির নিম্নলিখিত সুবিধা রয়েছে:
এই কৌশলের কিছু ঝুঁকিও রয়েছে:
মিথ্যা ব্রেকআউট হতে পারে, ভুল সংকেত উৎপন্ন করতে পারে।
স্বল্পমেয়াদী বাজারে সাড়া দিতে পারে না, শুধুমাত্র দীর্ঘমেয়াদী বিনিয়োগকারীদের জন্য উপযুক্ত। দ্রুত এসএমএ সময়কাল যথাযথভাবে সংক্ষিপ্ত করতে পারে।
ড্রডাউন বড় হতে পারে, স্টপ লস সেট করতে পারে, অথবা পজিশন ম্যানেজমেন্ট ঠিকমতো সামঞ্জস্য করতে পারে।
কৌশলটি নিম্নলিখিত দিকগুলিতে আরও অনুকূলিত করা যেতে পারেঃ
মিথ্যা সংকেত হ্রাস করার জন্য একাধিক ক্রয় / বিক্রয় শর্তাদি একত্রিত করে ফিল্টারিংয়ের জন্য অন্যান্য সূচক যুক্ত করুন।
স্টপ লস মেকানিজম যোগ করুন। যখন দাম একটি নির্দিষ্ট স্তর অতিক্রম করে তখন বাধ্যতামূলক স্টপ লস।
পজিশন ম্যানেজমেন্ট অপ্টিমাইজ করুন। যেমন ট্রেন্ডের সাথে পিরামিডিং, ট্রেলিং স্টপ লস ইত্যাদি। ড্রডাউন নিয়ন্ত্রণ এবং উচ্চতর রিটার্নের জন্য।
প্যারামিটার অপ্টিমাইজেশান। রিটার্ন/ঝুঁকি অনুপাতের উপর বিভিন্ন প্যারামিটারের প্রভাব মূল্যায়ন করুন।
সাধারণভাবে, এটি একটি সাধারণ প্রবণতা ট্র্যাকিং কৌশল। এটি সহজ এবং দক্ষতার সাথে দীর্ঘমেয়াদী প্রবণতা ক্যাপচার করার জন্য এসএমএর সুবিধা ব্যবহার করে। একজনের স্টাইল এবং টিউনিং স্পেসের উপর ভিত্তি করে কাস্টমাইজ করতে পারে। আরও অপ্টিমাইজেশন এবং উন্নতির জন্য বিদ্যমান ঘাটতিগুলিও লক্ষ্য করতে হবে।
/*backtest start: 2023-12-26 00:00:00 end: 2024-01-02 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=4 // // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // www.tradingview.com/u/TradeFab/ // www.tradefab.com // ___ __ __ __ __ __ // | |__) /\ | \ |__ |__ /\ |__) // | | \ /~~\ |__/ |__ | /~~\ |__) // // DISCLAIMER: Futures, stocks and options trading involves substantial risk of loss // and is not suitable for every investor. You are responsible for all the risks and // financial resources you use and for the chosen trading system. // Past performance is not indicative for future results. In making an investment decision, // traders must rely on their own examination of the entity making the trading decisions! // // TradeFab's Golden Cross Strategy. // The strategy goes long when the faster SMA 50 (the simple moving average of the last 50 bars) crosses // above the SMA 200. Orders are closed when the SMA 50 crosses below SMA 200. The strategy does not short. // VERSION = "1.2" // 1.2 FB 2020-02-09 converted to Pine version 4 // 1.1 FB 2017-01-15 added short trading // 1.0 FB 2017-01-13 basic version using SMAs // strategy( title = "TFs Golden Cross " + VERSION, shorttitle = "TFs Golden Cross " + VERSION, overlay = true ) /////////////////////////////////////////////////////////// // === INPUTS === /////////////////////////////////////////////////////////// inFastSmaPeriod = input(title="Fast SMA Period", type=input.integer, defval=50, minval=1) inSlowSmaPeriod = input(title="Slow SMA Period", type=input.integer, defval=200, minval=1) // backtest period testStartYear = input(title="Backtest Start Year", type=input.integer, defval=2019, minval=2000) testStartMonth = input(title="Backtest Start Month", type=input.integer, defval=1, minval=1, maxval=12) testStartDay = input(title="Backtest Start Day", type=input.integer, defval=1, minval=1, maxval=31) testStopYear = input(title="Backtest Stop Year", type=input.integer, defval=2099, minval=2000) testStopMonth = input(title="Backtest Stop Month", type=input.integer, defval=12, minval=1, maxval=12) testStopDay = input(title="Backtest Stop Day", type=input.integer, defval=31, minval=1, maxval=31) /////////////////////////////////////////////////////////// // === LOGIC === /////////////////////////////////////////////////////////// smaFast = sma(close, inFastSmaPeriod) smaSlow = sma(close, inSlowSmaPeriod) bullishCross = crossover (smaFast, smaSlow) bearishCross = crossunder(smaFast, smaSlow) // detect valid backtest period isTestPeriod() => true /////////////////////////////////////////////////////////// // === POSITION EXECUTION === /////////////////////////////////////////////////////////// strategy.entry("long", strategy.long, when=bullishCross) strategy.entry("short", strategy.short, when=bearishCross) /////////////////////////////////////////////////////////// // === PLOTTING === /////////////////////////////////////////////////////////// // background color nopColor = color.new(color.gray, 50) bgcolor(not isTestPeriod() ? nopColor : na) bartrendcolor = close > smaFast and close > smaSlow and change(smaSlow) > 0 ? color.green : close < smaFast and close < smaSlow and change(smaSlow) < 0 ? color.red : color.blue barcolor(bartrendcolor) plot(smaFast, color=change(smaFast) > 0 ? color.green : color.red, linewidth=2) plot(smaSlow, color=change(smaSlow) > 0 ? color.green : color.red, linewidth=2) // label posColor = color.new(color.green, 75) negColor = color.new(color.red, 75) dftColor = color.new(color.blue, 75) posProfit= (strategy.position_size != 0) ? (close * 100 / strategy.position_avg_price - 100) : 0.0 posDir = (strategy.position_size > 0) ? "long" : strategy.position_size < 0 ? "short" : "flat" posCol = (posProfit > 0) ? posColor : (posProfit < 0) ? negColor : dftColor var label lb = na label.delete(lb) lb := label.new(bar_index, max(high, highest(5)[1]), color=posCol, text="Pos: "+ posDir + "\nPnL: "+tostring(posProfit, "#.##")+"%" + "\nClose: "+tostring(close, "#.##"))