AlexInc এর বার v1.2 অর্থপূর্ণ বার ফিল্টারিং উপর ভিত্তি করে ব্রেকআউট জমে কৌশল

লেখক:চাওঝাং, তারিখঃ 2024-01-03 16:30:16
ট্যাগঃ

img

সারসংক্ষেপ

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

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

  1. বর্তমান কে-লাইনের সত্তা দৈর্ঘ্য শরীরের বিচার করুন। যদি এটি গত 6 কে-লাইনের গড় শরীরের মানের 3 গুণের বেশি হয় তবে এটি একটি উপযোগী বার হিসাবে বিবেচিত হয়।

  2. যদি পরপর ৩ টি দীর্ঘ বডি সহ অর্থপূর্ণ বার থাকে, তাহলে এটি দীর্ঘ সংকেত হিসেবে বিবেচিত হয়। যদি সংক্ষিপ্ত বডি সহ পরপর ৩ টি বার থাকে, তাহলে এটি সংক্ষিপ্ত সংকেত হিসেবে বিবেচিত হয়।

  3. সিগন্যালটি মূল্যায়ন করার সময়, যদি দাম পূর্ববর্তী উচ্চ বা নিম্ন পয়েন্টটি ভেঙে যায়, তাহলে অতিরিক্ত ট্রেডিং সিগন্যালও তৈরি হবে।

  4. এসএমএকে ফিল্টার হিসেবে ব্যবহার করুন। শুধুমাত্র যখন দাম এসএমএ অতিক্রম করে তখনই পজিশন খুলুন।

  5. পজিশন নেওয়ার পর, যদি দাম আবার এন্ট্রি পয়েন্ট বা এসএমএ অতিক্রম করে, পজিশন বন্ধ করুন।

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

  1. প্রবণতা মূল্যায়নের জন্য অর্থপূর্ণ বারগুলি ব্যবহার করে অপ্রয়োজনীয় হস্তক্ষেপ ফিল্টার করতে পারে এবং আরও স্পষ্ট সংকেত তৈরি করতে পারে।

  2. ট্রেন্ড সিগন্যাল এবং ব্রেকআউট সিগন্যালের সংমিশ্রণ সিগন্যালের গুণমান উন্নত করে এবং মিথ্যা সিগন্যাল হ্রাস করে।

  3. এসএমএ ফিল্টারগুলি উচ্চ কিনতে এবং কম বিক্রি এড়ায়। কেবল বন্ধের নীচে কিনুন, বন্ধের উপরে বিক্রয় করুন, এইভাবে নির্ভরযোগ্যতা উন্নত করুন।

  4. মুনাফা গ্রহণ এবং স্টপ লস শর্তাবলী নির্ধারণ করা সময়মত ঝুঁকি নিয়ন্ত্রণকে সহজ করে তোলে।

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

  1. এই আক্রমণাত্মক কৌশলটি শুধুমাত্র 3 টি বার থেকে সংকেতগুলি বিচার করে এবং স্বল্পমেয়াদী ওঠানামাকে প্রবণতা বিপরীত হিসাবে ভুলভাবে বিচার করতে পারে।

  2. ব্যাকটেস্টিংয়ের তথ্য অপর্যাপ্ত। ফলাফল পণ্য এবং সময়সীমার মধ্যে পরিবর্তিত হতে পারে।

  3. রাতারাতি অবস্থান নিয়ন্ত্রণ নেই, রাতারাতি হোল্ডিং ঝুঁকি।

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

  1. অর্থপূর্ণ বারগুলির জন্য পরামিতিগুলি আরও অনুকূল করুন, যেমন বিচার করা বারগুলির সংখ্যা এবং অর্থপূর্ণ এর সংজ্ঞা।

  2. সর্বোত্তম পরামিতি খুঁজে পেতে বিভিন্ন সময়সীমার প্রভাব পরীক্ষা করুন।

  3. ঝুঁকি নিয়ন্ত্রণে ATR ভিত্তিক স্টপ লস যোগ করুন।

  4. রাতারাতি অবস্থান নিয়ন্ত্রণ যোগ করার কথা বিবেচনা করুন।

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

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


/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-02 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//AlexInc
//2018

// закрытие - вычислить и в течение скольки-то баров его добиваться
// если нет, то по первому противоположному
// по стоп-лоссу в любом случае - стоп вычислить

