কানেকটিকাট সামুদ্রিক কচ্ছপ ব্যবস্থা


সৃষ্টির তারিখ: 2023-11-06 10:23:12 অবশেষে সংশোধন করুন: 2023-11-06 10:23:12
অনুলিপি: 1 ক্লিকের সংখ্যা: 663
1
ফোকাস
1617
অনুসারী

কানেকটিকাট সামুদ্রিক কচ্ছপ ব্যবস্থা

ওভারভিউ

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

কৌশল নীতি

  • N1 এবং N2 তারিখের লাইনগুলি ব্যবহার করে সর্বোচ্চ মূল্য গণনা করুন (ডিফল্ট 20 তম এবং 55 তম) দ্বৈত সমান্তরাল লাইন তৈরি করুন।
  • ন্যূনতম মূল্য গণনা N3 তারিখ এবং N4 তারিখ (ডিফল্ট 10 তম এবং 20 তম) ব্যবহার করে একটি দ্বিগুণ সমান্তরাল লাইন তৈরি করুন।
  • যখন ক্লোজ-আপ মূল্য N2 লাইনের উপরে থাকে, তখন বেশি করুন; যখন ক্লোজ-আপ মূল্য N4 লাইনের নিচে থাকে, তখন প্লেইন করুন।
  • প্রতিবারই N গুণ ATR (ডিফল্ট 1 গুণ) এবং সর্বোচ্চ 5 গুণ পর্যন্ত বাড়ানো হয়।
  • একটি ফিক্সড স্টপ সেট করুন, ডিফল্টরূপে প্রবেশ মূল্যের নীচে N গুণ ATR (ডিফল্ট 2 গুণ) ।
  • নতুন পজিশনে প্রবেশের অনুমতি দেওয়া হয় শুধুমাত্র যদি পূর্বের লেনদেনটি জিতে যায়।

সামর্থ্য বিশ্লেষণ

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

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

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

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

  • ট্রেন্ডের বিপরীতমুখী প্রবণতা সময়মতো বন্ধ না করা, বড় ক্ষতি হতে পারে।
  • অনেকবার আমানত জমা রাখার ফলে অতিরিক্ত লেনদেনের ঝুঁকি রয়েছে।
  • ভুল প্যারামিটার সেটিং সিস্টেমকে অত্যধিক র্যাডিক্যাল বা রক্ষণশীল করে তুলতে পারে।
  • পুনরুদ্ধারের তথ্য সামঞ্জস্যের ঝুঁকি রয়েছে, যা পুনরুদ্ধারের চেয়ে কম কার্যকর হতে পারে।

নিম্নলিখিত উপায়ে ঝুঁকি কমাতে পারেনঃ

  • বিপরীত সিগন্যালের বিচার বাড়ানো, যেমন MACD বিপরীতমুখী, প্রতিবন্ধকতা হ্রাস করা।
  • প্যারামিটারগুলিকে অপ্টিমাইজ করুন যাতে সিস্টেমের প্যারামিটারগুলি শক্তিশালী হয়।
  • পজিশন সাইজিং পদ্ধতি বাড়ানো। বড় ক্ষতি হলে পজিশন কমিয়ে দেওয়া।

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

এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ

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

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Turtle", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1, pyramiding=5)

stopInput = input(2.0, "Stop N", step=.5)
pyramidInput = input(1, "Pyramid N", step=.5)
l1LongInput = input(20, "L1 Long", minval=5)
l2LongInput = input(55, "L2 Long", minval=5)
l1LongExitInput = input (10, "L1 Long Exit", minval=5)
l2LongExitInput = input (20, "L2 Long Exit", minval=5)

FromYear = input(2000, "From Year", minval=1900),   FromMonth = input(1, "From Month", minval=1, maxval=12),    FromDay = input(1, "From Day", minval=1, maxval=31)
ToYear = input(9999, "To Year", minval=1900),       ToMonth = input(1, "To Month", minval=1, maxval=12),        ToDay = input(1, "To Day", minval=1, maxval=31)
FromDate = timestamp(FromYear, FromMonth, FromDay, 00, 00),     ToDate = timestamp(ToYear, ToMonth, ToDay, 23, 59)
TradeDateIsAllowed() => time >= FromDate and time <= ToDate
l1Long = highest(l1LongInput)
l1LongExit = lowest(l1LongExitInput)
l2Long = highest(l2LongInput)
l2LongExit = lowest(l2LongExitInput)

