রিসোর্স লোড হচ্ছে... লোডিং...

ডাবল চ্যানেল রান্নাঘর - সম্পদ বৃদ্ধির উপর দৃষ্টি নিবদ্ধ করে অ্যালগরিদম ট্রেডিং কৌশল

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

সারসংক্ষেপ

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

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

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

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

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

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

কৌশলটির সুবিধা

  • একাধিক সময়সীমার উপর সূচক ব্যবহার করে মিথ্যা সংকেত ফিল্টার করতে সাহায্য করে
  • প্রবণতা এবং অতিরিক্ত ক্রয়/অতিরিক্ত বিক্রয় বিশ্লেষণের জন্য সুপারট্রেন্ড এবং স্টকআরএসআই এর শক্তির সংমিশ্রণ
  • পুনরায় পরীক্ষা অপ্রয়োজনীয় লেনদেন এড়ায়
  • মাঝারি থেকে দীর্ঘমেয়াদী লেনদেন অত্যধিক লেনদেন এবং স্লিপিং এড়াতে
  • সহজেই বোঝা যায় ডুয়াল-ইন্ডিক্টর সেটআপ, নমনীয় প্যারামিটার টিউনিং সহ

কৌশলটির ঝুঁকি

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

উন্নতিঃ

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

উন্নতির ক্ষেত্র

  • মাল্টি-স্টেজ স্ক্রিনিংয়ের জন্য বিভিন্ন সময়সীমার মধ্যে আরও সুপারট্রেন্ড সূচক যুক্ত করুন
  • StochRSI এর পরিবর্তে অন্য overbought/oversold সূচক ব্যবহার করুন যেমন KD, RSI
  • ট্রেন্ড চালানোর জন্য ট্রেলিং স্টপ লস কৌশল অন্তর্ভুক্ত করুন
  • প্রধান প্রবণতা নির্ধারণের জন্য মূল চলমান গড়গুলি একত্রিত করুন, যেমন 30 পিরিয়ডের এমএ
  • স্থিতিশীলতার জন্য অটো প্যারামিটার অপ্টিমাইজেশান বিকাশ করুন

সিদ্ধান্ত

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


