
এই কৌশলটি একটি চলমান গড়, Laguerre RSI এবং ADX এর সমন্বয় ব্যবহার করে একটি ব্রেকআউট ট্রেডিং অর্জন করে। যখন দ্রুত চলমান গড়ের উপরে একটি ধীর চলমান গড় অতিক্রম করে, তখন Laguerre RSI 80 এর চেয়ে বড় হয়, ADX 20 এর চেয়ে বড় হয়; যখন দ্রুত চলমান গড়ের নীচে একটি ধীর চলমান গড় অতিক্রম করে, তখন Laguerre RSI 20 এর চেয়ে ছোট হয়, ADX 20 এর চেয়ে বড় হয়। এই কৌশলটি বাজারের চলমান পরিমাণগত বৈশিষ্ট্যগুলিকে ক্যাপচার করে এবং প্রবণতা বিকাশের শুরুতে বাজারে প্রবেশ করে।
এই কৌশলটি ট্রেন্ড এবং লঞ্চের সময় নির্ধারণের জন্য নিম্নলিখিত সূচকগুলির উপর ভিত্তি করে কাজ করেঃ
চলমান গড়ের সমন্বয়ঃ ১৬ দিনের EMA, ৪৮ দিনের EMA, ২০০ দিনের SMA। যখন স্বল্পমেয়াদী গড়ের উপর দীর্ঘমেয়াদী গড় পরিধান করা হয় তখন এটি একটি ওভারহেড বাজার হিসাবে বিচার করা হয় এবং যখন এটি একটি শূন্য হেড বাজার হিসাবে বিচার করা হয়।
Laguerre RSI সূচকটি ওভার-বই ওভার-সেল অঞ্চল নির্ধারণ করে। RSI 80 এর চেয়ে বড় একটি ওভারহেড সংকেত এবং 20 এর চেয়ে ছোট একটি খালি-হেড সংকেত।
ADX সূচকটি ট্রেন্ডিং অবস্থা নির্ধারণ করে। ADX 20 এর চেয়ে বড় ট্রেন্ডিং অবস্থা নির্দেশ করে, এটি বিরতির জন্য উপযুক্ত
প্রবেশের সংকেত হল চলমান গড়ের সমন্বয় ট্রেন্ডের দিকনির্দেশনা নির্ধারণ করে, লাগুয়ের আরএসআই প্রবেশের সময় নির্ধারণ করে, এডিএক্স ফিল্টার নন-ট্রেন্ডিং মার্কেট। প্রস্থান সংকেত হল চলমান গড়ের বিপরীতমুখী। পুরো কৌশলগত বিচার ফ্রেমওয়ার্কটি যুক্তিসঙ্গত, প্রতিটি সূচক একে অপরের সাথে মিলিত হয়।
এই কৌশলটির সুবিধাগুলো হলঃ
ট্রেন্ড ডায়নামিক ক্যাপচারঃ এই কৌশলটি কেবলমাত্র ট্রেন্ডের শুরুতে প্রবেশ করে এবং পরবর্তী বাজারের সূচকীয় মুনাফা ক্যাপচার করে।
সীমিত ক্ষতিঃ সঠিকভাবে স্টপ লস সেট করা, একক ক্ষতি একটি নির্দিষ্ট পরিসরে নিয়ন্ত্রণ করা যেতে পারে। এমনকি যদি আপনি একটি ফাঁদ পেয়ে থাকেন তবেও লাভের সুযোগ রয়েছে।
সূচক সমন্বয় সঠিকভাবে বিচার করাঃ চলন্ত গড়, Laguerre RSI এবং ADX সূচকগুলি বাজার ফাঁকা এবং প্রবেশের সময়কে তুলনামূলকভাবে সঠিকভাবে বিচার করতে পারে।
বাস্তবায়ন সহজঃ এই কৌশলটি বাস্তবায়ন করা সহজ এবং সহজ, শুধুমাত্র তিনটি সূচক ব্যবহার করে।
এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ
প্রবণতা বিপরীত ঝুঁকিঃ কৌশলটি প্রবণতা অনুসরণ করার কৌশল হিসাবে বিবেচিত হয়, যদি প্রবণতা বিপরীত হওয়ার সময় নির্ধারণ না করা হয় তবে বড় ক্ষতি হতে পারে।
প্রত্যাহারের ঝুঁকিঃ অস্থির পরিস্থিতিতে, স্টপ লসটি ভেঙে যেতে পারে এবং অ্যাকাউন্টটি প্রত্যাহার করা যেতে পারে।
প্যারামিটার অপ্টিমাইজেশান ঝুঁকিঃ সূচক প্যারামিটারগুলি বিভিন্ন বাজারের সাথে সামঞ্জস্য করতে হবে, অন্যথায় এটি অকার্যকর হবে।
প্রতিকারঃ
কঠোরভাবে ক্ষতি বন্ধ করুন, একক ক্ষতি নিয়ন্ত্রণ করুন।
অনুকূলিতকরণ সূচক প্যারামিটার, অনুকূলিতকরণ ব্রেকথ্রু সংখ্যা.
ফিউচার সেট মেয়াদকালীন মূল্য সংরক্ষণের মতো পদ্ধতি ব্যবহার করে প্রত্যাহার পরিচালনা করুন।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ
সর্বোত্তম প্যারামিটার অপ্টিমাইজেশানঃ চলমান গড় সময়কাল, Laguerre RSI প্যারামিটার, ADX প্যারামিটার পরীক্ষা করে সর্বোত্তম প্যারামিটার সমন্বয় খুঁজুন।
ব্রেকআউট অপ্টিমাইজেশনঃ বিভিন্ন মুভিং এভারেজের ব্রেকআউট পরীক্ষা করে ট্রেডিং এবং মুনাফা অর্জনের মধ্যে একটি ভারসাম্য খুঁজে বের করুন।
প্রবেশের শর্তের অপ্টিমাইজেশনঃ অন্যান্য সূচকগুলিকে ল্যাগুয়ের আরএসআই সূচকের সাথে একত্রিত করে প্রবেশের সময় নির্ধারণের জন্য আরও সঠিক শর্তগুলি সন্ধান করুন।
প্রস্থান পরিস্থিতি অপ্টিমাইজেশানঃ প্রস্থান সংকেত আরও সুনির্দিষ্টভাবে বিচার করার জন্য অন্যান্য সূচকগুলির সাথে চলমান গড়ের সমন্বয়ে গবেষণা করুন।
মুনাফা লক্ষ্য এবং স্টপ লস অপ্টিমাইজেশানঃ বিভিন্ন স্টপ লস কৌশল পরীক্ষা করে অ্যাকাউন্টের আয়কে অপ্টিমাইজ করুন।
এই কৌশলটি চলমান গড়, লাগুয়ের আরএসআই এবং এডিএক্স তিনটি সূচক ব্যবহার করে কার্যকরভাবে প্রবণতা পরিস্থিতি ক্যাপচার করে। প্রবণতা শুরু হওয়ার সাথে সাথে সময়মতো প্রবেশ করুন, প্রবণতা অনুসরণ করুন এবং সূচকীয় স্তরের মুনাফা ক্যাপচার করুন। একক ক্ষতি নিয়ন্ত্রণের জন্য একটি স্টপ লস কৌশল সেট করুন। এই কৌশলটি প্রবণতা সম্পর্কে বিচক্ষণ সক্রিয় বিনিয়োগকারীদের জন্য উপযুক্ত, এবং পরামিতি অপ্টিমাইজেশনের পরে প্রোগ্রামিং ট্রেডিংয়ের মাধ্যমে স্বয়ংক্রিয়ভাবে কার্যকর করার জন্যও উপযুক্ত। সামগ্রিকভাবে, এই কৌশলটি শক্তিশালী ব্যবহারিকতা রয়েছে।
/*backtest
start: 2023-12-05 00:00:00
end: 2023-12-12 00:00:00
period: 1m
basePeriod: 1m
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/
// © PtGambler
//@version=5
strategy("3MA + Laguerre RSI + ADX [Pt]", shorttitle = "3MA+LaRSI+ADX[Pt]", overlay=true, initial_capital = 10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills = false, max_bars_back = 500)
// ********************************** Trade Period / Strategy Setting **************************************
startY = input(title='Start Year', defval=2011, group = "Backtesting window")
startM = input.int(title='Start Month', defval=1, minval=1, maxval=12, group = "Backtesting window")
startD = input.int(title='Start Day', defval=1, minval=1, maxval=31, group = "Backtesting window")
finishY = input(title='Finish Year', defval=2050, group = "Backtesting window")
finishM = input.int(title='Finish Month', defval=12, minval=1, maxval=12, group = "Backtesting window")
finishD = input.int(title='Finish Day', defval=31, minval=1, maxval=31, group = "Backtesting window")
timestart = timestamp(startY, startM, startD, 00, 00)
timefinish = timestamp(finishY, finishM, finishD, 23, 59)
use_entry_sess = input.bool(false, 'Use Entry Session Window', group = "Trading Session")
t1_session = input("0930-1555:23456", "Entry Session", group="Trading Session", tooltip = "Entry Signal only generated within this period.")
t1 = time(timeframe.period, t1_session)
window = true
margin_req = input.float(1, title="Margin Requirement / Leverage", step=0.1, group = "Trading Options")
qty_per_trade = input.float(100, title = "% of initial capital per trade", group = "Trading Options")
reinvest = input.bool(defval=false,title="Reinvest profit", group = "Trading Options")
reinvest_percent = input.float(defval=100, title = "Reinvest percentage", group="Trading Options")
close_eod = input.bool(false, "All trades will close at the close of trading window", group = "Trading Options")
close_b4_open = input.bool(false, "Position must hit either SL/PT before entering new trade", group = "Trading Options")
profit = strategy.netprofit
strategy.initial_capital = 50000
float trade_amount = math.floor(strategy.initial_capital*margin_req / close)
if strategy.netprofit > 0 and reinvest
trade_amount := math.floor((strategy.initial_capital* (qty_per_trade/100)+(profit*reinvest_percent*0.01))*margin_req/ close)
else
trade_amount := math.floor(strategy.initial_capital* (qty_per_trade/100)*margin_req / close)
// ******************************************************************************************
group_ma = "Moving Average Ribbon"
group_larsi = "Laguerre RSI"
group_adx = "ADX"
group_SL = "Stop Loss / Profit Target"
// ----------------------------------------- MA Ribbon -------------------------------------
ema1_len = input.int(16, "Fast EMA Length", group = group_ma)
ema2_len = input.int(48, "Slow EMA Length ", group = group_ma)
sma1_len = input.int(200, "Slow SMA Length", group = group_ma)
ema1 = ta.ema(close, ema1_len)
ema2 = ta.ema(close, ema2_len)
sma1 = ta.sma(close, sma1_len)
plot(ema1, "EMA 1", color.white, linewidth = 2)
plot(ema2, "EMA 2", color.yellow, linewidth = 2)
plot(sma1, "SMA 1", color.purple, linewidth = 2)
ma_bull = ema1 > ema2 and ema2 > sma1
ma_bear = ema1 < ema2 and ema2 < sma1
// ------------------------------------------ Laguerre RSI ---------------------------------------
alpha = input.float(0.2, title='Alpha', minval=0, maxval=1, step=0.1, group = group_larsi)
gamma = 1 - alpha
L0 = 0.0
L0 := (1 - gamma) * close + gamma * nz(L0[1])
L1 = 0.0
L1 := -gamma * L0 + nz(L0[1]) + gamma * nz(L1[1])
L2 = 0.0
L2 := -gamma * L1 + nz(L1[1]) + gamma * nz(L2[1])
L3 = 0.0
L3 := -gamma * L2 + nz(L2[1]) + gamma * nz(L3[1])
cu = (L0 > L1 ? L0 - L1 : 0) + (L1 > L2 ? L1 - L2 : 0) + (L2 > L3 ? L2 - L3 : 0)
cd = (L0 < L1 ? L1 - L0 : 0) + (L1 < L2 ? L2 - L1 : 0) + (L2 < L3 ? L3 - L2 : 0)
temp = cu + cd == 0 ? -1 : cu + cd
LaRSI = temp == -1 ? 0 : cu / temp
LaRSI := LaRSI * 100
bull_LaRSI = LaRSI > 80
bear_LaRSI = LaRSI < 20
// --------------------------------------- ADX ------------------------
adxlen = input(14, title="ADX Smoothing", group = group_adx)
dilen = input(14, title="DI Length", group = group_adx)
dirmov(len) =>
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
active_adx = sig > 20 //and sig > sig[1]
// ******************************* Profit Target / Stop Loss *********************************************
use_SLPT = input.bool(false, 'Use Fixed SL / PT', group = group_SL)
SL = input.float(50, 'Stop loss in ticks', step = 1, group = group_SL) * syminfo.mintick
PT = input.float(100, "Profit target in ticks", step = 1, group = group_SL) * syminfo.mintick
var L_PT = 0.0
var S_PT = 0.0
var L_SL = 0.0
var S_SL = 0.0
if strategy.position_size > 0
L_SL := L_SL[1]
L_PT := L_PT[1]
else if strategy.position_size < 0
S_SL := S_SL[1]
S_PT := S_PT[1]
else
L_SL := close - SL
L_PT := close + PT
S_SL := close + SL
S_PT := close - PT
entry_line = plot(use_SLPT and strategy.position_size != 0 ? strategy.opentrades.entry_price(0) : na, "Entry Price", color.white, linewidth = 1, style = plot.style_linebr)
L_PT_line = plot(use_SLPT and strategy.position_size > 0 ? L_PT : na, "L PT", color.green, linewidth = 2, style = plot.style_linebr)
S_PT_line = plot(use_SLPT and strategy.position_size < 0 ? S_PT : na, "S PT", color.green, linewidth = 2, style = plot.style_linebr)
L_SL_line = plot(use_SLPT and strategy.position_size > 0 ? L_SL : na, "L SL", color.red, linewidth = 2, style = plot.style_linebr)
S_SL_line = plot(use_SLPT and strategy.position_size < 0 ? S_SL : na, "S SL", color.red, linewidth = 2, style = plot.style_linebr)
fill(L_PT_line, entry_line, color = color.new(color.green,90))
fill(S_PT_line, entry_line, color = color.new(color.green,90))
fill(L_SL_line, entry_line, color = color.new(color.red,90))
fill(S_SL_line, entry_line, color = color.new(color.red,90))
// ---------------------------------- Strategy setup ------------------------------------------------------
L_entry1 = ma_bull and bull_LaRSI and active_adx
S_entry1 = ma_bear and bear_LaRSI and active_adx
L_exit1 = ta.crossunder(ema1, ema2)
S_exit1 = ta.crossover(ema1, ema2)
// Trigger zones
bgcolor(ma_bull ? color.new(color.green ,90) : na)
bgcolor(ma_bear ? color.new(color.red,90) : na)
if L_entry1 and (use_entry_sess ? window : true) and (close_b4_open ? strategy.position_size == 0 : true)
strategy.entry("Long", strategy.long, trade_amount)
if S_entry1 and (use_entry_sess ? window : true) and (close_b4_open ? strategy.position_size == 0 : true)
strategy.entry("Short", strategy.short, trade_amount)
if use_SLPT
strategy.exit("Exit Long", "Long", limit = L_PT, stop = L_SL, comment_profit = "Exit Long, PT hit", comment_loss = "Exit Long, SL hit")
strategy.exit("Exit Short", "Short", limit = S_PT, stop = S_SL, comment_profit = "Exit Short, PT hit", comment_loss = "Exit Short, SL hit")
else
if L_exit1
strategy.close("Long", comment = "Exit Long")
if S_exit1
strategy.close("Short", comment = "Exit Short")
if use_entry_sess and not window and close_eod
strategy.close_all(comment = "EOD close")