এই কৌশলটি LuxAlgo
টিএমও সূচক মূল্যের গতি প্রতিফলিত করে। এটি দোলক সূচক প্রকারের অন্তর্গত এবং যখন বিচ্যুতি ঘটে তখন ট্রেডিং সংকেত তৈরি করতে পারে। এএমএ সূচক একটি মসৃণ চলমান গড়। এটি মূল্যের ওঠানামাগুলির একটি পরিসীমা দেখায়, যখন দাম উপরের / নীচের ব্যান্ডের কাছাকাছি আসে তখন অতিরিক্ত ক্রয় / oversold শর্তগুলি নির্দেশ করে।
এই কৌশলটির পিছনে মূল যুক্তিটি হ'লঃ টিএমও ট্রেডিং সিগন্যাল তৈরির জন্য প্রবণতা বিচ্যুতি সনাক্ত করতে পারে। এএমএ মূল্য বিপরীত অঞ্চলগুলি সনাক্ত করতে পারে। মোমবাতি দেহের আকার বাড়ানোর নিশ্চয়তার সাথে তারা প্রবণতা শুরু ক্যাপচার করার নির্ভুলতা উন্নত করতে পারে। সুতরাং কৌশলটি দীর্ঘ / সংক্ষিপ্ত হবে যখনঃ
এটি একক সূচকগুলির ভুল সংকেত সমস্যা সমাধান করে। সাম্প্রতিক বার
এই কৌশলটির সুবিধাগুলির মধ্যে রয়েছেঃ
ইন্ডিকেটর কম্বো সংকেত নির্ভুলতা উন্নত করে। মিথ্যা সংকেত হ্রাস এবং নির্ভুলতা উন্নত করতে টিএমও এবং এএমএ একে অপরকে যাচাই করে।
একাধিক শর্ত প্রবণতা শুরু ক্যাপচার করে। টিএমও সংকেত, এএমএ চরম এবং ক্রমবর্ধমান মোমবাতি আকারের সমন্বয় কৌশলটি কার্যকরভাবে প্রবণতা সূচনা সনাক্ত করতে সক্ষম করে, যা স্কাল্পিং কৌশলগুলি অনুসরণ করে।
ক্যান্ডেল-ভিত্তিক স্টপ লস ঝুঁকি পরিচালনা করে। সাম্প্রতিক বার
সংক্ষিপ্ত এবং কার্যকর যুক্তি। মাত্র দুটি সূচক দিয়ে, কৌশলটি একটি পরিষ্কার এবং সহজ যুক্তি সহ একটি সম্পূর্ণ স্কাল্পিং সিস্টেম বাস্তবায়ন করেছে। ব্যাকটেস্টের ফলাফলগুলিও লাভজনক বলে মনে হচ্ছে।
কৌশলটির প্রধান ঝুঁকিঃ
ঘন ঘন ইন-আউট ট্রেডিং ঝুঁকি। একটি ছোট হোল্ডিং সময়ের লক্ষ্যবস্তু স্কাল্পিং কৌশল হিসাবে, উচ্চ ট্রেডিং খরচ তার লাভজনকতা প্রভাবিত করতে পারে।
আক্রমণাত্মক স্টপ লস ঝুঁকি। স্টপ লসের জন্য সাম্প্রতিক চরম মূল্য ব্যবহার করে, এটি বাজারের গোলমালের জন্য সংবেদনশীল হতে পারে এবং স্টপ লস ট্রিগারের সম্ভাবনা বৃদ্ধি করতে পারে।
কঠিন পরামিতি অপ্টিমাইজেশান ঝুঁকি। কৌশল একাধিক পরামিতি জড়িত। সর্বোত্তম পরামিতি সমন্বয় খুঁজে চ্যালেঞ্জিং হতে পারে।
কৌশলটি নিম্নলিখিত ক্ষেত্রে আরও অপ্টিমাইজ করা যেতে পারেঃ
ভুয়া সংকেত দূর করতে এবং সংকেতের গুণমান আরও উন্নত করতে ভলিউমের মতো আরও ফিল্টার সূচক যুক্ত করুন।
স্টপ লস নিয়মের উপর পরীক্ষা পরিবর্তনগুলি এটিকে কম আক্রমণাত্মক করে তুলতে, উদাহরণস্বরূপ স্টপ লস ট্রিগার করার আগে নিশ্চিতকরণ বার যুক্ত করা।
সূচকগুলির জন্য সর্বোত্তম প্যারামিটার সংমিশ্রণ খুঁজে পেতে প্যারামিটার অপ্টিমাইজেশন পরিচালনা করুন, যা আরও গোলমাল ফিল্টার করতে এবং জয় হার বাড়াতে সহায়তা করতে পারে। মূলত টিএমও দৈর্ঘ্য, এএমএ দৈর্ঘ্য এবং মাল্টিপ্লায়ার অপ্টিমাইজ করুন।
ব্যাকটেস্ট এবং ট্রেড এটি বিভিন্ন পণ্য এবং সময়সীমা জুড়ে লাইভ এই কৌশল যুক্তি জন্য সেরা ফিট বাজার অবস্থা খুঁজে বের করতে।
এই কৌশলটি TMO এবং AMA থেকে ট্রেডিং সিগন্যালগুলিকে প্রাথমিক প্রবণতা চলাচলের মাধ্যমে পরিসীমা-বান্ধব বাজারে স্ক্যাল্পের সাথে একত্রিত করে। এটিতে উচ্চ সংকেত নির্ভুলতা, প্রাথমিক প্রবণতা ক্যাপচার এবং কার্যকর ঝুঁকি নিয়ন্ত্রণের সুবিধা রয়েছে। পরামিতি এবং কৌশল নিয়মগুলিতে আরও অপ্টিমাইজেশন এটিকে একটি অত্যন্ত ব্যবহারিক ইনট্রাডে স্কাল্পিং কৌশল তৈরি করতে পারে।
/*backtest start: 2023-11-23 00:00:00 end: 2023-11-30 00:00:00 period: 10m 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/ // © Kaspricci //@version=5 strategy("TradeIQ - Crazy Scalping Trading Strategy [Kaspricci]", overlay=true, initial_capital = 1000, currency = currency.USD) headlineTMO = "TMO Settings" tmoLength = input.int(7, "TMO Length", minval = 1, group = headlineTMO) tmoSource = input.source(close, "TMO Source", group = headlineTMO) // calculate values osc = ta.mom(ta.sma(ta.sma(tmoSource, tmoLength), tmoLength), tmoLength) // determine color of historgram oscColor = osc > osc[1] and osc > 0 ? #00c42b : osc < osc[1] and osc > 0 ? #4ee567 : osc < osc[1] and osc < 0 ? #ff441f : osc > osc[1] and osc < 0 ? #c03920 : na // plot histogram //plot(osc, "OSC", oscColor, linewidth = 3, style = plot.style_histogram) // conditon to find highs and lows up = ta.highest(tmoSource, tmoLength) dn = ta.lowest(tmoSource, tmoLength) // define conditions to be used for finding divergence phosc = ta.crossunder(ta.change(osc), 0) plosc = ta.crossover (ta.change(osc), 0) // test for divergence bear = osc > 0 and phosc and ta.valuewhen(phosc,osc,0) < ta.valuewhen(phosc,osc,1) and ta.valuewhen(phosc,up,0) > ta.valuewhen(phosc,up,1) ? 1 : 0 bull = osc < 0 and plosc and ta.valuewhen(plosc,osc,0) > ta.valuewhen(plosc,osc,1) and ta.valuewhen(plosc,dn,0) < ta.valuewhen(plosc,dn,1) ? 1 : 0 // ------------------------------------------------------------------------------------------------------------- headlineAMA = "AMA Settings" amaSource = input.source(defval = close, title = "AMA Source", group = headlineAMA) amaLength = input.int(defval = 50, title = "AMA Length", minval = 2, group = headlineAMA) amaMulti = input.float(defval = 2.0, title = "Factor", minval = 1) amaShowCd = input(defval = true , title = "As Smoothed Candles") amaShowEx = input(defval = true, title = "Show Alternating Extremities") amaAlpha = input.float(1.0, "Lag", minval=0, step=.1, tooltip='Control the lag of the moving average (higher = more lag)', group= 'AMA Kernel Parameters') amaBeta = input.float(0.5, "Overshoot", minval=0, step=.1, tooltip='Control the overshoot amplitude of the moving average (higher = overshoots with an higher amplitude)', group='AMA Kernel Parameters') // ------------------------------------------------------------------------------------------------------------- headlineSL = "Stop Loss Settings" slLength = input.int(defval = 10, title = "SL Period", minval = 1, group = headlineSL, tooltip = "Number of bars for swing high / low") // ------------------------------------------------------------------------------------------------------------- var b = array.new_float(0) var float x = na if barstate.isfirst for i = 0 to amaLength - 1 x := i / (amaLength - 1) w = math.sin(2 * 3.14159 * math.pow(x, amaAlpha)) * (1 - math.pow(x, amaBeta)) array.push(b, w) // local function to filter the source filter(series float x) => sum = 0. for i = 0 to amaLength - 1 sum := sum + x[i] * array.get(b,i) sum / array.sum(b) // apply filter function on source series srcFiltered = filter(amaSource) deviation = ta.sma(math.abs(amaSource - srcFiltered), amaLength) * amaMulti upper = srcFiltered + deviation lower = srcFiltered - deviation //---- crossHigh = ta.cross(high, upper) crossLow = ta.cross(low, lower) var os = 0 os := crossHigh ? 1 : crossLow ? 0 : os[1] ext = os * upper + (1 - os) * lower //---- os_css = ta.rsi(srcFiltered, amaLength) / 100 extColor = os == 1 ? #30FF85 : #ff1100 plot(srcFiltered, "MA", amaShowCd ? na : color.black, 2, editable = false) plot(amaShowEx ? ext : na, "Extremities", ta.change(os) ? na : extColor, 2, editable=false) // handle smoothed candles var float h = na var float l = na var float c = na var float body = na if amaShowCd h := filter(high) l := filter(low) c := filter(amaSource) body := math.abs(math.avg(c[1], c[2]) - c) ohlc_os = ta.rsi(c, amaLength) / 100 plotcandle(math.avg(c[1], c[2]), h, l, c, "Smooth Candles", #434651, bordercolor = na, editable = false, display = amaShowCd ? display.all : display.none) // ------------------------------------------------------------------------------------------------------------- plotshape(bull ? ext : na, "Bullish Circle", shape.circle, location.absolute, color = #00c42b, size=size.tiny) plotshape(bear ? ext : na, "Bearish Circle", shape.circle, location.absolute, color = #ff441f, size=size.tiny) plotshape(bull ? ext : na, "Bullish Label", shape.labeldown, location.absolute, color = #00c42b, text="Buy", textcolor=color.white, size=size.tiny) plotshape(bear ? ext : na, "Bearish Label", shape.labelup, location.absolute, color = #ff441f, text="Sell", textcolor=color.white, size=size.tiny) // ------------------------------------------------------------------------------------------------------------- candleSizeIncreasing = body[2] < body[1] and body[1] < body[0] longEntryCond = os == 1 and bull shortEntryCond = os == 0 and bear longEntry = strategy.opentrades == 0 and candleSizeIncreasing and not candleSizeIncreasing[1] and ta.barssince(longEntryCond) < ta.barssince(os == 0) and ta.barssince(longEntryCond) < ta.barssince(bear) shortEntry = strategy.opentrades == 0 and candleSizeIncreasing and not candleSizeIncreasing[1] and ta.barssince(shortEntryCond) < ta.barssince(os == 1) and ta.barssince(shortEntryCond) < ta.barssince(bull) longExit = strategy.opentrades > 0 and strategy.position_size > 0 and (bear or os == 0) shortExit = strategy.opentrades > 0 and strategy.position_size < 0 and (bull or os == 1) recentSwingHigh = ta.highest(high, slLength) // highest high of last candles recentSwingLow = ta.lowest(low, slLength) // lowest low of recent candles bgcolor(longEntry ? color.rgb(76, 175, 79, 90) : na) bgcolor(shortEntry ? color.rgb(255, 82, 82, 90) : na) slLong = (close - recentSwingLow) / syminfo.mintick // stop loss in ticks slShort = (recentSwingHigh - close) / syminfo.mintick // stop loss in ticks newOrderID = str.tostring(strategy.closedtrades + strategy.opentrades + 1) curOrderID = str.tostring(strategy.closedtrades + strategy.opentrades) alertMessageForEntry = "Trade {0} - New {1} Entry at price: {2} with stop loss at: {3}" if (longEntry) alertMessage = str.format(alertMessageForEntry, newOrderID, "Long", close, recentSwingLow) strategy.entry(newOrderID, strategy.long, alert_message = alertMessage) strategy.exit("Stop Loss Long", newOrderID, loss = slLong, alert_message = "Stop Loss for Trade " + newOrderID) if(longExit) strategy.close(curOrderID, alert_message = "Close Trade " + curOrderID) if (shortEntry) alertMessage = str.format(alertMessageForEntry, newOrderID, "Short", close, recentSwingLow) strategy.entry(newOrderID, strategy.short, alert_message = alertMessage) strategy.exit("Stop Loss Short", newOrderID, loss = slShort, alert_message = "Stop Loss for Trade " + newOrderID) if(shortExit) strategy.close(curOrderID, alert_message = "Close Trade " + curOrderID)