
পি-সিগন্যাল মাল্টি-টাইম ফ্রেম ট্রেডিং কৌশল একটি ডিজিটাল মুদ্রা অ্যালগরিদম ট্রেডিং কৌশল যা পরিসংখ্যানগত নীতির উপর ভিত্তি করে এবং মাল্টি-টাইম ফ্রেম বিশ্লেষণের সাথে মিলিত। এই কৌশলটি গাউস ত্রুটি ফাংশন এবং পি-সিগন্যাল সূচককে বিটকয়েনের সূর্য, ঘূর্ণন এবং চাঁদের লাইনের সাথে মডেল ফিট করে, সূচকটি গোল্ডফোর্ক ওভার এবং ডেডফোর্ক ওভারের উপর ভিত্তি করে অস্থিরতা ট্রেডিংয়ের জন্য।
পি-সিগন্যাল কৌশলটির কেন্দ্রীয় সূচক হল পি-সিগন্যাল, যা পরিসংখ্যানগত স্ট্যান্ডার্ড ডিভার্জেন্স এবং সরল চলমান গড়ের সমন্বয় করে, যা গাউস ত্রুটি ফাংশন দ্বারা -1 থেকে 1 এর মধ্যে ম্যাপ করা হয়, যা বাজারের সঠিকভাবে বিতরণ করা হয় কিনা তা সনাক্ত করতে ব্যবহৃত হয়।
fErf(x) = 1.0 - 1.0/(1.0 + 0.5*abs(x)) * exp(-x*x - 1.26551223 + ...) # 高斯误差函数
fPSignal(ser, n) = fErf((stdev(ser, n) > 0 ? sma(ser, n)/stdev(ser, n)/sqrt(2) : 1)) # P-Signal指标
এই কৌশলটি সূর্য, ঘূর্ণিপথ এবং চাঁদের সময় ফ্রেমে পৃথকভাবে পি-সিগন্যাল সূচক গণনা করে, যখন সূচকটি 0 অক্ষ অতিক্রম করে তখন এটি বেশি হয় এবং 0 অক্ষ অতিক্রম করার সময় এটি প্লেইন হয়। একই সাথে সূচক মানের ভ্যালু নিয়ন্ত্রণ পুনরাবৃত্তি পজিশন খোলার সেট করুন।
পি-সিগন্যাল কৌশলটির সবচেয়ে বড় সুবিধা হ’ল কৌশলগত স্থায়িত্ব বাড়ানোর জন্য একাধিক সময় ফ্রেম ব্যবহার করা। সূর্যের রেখাটি বাজারের স্বল্পমেয়াদী ওঠানামা ধরে, সাপ্তাহিক-মাসিক লাইনটি ছদ্মবেশে ভেঙে যায়। একই সাথে, পি-সিগন্যাল সূচকটির নিজস্ব কিছু পূর্বাভাস ক্ষমতা রয়েছে যা প্রবণতাপূর্ণ আচরণের ওঠানামা বাড়িয়ে তুলতে পারে।
একক টাইম ফ্রেমের তুলনায়, মাল্টি টাইম ফ্রেমগুলি প্রত্যাহারের সময় সূচকের ক্ষতির সুযোগ নেয় এবং উচ্চতর টাইম ফ্রেমগুলি অস্থিরতার সময় ট্রেডিং ফ্রিকোয়েন্সি হ্রাস করে। সামগ্রিকভাবে, এই সংমিশ্রণটি মুনাফা নিশ্চিত করার সাথে সাথে সর্বনিম্ন পরম এবং আপেক্ষিক প্রত্যাহারকে হ্রাস করতে পারে।
পি-সিগন্যাল কৌশলটির সবচেয়ে বড় ঝুঁকি হ’ল সূচকটি নিজেই পরিমাণগত ব্যবসায়ীদের জন্য একটি কালো বাক্স। নির্দিষ্ট বাজারের জন্য সূচকটির উপযুক্ততা নির্ধারণ করা আমাদের পক্ষে কঠিন, এবং এর পরামিতিগুলির সর্বোত্তম পরিসীমা নির্ধারণ করাও অসম্ভব। এটি রিয়েল এস্টেটে কৌশলটির দুর্বল পারফরম্যান্সের কারণ হতে পারে।
এছাড়াও, কৌশল নিজেই কিছু সীমাবদ্ধতা রয়েছে। যেমন তীব্র পরিস্থিতি পরিচালনা করতে অক্ষমতা, সূচক বৈষম্য ট্রেডিং সংকেত হিসাবে বিলম্বিত হতে পারে ইত্যাদি। এই সমস্যাগুলি রিয়েল-টাইমে লুকানো ঝুঁকি হতে পারে।
এই সমস্যাগুলি সমাধান করার জন্য, আমরা সূচক প্যারামিটারগুলিকে সামঞ্জস্য করতে পারি, স্টপ লস পদ্ধতিটি অপ্টিমাইজ করতে পারি, আরও সহায়ক সূচকগুলি প্রবর্তন করতে পারি ইত্যাদি। তবে যথেষ্ট পরিমাণে রিটার্নিং অঞ্চলে কৌশলটির স্থিতিশীলতা যাচাই করার শর্তে।
পি-সিগন্যালের নীতিমালার কয়েকটি দিক রয়েছে যা উন্নত করা যেতে পারেঃ
পি-সিগন্যাল সূচকের প্যারামিটারগুলি প্রতিস্থাপন করুনঃ nIntr_D, nIntr_W এবং nIntr_M, সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে বের করুন
ক্ষতির পরিমাণ বাড়ানোর উপায়ঃ ট্র্যাকিং ক্ষতি, সময় ক্ষতি, এটিআর ক্ষতি, ইত্যাদি, সর্বোত্তম ক্ষতির উপায় খুঁজে বের করুন
সহায়ক সূচক প্রবর্তন করাঃ নির্দিষ্ট পরিস্থিতির বিচার করার ক্ষমতা বাড়ানোর কৌশল, যেমন MACD বিচার প্রবণতা প্রবর্তন করা
পজিশন ম্যানেজমেন্ট অপ্টিমাইজ করুনঃ গতিশীল পজিশন সেট আপ করুন, তহবিল ব্যবহারের দক্ষতা অপ্টিমাইজ করুন
মেশিন লার্নিং অপ্টিমাইজেশান প্যারামিটারঃ নিউরাল নেটওয়ার্ক, জেনেটিক অ্যালগরিদম ইত্যাদি ব্যবহার করে প্যারামিটারগুলিকে সর্বজনীন সর্বোত্তম হিসাবে সন্ধান করুন
পি-সিগন্যাল মাল্টি টাইম ফ্রেম ট্রেডিং কৌশল সামগ্রিকভাবে একটি খুব সম্ভাব্য কৌশলগত ধারণা। এটি পরিসংখ্যানগত নীতিগুলি এবং প্রযুক্তিগত সূচকগুলির সাথে মিলিত করে, মাল্টি টাইম ফ্রেম বিশ্লেষণের মাধ্যমে স্থিতিশীলতা বাড়ায়। যদি আমরা প্রচুর পরিমাণে প্রতিক্রিয়া এবং অপ্টিমাইজেশনের মাধ্যমে কিছু সীমাবদ্ধতা সমাধান করতে পারি তবে এটি সত্যিকারের ব্যবহারযোগ্য ডিজিটাল মুদ্রা অ্যালগরিদম ট্রেডিং কৌশলগুলিতে রূপান্তরিত হওয়ার সম্পূর্ণ সম্ভাবনা রয়েছে।
/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 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
// A good strategy should be able to handle backtesting.
// @version=4
// **********************************************************************************************************
strategy("P-Signal Strategy:", precision = 3, pyramiding = 3)
//
// Parameters and const of P-Signal.
//
nPoints_D = input(title = "Number of D Bars", type = input.integer, defval = 9, minval = 4, maxval = 100, group = "Parameters of observation.")
nPoints_W = input(title = "Number of W Bars", type = input.integer, defval = 4, minval = 4, maxval = 100, group = "Parameters of observation.")
nPoints_M = input(title = "Number of M Bars", type = input.integer, defval = 6, minval = 4, maxval = 100, group = "Parameters of observation.")
int nIntr_D = nPoints_D - 1
int nIntr_W = nPoints_W - 1
int nIntr_M = nPoints_M - 1
bool bDValveOpen = true
bool bWValveOpen = true
bool bMValveOpen = true
//
// 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)
//
// Signals for the strategy.
//
float nPSignal_D = sma(fPSignal(change(ohlc4), nIntr_D), nIntr_D)
float ndPSignal_D = sign(nPSignal_D[0] - nPSignal_D[1])
//
float nPSignal_W = sma(security(syminfo.tickerid, "W",fPSignal(change(ohlc4), nIntr_W)), nIntr_W)
float ndPSignal_W = sign(nPSignal_W[0] - nPSignal_W[1])
//
float nPSignal_M = sma(security(syminfo.tickerid, "M",fPSignal(change(ohlc4), nIntr_M)), nIntr_M)
float ndPSignal_M = sign(nPSignal_M[0] - nPSignal_M[1])
//
// P-Signal 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_D, color = color.blue, style = plot.style_line)
//
// Multi Frame Strategy
// ... Day
if(nPSignal_D < 0 and ndPSignal_D > 0 and bDValveOpen)
strategy.entry("long_D", strategy.long, 1)
bDValveOpen := false
if(nPSignal_D > 0 and ndPSignal_D < 0)
strategy.close("long_D")
bDValveOpen := true
// ... Week
if(nPSignal_W < 0 and ndPSignal_W > 0 and bWValveOpen)
strategy.entry("long_W", strategy.long, 1)
bWValveOpen := false
if(nPSignal_W > 0 and ndPSignal_W < 0)
strategy.close("long_W")
bWValveOpen := true
// ... Month
if(nPSignal_M < 0 and ndPSignal_M > 0 and bMValveOpen)
strategy.entry("long_M", strategy.long, 1)
bMValveOpen := false
if(nPSignal_M > 0 and ndPSignal_M < 0)
strategy.close("long_M")
bMValveOpen := true
// The end.