বক্সের বাইরে মেশিন লার্নিং ট্রেডিং কৌশল

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

img

সারসংক্ষেপ

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

কৌশল নীতি

এই কৌশল প্রধানত নিম্নলিখিত মূল পয়েন্ট উপর ভিত্তি করেঃ

  1. বাজারের প্রবণতার দিকনির্দেশনা নির্ধারণের জন্য হুল চলমান গড় ব্যবহার করুন
  2. সংক্ষিপ্ত ও মধ্যমেয়াদী প্রবণতা মূল্যায়নের জন্য EMA ব্যবহার করুন
  3. মূল SUPPORT/RESISTANCE স্তরগুলি সনাক্ত করতে মোমবাতি শরীরের চ্যানেল ব্যবহার করুন
  4. মাল্টি-টাইমফ্রেম সিকিউরিটি থেকে খোলা এবং বন্ধ মূল্যের ক্রসওভারের ভিত্তিতে সিদ্ধান্ত নিন

বিশেষত, কৌশলটি হাল এমএ, ১৩-অবধি ইএমএ, এবং ২১-অবধি ইএমএ প্লট করবে। ইএমএগুলির দীর্ঘ এবং স্বল্প স্থিতির উপর ভিত্তি করে স্বল্প ও মাঝারি মেয়াদী প্রবণতা দিকগুলি বিচার করা। দীর্ঘ চক্রের প্রবণতা নির্ধারণের জন্য হাল এমএ এর সাথে মিলিত। এটি পরবর্তী ট্রেডিং সংকেতগুলির জন্য সাধারণ দিকনির্দেশনা সরবরাহ করে।

পজিশনের সমন্বয় করার আগে, কৌশলটি সমর্থন এবং প্রতিরোধের স্তরের সাথে সামঞ্জস্যপূর্ণ সত্তা চ্যানেলে সর্বোচ্চ এবং সর্বনিম্ন মূল্যগুলিকে উল্লেখ করবে। এটি মূল মূল্য অঞ্চলে ট্রেডিং সংকেত তৈরি করা এড়ায়।

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

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

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

  1. মাল্টি-ইন্ডিক্টর কম্বো সিগন্যালের নির্ভুলতা উন্নত করে

    কৌশলটি কেবল এক বা দুটি সূচকের উপর নির্ভর করে না, তবে প্রবণতা, সমর্থন / প্রতিরোধ এবং মূল্যের অগ্রগতি যেমন একাধিক কারণ বিবেচনা করে। এটি সংকেতগুলির নির্ভরযোগ্যতা এবং নির্ভুলতা ব্যাপকভাবে উন্নত করে।

  2. নমনীয় পরামিতি সেটিংস

    হুল এমএ, ইএমএ সময়কাল, খোলা/বন্ধ ক্রসওভার সময়কালের দৈর্ঘ্যগুলি পরামিতিগুলির মাধ্যমে সামঞ্জস্য করা যেতে পারে, যা কৌশলটিকে বিভিন্ন বাজারের পরিবেশে অভিযোজিত করে।

  3. স্বয়ংক্রিয় ট্রেডিং সংকেত

    সূচক এবং ক্রসওভারের উপর ভিত্তি করে ট্রেডিং সিগন্যালগুলি ম্যানুয়াল বিচার ছাড়াই স্বয়ংক্রিয়ভাবে ক্রয় এবং বিক্রয় শুরু করতে পারে, যা অসুবিধা হ্রাস করে।

  4. প্রদর্শিত প্রদর্শন

    কৌশলটির চার্টগুলি স্পষ্টভাবে বাজারের কাঠামো, প্রবণতার অবস্থা এবং মূল মূল্যগুলি প্রদর্শন করতে পারে, কৌশলগত বিচারের ভিত্তিটি স্বজ্ঞাতভাবে প্রদর্শন করে।

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

