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

আপট্রেন্ড এবং ওভারসোল্ড ইনডেক্স সুইং ট্রেডিং সিস্টেম কৌশল

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

I11L হাইপারট্রেন্ডের সাথে রাইডিং ট্রেন্ডস এবং গড় বিপরীত

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

কৌশল কিভাবে কাজ করে

এর প্রধান উপাদানগুলির মধ্যে রয়েছেঃ

  • ২০টি সময়ের মধ্যে EMAs/SMAs এর তুলনা করে স্কোরিং সিস্টেম
  • উচ্চ স্কোর আপট্রেন্ডের ইঙ্গিত দেয়, নিম্ন স্কোর ওভারসোল্ডের অবস্থা নির্দেশ করে
  • প্রবেশ/প্রস্থান সংকেত হিসাবে ব্যবহৃত স্কোরগুলির ক্রসওভার
  • খোলা মুনাফা রক্ষার জন্য স্টপ লস
  • প্রবেশ মূল্যের উপর ভিত্তি করে স্থির লাভের লক্ষ্যমাত্রা

যখন স্কোর ক্রসওভার হয়, তখন ওভারসোল্ড রিভার্সনে লং প্রবেশ করা হয়। যখন স্কোর ক্রসওভার হয় তখন শর্ট নেওয়া হয়।

একটি ট্রেলিং স্টপ মুনাফা বন্ধ করে দেয়, যখন লাভ গ্রহণ একটি সংজ্ঞায়িত ঝুঁকি / পুরস্কারের গুণে প্রস্থান করে।

আই১১এল সিস্টেমের সুবিধা

এই পদ্ধতির প্রধান সুবিধাগুলো হল:

  • সংমিশ্রণ মানে বিপরীতমুখী এবং প্রবণতা অনুসরণ
  • স্কোরিং বাজারের পরিবর্তিত অবস্থার সাথে মানিয়ে নেয়
  • একাধিক সময়সীমার মধ্যে পরিবর্তনের পয়েন্ট চিহ্নিত করা হয়
  • ট্রেলিং স্টপ ট্রেড ম্যানেজমেন্টকে স্বয়ংক্রিয় করে
  • শক্তিশালী প্রবণতায় কম্পাউন্ডিং রিটার্ন বাড়ায়

ডায়নামিক স্কোরিং সিস্টেম বিপরীতমুখী এবং ব্রেকআউট উভয় ট্রেডিংয়ের জন্য মূল্যবান অন্তর্দৃষ্টি প্রদান করে।

সম্ভাব্য দুর্বলতা ও ঝুঁকি

যাইহোক, কিছু সীমাবদ্ধতা রয়েছেঃ

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

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

কী টিউনিং প্যারামিটার

কিছু মূল ইনপুট যা অপ্টিমাইজ করা যেতে পারেঃ

  • স্কোরিং সিস্টেমে EMA/SMA-র সংখ্যা
  • গড় সময়ের দৈর্ঘ্য
  • অতিরিক্ত বিক্রয়/উপরে প্রবণতা ক্রসওভারের প্রান্তিক সীমা
  • মূল্য থেকে স্টপ লস দূরত্ব
  • লাভের ঝুঁকি/উপার্জনের গুণক

শক্তিশালী কৌশলগুলি ষাঁড়, ভালুক এবং পরিসীমা-সীমাবদ্ধ বাজারগুলির পারফরম্যান্সকে ভারসাম্যপূর্ণ করে। কঠোর ওয়াক-ফরোয়ার্ড টেস্টিং কার্ভ ফিটিং রোধ করে।

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

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


