মুভিং এভারেজ ব্রেকআউট কৌশল

লেখক:চাওঝাং, তারিখঃ ২০২৩-১১-২৮ ১৩ঃ৫০ঃ৪৯
ট্যাগঃ

img

সারসংক্ষেপ

এটি চলমান গড়ের উপর ভিত্তি করে একটি ব্রেকআউট ট্রেডিং কৌশল। এটি চলমান গড় হিসাবে একটি নির্দিষ্ট সময়ের জন্য গড় মূল্য গণনা করে। যখন দাম চলমান গড়ের মধ্য দিয়ে ভেঙে যায়, তখন ট্রেডিং সংকেত তৈরি করা হয়।

কৌশলগত যুক্তি

এই কৌশলটি মূলত চলমান গড় সূচকের উপর ভিত্তি করে। এটি চলমান গড় পেতে একটি সময়ের মধ্যে গড় বন্ধের মূল্য গণনা করতে এসএমএ ফাংশন ব্যবহার করে। যখন সর্বশেষ বন্ধের মূল্য চলমান গড়ের মধ্য দিয়ে উপরে ভাঙবে, তখন একটি ক্রয় সংকেত উত্পন্ন হয়। যখন সর্বশেষ বন্ধের মূল্য নিম্নগামী চলমান গড়ের মধ্য দিয়ে ভাঙবে, তখন একটি বিক্রয় সংকেত উত্পন্ন হয়।

বিশেষত, এটি গতিশীল গড় ডেটা ক্রম পেতে কৌশলটিতে সোর্স (সাম্প্রতিক বন্ধের মূল্য) এবং চলমান গড়ের দৈর্ঘ্য সংজ্ঞায়িত করে। তারপরে এটি দুটি শর্ত নির্ধারণ করেঃ যখন দাম চলমান গড়ের উপরে অতিক্রম করে তখন একটি দীর্ঘ অর্ডার তৈরি করুন; যখন দাম চলমান গড়ের নীচে অতিক্রম করে তখন একটি সংক্ষিপ্ত অর্ডার তৈরি করুন। অর্ডারগুলি তৈরি করার পরে, এটি মুনাফা গ্রহণ এবং স্টপ লসও সেট করেঃ অর্ডারটি যখন একটি সেট মুনাফা অনুপাতে পৌঁছে যায় তখন এটি অবস্থানের একটি অংশ বন্ধ করে দেয় এবং অর্ডারটি যখন পূর্বনির্ধারিত মুনাফা গ্রহণ বা স্টপ লস মূল্যে পৌঁছে যায় তখন পুরো অবস্থানটি বন্ধ করে দেয়।

সুবিধা বিশ্লেষণ

এটি একটি সহজ এবং ব্যবহারিক প্রবণতা অনুসরণকারী কৌশল। এর নিম্নলিখিত সুবিধাগুলি রয়েছেঃ

  1. এর যুক্তি স্পষ্ট এবং বোঝা সহজ এবং পরামিতিগুলি সামঞ্জস্য করা সহজ।
  2. মুভিং মিডিয়া একটি সাধারণভাবে ব্যবহৃত এবং নির্ভরযোগ্য প্রযুক্তিগত সূচক যা বাজারের গোলমাল ফিল্টার করতে এবং প্রবণতা সনাক্ত করতে পারে।
  3. একই সময়ে মুনাফা গ্রহণ এবং স্টপ লস সেট করা কিছু মুনাফা এবং ঝুঁকি নিয়ন্ত্রণ করতে পারে।
  4. এটি কেবলমাত্র সাধারণ পরামিতিগুলির সাথে চালিত হতে পারে, যা কোয়ান্টাম এন্ট্রি স্তরের জন্য উপযুক্ত।

ঝুঁকি বিশ্লেষণ

যদিও এই কৌশলটির অনেক সুবিধা রয়েছে, তবুও কিছু ঝুঁকি রয়েছেঃ

  1. মুভিং মিডিয়ায় প্রবণতা থাকে এবং এটি স্বল্পমেয়াদী বিপরীতমুখী হতে পারে।
  2. এটি সামগ্রিক বাজারের পরিবেশকে বিবেচনা করে না এবং ফাঁদে পড়তে পারে।
  3. কোন প্যারামিটার অপ্টিমাইজেশান কৌশল কর্মক্ষমতা প্রভাবিত করতে পারে না।
  4. এটিতে কিছু মিথ্যা সংকেত থাকতে পারে কারণ ফিল্টারিংয়ের জন্য অন্য কোনও সূচক ব্যবহার করা হয় না।

