গাউসিয়ান ত্রুটি ফাংশন ভিত্তিক পরিমাণগত ট্রেডিং কৌশল বিশ্লেষণ

লেখক:চাওঝাং, তারিখঃ 2024-01-19 14:28:03
ট্যাগঃ

img

সারসংক্ষেপ

এই কৌশলটি মূল্যের পরিবর্তনগুলি পরিমাপ করার জন্য গাউসিয়ান ত্রুটি ফাংশন দ্বারা গণনা করা পি-সিগন্যাল সূচকের উপর ভিত্তি করে একটি পরিমাণগত ট্রেডিং কৌশল। এটি প্রবেশ এবং প্রস্থানগুলির জন্য মূল্যের প্রবণতা এবং বাঁক পয়েন্টগুলি নির্ধারণ করতে পি-সিগন্যাল ব্যবহার করে।

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

এই কৌশলটির মূল সূচক হল পি-সিগন্যাল। পি-সিগন্যালের গণনার সূত্র হলঃ

fPSignal(ser, int) =>
    nStDev = stdev(ser, int) 
    nSma = sma(ser, int)
    fErf(nStDev > 0 ? nSma/nStDev/sqrt(2) : 1.0)

এখানে ser হল মূল্য সিরিজ, int হল nPoints প্যারামিটার, যা ফিরে তাকানোর জন্য বার সংখ্যা। এই সূত্রটি তিনটি অংশ নিয়ে গঠিতঃ

  1. nStDev হল মূল্যের মান বিচ্যুতি;
  2. nSma হল মূল্যের সরল চলমান গড়;
  3. fErf হচ্ছে গাউসিয়ান ত্রুটি ফাংশন।