যদিও এই কৌশলটি একাধিক দিক থেকে অপ্টিমাইজ করা হয়েছে, তবুও কিছু সম্ভাব্য ঝুঁকি রয়েছেঃ

  1. দামের তীব্র গতিবিধি অনুসরণ করতে ব্যর্থতা

    অস্থির বাজারে, সূচকগুলি অকার্যকর বা বিলম্বিত হতে পারে, যার ফলে কৌশলটি সময়ের সাথে দামের পরিবর্তনগুলি ট্র্যাক করতে ব্যর্থ হয়। এই জাতীয় বাজারের সাথে খাপ খাইয়ে নেওয়ার জন্য পরামিতিগুলি অপ্টিমাইজ করা দরকার।

  2. সিগন্যাল ত্রুটির হার

    সূচক এবং মডেলের উপর ভিত্তি করে ট্রেডিং সিগন্যালগুলিতে কমবেশি কিছু মিথ্যা সংকেত বা অনুপস্থিত সংকেত থাকবে। আরও সহায়ক সংকেত একত্রিত করে এটি উন্নত করা দরকার।

  3. লং/শর্ট মিশ্রিত ঝুঁকি

    একই সময়ে লং এবং শর্ট পজিশন উভয়ই করার কৌশলটি যদি ভুল সিদ্ধান্ত নেয় তবে উভয় পক্ষের ক্ষতির ঝুঁকি রয়েছে। এর জন্য কঠোর স্টপ লস বা কম পজিশন সাইজিং নিয়ন্ত্রণের প্রয়োজন।

  4. অতিরিক্ত ফিটনেস ঝুঁকি

    অত্যধিক জটিল প্যারামিটার সেটিংগুলি ওভারফিটিংয়ের ঝুঁকিতে রয়েছে। প্যারামিটার সংমিশ্রণের সীমাবদ্ধ সংখ্যার সাথে সিস্টেমটিকে সরলীকৃত করা দরকার।

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

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

  1. আরো সূচক সংকেত যোগ করুন

    বিদ্যমান সূচক ছাড়াও, আরও সহায়ক সূচক চালু করা যেতে পারে, যেমন BOLL চ্যানেল, KD সূচক ইত্যাদি, সিস্টেম রেফারেন্স সমৃদ্ধ করতে।

  2. ডিপ লার্নিং মডেল প্রয়োগ করুন

    সিগন্যালের গুণমান উন্নত করার জন্য LSTM এবং অন্যান্য গভীর শেখার মডেলগুলিকে প্রশিক্ষণের জন্য বৈশিষ্ট্য হিসাবে সহজ সূচকগুলি ব্যবহার করুন।

  3. মৌলিক তথ্য অন্তর্ভুক্ত করুন

    দীর্ঘমেয়াদী সিদ্ধান্ত গ্রহণের জন্য ম্যাক্রো ইকোনমিক ডেটা, নীতিগত তথ্য এবং অন্যান্য মৌলিক কারণ যোগ করুন।

  4. ঝুঁকি ও পজিশনের আকার

    স্টপ লস কৌশল প্রবর্তন করুন, ঝুঁকি কঠোরভাবে নিয়ন্ত্রণ করার জন্য কৌশল রিটার্ন অস্থিরতার উপর ভিত্তি করে গতিশীলভাবে অবস্থান আকার সামঞ্জস্য করুন।

সিদ্ধান্ত

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


/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title='Ali Jitu Abus', shorttitle='Ali_Jitu_Abis_Strategy', overlay=true, pyramiding=0, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:',  defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")

//============ signal Generator ==================================//
Period=input('60')
ch1 = request.security(syminfo.tickerid, Period, open)
ch2 = request.security(syminfo.tickerid, Period, close)
longCondition = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

plot(request.security(syminfo.tickerid, Period, close), color=red, title="Period request.security Close")
plot(request.security(syminfo.tickerid, Period, open), color=green, title="Period request.security Open")

///////////////////////////////////////////////////////////////////////////////////////////

আরো