//@version=2
strategy(title = "AlexInc's Bar v1.2", shorttitle = "AlexInc Bar 1.2", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
tryprofitbars = input(6, defval = 6, minval = 1, maxval = 100, title = "Number of candles to take profit anyway")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")

useSMAfilter = input(false, defval = true, title = "Use SMA filter")
SMAlimit = input(10, defval = 10, minval = 1, maxval = 30, title = "SMA filter limit")
bodysizeMlt = input(3, defval = 3, minval = 1, maxval = 10, title = "Body Size Multiplier")
meanfulbardiv = input(3, title = "Meanful Bar size Divider")

showarr = input(false, defval = false, title = "Show Arrows")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//SMA #
index = 0
index := barstate.isfirst ==true ? 0 : nz(index[1])+1

buyindex = 0
buyindex := barstate.isfirst ==true ? 0 : buyindex[1]

sellindex = 0
sellindex := barstate.isfirst ==true ? 0 : sellindex[1]

//predictprofit = barstate.isfirst ==true ? 0 : predictprofit[1]

smafilter = sma(close, SMAlimit)

//Body
body = abs(close - open)
range = abs(high - low)
abody = sma(body, 6)

max3 = 0
if body >= body[1] and body >= body[2]
    max3 := body
else
    if body[1] >= body and body[1] >= body[2]
        max3 := body[1]
    else 
        if body[2] >= body and body[2] >= body[1]
            max3 := body[2]

prevmax3 = 0
prevmax3 := nz(max3[1])


bar = close > open ? 1 : close < open ? -1 : 0
firstbullishopen = 0
firstbullishopen := bar == 1 and bar[1] != 1 ? open : nz(firstbullishopen[1])
firstbearishopen = 0
firstbearishopen := bar == -1 and bar[1] != -1 ? open : nz(firstbearishopen[1])

meanfulbar = body > abody / meanfulbardiv

meanfulbearish = 0
meanfulbearish := nz(meanfulbearish[1])

meanfulbullish = 0
meanfulbullish := nz(meanfulbullish[1])

if meanfulbar
    if bar == 1
        meanfulbullish := 1 + meanfulbullish
        meanfulbearish := 0
    else
        if bar == -1
            meanfulbearish := 1 + meanfulbearish
            meanfulbullish := 0


plot(min(low, high)-10, style=circles, color = meanfulbar ? yellow:black, linewidth=3)

//Signals
up1 = (meanfulbearish >= 3) and (close < firstbullishopen or 1) and (strategy.position_size == 0 or close < strategy.position_avg_price) and body > abody / 5 and (useSMAfilter == false or close < smafilter)
if up1 == true
	predictprofit = sma(body, 3)
up2 = sma(bar, 1) == -1 and body > prevmax3 * bodysizeMlt and (strategy.position_size == 0 or close < strategy.position_avg_price) and body > abody / 5 and (useSMAfilter == false or close < smafilter)
if up2 == true
	predictprofit = body * 0.5
plot(min(low, high), style=circles, color = up1?blue:up2?green:gray, linewidth=3)

dn1 = (meanfulbullish >= 3) and (close > firstbearishopen or 1)  and (strategy.position_size == 0 or close > strategy.position_avg_price) and body > abody / 5 and (useSMAfilter==false or close > smafilter)
if dn1 ==true 
	predictprofit = sma(body, 3)
dn2 = sma(bar, 1) == 1 and body > prevmax3 * bodysizeMlt and (strategy.position_size == 0 or close > strategy.position_avg_price) and body > abody / 5 and (useSMAfilter==false or close > smafilter)
if dn2 ==true	
	predictprofit = body * 0.5
plot(max(low, high), style=circles, color = dn1?blue:dn2?green:gray, linewidth=3)


exit = (((strategy.position_size > 0 and bar == 1 ) or (strategy.position_size < 0 and bar == -1)) and body > abody / 2 )
// or index >= buyindex (or sellindex) + tryprofitbars


//Arrows
col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na
needup = up1 or up2
needdn = dn1 or dn2
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)


//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]

if up1 or up2
    if strategy.position_size < 0
        strategy.close_all()
		buyindex = index
		sellindex = index
	if strategy.position_size == 0
		buyindex = index
		
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot )

if dn1 or dn2
    if strategy.position_size > 0
        strategy.close_all()
		buyindex = index
		sellindex = index
	if strategy.position_size == 0
		sellindex = index
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot )
    
if  exit
    strategy.close_all()

আরো