/*backtest
start: 2023-01-01 00:00:00
end: 2023-04-15 00:00:00
period: 8h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// strategy("I11L Hypertrend",overlay=false, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00)
strategy.initial_capital=50000
tradingMode = input.string("Oversold or Trend", "Trading Mode", ["Oversold or Trend", "Always Buy"], tooltip="Choose the Trading Mode by trying Both in your Backtesting. I use it if one is far better then the other one.")
 
invertStrategy = tradingMode == "Trend" ? true : false
compoundingMode = input.bool(false,"Work with the total equity")
useTSL = input.bool(true,"Use a trailing SL")
useTP = input.bool(true,"Use a TP")
scoreLookbackDistance = input.int(20, step=1,title="Lookbackdistance for the Score")
scoreLoopCountTo = 20
leverage = input.float(1.0,"Leverage (x)",[20,10,5,2,1])
SL_Factor = 1 - input.float(3.0,"Risk Capital per Trade unleveraged (%)", minval=0.1, maxval=100, step=0.25) / 100 / leverage
TPFactor = input.float(1.2, step=0.1)

chooseDate = input.string(title="Select Date", defval="All available Records", options=["Start-2012","2012-Now","All available Records"],tooltip="Seperation works best for 8hr cfd markets, you might want to finetune your Settings in the past and see if the future results (2010 to now) are better then random")
dateFrom = chooseDate == "Start-2012" ? timestamp("01 Jan 1970 00:00") : chooseDate == "2012-Now" ? timestamp("01 Jan 2012 00:00") : timestamp("01 Jan 1970 00:00")
dateTo = chooseDate == "Start-2012" ? timestamp("31 Dec 2011 23:59") : chooseDate == "2012-Now" ? timestamp("31 Dec 2170 23:59") : timestamp("31 Dec 2170 23:59")
inDateRange = (time >= dateFrom) and (time < dateTo)

var disableAdditionalBuysThisDay = false
var minuteOfLastSell = 0


if(dayofmonth != dayofmonth[1])
    disableAdditionalBuysThisDay := false


longStopPrice = 0.0
longStopPrice := if (strategy.position_size > 0)
    if(useTSL)
        math.max(high * SL_Factor, longStopPrice[1])
    else
        strategy.position_avg_price*SL_Factor
else
    0

if(strategy.position_size != strategy.position_size[1])
    disableAdditionalBuysThisDay := true

//Trade Logic
//isOversold
SCORE = 0
loopCount = 1
for i=0 to scoreLoopCountTo
    trendLengthAdjusted = loopCount
    loopCount := loopCount + 1 
    if(ta.ema(close,trendLengthAdjusted) / ta.sma(close,trendLengthAdjusted) > 1)
        SCORE := SCORE + 1
 
SCORE_ema50 = ta.ema(SCORE,scoreLookbackDistance)
SCORE_sma50 = ta.sma(SCORE,scoreLookbackDistance)
isOversold = ta.crossover(SCORE_sma50 / SCORE_ema50,1.0)
isTrend = ta.crossover(SCORE_ema50 / SCORE_sma50,1.0)


isBuy = isTrend or isOversold or tradingMode == "Always Buy"


if(isBuy and not(disableAdditionalBuysThisDay) and inDateRange)
    if(compoundingMode)
        strategy.entry("Buy", strategy.long, (strategy.equity / close) * leverage)
    else
        strategy.entry("Buy", strategy.long, (strategy.initial_capital / close) * leverage)


if(strategy.position_size > 0)
    strategy.exit("TSL", "Buy", stop=longStopPrice)
    if(useTP) 
        strategy.close("Buy",  when=close > strategy.position_avg_price * (1 + (1 - SL_Factor) * TPFactor), comment="TP")


findTrendOrOversold(i) => ta.ema(close,i) / ta.sma(close,i)

plot(1 + 100 * (findTrendOrOversold(1) - 1),color = findTrendOrOversold(1) > 1 ? #6efa7b44 : #ff222244)
plot(1 + 100 * (findTrendOrOversold(2) - 1),color = findTrendOrOversold(2) > 1 ? #73fa7a44 : #ff302244)
plot(1 + 100 * (findTrendOrOversold(3) - 1),color = findTrendOrOversold(3) > 1 ? #78fb7944 : #ff3a2244)
plot(1 + 100 * (findTrendOrOversold(4) - 1),color = findTrendOrOversold(4) > 1 ? #7cfb7844 : #ff432244)
plot(1 + 100 * (findTrendOrOversold(5) - 1),color = findTrendOrOversold(5) > 1 ? #81fb7744 : #ff4b2244)
plot(1 + 100 * (findTrendOrOversold(6) - 1),color = findTrendOrOversold(6) > 1 ? #85fc7644 : #ff522344)
plot(1 + 100 * (findTrendOrOversold(7) - 1),color = findTrendOrOversold(7) > 1 ? #89fc7644 : #fe592444)
plot(1 + 100 * (findTrendOrOversold(8) - 1),color = findTrendOrOversold(8) > 1 ? #8dfc7544 : #fe602544)
plot(1 + 100 * (findTrendOrOversold(9) - 1),color = findTrendOrOversold(9) > 1 ? #91fc7444 : #fe662744)
plot(1 + 100 * (findTrendOrOversold(10) - 1),color = findTrendOrOversold(10) > 1 ? #95fd7344 : #fe6b2944)
plot(1 + 100 * (findTrendOrOversold(11) - 1),color = findTrendOrOversold(11) > 1 ? #99fd7344 : #fd712b44)
plot(1 + 100 * (findTrendOrOversold(12) - 1),color = findTrendOrOversold(12) > 1 ? #9dfd7244 : #fd762d44)
plot(1 + 100 * (findTrendOrOversold(13) - 1),color = findTrendOrOversold(13) > 1 ? #a1fd7144 : #fd7b3044)
plot(1 + 100 * (findTrendOrOversold(14) - 1),color = findTrendOrOversold(14) > 1 ? #a4fe7144 : #fd803244)
plot(1 + 100 * (findTrendOrOversold(15) - 1),color = findTrendOrOversold(15) > 1 ? #a8fe7044 : #fc853544)
plot(1 + 100 * (findTrendOrOversold(16) - 1),color = findTrendOrOversold(16) > 1 ? #abfe7044 : #fc8a3944)
plot(1 + 100 * (findTrendOrOversold(17) - 1),color = findTrendOrOversold(17) > 1 ? #affe6f44 : #fc8f3c44)
plot(1 + 100 * (findTrendOrOversold(18) - 1),color = findTrendOrOversold(18) > 1 ? #b2ff6f44 : #fc933f44)
plot(1 + 100 * (findTrendOrOversold(19) - 1),color = findTrendOrOversold(19) > 1 ? #b6ff6e44 : #fb984344)
plot(1 + 100 * (findTrendOrOversold(20) - 1),color = findTrendOrOversold(20) > 1 ? #b9ff6e44 : #fb9c4744) 

plot(invertStrategy ? SCORE_ema50 / SCORE_sma50 : SCORE_sma50 / SCORE_ema50, color=(invertStrategy and isTrend) or (not(invertStrategy) and isOversold) ? color.green : color.gray, linewidth=2)
plot(1,color=color.white)

আরো