এই কৌশলটি টিএমও এবং এএমএ উভয় সূচকের ক্রয়-বিক্রয় সংকেতকে একত্রিত করে, যা লক্সআলগো দ্বারা বিকাশ করা হয়েছে, একটি ঝড়ের সময় ট্রেন্ড শুরু করার সুযোগ ক্যাপচার করার জন্য। এটি টিএমও সূচকের ক্রয়-বিক্রয় সংকেত, এএমএ সূচকের ক্রয়-বিক্রয় চূড়ান্ত মান, ক্রমবর্ধমান কে-লাইন সত্তা ইত্যাদির মতো একাধিক শর্ত পূরণ করার পরে অতিরিক্ত খালি করে দেয়। স্টপ-ডাউনটি হ’ল সর্বশেষ এনকে-লাইনের সর্বোচ্চ মূল্যের সর্বনিম্ন মূল্য।
টিএমও সূচকটি মূল্যের গতিশীলতার প্রতিফলন করে। এটি একটি ঝড়ের সূচক ধরণের, যখন দামের বিচ্যুতি ঘটে তখন একটি লেনদেনের সংকেত দেওয়া হয়। এএমএ সূচকটি একটি মসৃণ চলমান গড় সূচক। এটি মূল্যের ওঠানামা দেখায়, যখন দামগুলি উত্থান-পতনের কাছাকাছি থাকে তখন ওভারবোলের ঘটনাটি দেখায়।
এই কৌশলটির উপর ভিত্তি করে মূল যুক্তিটি হ’লঃ টিএমও সূচকটি ট্রেডিং সংকেত সরবরাহের জন্য মূল্যের প্রবণতা থেকে বিচ্ছিন্নতা প্রতিফলিত করতে পারে, এএমএ সূচকটি এমন অঞ্চলগুলি প্রদর্শন করতে পারে যেখানে দামটি বিপরীত হতে পারে এবং কে-লাইন সত্তাটির পরিমাণকে প্রবণতা শুরু করার জন্য নিশ্চিত করতে পারে। সুতরাং তাদের সংমিশ্রণটি ব্যবসায়ের সাফল্যের হারকে বাড়িয়ে তুলতে পারে। বিশেষত, কৌশলটি নিম্নলিখিত পরিস্থিতিতে পজিশনটি বেশি বা কম করবেঃ
এইভাবে এটি একটি একক সূচক দ্বারা সৃষ্ট মিথ্যা সংকেত সমস্যা সমাধান করে। স্টপ লস পদ্ধতিটি সর্বশেষ এন রুট কে লাইনের মধ্যে সর্বোচ্চ এবং সর্বনিম্ন মূল্য নির্বাচন করে, যা ঝুঁকি নিয়ন্ত্রণের জন্য আরও ভাল।
এই কৌশলটির বেশ কিছু সুবিধা রয়েছেঃ
সূচক সংমিশ্রণ, সংকেতের নির্ভুলতা বাড়ায়। টিএমও সূচক এবং এএমএ সূচক একে অপরকে যাচাই করে, মিথ্যা সংকেত হ্রাস করতে পারে, যার ফলে সংকেতের নির্ভুলতা বাড়ায়।
একাধিক শর্তের সমন্বয়, ট্রেন্ড ক্যাপচারের শুরু। কৌশল দ্বারা নির্ধারিত টিএমও সূচক সংকেত, এএমএ সূচকের চূড়ান্ত মান এবং কে লাইন সত্তার পরিমাণ বাড়ানোর মতো একাধিক শর্ত, ট্রেন্ডের শুরু হওয়ার সময়কে কার্যকরভাবে ক্যাপচার করতে পারে, যা স্কাল্পিং কৌশল অনুসরণ করে।
K-লাইন স্টপ পদ্ধতিতে ঝুঁকি নিয়ন্ত্রণ করুন। K-লাইন সর্বশেষ সর্বোচ্চ মূল্য সর্বনিম্ন মূল্যকে স্টপ পদ্ধতি হিসাবে গ্রহণ করে, প্রতিটি পয়েন্টের ঝুঁকিকে আরও ভালভাবে নিয়ন্ত্রণ করতে পারে। এটি সূচক পুনরায় গণনা দ্বারা উত্পন্ন পিছিয়ে পড়া ঝুঁকিকে বিপরীত করে না।
সংক্ষিপ্ত এবং কার্যকর ট্রেডিং লজিক. এই কৌশলটি কেবলমাত্র দুটি সূচক ব্যবহার করে একটি তুলনামূলকভাবে সম্পূর্ণ স্কাল্পিং কৌশল অর্জন করেছে, জটিল নয়, যুক্তি সংক্ষিপ্ত এবং পরিষ্কার। এবং উদাহরণস্বরূপ ফলাফলের ভিত্তিতে, কৌশলটি ভাল মুনাফা অর্জন করেছে।
এই কৌশলটি নিম্নলিখিত ঝুঁকির সাথে জড়িতঃ
প্রায়শই প্রবেশের ঝুঁকি গ্রহণ করুন। স্কাল্পিং কৌশল হিসাবে, এটির হোল্ডিংয়ের সময়টি দীর্ঘ নয়, যদি লেনদেনের ব্যয় বেশি হয় তবে এটি মুনাফার উপর কিছু প্রভাব ফেলতে পারে।
K-লাইন স্টপগুলি খুব বেশি ঝুঁকিপূর্ণ। সর্বশেষ সর্বোচ্চ এবং সর্বনিম্ন দামগুলিকে স্টপ হিসাবে ব্যবহার করা আরও বেশি আগ্রাসী হতে পারে, বাজার শব্দকে পুরোপুরি ফিল্টার করতে অক্ষম, স্টপগুলি ট্রিগার হওয়ার সম্ভাবনা বাড়ায়।
প্যারামিটার অপ্টিমাইজেশনের অসুবিধা ঝুঁকিপূর্ণ। কৌশলটি একাধিক প্যারামিটার জড়িত, সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে পাওয়া আরও কঠিন হতে পারে।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ
মার্কেট ট্রাডাকশনের মতো আরও ফিল্টারিং সূচক যুক্ত করে, আপনি কিছু মিথ্যা সংকেত ফিল্টার করতে পারেন এবং সংকেতের গুণমান আরও উন্নত করতে পারেন।
স্টপ পদ্ধতিতে ফিল্টারিংয়ের শর্ত যুক্ত করার চেষ্টা করুন, যাতে স্টপটি অত্যধিক তীব্র না হয়। উদাহরণস্বরূপ, স্টপটি ট্রিগার করার আগে কয়েক রুট কে লাইনের নিশ্চিতকরণের জন্য অপেক্ষা করুন, তারপরে স্টপ করুন।
প্যারামিটার অপ্টিমাইজেশান করুন, সূচক প্যারামিটারগুলির সর্বোত্তম সমন্বয় খুঁজে বের করুন। এটি আরও গোলমাল ফিল্টার করতে পারে এবং কৌশলগত সাফল্যের হার বাড়িয়ে তুলতে পারে। প্রধানত টিএমও সূচক দৈর্ঘ্য, এএমএ সূচক দৈর্ঘ্য এবং গুণিতক ইত্যাদি প্যারামিটারগুলি অপ্টিমাইজ করুন।
বিভিন্ন প্রজাতি এবং সময়কালের উপর ট্র্যাকিং এবং ক্রমাগত ট্র্যাকিংয়ের চেষ্টা করুন এবং ট্রেডিং প্রজাতি এবং সময়কালগুলি খুঁজে বের করুন যা এই কৌশলটির যৌক্তিকতার সাথে সবচেয়ে বেশি মিলিত হয়।
এই কৌশলটি টিএমও সূচক এবং এএমএ সূচকগুলির ট্রেডিং সিগন্যালের সমন্বয় করে, একটি প্রবণতা শুরুর সময় অনুসন্ধান করে। এটির উচ্চ সংকেত নির্ভুলতা, প্রবণতা শুরুর আগে ধরা এবং ঝুঁকি নিয়ন্ত্রণের সুবিধা রয়েছে। আরও প্যারামিটার এবং নিয়মের অপ্টিমাইজেশনের পরে, এই কৌশলটি একটি শক্তিশালী রিয়েল-টাইম স্কাল্পিং কৌশল হতে পারে।
/*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)