// 
// ADX, +-DI
// https://www.tradingview.com/script/rlMJ05yl-ADX-and-DI-pine-script-3-0/
//
len = 14
th = 20
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedTrueRange = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = 0.0
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus

DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)

// Back to Turtle

filter = true // not (DIPlus < ADX and DIMinus < ADX) and DIPlus > DIMinus
var win = false
var totalPrice = 0.0
var buyPrice = 0.0
var avgPrice = 0.0
var nextBuyPrice = 0.0
var stopPrice = 0.0
var totalBuys = 0

var bool inBuy = false
var float l1LongPlot = highest(l1LongInput)
var float l2LongPlot = highest(l2LongInput)

n = atr(14)

var mode = 'L1'
string longLevel = na

if not inBuy 
    l1LongPlot := highest(l1LongInput)[1]
    l2LongPlot := highest(l2LongInput)[1]
    
    if (close > l2Long[1] and filter)
        mode := 'L2'
        if TradeDateIsAllowed() 
            strategy.close_all()
            strategy.entry("long", strategy.long, comment="L2")
            longLevel := 'L2'

        win := false
        buyPrice := close
        totalBuys := 1
        totalPrice := buyPrice
        avgPrice := buyPrice
        stopPrice := close-(stopInput*n)
        nextBuyPrice := high+(pyramidInput*n)
        inBuy := true
    else 
        if (close > l1Long[1] and filter)
            mode := 'L1'
            if not win
                if TradeDateIsAllowed()
                    strategy.close_all()
                    strategy.entry("long", strategy.long, comment="L1")
                    longLevel := 'L1'
            win := false
            buyPrice := close
            totalBuys := 1
            totalPrice := buyPrice
            avgPrice := buyPrice
            stopPrice := close-(stopInput*n)
            nextBuyPrice := high+(pyramidInput*n)
            inBuy := true
        else 
            inBuy := false

else
    l1LongPlot := l1LongPlot[1]
    l2LongPlot := l2LongPlot[1]
    
    if close > nextBuyPrice and TradeDateIsAllowed() and totalBuys < 6
        strategy.entry("long", strategy.long, comment="LP")
        longLevel := 'P'
        stopPrice := close-(stopInput*n)
        nextBuyPrice := high+(pyramidInput*n)
        totalBuys := totalBuys + 1
        totalPrice := totalPrice + buyPrice
        avgPrice := totalPrice / totalBuys

    if (close < stopPrice) 
        inBuy := false
        if TradeDateIsAllowed()
            if (close >= avgPrice)
                longLevel := 'SG'
            else 
                longLevel := 'SR'
            strategy.close("long", strategy.long)
        win := false
        buyPrice := 0
        avgPrice := 0
    else
        if (mode == 'L1' and close > l2Long[1] and filter)
            if win
                inBuy := true
                win := false
                mode := 'L2'
                if TradeDateIsAllowed()
                    strategy.close_all()
                    longLevel := 'L2'
                    strategy.entry("long", strategy.long, comment="L2")
                buyPrice := close
                totalBuys := 1
                totalPrice := buyPrice
                avgPrice := buyPrice
                stopPrice := close-(stopInput*n)
                nextBuyPrice := close+(pyramidInput*n)
        else
            if (close < l1LongExit[1] or close < l2LongExit[1])
                inBuy := false
                if TradeDateIsAllowed()
                    strategy.close("long", strategy.long)
                if close < avgPrice
                    longLevel := 'SR'
                    win := false
                else
                    longLevel := 'SG'
                    win := true
                buyPrice := 0

plot(l1LongPlot, title="l1 long", linewidth=3, style=plot.style_stepline, color=color.green)
plot(l1LongExit[1], title="l1 exit", linewidth=3, style=plot.style_stepline, color=color.red)

plot(l2LongPlot, title="l2 long", linewidth=2, style=plot.style_stepline, color=color.green)
plot(l2LongExit[1], title="l2 exit", linewidth=2, style=plot.style_stepline, color=color.red)

plot(stopPrice, title="stop", linewidth=2, style=plot.style_stepline, color=color.purple)

plotarrow(longLevel == 'L1' ? 1 : 0, colordown=color.black, colorup=color.green, transp=40)
plotarrow(longLevel == 'L2' ? 1 : 0, colordown=color.black, colorup=color.purple, transp=40)
plotarrow(longLevel == 'SR' ? -1 : 0, colordown=color.red, colorup=color.purple, transp=40)
plotarrow(longLevel == 'SG' ? -1 : 0, colordown=color.green, colorup=color.purple, transp=40)