/*backtest
start: 2023-09-09 00:00:00
end: 2023-10-09 00:00:00
period: 4h
basePeriod: 15m
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/
// © Baby_whale_to_moon

//@version=5
strategy('Kitchen [ilovealgotrading]', overlay=true, format=format.price, initial_capital = 1000)

// BACKTEST DATE
Start_Time = input(defval=timestamp('01 January 2017 13:30 +0000'), title='Start_Time', group = " ################# BACKTEST DATE ################ " )
End_Time = input(defval=timestamp('30 April 2024 19:30 +0000'), title='End_Time', group = " ################# BACKTEST DATE ################ " )

// supertrend 
atrPeriod = input(10, 'ATR Length', group = " #################  Supertrend  ################ ")
factor = input(3, 'Factor', group = " #################  Supertrend  ################ ")

time1 = input.string(title='Short Time Period', defval='07 1h', options=['01 1m','02 3m','03 5m',  '04 15m', '05 30m', '06 45m', '07 1h', '08 2h', '09 3h', '10 4h', '11 1D', '12 1W' ], group = " #################  Supertrend  ################ ",tooltip = "this timeframe is the value of our short-time supertrend indicator")
time2 = input.string(title='Long Time Period', defval='10 4h', options=[ '01 1m','02 3m','03 5m', '04 15m', '05 30m', '06 45m', '07 1h', '08 2h', '09 3h', '10 4h', '11 1D', '12 1W' ], group = " #################  Supertrend  ################ ",tooltip = "this timeframe is the value of our long-time supertrend indicator")


res(Resolution) =>
    if Resolution == '00 Current'
        timeframe.period
    else
        if Resolution == '01 1m'
            '1'
        else
            if Resolution == '02 3m'
                '3'
            else
                if Resolution == '03 5m'
                    '5'
                else
                    if Resolution == '04 15m'
                        '15'
                    else
                        if Resolution == '05 30m'
                            '30'
                        else
                            if Resolution == '06 45m'
                                '45'
                            else
                                if Resolution == '07 1h'
                                    '60'
                                else
                                    if Resolution == '08 2h'
                                        '120'
                                    else
                                        if Resolution == '09 3h'
                                            '180'
                                        else
                                            if Resolution == '10 4h'
                                                '240'
                                            else
                                                if Resolution == '11 1D'
                                                    '1D'
                                                else
                                                    if Resolution == '12 1W'
                                                        '1W'
                                                    else
                                                        if Resolution == '13 1M'
                                                            '1M'


// supertrend Long time period 
[supertrend2, direction2] = request.security(syminfo.tickerid, res(time2), ta.supertrend(factor, atrPeriod))
bodyMiddle4 = plot((open + close) / 2, display=display.none)
upTrend2 = plot(direction2 < 0 ? supertrend2 : na, 'Up Trend', color=color.new(color.green, 0), style=plot.style_linebr, linewidth=2)
downTrend2 = plot(direction2 < 0 ? na : supertrend2, 'Down Trend', color=color.new(color.red, 0), style=plot.style_linebr, linewidth=2)

// supertrend short time period 
[supertrend1, direction1] = request.security(syminfo.tickerid, res(time1), ta.supertrend(factor, atrPeriod))
bodyMiddle = plot((open + close) / 2, display=display.none)
upTrend = plot(direction1 < 0 ? supertrend1 : na, 'Up Trend', color=color.new(color.yellow, 0), style=plot.style_linebr)
downTrend = plot(direction1 < 0 ? na : supertrend1, 'Down Trend', color=color.new(color.orange, 0), style=plot.style_linebr)


// Stochastic RSI
low_limit_stoch_rsi = input.float(title = 'Stoch Rsi Low Limit', step=0.5, defval=15, group = " #################  Stoch RSI   ################ ", tooltip = "when Stock rsi value crossover Low Limit value we get Long")
up_limit_stoch_rsi = input.float(title = 'Stoch Rsi Up Limit', step=0.5, defval=85, group = " #################  Stoch RSI   ################ ", tooltip = "when Stock rsi value crossunder Up Limit value we get Short")
stocrsi_back_length = input.int(20, 'Stoch Rsi retroactive length', minval=1, group = " #################  Stoch RSI   ################ ", tooltip = "How many candles are left behind, even if there is a buy or sell signal, it will be valid now")
smoothK = input.int(3, 'Stochastic RSI K', minval=1, group = " #################  Stoch RSI   ################ ")
lengthRSI = input.int(14, 'RSI Length', minval=1, group = " #################  Stoch RSI   ################ ")
lengthStoch = input.int(14, 'Stochastic Length', minval=1, group = " #################  Stoch RSI   ################ ")
src_rsi = input(close, title='RSI Source', group = " #################  Stoch RSI   ################ ")
rsi1 = request.security(syminfo.tickerid, '240', ta.rsi(src_rsi, lengthRSI))
k = request.security(syminfo.tickerid, '240', ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK))

// Strategy settings 
dollar = input.float(title='Dollar Cost Per Position ', defval=20000, group = " #################  Strategy Settings  ################ ")
trade_direction = input.string(title='Trade_direction', group = " #################  Strategy Settings  ################ ", options=['LONG', 'SHORT', 'BOTH'], defval='BOTH')
Long_message_open = input('Long Open', title = "Long Open Message", group = " #################  Strategy Settings  ################ ", tooltip = "if you write your alert window this code {{strategy.order.alert_message}} .When trigger Long signal you will get dynamically what you pasted here for Long Open Message ")
Short_message_open = input('Short Open', title = "Short Open Message", group = " #################  Strategy Settings  ################ ", tooltip = "if you write your alert window this code {{strategy.order.alert_message}} .When trigger Long signal you will get dynamically what you pasted here for Short Open Message ")
Long_message_close = input('Long Close', title = "Long Close Message", group = " #################  Strategy Settings  ################ ", tooltip = "if you write your alert window this code {{strategy.order.alert_message}} .When trigger Long signal you will get dynamically what you pasted here for Long Close Message ")
Short_message_close = input('Short Close', title = "Short Close Message", group = " #################  Strategy Settings  ################ ", tooltip = "if you write your alert window this code {{strategy.order.alert_message}} .When trigger Long signal you will get dynamically what you pasted here for Short Close Message ")

Time_interval = true
bgcolor(Time_interval ? color.rgb(255, 235, 59, 95) : na)

back_long = 0
back_short = 0

for i = 1 to stocrsi_back_length by 1
    if ta.crossover(k, low_limit_stoch_rsi)[i] == true 
        back_long += i
        back_long
    if ta.crossunder(k, up_limit_stoch_rsi)[i] == true 
        back_short += i
        back_short

// bgcolor(back_long>0?color.rgb(153, 246, 164, 54):na)
// bgcolor(back_short>0?color.rgb(246, 153, 153, 54):na)

buy_signal = false
sell_signal = false

if direction2 < 0 and direction1 < 0 and back_long > 0
    buy_signal := true
    buy_signal

if direction2 > 0 and direction1 > 0 and back_short > 0
    sell_signal := true
    sell_signal


//bgcolor(buy_signal  ? color.new(color.lime,90) : na ,title="BUY bgcolor")
plotshape( buy_signal[1] == false and  strategy.opentrades == 0 and Time_interval and buy_signal  ? supertrend2 : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white)

//bgcolor(sell_signal  ? color.new(color.red,90) : na ,title="SELL bgcolor")
plotshape(sell_signal[1] == false and strategy.opentrades == 0 and Time_interval and sell_signal  ? supertrend2 : na , title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white)


// Strategy entries 
if strategy.opentrades == 0 and Time_interval and buy_signal and ( trade_direction == 'LONG' or trade_direction == 'BOTH')
    strategy.entry('Long_Open', strategy.long, qty=dollar / close, alert_message=Long_message_open)

if strategy.opentrades == 0 and Time_interval and sell_signal and ( trade_direction == 'SHORT' or trade_direction == 'BOTH')
    strategy.entry('Short_Open', strategy.short, qty=dollar / close, alert_message=Short_message_open)


// Strategy Close
if close < supertrend1 and strategy.position_size > 0 
    strategy.exit('Long_Close',from_entry = "Long_Open", stop=close, qty_percent=100, alert_message=Long_message_close)

if close > supertrend1 and strategy.position_size < 0 
    strategy.exit('Short_Close',from_entry = "Short_Open", stop=close, qty_percent=100, alert_message=Short_message_close)



আরো