এই কৌশলটি বিটিসির ৫০ দিনের চলমান গড় এবং ২০০ দিনের চলমান গড়ের গোল্ডেন ক্রস এবং ডেথ ক্রস সংকেতগুলির উপর ভিত্তি করে, ক্রয় এবং বিক্রয় সংকেত তৈরির জন্য অতিরিক্ত প্রযুক্তিগত সূচকগুলির সাথে মিলিত। এই কৌশলটি মূলত বিটিসি / ইউএসডিটির মতো সুস্পষ্ট প্রবণতা বৈশিষ্ট্যযুক্ত মুদ্রা জোড়ার জন্য উপযুক্ত।
যখন ৫০ দিনের চলমান গড়
মূল চলমান গড়
EMA ইন্ডিকেটর: EMA ইন্ডিকেটর লং + অফসেট দিয়ে গণনা করুন, যখন এটি উপরে যায় তখন এটি বর্তমান বাজারকে উর্ধ্বমুখী দেখায়, আমরা কিনতে পারি।
চলমান গড় এবং ইএমএর মধ্যে মূল্য সম্পর্ক তুলনা করুনঃ যদি ইএমএর মান 50 দিনের চলমান গড়ের চেয়ে বেশি হয়, তবে একটি ক্রয় সংকেত উত্পন্ন হয়।
পূর্ববর্তী কে-লাইনের সর্বনিম্নের তুলনায় দাম ১% এর বেশি কমেছে কিনা তা পরীক্ষা করুন, যদি তাই হয় তবে একটি বিক্রয় সংকেত তৈরি করুন।
উপরের বেশ কয়েকটি সূচক ব্যবহার করে, কিছু ভুল সংকেত ফিল্টার করা যায় এবং কৌশলটির ট্রেডিং সিদ্ধান্তগুলি আরও নির্ভরযোগ্য হতে পারে।
এই কৌশল নিম্নলিখিত সুবিধাগুলি আছেঃ
মূল ট্রেডিং সিগন্যাল হিসাবে চলমান গড় ব্যবহার করে বাজারের গোলমাল ফিল্টার করতে পারে এবং প্রবণতার দিকনির্দেশনা সনাক্ত করতে পারে।
একাধিক সহায়ক প্রযুক্তিগত সূচকগুলির সাথে একত্রিত করে সিগন্যালের নির্ভরযোগ্যতা বাড়াতে এবং মিথ্যা সংকেতগুলি ফিল্টার করতে পারে।
যথাযথ স্টপ-লস কৌশল গ্রহণ করে একক ক্ষতি কার্যকরভাবে নিয়ন্ত্রণ করা যায়।
তুলনামূলকভাবে সহজ ট্রেডিং লজিক বোঝা এবং বাস্তবায়ন করা সহজ, যা পরিমাণগত ট্রেডিংয়ের নতুনদের জন্য উপযুক্ত।
অনেকগুলি কনফিগারযোগ্য প্যারামিটার রয়েছে যা আপনার নিজস্ব পছন্দ অনুসারে সামঞ্জস্য করা যেতে পারে।
এই কৌশলটির কিছু ঝুঁকি রয়েছেঃ
মুভিং মিডিয়ার মধ্যে একটি শক্তিশালী বিলম্বের বৈশিষ্ট্য রয়েছে, সম্ভবত দ্রুত মূল্য বিপরীত করার সুযোগগুলি মিস করা।
সহায়ক সূচক যোগ করা নিয়মের সংখ্যা বৃদ্ধি করে এবং ভুল সংকেত তৈরির সম্ভাবনাও বৃদ্ধি করে।
ভুল স্টপ লস সেটিং ক্ষতির বৃদ্ধি হতে পারে।
অনুপযুক্ত পরামিতি সেটিং (যেমন চলমান গড় দৈর্ঘ্য ইত্যাদি) কৌশল ফলাফল প্রভাবিত করবে।
সংশ্লিষ্ট সমাধানঃ
চলমান গড় চক্রকে যথাযথভাবে সংক্ষিপ্ত করুন এবং পরামিতি অপ্টিমাইজেশান পরিসীমা বাড়ান।
সিগন্যালের গুণমান পরীক্ষা করার জন্য ব্যাকটেস্ট ডেটা পরিমাণ বাড়ান।
লাভের জন্য স্টপ স্টপ সেট করার সময় স্টপ লস রেঞ্জকে সঠিকভাবে শিথিল করুন।
সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে পেতে প্যারামিটার অপ্টিমাইজেশান বৃদ্ধি করুন।
এই কৌশলটি নিম্নলিখিত দিকগুলিতেও অপ্টিমাইজ করা যেতে পারেঃ
স্বয়ংক্রিয় প্যারামিটার অপ্টিমাইজেশান অর্জনের জন্য মেশিন লার্নিং অ্যালগরিদম বৃদ্ধি করুন।
একাধিক উপ-কৌশল তৈরি করতে এবং ভোটদানের পদ্ধতির মাধ্যমে সিদ্ধান্ত গ্রহণের জন্য আরও সহায়ক সূচক যুক্ত করুন।
দামের অগ্রগতি চিহ্নিত করতে ব্রেকআউট কৌশল ব্যবহার করুন।
দামের প্রবণতা পূর্বাভাস দিতে ডিপ লার্নিং ব্যবহার করুন।
ডায়নামিক ট্র্যাকিং স্টপ-লস অর্জনের জন্য স্টপ-লস মেকানিজমকে অপ্টিমাইজ করা।
উপরের অপ্টিমাইজেশানগুলি সিদ্ধান্তের নির্ভুলতা উন্নত করতে পারে এবং কৌশলটির লাভজনকতা এবং স্থিতিশীলতা বাড়িয়ে তুলতে পারে।
এই কৌশলটি মূলত বিটিসির চলমান গড় ক্রসওভারের উপর ভিত্তি করে ট্রেডিং সিদ্ধান্ত নেয়, ইএমএর মতো প্রযুক্তিগত সূচকগুলিকে সংকেতগুলি ফিল্টার করতে সহায়তা করে। কৌশলটির প্রবল প্রবণতা অনুসরণ করার ক্ষমতা এবং উচ্চ কনফিগারযোগ্যতা রয়েছে, এটি একটি শিক্ষানবিশের পরিমাণগত ট্রেডিং কৌশল হিসাবে উপযুক্ত করে তোলে। তবে কিছু পিছনে থাকা ঝুঁকিও রয়েছে যা থেকে রক্ষা করা দরকার। পরবর্তী অপ্টিমাইজেশনের দিকগুলি মেশিন লার্নিং, পোর্টফোলিও কৌশল, স্টপ-লস কৌশল ইত্যাদির মতো একাধিক মাত্রা থেকে হতে পারে।
/*backtest start: 2023-11-06 00:00:00 end: 2023-12-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('JayJay BTC Signal', overlay=true, initial_capital=100, currency='USD', default_qty_value=100, default_qty_type=strategy.percent_of_equity, commission_value=0, calc_on_every_tick=true) securityNoRepaint(sym, tf, src) => request.security(sym, tf, src[barstate.isrealtime ? 1 : 0])[barstate.isrealtime ? 0 : 1] //200 50 Moving Average ma50Len = input.int(50, minval=1, title='MA50-Length') ma50Src = input(close, title='MA50-Source') ma50Show = input(true, title='Show SMA50 on chart') ma50Close = ta.sma(ma50Src, ma50Len) ma50CloseTimeframe = input.timeframe("240", "Ma50 Timeframe", group = "EMA Options") ma50Open = ta.sma(open, ma50Len) ma200Len = input.int(200, minval=1, title='MA200-Length') ma200Src = input(close, title='MA200-Source') ma200Show = input(true, title='Show SMA200 on chart') ma200CloseTimeframe = input.timeframe("D", "Ma200 Timeframe", group = "EMA Options") ma200Close = ta.sma(ma200Src, ma200Len) ma200Open = ta.sma(open, ma200Len) //plot(ma200Close, color=color.new(#0b6ce5, 0), title='MA200') //plot(ma50Close, color=color.new(#00d8ff, 0), title='MA50') sma50 = securityNoRepaint(syminfo.tickerid, ma50CloseTimeframe, ma50Close) plot(sma50 and ma50Show ? sma50 : na, color=color.new(#00d8ff, 0), title='SMA50') sma200 = securityNoRepaint(syminfo.tickerid, ma200CloseTimeframe, ma200Close) plot(sma200 and ma200Show ? sma200 : na, color=color.new(#00d8ff, 0), title='SMA200') // Short/Long EMA // Define the offset value EMAOffsetValue = input.int(2, title='EMA Offset', minval=0) emaplot = input(true, title='Show EMA on chart') len = input.int(20, minval=1, title='ema Length') + EMAOffsetValue emaCloseTimeframe = input.timeframe("240", "EMA 1 Timeframe", group = "EMA Options") emaOpen = ta.ema(open, len) emaClose = ta.ema(close, len) ema = securityNoRepaint(syminfo.tickerid, emaCloseTimeframe, emaClose) up = emaClose > ema[1] down = emaClose < ema[1] mycolor = up ? color.green : down ? color.red : color.blue plot(ema and emaplot ? ema : na, title='Signal EMA', color=mycolor, linewidth=3) //plot(emaClose and emaplot ? emaClose : na, title='Signal 20 EMA', color=color.yellow, linewidth=3) ma50GreaterThanMa200 = sma50 > sma200 last3BarUp = ema > ema[1] startLong = up and ema > sma50 and ma50GreaterThanMa200 and (100 - (sma50 / ema * 100) > 1.0) startFrom = input(timestamp("20 Jan 2000 00:00"), "StartFrom") yearFilter = true alertLongPositionMessage = "{\"direction:\": \"long\", \"action\": \"{{strategy.order.action}}\", \"price\": \"{{strategy.order.price}}\", \"qty\": \"{{strategy.position_size}}\", \"symbol\": \"{{ticker}}\", \"date\": \"{{time}}\"}" if true and startLong and yearFilter strategy.entry('Long', strategy.long, comment = "Long", alert_message = alertLongPositionMessage) longStopLossLevel = open * 0.05 strategy.exit('StopLoss', from_entry='Long',comment = "StopLoss!", loss=longStopLossLevel, profit=close * 0.3, alert_message = alertLongPositionMessage) longPercentageChange = low / close[1] * 100 - 100 is1PercentLower = longPercentageChange < -0.1 closeLongPositionWhen = (down and is1PercentLower) or (emaClose < sma50) if closeLongPositionWhen strategy.close('Long', comment = "Fuck It!", alert_message = alertLongPositionMessage) bgcolor(startLong ? color.green : na, transp=90)