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


সৃষ্টির তারিখ: 2024-01-19 14:28:03 অবশেষে সংশোধন করুন: 2024-01-19 14:28:03
অনুলিপি: 1 ক্লিকের সংখ্যা: 647
1
ফোকাস
1617
অনুসারী

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

ওভারভিউ

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

কৌশল নীতি

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

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

এখানে ser মূল্যের ক্রমকে নির্দেশ করে, int পয়েন্টের সংখ্যাকে নির্দেশ করে, অর্থাৎ কতটি K-রেখা রয়েছে তা দেখুন। এই সূত্রটি তিনটি অংশে বিভক্তঃ

  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-Signal 0 এর চেয়ে ছোট হয় এবং ইতিবাচক পরিবর্তিত হয় তখন বেশি করা; যখন P-Signal 0 এর চেয়ে বড় হয় এবং নেতিবাচক পরিবর্তিত হয় তখন প্লেইন করা।

কৌশলগত সুবিধা

এই কৌশলটির সুবিধাগুলো হলঃ

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

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

এই কৌশলটির কিছু ঝুঁকিও রয়েছে, যেমনঃ

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

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

অপ্টিমাইজেশান দিক

এই কৌশলটি আরও উন্নত করার সুযোগ রয়েছে, যার প্রধান দিকগুলো হলঃ

  1. মিথ্যা সংকেত এড়াতে ফিল্টারিং শর্ত যুক্ত করুন। উদাহরণস্বরূপ, অন্যান্য সূচকগুলির সাথে একত্রিত হয়ে AND বা OR শর্তগুলি করুন এবং কিছু অংশ Noise ফিল্টার করুন।
  2. অপ্টিমাইজেশন প্যারামিটার সমন্বয়। বিভিন্ন জাত এবং সময়কালে nPoints এর আকার সামঞ্জস্য করুন, কৌশল স্থিতিশীলতা উন্নত করুন।
  3. ডায়নামিক প্যারামিটার বিবেচনা করুন। nPoints প্যারামিটারগুলিকে বাজারের অস্থিরতার সাথে সামঞ্জস্য করতে দিন, যা কৌশলটির স্থিতিশীলতা উন্নত করতে পারে।
  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.