পুরো সূত্রটির অর্থ হল দামের চলমান গড়কে দামের স্ট্যান্ডার্ড বিচ্যুতি দ্বারা ভাগ করা, তারপরে স্ট্যান্ডার্ডাইজেশনের জন্য sqrt (((2) দ্বারা ভাগ করা এবং অবশেষে গাউসিয়ান ত্রুটি ফাংশন দ্বারা (-1, 1) পরিসরে ম্যাপ করা। অর্থাৎ, যদি দামের ওঠানামা গড়ের চেয়ে বেশি হয় তবে পি-সিগন্যালটি 1 এর কাছাকাছি হয়; যদি দামের ওঠানামা গড়ের চেয়ে কম হয় তবে পি-সিগন্যালটি -1 এর কাছাকাছি হয়।

কৌশলটি P-Signal এর মান এবং এর পরিবর্তনের চিহ্ন ব্যবহার করে প্রবেশ এবং প্রস্থান নির্ধারণ করেঃ

strategy.entry("long", strategy.long, 1, when = nPSignal < 0 and ndPSignal > 0)

strategy.close("long", when = nPSignal > 0 and ndPSignal < 0)  

P-সিগন্যাল 0 এর চেয়ে কম হলে এটি লং হয়ে যায় এবং ধনাত্মক হয়ে যায়। P-সিগন্যাল 0 এর চেয়ে বড় হলে এটি অবস্থান বন্ধ করে দেয় এবং নেতিবাচক হয়ে যায়।

সুবিধা

এই কৌশলটির সুবিধাগুলির মধ্যে রয়েছেঃ

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

ঝুঁকি

এই কৌশলটির সাথে কিছু ঝুঁকিও রয়েছেঃ

  1. উচ্চ ফ্রিকোয়েন্সি ট্রেডিং ঝুঁকিঃ একটি সাধারণ উচ্চ ফ্রিকোয়েন্সি ট্রেডিং কৌশল হিসাবে, এটি আরও বেশি ট্রেড তৈরি করতে পারে, যার ফলে উচ্চতর লেনদেনের ব্যয় এবং স্লিপিং ঝুঁকি বহন করে।
  2. পি-সিগন্যাল অনেক মিথ্যা সংকেত তৈরি করতে পারে যখন দামের কোন স্পষ্ট প্রবণতা বা প্যাটার্ন নেই।
  3. জটিল প্যারামিটার অপ্টিমাইজেশান। একাধিক প্যারামিটার মধ্যে জটিল সম্পর্ক প্যারামিটার অপ্টিমাইজেশান চ্যালেঞ্জিং করে তোলে।

এই ঝুঁকি কমানোর জন্য কিছু ব্যবস্থা বিবেচনা করা যেতে পারেঃ বাণিজ্যের ঘনত্ব হ্রাস করার জন্য ফিল্টার যুক্ত করা; পরামিতি সংমিশ্রণ এবং লেনদেনের খরচ সেটিং অপ্টিমাইজ করা; লাইভ টেস্টিং এবং উপযুক্ত পণ্য নির্বাচন করা।

উন্নতকরণ

আরও উন্নতির সুযোগ রয়েছে:

  1. মিথ্যা সংকেত এড়ানোর জন্য ফিল্টার যোগ করা, উদাহরণস্বরূপ, এবং / অথবা অন্যান্য সূচকগুলির সাথে কিছু গোলমাল ফিল্টার করা।
  2. প্যারামিটার সংমিশ্রণ অপ্টিমাইজ করা। স্থিতিশীলতা উন্নত করতে বিভিন্ন পণ্য এবং সময়সীমার মধ্যে nPoint এর আকার সামঞ্জস্য করা।
  3. ডায়নামিক পরামিতিগুলি বিবেচনা করে। বাজারের অস্থিরতার সাথে সামঞ্জস্যপূর্ণভাবে এনপয়েন্টগুলি সামঞ্জস্য করা নির্ভরযোগ্যতা উন্নত করতে পারে।
  4. মেশিন লার্নিং পদ্ধতি অন্তর্ভুক্ত করা। পরামিতি, ফিল্টার এবং ক্রস-পণ্য টাইমিং অপ্টিমাইজেশান এ এআই অ্যালগরিদম ব্যবহার করা।

সিদ্ধান্ত

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


/*backtest
start: 2023-01-12 00:00:00
end: 2024-01-18 00:00:00
period: 1d
basePeriod: 1h
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/
// P-Signal Strategy © Kharevsky
// @version=4
// **********************************************************************************************************
strategy("P-Signal Strategy", precision = 3)
// Parameters and const of P-Signal.
nPoints = input(title = "Number of Bars", type = input.integer, defval = 9, minval = 4, maxval = 100, group = "Parameters of observation.")
int nIntr = nPoints - 1
// Horner's method for the error (Gauss) & P-Signal functions.
fErf(x) =>
    nT = 1.0/(1.0 + 0.5*abs(x))
    nAns = 1.0 - nT*exp(-x*x - 1.26551223 + 
     nT*( 1.00002368 + nT*( 0.37409196 + nT*( 0.09678418 + 
     nT*(-0.18628806 + nT*( 0.27886807 + nT*(-1.13520398 + 
     nT*( 1.48851587 + nT*(-0.82215223 + nT*( 0.17087277 ))))))))))
    x >= 0 ? nAns : -nAns
fPSignal(ser, int) => 
    nStDev = stdev(ser, int)
    nSma = sma(ser, int)
    fErf(nStDev > 0 ? nSma/nStDev/sqrt(2) : 1.0)
// Strat.
float nPSignal = sma(fPSignal(change(ohlc4), nIntr), nIntr)
float ndPSignal = sign(nPSignal[0] - nPSignal[1])
strategy.entry("long", strategy.long, 1, when = nPSignal < 0 and ndPSignal > 0)
strategy.close("long", when = nPSignal > 0 and ndPSignal < 0)
// Plotting. 
hline(+1.0, color = color.new(color.orange,70), linestyle = hline.style_dotted)
hline(-1.0, color = color.new(color.orange,70), linestyle = hline.style_dotted)
plot(nPSignal, color = color.blue, style = plot.style_line)
plot(strategy.position_size, color = color.white, style = plot.style_cross)
// Alerts.
if(strategy.position_size[0] > strategy.position_size[1])
    alert("P-Signal strategy opened the long position: " + syminfo.tickerid + " " + timeframe.period, alert.freq_once_per_bar)
if(strategy.position_size[0] < strategy.position_size[1])
    alert("P-Signal strategy closed the long position: " + syminfo.tickerid + " " + timeframe.period, alert.freq_once_per_bar)
// The end.

আরো