পি-সিগন্যাল বিপরীত কৌশল

লেখক:চাওঝাং, তারিখঃ 2024-01-29 14:44:56
ট্যাগঃ

img

সারসংক্ষেপ

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

কৌশলগত নীতি

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

কৌশল পরামিতিগুলির মধ্যে রয়েছে কার্ডিন্যালিটি, ΔErf এবং পর্যবেক্ষণ সময়। কার্ডিন্যালিটি নমুনার আকার নিয়ন্ত্রণ করে, ΔErf ট্রেডিং ফ্রিকোয়েন্সি হ্রাস করার জন্য ত্রুটি ফাংশনের মৃত ব্যান্ড নিয়ন্ত্রণ করে। পর্যবেক্ষণ সময় কৌশল শুরু সময় নিয়ন্ত্রণ করে।

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

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

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

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

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

নমুনার আকার বাড়ানোর জন্য কার্ডিনালিটি প্যারামিটার বৃদ্ধি করা ডেটা অস্বাভাবিকতার প্রভাব হ্রাস করতে পারে। ট্রেডিং ফ্রিকোয়েন্সি হ্রাস করার জন্য ΔErf পরিসীমা যথাযথভাবে প্রসারিত করা ঝুঁকি নিয়ন্ত্রণ করতে সহায়তা করে।

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

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

  1. অস্বাভাবিক সংকেতগুলি ফিল্টার করার জন্য অন্যান্য সূচকগুলি অন্তর্ভুক্ত করুন, যেমন ভলিউমের তীব্র বৃদ্ধি।

  2. বিচার স্থিতিশীলতা বাড়াতে একাধিক সময়সীমার মধ্যে সংকেত যাচাই করুন।

  3. একক ক্ষতি হ্রাস করার জন্য স্টপ লস কৌশল বাড়ান।

  4. সর্বোত্তম সমন্বয় খুঁজে পেতে এবং লাভজনকতা বাড়ানোর জন্য পরামিতিগুলি অপ্টিমাইজ করুন।

  5. গতিশীল পরামিতি সমন্বয় জন্য মেশিন লার্নিং অন্তর্ভুক্ত।

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

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


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// **********************************************************************************************************
// 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 RVS © Kharevsky
// **********************************************************************************************************
strategy('P-Signal Strategy RVS.', precision=3, process_orders_on_close=true, pyramiding=0, 
     commission_type=strategy.commission.percent,
     commission_value=0.2)
// Parameters and const of P-Signal.
nPoints = input.int(title='Cardinality:', defval=4, minval=4, maxval=200, group='Parameters of strategy.')
ndErf = input.float(title='|ΔErf|:', defval=0, minval=0, maxval=1, step=0.01, group='Parameters of strategy.')
tStartDate = input(title='Start date:', defval=timestamp('30 Dec 1957 00:00 +0300'), group='Observation time.')
int nIntr = nPoints - 1
// Horner's method for the error (Gauss) & P-Signal functions.
fErf(x) =>
    nT = 1.0 / (1.0 + 0.5 * math.abs(x))
    nAns = 1.0 - nT * math.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 = ta.stdev(ser, int)
    nSma = ta.sma(ser, int)
    nStDev > 0 ? fErf(nSma / nStDev / math.sqrt(2)) : math.sign(nSma)
// Data.
float nPSignal = ta.sma(fPSignal(ta.change(ohlc4), nIntr), nIntr)
float ndPSignal = math.sign(nPSignal[0] - nPSignal[1])
bool isStartDate = true
// Reversal Strategy.
strategy.entry('short', strategy.short, when=isStartDate and nPSignal > ndErf and ndPSignal < 0)
strategy.entry('long', strategy.long, when=isStartDate and nPSignal < -ndErf and ndPSignal > 0)
// Plotting. 
hline(+1.0, color=color.new(color.orange, 70), linestyle=hline.style_dotted, editable=false)
hline(-1.0, color=color.new(color.orange, 70), linestyle=hline.style_dotted, editable=false)
hline(-ndErf, color=color.new(color.orange, 70), linestyle=hline.style_dotted, editable=false)
hline(ndErf, color=color.new(color.orange, 70), linestyle=hline.style_dotted, editable=false)
plot(nPSignal, color=color.new(color.blue, 0), style=plot.style_line)
// Table of state.
if barstate.isconfirmed
    var Table = table.new(position=position.bottom_right, columns=3, rows=1, 
     frame_color=color.new(color.orange, 70), frame_width=1, 
     border_color=color.new(color.orange, 70), border_width=1)
    table.cell(table_id=Table, column=0, row=0, 
     text=strategy.position_size > 0 ? 'Long: ' + str.tostring(strategy.position_size) : 'Short: ' + str.tostring(strategy.position_size), 
     text_color=strategy.position_size > 0 ? color.green : color.red)
    table.cell(table_id=Table, column=1, row=0, 
     text='Net P/L: ' + str.tostring(strategy.netprofit, '#.#'), 
     text_color=strategy.netprofit > 0 ? color.green : color.red)
    table.cell(table_id=Table, column=2, row=0, 
     text='Open P/L: ' + str.tostring(strategy.openprofit, '#.#'), 
     text_color=strategy.openprofit > 0 ? color.green : color.red)
// The end.



আরো