এই ঝুঁকিগুলি নিয়ন্ত্রণ করার জন্য, আমরা ফিল্টারিংয়ের জন্য অন্যান্য সূচকগুলিকে একত্রিত করে, স্বল্পমেয়াদী বাজার প্রবণতা বিচার প্রবর্তন করে বা সর্বোত্তম পরামিতি সংমিশ্রণগুলি খুঁজে পেতে মেশিন লার্নিং পদ্ধতি ব্যবহার করে অপ্টিমাইজ করতে পারি।

অপ্টিমাইজেশান নির্দেশাবলী

কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ

  1. একটি ট্রেডিং সিস্টেম তৈরি এবং জয় হার উন্নত করার জন্য বিচার করার জন্য অন্যান্য প্রযুক্তিগত সূচক যোগ করুন। এমএসিডি, কেডি এর মতো সূচকগুলি চালু করা যেতে পারে।

  2. স্টপ লস মেকানিজম যোগ করুন। লাভের লকিং এবং বৃহত্তর ক্ষতি এড়ানোর জন্য ট্রেলিং স্টপ লস বা সময় ভিত্তিক স্টপ লস ব্যবহার করুন।

  3. প্যারামিটার অপ্টিমাইজেশন পরিচালনা করুন। সেরা সমন্বয় খুঁজে পেতে চলমান গড় সময়ের প্যারামিটার পরিবর্তন করুন। বিভিন্ন ধরণের চলমান গড়ও পরীক্ষা করা যেতে পারে।

  4. মেশিন লার্নিং বিচার বৃদ্ধি করুন। ট্রেন্ডের দিকনির্দেশ নির্ধারণের জন্য একাধিক কারণের সাথে একত্রিত র্যান্ডম ফরেস্ট এবং এলএসটিএম এর মতো অ্যালগরিদম ব্যবহার করুন।

  5. প্রবেশ এবং প্রস্থান লজিক অপ্টিমাইজ করুন। প্রবণতা ফিল্টারিং শর্ত সেট করুন তার শেষের কাছাকাছি প্রবণতা বিরুদ্ধে ট্রেড এড়াতে। পর্যায়ক্রমিক প্রস্থান লজিক ব্যবহার বিবেচনা করুন।

সংক্ষিপ্তসার

সামগ্রিকভাবে, এই চলমান গড় ব্রেকআউট কৌশলটি একজন শিক্ষানবিস কোয়ান্ট ট্রেডিং কৌশল হিসাবে খুব উপযুক্ত। এটির সহজ যুক্তি রয়েছে, বুঝতে এবং পরিচালনা করা সহজ, কিছু ব্যবহারিক প্রভাব রয়েছে। একই সাথে, এটি আরও পরীক্ষা এবং অপ্টিমাইজেশনের জন্য অনেক জায়গা ছেড়ে দেয়। আমরা আরও ভাল কোয়ান্ট কৌশল বিকাশের জন্য এই ভিত্তিতে আরও প্রযুক্তিগত সূচক এবং মডেল প্রবর্তন করতে পারি।


/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-22 08:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//  |-- Initialize Strategy Parameters:
strategy( 
     // |-- Strategy Title.
     title='[Tutorial][RS]Working with orders', 
     // |-- if shorttitle is specified, it will overwrite the name on the chart window.
     shorttitle='WwO', 
     // |-- if true it overlays current chart window, otherwise it creates a drawer to display plotting outputs.
     overlay=true, 
     // |-- Strategy unit type for default quantity, possible arguments: (strategy.cash, strategy.fixed, strategy.percent_of_equity)
     default_qty_type=strategy.cash, 
     // |-- Value to use for default trade size
     default_qty_value=1000, 
     // |-- Default Account size 
     initial_capital=100000, 
     // |-- Account Currency parameter
     currency=currency.USD
     )

//  |-- Strategy Profit/loss parameters:
profit = input(defval=5000, title='Take Profit')
loss = input(defval=5000, title='Stop Loss')
ratio = input(defval=2.0, title='Ratio at wich to take out a percentage off the table (take profit / ratio).')
percent = input(defval=50.0, title='Percentage of position to take profit.')
//  |-- Signal Parameters:
//  |
//  |-- Moving Average input source and length parameters.
src = input(defval=close)
length = input(defval=100)
//  |-- Moving Average Data series.
ma = sma(src, length)

//  |-- Condition for triggering a buy(long) order(trade).
if crossover(src, ma)
    //  |-- Create the order.
    strategy.order(id='Buy', long=true)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Buy Half Exit', from_entry='Buy', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Buy Full Exit', from_entry='Buy', qty_percent=100, profit=profit, loss=loss)
if crossunder(src, ma)
    //  |-- Create the order.
    strategy.order(id='Sell', long=false)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Sell Half Exit', from_entry='Sell', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Sell Full Exit', from_entry='Sell Half Exit', qty_percent=100, profit=profit, loss=loss)

//  |-- Output Functions.
plot(series=ma, title='MA', color=black)


আরো