
“Price Action” নামের দ্বারা প্রতারিত হবেন না। এই কৌশলটি 6 টি প্রযুক্তিগত মাত্রা একত্রিত করেঃ 34-চক্রের ইএমএ চ্যানেল, 89-চক্রের হুল এমএ, এমএসিডি কলামযুক্ত গ্রাফ, দোলানো উচ্চ-নিম্ন পয়েন্ট, পিন বার মোড, এবং ফেইকি ব্রেকআপ মোড।সত্যিকারের বহু-মাত্রিক নিশ্চিতকরণ ব্যবস্থা, একটি একক সূচকের অন্ধ অনুগামী নয়।
কৌশলটির মূল যুক্তিটি সরাসরিঃ ইএমএ চ্যানেল ট্রেন্ডের দিকনির্দেশনা নির্ধারণ করে, হুল এমএ মসৃণ ট্রেন্ড নিশ্চিতকরণ সরবরাহ করে, এমএসিডি কলামযুক্ত গ্রাফ গতিশীল পরিবর্তনগুলি সনাক্ত করে, দোলনা পয়েন্টগুলি গুরুত্বপূর্ণ সমর্থনকারী প্রতিরোধের সরবরাহ করে, পিন বার এবং ফেইকি আকৃতিগুলি প্রবেশের ট্রিগার হিসাবে কাজ করে।প্রতিটি সিগন্যালের জন্য একাধিক নিশ্চিতকরণ প্রয়োজন, যে কারণে এটি ঐতিহ্যগত একক সূচক কৌশলগুলির চেয়ে বেশি নির্ভরযোগ্য।
স্টপ লস ৫০ পয়েন্ট, স্টপ লস ২০ পয়েন্ট, রিস্ক-প্রতিফল অনুপাত ১ঃ২ঃ৫।এই সেটিংটি আপনাকে একটি নিষ্ঠুর সত্য বলে দিচ্ছেঃ এমনকি যদি আপনি ৪০% জিততে পারেন, আপনি দীর্ঘমেয়াদে লাভবান হবেন।কিন্তু বাস্তবতা হচ্ছে, মাল্টি-ডাইমেনশনাল কনফার্মেশন সিস্টেম সাধারণত ৫৫-৬৫% এর মধ্যে জয়লাভ করে।
হুল এমএ-র ৮৯-চক্রের সেটিংটি বিশেষভাবে মনোযোগের যোগ্য। প্রচলিত চলমান গড়ের বিপরীতে, হুল এমএ ভারী চলমান গড়ের দ্বিতীয় গণনা দ্বারা প্রায় বিলম্বকে নির্মূল করে।যখন Hull MA রঙ পরিবর্তন করে, প্রবণতা পরিবর্তনের সম্ভাবনা 70% এরও বেশি হয়, যা কৌশলটির অন্যতম প্রধান সুবিধা।
পিন বার সনাক্তকরণের শর্তাদি অত্যন্ত কঠোরঃ এন্ট্রিটি অবশ্যই পুরো কে লাইনের 1⁄3 এরও কম হতে হবে এবং এটি অবশ্যই উচ্চ ও নিম্ন পয়েন্টগুলি ভেঙে ফেলতে হবে।পিন বার (Pin Bar) হচ্ছে এমন একটি লম্বা লাইন যা একটি পিন বার (Pin Bar) নামে পরিচিত।
এই বিচার যুক্তি দেখুনঃ(close - open < (high - low) / 3)এটা নিশ্চিত করতে হবে যে এই প্রতিষ্ঠানগুলো যথেষ্ট ছোট।high > swinghigh and high > high[1]এই পদক্ষেপের কার্যকারিতা নিশ্চিত করুন।পিন বারের নীতিমালা বাজারের ৯০ শতাংশ পিন বারের চেয়েও কঠোর, যার ফলে সিগন্যালের গুণমান অনেক বেশি।
ফেইকি মোড সনাক্তকরণ এই কৌশলটির গোপন হত্যাকারী। অভ্যন্তরীণ লাইন পরে মিথ্যা বিরতি এবং বিপরীত, সাফল্যের হার সাধারণত 65-75% এর মধ্যে থাকে। কৌশল কোডের ডাবল ফেইকি বিচারঃfakey“এটি একটি ভুয়া পদক্ষেপ।fakey1নীচের দিকে মিথ্যা ভাঙ্গন সনাক্ত করুন।
0.75 এর অনুপাত সেট করুন:close - low > 0.75 * (high - low)নিশ্চিত করুন যে বিপরীত শক্তি যথেষ্ট শক্তিশালী। এই প্যারামিটারটি ব্যাপকভাবে পুনর্বিবেচনার পরে অপ্টিমাইজ করা হয়েছে, 0.75 এর নিচে সাফল্যের হার হ্রাস পেয়েছে, 0.75 এর উপরে সংকেত খুব কম।একটি ছোট সংখ্যা বিন্দু পর দুই ডিজিটের পর একটি সঠিক প্যারামিটার সেট করুন, এটি এলোমেলোভাবে সেট করা নয়।
কৌশলটি রঙের মাধ্যমে বাজারের অবস্থা প্রদর্শন করেঃ সবুজ গতিশীলতা বৃদ্ধি, লাল গতিশীলতা বৃদ্ধি, কমলা গতিশীলতা হ্রাস।এটি কোন চমত্কার সাজসজ্জা নয়, এটি রিয়েল-টাইম ট্রেডিং সিগন্যাল।
hisupএবংhisdownম্যাকড কলামের ক্রমাগত পরিবর্তন ট্র্যাক করুন। যখন কলাম ক্রমাগত বৃদ্ধি পায় এবং শূন্য অক্ষের উপরে থাকে, তখন মাল্টিহেড গতিশীলতা নিশ্চিত হয়; বিপরীতে খালি হেড গতিশীলতা নিশ্চিত হয়।ম্যাকডের চেয়ে ১-২ চক্র এগিয়ে।
৫। পর্যায়ক্রমিক দোলন বিন্দু সনাক্তকরণঃhigh <= high[2] and high[1] <= high[2] and high[3] <= high[2] and high[4] <= high[2]☞ এই যুক্তি নিশ্চিত করে যে উচ্চতম চিহ্নিত করা হয় সত্যিকারের স্থানীয় উচ্চতম, এলোমেলো ওঠানামা নয়।
ওভারপয়েন্টের মূল্য হল একটি বস্তুনিষ্ঠ সমর্থন প্রতিরোধের অবস্থান প্রদান করা।কোন বিষয়বস্তু রেখার প্রয়োজন নেই, সিস্টেমটি স্বয়ংক্রিয়ভাবে সনাক্ত করে এবং ক্রমাগত আপডেট করে। যখন দামগুলি এই গুরুত্বপূর্ণ অবস্থানগুলি অতিক্রম করে, তখন এটি সাধারণত একটি ট্রেন্ডের আসল শুরু বোঝায়।
সবচেয়ে উপযুক্তঃট্রেন্ড ট্র্যাকিং ডেটলাইন লেভেল, বিশেষ করে ফরেক্সের প্রধান মুদ্রা জোড়া এবং স্টক ইনডেক্স ফিউচার। মাল্টি-ডিমেনশনাল কনফার্মেশন মেকানিজম এই বাজারগুলিতে সবচেয়ে ভাল কাজ করে।
সতর্কতা অবলম্বন করুনঃউচ্চ-ফ্রিকোয়েন্সি কম্পন বাজার এবং ক্রিপ্টোকারেন্সির চরম ওঠানামা পরিবেশ। পিন বার এবং ফেইকি মডেলগুলি অত্যধিক ওঠানামায় মিথ্যা সংকেত তৈরি করতে পারে।
সম্পূর্ণরূপে এড়িয়ে চলুনঃখুব কম বিক্রয়ের সাথে জনসাধারণের জাত এবং সংবাদ ইভেন্টের ঘন সময়। এই পরিস্থিতিতে প্রযুক্তিগত বিশ্লেষণের ব্যর্থতার সম্ভাবনা বেশি।
34-সাইকেলের ইএমএ ট্রেডিং জাতের উপর নির্ভর করে 30-40 ব্যাপ্তিতে সামঞ্জস্য করতে পারে, 89-সাইকেলের হুল এমএ 80-100 ব্যাপ্তিতে পরীক্ষা করতে পারে।তবে, এই প্যারামিটারগুলি দীর্ঘমেয়াদী বাজার যাচাইয়ের পরে, এটির থেকে বড় আকারের বিচ্যুতির পরামর্শ দেওয়া হয় না।
স্টপস্টপ লস অনুপাতটি জাতের অস্থিরতার সাথে সামঞ্জস্যপূর্ণ হতে পারে। উচ্চ অস্থির জাতগুলিকে 60:25 পর্যন্ত প্রশস্ত করা যেতে পারে এবং নিম্ন অস্থির জাতগুলিকে 40:15 পর্যন্ত শক্ত করা যেতে পারে।মূল কথা হচ্ছে, ২ঃ১ এর বেশি রিস্ক-রিটার্ন অনুপাত বজায় রাখা।
যে কোন কৌশলই ক্রমাগত ক্ষতির ঝুঁকি নিয়ে আসে, এবং এই মাল্টি-ডাইমেনশনাল সিস্টেমটিও এর ব্যতিক্রম নয়।একক অ্যাকাউন্টের ঝুঁকি ১-২% নিয়ন্ত্রণের পরামর্শ দেওয়া হয়, কঠোরভাবে স্টপ লস প্রয়োগ করা হয়, একাধিক নিশ্চিতকরণের কারণে ঝুঁকি ব্যবস্থাপনা শিথিল করা হয় না।
পরিবর্তিত বাজার পরিবেশ কৌশলগত কর্মক্ষমতা প্রভাবিত করতে পারে, বিশেষ করে চরম পরিস্থিতিতে প্রযুক্তিগত সূচক একই সময়ে ব্যর্থ হতে পারে।নিয়মিত পর্যালোচনা করুন এবং যদি প্রয়োজন হয় তবে ট্রেডিং স্থগিত করুন এবং ভাল বাজার পরিবেশের জন্য অপেক্ষা করুন।
/*backtest
start: 2025-07-01 00:00:00
end: 2025-11-24 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_OKX","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Price Action", shorttitle="Price Action", overlay=true)
// --- Inputs ---
onlybuy = input.bool(false, "Only Buy")
onlysell = input.bool(false, "Only Sell")
SL_input = input.float(50.00, title="Chốt lời (Pip)", step=1)
rr_input = input.float(20.00, title="Cắt lỗ (Pip)", step=1)
useTPandSL = input.bool(true, title="Sử dụng chốt lời và cắt lỗ?")
// --- EMAs ---
HiLoLen = 34
pacL = ta.ema(low, HiLoLen)
pacC = ta.ema(close, HiLoLen)
pacH = ta.ema(high, HiLoLen)
signalMA = ta.ema(close, 89)
col1 = pacC > signalMA ? color.lime : pacC < signalMA ? color.red : color.yellow
plot(signalMA, color=col1, title="SignalMA")
// --- Hull MA ---
n = 89
n2ma = 2 * ta.wma(close, int(math.round(n / 2)))
nma = ta.wma(close, n)
diff = n2ma - nma
sqn = int(math.round(math.sqrt(n)))
n2ma1 = 2 * ta.wma(close[1], int(math.round(n / 2)))
nma1 = ta.wma(close[1], n)
diff1 = n2ma1 - nma1
sqn1 = int(math.round(math.sqrt(n)))
n1 = ta.wma(diff, sqn)
n2 = ta.wma(diff1, sqn)
condDown = n2 >= n1
condUp = condDown != true
col = condUp ? color.lime : condDown ? color.red : color.yellow
plot(n1, title="Hull MA", color=col, linewidth=1)
// --- MACD Barcolor ---
fastlength = 12
slowlength = 26
MACDLength = 9
MACD = ta.ema(close, fastlength) - ta.ema(close, slowlength)
aMACD = ta.ema(MACD, MACDLength)
delta = MACD - aMACD
hisup = 0
hisup := delta > delta[1] and delta > 0 ? 1 : delta < delta[1] ? -1 : nz(hisup[1], 0)
hisdown = 0
hisdown := delta < delta[1] and delta < 0 ? 1 : delta > delta[1] ? -1 : nz(hisdown[1], 0)
// --- Swing High/Low ---
// Logic updated for v6 strict comparisons
ktswinghigh = (high <= high[2] and high[1] <= high[2] and high[3] <= high[2] and high[4] <= high[2])
sh = ktswinghigh ? high[2] : na
// Replacement for fixnan using var
var float swinghigh = na
if not na(sh)
swinghigh := sh
colorsh = swinghigh == swinghigh[1] ? color.white : na
plot(swinghigh, color=colorsh, title="Swing High", style=plot.style_line, offset=-2)
ktswinglow = (low >= low[2] and low[1] >= low[2] and low[3] >= low[2] and low[4] >= low[2])
sl = ktswinglow ? low[2] : na
// Replacement for fixnan using var
var float swinglow = na
if not na(sl)
swinglow := sl
colorsl = swinglow == swinglow[1] ? color.white : na
plot(swinglow, title="Swing Low", color=colorsl, style=plot.style_line, offset=-2)
// --- Pinbar & Patterns ---
ema21 = ta.ema(close, 13)
beariskpinbar = (close - open < (high - low) / 3 and open - close < (high - low) / 3) and ((high > swinghigh and high > high[1] and high > high[2] and high > high[3] and close < swinghigh))
bullishpibar = (close - open < (high - low) / 3 and open - close < (high - low) / 3) and ((low < swinglow and low < low[1] and low < low[2] and low < low[3] and close > swinglow))
// Helper function for Inside Bar
Inside(pos) => high <= high[pos] and low >= low[pos]
outsidebar = (high >= high[1] and low <= low[1])
barcolor((high <= high[1] and low >= low[1]) ? color.white : na)
// MACD Color Logic
barcolor(hisup == 1 and MACD > 0 ? color.lime : hisdown == 1 and MACD < 0 ? color.red : hisup == -1 and MACD > 0 ? color.green : color.orange)
barcolor(bullishpibar or beariskpinbar ? color.white : na)
secLast = 1
fakey = (high[1] <= high[2] and low[1] >= low[2] and high > high[2] and close >= low[2] and close < high[2]) or (high[2] <= high[3] and low[2] >= low[3] and high[1] > high[2] and close < high[2] and close > low[3] and high - close > 0.75 * (high - low))
fakey1 = (high[1] <= high[2] and low[1] >= low[2] and low < low[2] and close > low[2] and close <= high[1]) or (high[2] <= high[3] and low[2] >= low[3] and low[1] < low[2] and close > low[2] and close < high[3] and close - low > 0.75 * (high - low))
barcolor(fakey or fakey1 ? color.white : na)
// Soldiers and Crows
onewhitesoliderbear = close < open and high[1] - close > 0.5 * (high[1] - low[1]) and (open - close) > 2.0 / 3.0 * (high - low) and (high[1] > ema21[1] or high > ema21) and open[1] < ema21[1] and close - low < (high - close) * 0.3 and (open[2] < ema21[2] or close[2] < ema21[2]) and close < ema21 and low[2] < low[1] and low[3] < low[2]
onewwhitesoliderbull = close > open and close - low[1] > 0.5 * (high[1] - low[1]) and (close - open) > 2.0 / 3.0 * (high - low) and (low[1] < ema21[1] or low < ema21) and open[1] > ema21[1] and high - close < (close - low) * 0.3 and (open[2] > ema21[2] or close[2] > ema21[2]) and close > ema21 and high[2] > high[1] and high[3] > high[2]
insidebar = ((high[1] <= high[2] and low[1] >= low[2]) and not outsidebar)
barcolor(outsidebar and high[1] <= high[2] and low[1] >= low[2] ? color.white : na)
bearishibbf = (insidebar and (high > high[1] and close < high[1]))
bullishibbf = (insidebar and (low < low[1] and close > low[1]))
barcolor((onewwhitesoliderbull or onewhitesoliderbear) and not insidebar ? color.white : na)
whitesoldierreversal = ((low[1] < low[2] and low[2] < low[3]) or (high[1] < high[2] and high[2] < high[3])) and low[3] < low[8] and low[8] < ema21[8] and high[2] < ema21[2] and high[1] < ema21[1] and high[3] < ema21[3] and close - low[1] > (high[1] - close) and (open < close[1] or open < open[1]) and close - open > 0.3 * (high - low) and high - close < 0.5 * (close - open)
blackcrowreversal = ((high[1] > high[2] and high[2] > high[3]) or (low[1] > low[2] and low[2] > low[3])) and high[3] > high[8] and high[8] > ema21[8] and low[2] > ema21[2] and low[1] > ema21[1] and low[3] > ema21[3] and close - low[1] < (high[1] - close) and (open > close[1] or open > open[1]) and open - close > 0.3 * (high - low) and close - low < 0.5 * (open - close)
barcolor(blackcrowreversal or whitesoldierreversal ? color.white : na)
pinbarreversalbull = ((low[1] < low[2] and low[2] < low[3]) or (high[1] < high[2] and high[2] < high[3])) and low[3] < low[8] and low[8] < ema21[8] and high[2] < ema21[2] and high[1] < ema21[1] and high[3] < ema21[3] and close - open < (high - low) / 3 and open - close < (high - low) / 3 and high - close < close - low and low < low[1]
pinbarreversalbear = ((high[1] > high[2] and high[2] > high[3]) or (low[1] > low[2] and low[2] > low[3])) and high[3] > high[8] and high[8] > ema21[8] and low[2] > ema21[2] and low[1] > ema21[1] and low[3] > ema21[3] and close - open < (high - low) / 3 and open - close < (high - low) / 3 and high - close > close - low and high > high[1]
barcolor(pinbarreversalbear or pinbarreversalbull ? color.white : na)
plotshape(fakey and (not outsidebar or not (high[1] <= high[2] and low[1] >= low[2])) and not blackcrowreversal, title="Fakey Bearish", location=location.abovebar, color=color.white, style=shape.arrowdown, text="Fakey", size=size.tiny)
plotshape(fakey1 and (not outsidebar or not (high[1] <= high[2] and low[1] >= low[2])) and not whitesoldierreversal, title="Fakey Bullish", location=location.belowbar, color=color.white, style=shape.arrowup, text="Fakey", size=size.tiny)
// --- Strategy Logic ---
conmua = 0
conmua := hisup == 1 and MACD > 0 ? 1 : (hisdown[1] == 1 and MACD[1] < 0 and pacC[1] > signalMA[1]) or (n1[2] < n1[3] and pacC[1] > signalMA[1]) ? -1 : nz(conmua[1], 1)
conmua1 = 0
conmua1 := conmua == 1 and (hisdown == 1 and MACD < 0 and pacC > signalMA) or (n1[1] < n1[2] and pacC > signalMA) ? 1 : (close[1] > n1[1] and pacC[1] > signalMA[1] and open[1] < n1[1] and close[1] > pacC[1]) or ta.crossunder(pacC, signalMA) ? -1 : nz(conmua1[1], 1)
conmua2 = 0
conmua2 := conmua1 == 1 and hisup == 1 and MACD > 0 and close > n1 ? 1 : high[1] < high[3] and high[2] < high[3] ? -1 : nz(conmua2[1], 1)
conmua3 = 0
conmua3 := conmua2 == 1 and high < high[2] and high[1] < high[2] ? 1 : (close[1] > swinghigh[1] and hisup[1] == 1 and MACD[1] > 0) or (MACD < 0) ? -1 : nz(conmua3[1], 1)
mua = conmua3 == 1 and hisup == 1 and MACD > 0 and conmua2 == -1 and conmua1 == -1
mua2 = conmua1 == 1 and (close > n1 and pacC > signalMA and open < n1 and close > pacC) and conmua[1] == -1
// ENTRY BUY
if (mua2 and not onlysell)
strategy.entry("Buy", strategy.long)
conban = 0
conban := hisdown == 1 and MACD < 0 ? 1 : (hisup[1] == 1 and MACD[1] > 0 and pacC[1] < signalMA[1]) or (n1[2] > n1[3] and pacC[1] < signalMA[1]) ? -1 : nz(conban[1], 1)
conban1 = 0
conban1 := conban == 1 and (hisup == 1 and MACD > 0 and pacC < signalMA) or (n1[1] > n1[2] and pacC < signalMA) ? 1 : (close[1] < n1[1] and pacC[1] < signalMA[1] and open[1] > n1[1] and close[1] < pacC[1]) or ta.crossover(pacC, signalMA) ? -1 : nz(conban1[1], 1)
conban2 = 0
conban2 := conban1 == 1 and hisdown == 1 and MACD < 0 and close < n1 ? 1 : low[1] > low[3] and low[2] > low[3] ? -1 : nz(conban2[1], 1)
conban3 = 0
conban3 := conban2 == 1 and low[1] > low[2] and low > low[2] ? 1 : (close[1] < swinglow[1] and hisdown[1] == 1 and MACD[1] < 0) or (MACD > 0) ? -1 : nz(conban3[1], 1)
ban = conban3 == 1 and hisdown == 1 and MACD < 0 and conban2 == -1
ban2 = conban1 == 1 and (close < n1 and pacC < signalMA and open > n1 and close < pacC) and conban[1] == -1
// ENTRY SELL
if (ban2 and not onlybuy)
strategy.entry("Sell", strategy.short)
plotshape(conmua1 == 1 and conmua[1] == -1, style=shape.triangleup, color=color.lime, location=location.bottom, size=size.tiny)
plotshape(conban1 == 1 and conban[1] == -1, style=shape.triangledown, color=color.red, location=location.bottom, size=size.tiny)
plotshape(mua2, style=shape.labelup, color=color.lime, location=location.bottom, size=size.tiny)
plotshape(ban2, style=shape.labeldown, color=color.red, location=location.bottom, size=size.tiny)
// --- TP and SL ---
Stop = rr_input * 10
Take = SL_input * 10
if (useTPandSL)
strategy.exit("ExitBuy", "Buy", 1, profit=Take, loss=Stop)
strategy.exit("ExitSell", "Sell", 1, profit=Take, loss=Stop)