ডায়নামিক মম্পটম ওসিললেটর (ডিএমও) ট্রেডিং কৌশল হল মম্পটম ওসিললেটর সূচকগুলির উপর ভিত্তি করে একটি 15 মিনিটের স্বল্পমেয়াদী ট্রেডিং কৌশল। এই কৌশলটি অত্যন্ত নির্ভুল ট্রেডিং সংকেত তৈরি করতে একাধিক প্রযুক্তিগত সূচককে একত্রিত করে, যা শিক্ষানবিস ব্যবসায়ীদের স্বল্প সময়ের মধ্যে কেনা এবং বিক্রয় সিদ্ধান্ত নিতে, ঝুঁকি নিয়ন্ত্রণ করতে এবং লাভজনকতা বাড়াতে কার্যকরভাবে সহায়তা করতে পারে।
এই কৌশলটি প্রথমত বাজারের মূল প্রবণতা দিক নির্ধারণের জন্য ডুইঞ্চিয়ান চ্যানেল ব্যবহার করে। চ্যানেলের উপরের ব্যান্ডের উপরে একটি ব্রেকআউট একটি উত্থান সংকেত, যখন নীচের ব্যান্ডের নীচে একটি ব্রেকআউট একটি হ্রাস সংকেত। দ্বিতীয়ত, কৌশলটি আরও সুনির্দিষ্ট প্রবণতা বিচারের জন্য একটি অভিযোজিত এটিআর চ্যানেলের সাথে একত্রে তিনটি হুল মুভিং এভারেজ বৈকল্পিকগুলির মধ্যে একটি গ্রহণ করে। যখন দ্রুত লাইনটি মাঝারি লাইনের উপরে অতিক্রম করে, এটি একটি ক্রয় সংকেত, এবং যখন এটি নীচে অতিক্রম করে, এটি একটি বিক্রয় সংকেত। অবশেষে, মিথ্যা সংকেতগুলির অতিরিক্ত ফিল্টারিংয়ের জন্য হাফট্রেন্ড সূচকের সাহায্যে, ট্রেডিং সংকেতগুলির নির্ভরযোগ্যতা আরও উন্নত করা যেতে পারে। তুলনামূলকভাবে নির্ভরযোগ্য ট্রেডিং সংকেত পাওয়ার পরে, কৌশলটি তারপরে সংশ্লিষ্ট দীর্ঘ বা সংক্ষিপ্ত অবস্থানে প্রবেশ করবে।
ডিএমও কৌশলটির সবচেয়ে বড় সুবিধা হ'ল একাধিক সূচকের জৈবিক সংমিশ্রণ। বিভিন্ন সূচকগুলি মিথ্যা সংকেতগুলি ফিল্টার করতে একে অপরকে যাচাই করতে পারে, প্রতিটি ট্রেডিং সংকেতকে আরও নির্ভুল এবং নির্ভরযোগ্য করে তোলে। এছাড়াও, ডুইঞ্চিয়ান চ্যানেলের মূল প্রবণতা বিচার করার উপায়টি সহজ এবং সরল, এবং অর্ধ-প্রবণতা রেখার সাথে সংকেতগুলি ফিল্টার করার উপায়টিও তুলনামূলকভাবে প্রচলিত। সামগ্রিকভাবে এটি নতুনদের জন্য একটি কম শেখার বক্ররেখা দিয়ে বোঝা সহজ। একক সূচকের তুলনায়, ডিএমও একই সংখ্যক ব্যবসায়ের কারণে উচ্চতর জয় হার এবং লাভজনকতা অর্জন করতে পারে।
যদিও ডিএমও কৌশলটি তুলনামূলকভাবে স্থিতিশীল এবং নির্ভরযোগ্য, তবে যে কোনও পরিমাণগত ট্রেডিং কৌশল নির্দিষ্ট ঝুঁকি বহন করতে বাধ্য। বিশেষত, যখন ফাস্ট লাইন মাঝারি রেখার নীচে অতিক্রম করে, তখনও এটি অন্যান্য সূচকগুলির দ্বারা যাচাই না করে এটি একটি মিথ্যা সংকেত হতে পারে। এছাড়াও, সমস্ত স্বল্পমেয়াদী কৌশলগুলির মতো, ডিএমওওওও ওভারট্রেডিংয়ের সাথে যুক্ত ঝুঁকিগুলির মুখোমুখি হয়। যদি হঠাৎ বাজার ইভেন্টগুলি ঘটে যা সূচকগুলিকে অকার্যকর করে তোলে, অনুপযুক্ত স্টপ লস সেটিংগুলিও বৃহত্তর ক্ষতির দিকে পরিচালিত করতে পারে। ঝুঁকিগুলি প্রশমিত করার জন্য, মাঝারি এবং দীর্ঘমেয়াদী সূচকগুলির পরামিতিগুলি যথাযথভাবে সামঞ্জস্য করা, তাদের যাচাইয়ের জন্য উচ্চতর সময়সীমার সূচকগুলির সাথে একত্রিত করা এবং একক বাণিজ্য ক্ষতি কঠোরভাবে নিয়ন্ত্রণ করার জন্য স্টপ লস দূরত্ব বাড়ানো পরামর্শ দেওয়া হয়।
ডিএমও কৌশল নিম্নলিখিত দিকগুলিতে অনুকূলিত করা যেতে পারেঃ প্রথমত, চলমান গড়ের মসৃণ প্রভাব এবং সংবেদনশীলতা ভারসাম্য বজায় রাখতে হুল এমএ এর পরামিতিগুলি সামঞ্জস্য করুন; দ্বিতীয়ত, চ্যানেলের পরামিতিগুলি সামঞ্জস্য করার বা অতিরিক্ত বিধিনিষেধ যুক্ত করার মতো ডুইঞ্চিয়ান চ্যানেল লজিককে উন্নত করুন; তৃতীয়ত, ভাল ফিল্টারিংয়ের জন্য হ্যালফট্রেন্ডের পরিবর্তে অন্যান্য সূচকগুলি চেষ্টা করুন, যেমন বোলিংজার ব্যান্ডস, কেডিজে ইত্যাদি; চতুর্থত, বিভিন্ন ট্রেডিং সরঞ্জামের বৈশিষ্ট্যগুলির উপর ভিত্তি করে উপযুক্ত ট্রেডিং ব্যবধান নির্দিষ্ট করুন, উদাহরণস্বরূপ এটিকে 5 মিনিটের বা 30 মিনিটের কৌশলতে পরিবর্তন করুন। এই অপ্টিমাইজেশন ব্যবস্থাগুলি স্থিতিশীলতা বাড়ানোর জন্য বাজারের পরিস্থিতি এবং সরঞ্জামের বৈশিষ্ট্য অনুসারে ডিএমও কৌশলটি কাস্টমাইজ করতে সহায়তা করতে পারে।
ডিএমও একটি স্বল্পমেয়াদী কৌশল যা একাধিক সূচকের সংমিশ্রণকে অনুকূল করে তোলে। এটি বাজারের প্রবণতা কার্যকরভাবে নির্ধারণ এবং সুনির্দিষ্ট ট্রেডিং সংকেত উত্পন্ন করার জন্য ডুইঞ্চিয়ান চ্যানেল, হাল এমএ এবং হাফট্রেন্ডকে সংহত করে। তুলনামূলকভাবে সহজ এবং স্বজ্ঞাত কৌশল এবং সহজ অপারেশন সহ, এটি নতুনদের জন্য একটি ভূমিকা কৌশল হিসাবে কাজ করতে পারে। একক সূচকের তুলনায়, ডিএমও উচ্চতর জয়ের হার এবং মুনাফা অর্জন করতে পারে। প্যারামিটার টিউনিং, সংমিশ্রণের উন্নতি এবং ব্যবধানের স্পেসিফিকেশন মত ব্যবস্থাগুলির মাধ্যমে, ডিএমও কৌশলটির বর্ধিত স্থায়িত্বের সাথে দীর্ঘমেয়াদী উচ্চতর পারফরম্যান্স অর্জনের সম্ভাবনা রয়েছে।
/*backtest start: 2022-12-08 00:00:00 end: 2023-12-14 00:00:00 period: 1d basePeriod: 1h 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/ // © kgynofomo //@version=5 strategy(title="[Salavi] | Andy Super Pro Strategy [BTC|M15]",overlay = true, pyramiding = 1,initial_capital = 10000, default_qty_type = strategy.cash,default_qty_value = 10000) //Doinchian Trend Ribbon dlen = input.int(defval=30, minval=10) dchannel(len) => float hh = ta.highest(len) float ll = ta.lowest(len) int trend = 0 trend := close > hh[1] ? 1 : close < ll[1] ? -1 : nz(trend[1]) trend dchannelalt(len, maintrend) => float hh = ta.highest(len) float ll = ta.lowest(len) int trend = 0 trend := close > hh[1] ? 1 : close < ll[1] ? -1 : nz(trend[1]) maintrend == 1 ? trend == 1 ? #00FF00ff : #00FF009f : maintrend == -1 ? trend == -1 ? #FF0000ff : #FF00009f : na maintrend = dchannel(dlen) donchian_bull = maintrend==1 donchian_bear = maintrend==-1 //Hulls src = input(hlc3, title='Source') modeSwitch = input.string('Hma', title='Hull Variation', options=['Hma', 'Thma', 'Ehma']) length = input(55, title='Length') lengthMult = input(1.0, title='Length multiplier ') useHtf = false htf = '240' switchColor = true candleCol = false visualSwitch = true thicknesSwitch = 1 transpSwitch = 40 //FUNCTIONS //HMA HMA(_src, _length) => ta.wma(2 * ta.wma(_src, _length / 2) - ta.wma(_src, _length), math.round(math.sqrt(_length))) //EHMA EHMA(_src, _length) => ta.ema(2 * ta.ema(_src, _length / 2) - ta.ema(_src, _length), math.round(math.sqrt(_length))) //THMA THMA(_src, _length) => ta.wma(ta.wma(_src, _length / 3) * 3 - ta.wma(_src, _length / 2) - ta.wma(_src, _length), _length) //SWITCH Mode(modeSwitch, src, len) => modeSwitch == 'Hma' ? HMA(src, len) : modeSwitch == 'Ehma' ? EHMA(src, len) : modeSwitch == 'Thma' ? THMA(src, len / 2) : na //OUT _hull = Mode(modeSwitch, src, int(length * lengthMult)) HULL = useHtf ? request.security(syminfo.ticker, htf, _hull) : _hull MHULL = HULL[0] SHULL = HULL[2] //COLOR hullColor = switchColor ? HULL > HULL[2] ? #00ff00 : #ff0000 : #ff9800 hull_bull = HULL > HULL[2] bull_start = hull_bull and hull_bull[1]==false hull_bear = HULL < HULL[2] bear_start = hull_bear and hull_bear[1]==false barcolor(color=candleCol ? switchColor ? hullColor : na : na) //halftrend amplitude = input(title='Amplitude', defval=2) channelDeviation = input(title='Channel Deviation', defval=2) // showArrows = input(title='Show Arrows', defval=true) // showChannels = input(title='Show Channels', defval=true) var int trend = 0 var int nextTrend = 0 var float maxLowPrice = nz(low[1], low) var float minHighPrice = nz(high[1], high) var float up = 0.0 var float down = 0.0 float atrHigh = 0.0 float atrLow = 0.0 float arrowUp = na float arrowDown = na atr2 = ta.atr(100) / 2 dev = channelDeviation * atr2 highPrice = high[math.abs(ta.highestbars(amplitude))] lowPrice = low[math.abs(ta.lowestbars(amplitude))] highma = ta.sma(high, amplitude) lowma = ta.sma(low, amplitude) if nextTrend == 1 maxLowPrice := math.max(lowPrice, maxLowPrice) if highma < maxLowPrice and close < nz(low[1], low) trend := 1 nextTrend := 0 minHighPrice := highPrice minHighPrice else minHighPrice := math.min(highPrice, minHighPrice) if lowma > minHighPrice and close > nz(high[1], high) trend := 0 nextTrend := 1 maxLowPrice := lowPrice maxLowPrice if trend == 0 if not na(trend[1]) and trend[1] != 0 up := na(down[1]) ? down : down[1] arrowUp := up - atr2 arrowUp else up := na(up[1]) ? maxLowPrice : math.max(maxLowPrice, up[1]) up atrHigh := up + dev atrLow := up - dev atrLow else if not na(trend[1]) and trend[1] != 1 down := na(up[1]) ? up : up[1] arrowDown := down + atr2 arrowDown else down := na(down[1]) ? minHighPrice : math.min(minHighPrice, down[1]) down atrHigh := down + dev atrLow := down - dev atrLow ht = trend == 0 ? up : down var color buyColor = color.blue var color sellColor = color.red htColor = trend == 0 ? buyColor : sellColor // htPlot = plot(ht, title='HalfTrend', linewidth=2, color=htColor) // atrHighPlot = plot(showChannels ? atrHigh : na, title='ATR High', style=plot.style_circles, color=color.new(sellColor, 0)) // atrLowPlot = plot(showChannels ? atrLow : na, title='ATR Low', style=plot.style_circles, color=color.new(buyColor, 0)) // fill(htPlot, atrHighPlot, title='ATR High Ribbon', color=color.new(sellColor, 90)) // fill(htPlot, atrLowPlot, title='ATR Low Ribbon', color=color.new(buyColor, 90)) HalfTrend_buySignal = not na(arrowUp) and trend == 0 and trend[1] == 1 HalfTrend_sellSignal = not na(arrowDown) and trend == 1 and trend[1] == 0 // plotshape(showArrows and buySignal ? atrLow : na, title='Arrow Up', style=shape.triangleup, location=location.absolute, size=size.tiny, color=color.new(buyColor, 0)) // plotshape(showArrows and sellSignal ? atrHigh : na, title='Arrow Down', style=shape.triangledown, location=location.absolute, size=size.tiny, color=color.new(sellColor, 0)) //ema filter_ema = ta.ema(close,200) ema_bull = close>filter_ema ema_bear = close<filter_ema atr_length = input.int(7) atr = ta.atr(atr_length) atr_rsi_length = input.int(50) atr_rsi = ta.rsi(atr,atr_rsi_length) atr_valid = atr_rsi>50 longCondition = bull_start and atr_valid shortCondition = bear_start and atr_valid Exit_long_condition = shortCondition Exit_short_condition = longCondition if longCondition strategy.entry("Andy Buy",strategy.long, limit=close,comment="Andy Buy Here") if Exit_long_condition strategy.close("Andy Buy",comment="Andy Buy Out") // strategy.entry("Andy fandan Short",strategy.short, limit=close,comment="Andy 翻單 short Here") // strategy.close("Andy fandan Buy",comment="Andy short Out") if shortCondition strategy.entry("Andy Short",strategy.short, limit=close,comment="Andy short Here") // strategy.exit("STR","Long",stop=longstoploss) if Exit_short_condition strategy.close("Andy Short",comment="Andy short Out") // strategy.entry("Andy fandan Buy",strategy.long, limit=close,comment="Andy 翻單 Buy Here") // strategy.close("Andy fandan Short",comment="Andy Buy Out") inLongTrade = strategy.position_size > 0 inLongTradecolor = #58D68D notInTrade = strategy.position_size == 0 inShortTrade = strategy.position_size < 0 // bgcolor(color = inLongTrade?color.rgb(76, 175, 79, 70):inShortTrade?color.rgb(255, 82, 82, 70):na) plotshape(close!=0,location = location.bottom,color = inLongTrade?color.green:inShortTrade?color.red:na) plotshape(longCondition, title='Buy', text='Andy Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny) plotshape(shortCondition, title='Sell', text='Andy Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny) Fi1 = plot(MHULL, title='MHULL', color=hullColor, linewidth=thicknesSwitch, transp=50) Fi2 = plot(SHULL, title='SHULL', color=hullColor, linewidth=thicknesSwitch, transp=50) fill(Fi1, Fi2, title='Band Filler', color=hullColor, transp=transpSwitch)