এই নিবন্ধটি চলমান গড় ক্রসওভার নীতির উপর ভিত্তি করে একটি পরিমাণগত ট্রেডিং কৌশল প্রবর্তন করে। কৌশলটি চলমান গড়ের সাথে দামের তুলনা করে দীর্ঘ / সংক্ষিপ্ত দিক নির্ধারণ করে এবং ঝুঁকি নিয়ন্ত্রণের জন্য লাভ এবং স্টপ লস স্তর সেট করে। কৌশল কোডটি পাইন স্ক্রিপ্টে লেখা হয়েছে এবং ধান ট্রেডিং প্ল্যাটফর্ম এপিআইয়ের সাথে একীভূত হয়, কৌশল সংকেতগুলির স্বয়ংক্রিয় ট্রেডিং সক্ষম করে।
এই কৌশলটির মূলটি হ'ল চলমান গড়। এটি প্রবণতা বিচার করার ভিত্তি হিসাবে একটি নির্দিষ্ট সময়ের মধ্যে বন্ধের দামের সহজ চলমান গড় গণনা করে। যখন দাম চলমান গড়ের উপরে অতিক্রম করে, এটি একটি দীর্ঘ সংকেত উত্পন্ন করে এবং যখন এটি নীচে অতিক্রম করে, এটি একটি সংক্ষিপ্ত সংকেত উত্পন্ন করে। এক্সরেম ফাংশনটি অবিচ্ছিন্ন সদৃশ সংকেতগুলি ফিল্টার করতে এবং সংকেতের গুণমান উন্নত করতে ব্যবহৃত হয়। কৌশলটি বর্তমান অবস্থানের দিক এবং দাম এবং চলমান গড়ের মধ্যে সম্পর্কের ভিত্তিতে প্রাসঙ্গিক লাভ এবং স্টপ লস স্তর সেট করে, প্রতিটি ব্যবসায়ের ঝুঁকি এবং রিটার্ন নিয়ন্ত্রণ করে।
চলমান গড় ক্রসওভার একটি সহজ এবং সহজেই ব্যবহারযোগ্য ট্রেন্ড-পরবর্তী পদ্ধতি যা কার্যকরভাবে মাঝারি থেকে দীর্ঘমেয়াদী বাজারের প্রবণতা ক্যাপচার করতে পারে। যুক্তিসঙ্গত পরামিতি সেটিংসের সাথে, কৌশলটি ট্রেন্ডিং বাজারে স্থিতিশীল রিটার্ন অর্জন করতে পারে। লাভ গ্রহণ এবং স্টপ লস সেটিং ড্রডাউনগুলি নিয়ন্ত্রণ করতে এবং ঝুঁকি-পুরষ্কার অনুপাত উন্নত করতে সহায়তা করে। কৌশল কোড লজিকটি স্পষ্ট, ফাংশন মডুলারাইজেশন ব্যবহার করে, শক্তিশালী পাঠযোগ্যতা এবং স্কেলযোগ্যতার সাথে। এছাড়াও, কৌশলটি স্বয়ংক্রিয় অর্ডার সম্পাদন উপলব্ধি করতে ধান প্ল্যাটফর্ম এপিআইকে সংহত করে, সম্পাদনের দক্ষতা উন্নত করে।
চলমান গড়গুলি স্বতঃস্ফূর্তভাবে পিছিয়ে থাকা সূচক। বাজারের পালা পয়েন্টগুলির সময়, সংকেতগুলি বিলম্বিত হতে পারে, যা অনুকূল ব্যবসায়ের সুযোগগুলি মিস বা মিথ্যা সংকেতগুলির দিকে পরিচালিত করে। অনুপযুক্ত প্যারামিটার সেটিংস কৌশল কার্যকারিতা প্রভাবিত করবে এবং বিভিন্ন বাজারের বৈশিষ্ট্য এবং সময়সীমার সাথে সামঞ্জস্য রেখে অনুকূলিত করা দরকার। স্থায়ী শতাংশ লাভ এবং স্টপ লস বাজার অস্থিরতার পরিবর্তনের সাথে মানিয়ে নিতে পারে না এবং অনুপযুক্ত প্যারামিটার সেটিংসগুলির কারণে ক্ষতির ঝুঁকিও রয়েছে।
চলমান গড় ক্রসওভার কৌশল একটি সহজ এবং ব্যবহারিক পরিমাণগত ট্রেডিং কৌশল যা প্রবণতা ট্র্যাকিং এবং স্টপ লস নিয়ন্ত্রণের মাধ্যমে ট্রেন্ডিং বাজারে লাভ করতে পারে। তবে কৌশলটির নিজস্ব কিছু সীমাবদ্ধতা রয়েছে এবং বাজারের বৈশিষ্ট্য এবং ঝুঁকি পছন্দ অনুসারে অনুকূলিতকরণ এবং উন্নতি করা দরকার। ব্যবহারিক প্রয়োগে, কঠোর শৃঙ্খলা সম্পাদন এবং সঠিক ঝুঁকি নিয়ন্ত্রণের দিকেও মনোযোগ দেওয়া প্রয়োজন। কৌশল প্রোগ্রামিং অটোমেটেড কৌশল সম্পাদন উপলব্ধি করতে পাইন স্ক্রিপ্টের মতো পেশাদার ভাষা ব্যবহার করতে পারে এবং ট্রেডিং প্ল্যাটফর্ম এপিআইগুলিকে সংহত করতে পারে।
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 1h basePeriod: 15m 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/ // © syam-mohan-vs @ T7 - wwww.t7wealth.com www.t7trade.com //This is an educational code done to describe the fundemantals of pine scritpting language and integration with Indian discount broker Dhan. This strategy is not tested or recommended for live trading. //@version=5 strategy("Pine & Dhan - Moving Average Crossover Strategy", overlay=true) //Remove excess signals exrem(condition1, condition2) => temp = false temp := na(temp[1]) ? false : not temp[1] and condition1 ? true : temp[1] and condition2 ? false : temp[1] ta.change(temp) == true ? true : false // Define MA period ma_period = input(20, title = "MA Length") // Define target and stop loss levels target_percentage = input.float(title="Target Profit (%)", defval=2.0) stop_loss_percentage = input.float(title="Stop Loss (%)", defval=1.0) // Calculate the MA ma = ta.sma(close, ma_period) // Entry conditions long_entry = close >= ma short_entry = close < ma // Calculate target and stop loss prices target_price = long_entry ? strategy.position_avg_price + (close * (target_percentage / 100)) : strategy.position_avg_price - (close * (target_percentage / 100)) stop_loss_price = short_entry ? strategy.position_avg_price + (close * (stop_loss_percentage/ 100)) : strategy.position_avg_price - (close * (stop_loss_percentage / 100)) long_entry := exrem(long_entry,short_entry) short_entry := exrem(short_entry,long_entry) // Plot the MA plot(ma, color=color.blue, linewidth=2, title="MA") // Plot the entry and exit signals plotshape(long_entry, style=shape.arrowup, color=color.green, size=size.small,location = location.belowbar) plotshape(short_entry, style=shape.arrowdown, color=color.red, size=size.small,location = location.abovebar) //Find absolute value of positon size to exit position properly size = math.abs(strategy.position_size) //Replace these four JSON strings with those generated from user Dhan account long_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"B","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"I","sort_order":"1","price":"0"}]}' long_exit_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"S","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"M","sort_order":"1","price":"0"}]}' short_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"S","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"M","sort_order":"1","price":"0"}]}' short_exit_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"B","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"M","sort_order":"1","price":"0"}]}' // Submit orders based on signals if(strategy.position_size == 0) if long_entry strategy.order("Long", strategy.long,alert_message=long_msg) if short_entry strategy.order("Short", strategy.short,alert_message=short_msg) if(strategy.position_size > 0) if(short_entry) strategy.order("Short", strategy.short, qty = size, alert_message=short_msg) else strategy.exit("Long Exit", from_entry="Long", qty = size, stop=stop_loss_price, limit= target_price, alert_message=long_exit_msg) if(strategy.position_size < 0) if(long_entry) strategy.order("Long", strategy.long, qty = size, alert_message=long_msg) else strategy.exit("Short Exit", from_entry="Short", qty = size, stop=stop_loss_price, limit= target_price, alert_message=short_exit_msg)