تحلیل و سیگنال رایگان تمامی بازارهای مالی با هوش مصنوعی بایتیکل
// @version=5 استراتژی("مدیریت ریسک EMA+MACD+RSI - TP 10% / SL
Haizan12

مشخصات معامله
قیمت در زمان انتشار:
۱.۰۵۰۶
توضیحات
// @version=5
استراتژی("مدیریت ریسک EMA+MACD+RSI - TP 10% / SL 2% (قابل تنظیم)",
overlay=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=1, // با مقدار محاسبه شده qty_percent جایگزین خواهد شد
commission_type=strategy.commission.percent,
commission_value=0.04, // کمیسیون پیشفرض (درصد) — تغییر دهید به کارگزار خود
slippage=0)
// ==========================
// === ورودیهای کاربر
// ==========================
tpPercent = input.float(10.0, "سود بردن (%)", step=0.1)
stopPercent = input.float(2.0, "استاپ لاس (%)", step=0.1)
riskPerTradePct = input.float(2.0, "ریسک در هر معامله (% از سرمایه)", step=0.1)
maxPositionPct = input.float(100.0, "حداکثر موقعیت مجاز (% از سرمایه)", step=1.0)
fastEMAlen = input.int(20, "طول EMA سریع")
slowEMAlen = input.int(50, "طول EMA کند")
macdFast = input.int(12, "MACD سریع")
macdSlow = input.int(26, "MACD کند")
macdSig = input.int(9, "سیگنال MACD")
rsiLen = input.int(14, "طول RSI")
rsiThreshold = input.float(50.0, "آستانه RSI (فیلتر)")
useVolumeFilter = input.bool(true, "استفاده از تأیید حجم (بالای SMA)")
volSmaLen = input.int(20, "طول SMA حجم")
// اختیاری: حداقل سرمایه برای معامله (از خریدهای کوچک جلوگیری میکند)
minEquityToTrade = input.float(50.0, "حداقل سرمایه برای معامله (دلار)", step=1)
// ==========================
// === نشانگرها و فیلترها
// ==========================
price = close
fastEMA = ta.ema(price, fastEMAlen)
slowEMA = ta.ema(price, slowEMAlen)
= ta.macd(price, macdFast, macdSlow, macdSig)
rsi = ta.rsi(price, rsiLen)
volSMA = ta.sma(volume, volSmaLen)
volOK = not useVolumeFilter or (volume > volSMA)
// فیلتر روند: فقط زمانی که fastEMA بالای slowEMA است، خریدها را انجام دهید (و برعکس برای فروشها)
bullTrend = fastEMA > slowEMA
bearTrend = fastEMA < slowEMA
// سیگنالهای ورود (محافظهکارانه — نیاز به تأییدهای متعدد دارد)
longSignal = bullTrend and ta.crossover(macdHist, 0) and rsi > rsiThreshold and volOK
shortSignal = bearTrend and ta.crossunder(macdHist, 0) and rsi < (100 - rsiThreshold) and volOK
// ==========================
// === اندازهگیری موقعیت (qty_percent)
// ==========================
// اگر stopPercent برابر 0 یا نزدیک به 0 باشد، از تقسیم بر صفر جلوگیری کنید
stopPctSafe = math.max(stopPercent, 0.0001)
// ارزش موقعیت به عنوان درصدی از سرمایه مورد نیاز است تا ریسک "riskPerTradePct" با استاپ "stopPercent"
// فرمول مشتق شده: position_value = equity * (risk% / stop%) -> position_value_pct = (risk%/stop%) * 100
rawPosValuePct = (riskPerTradePct / stopPctSafe) * 100.0
// محدود به حداکثر مشخص شده توسط کاربر و 100% (نمیتوان بیش از 100% از سرمایه را تخصیص داد مگر اینکه بخواهید از اهرم استفاده کنید)
posValuePctCapped = math.min(rawPosValuePct, math.min(maxPositionPct, 100.0))
// اگر سرمایه حساب کمتر از حداقل باشد، اندازه را به صفر تنظیم کنید
qtyPercentToUse = strategy.equity >= minEquityToTrade ? posValuePctCapped : 0.0
// ایمنی: اگر درصد qty محاسبه شده 0 باشد، وارد معاملات نخواهیم شد
// (توجه: strategy.entry در v5 پارامتر qty_percent را میپذیرد)
// ==========================
// === اجرای سفارش
// ==========================
longId = "Long"
shortId = "Short"
// وقتی وارد میشویم، بلافاصله یک سفارش خروج متصل به ورودی با قیمتهای استاپ و محدود قرار میدهیم
if (longSignal and qtyPercentToUse > 0)
// محاسبه قیمت استاپ و سود در فضای قیمت بر اساس قیمت بسته فعلی (ورود با قیمت بازار خواهد بود)
stopPriceLong = price * (1 - stopPercent / 100)
limitPriceLong = price * (1 + tpPercent / 100)
// ارسال ورودی با استفاده از qty_percent
strategy.entry(id=longId, direction=strategy.long, qty_percent=qtyPercentToUse, comment="EMA+MACD+RSI Long")
// خروج را به ورودی نامگذاری شده متصل کنید
strategy.exit("Exit Long", from_entry=longId, stop=stopPriceLong, limit=limitPriceLong)
if (shortSignal and qtyPercentToUse > 0)
stopPriceShort = price * (1 + stopPercent / 100)
limitPriceShort = price * (1 - tpPercent / 100)
strategy.entry(id=shortId, direction=strategy.short, qty_percent=qtyPercentToUse, comment="EMA+MACD+RSI Short")
strategy.exit("Exit Short", from_entry=shortId, stop=stopPriceShort, limit=limitPriceShort)
// اختیاری: اطمینان حاصل کنید که خروجها وجود دارند اگر کاربر ورودیهای جدید را غیرفعال کند.
// (این به پر شدن چند بار کمک میکند: وقتی یک ورودی واقعاً پر میشود، خروج متصل اعمال خواهد شد)
// ==========================
// === ترسیم و برچسبها
// ==========================
plot(fastEMA, color=color.new(color.green, 0), title="EMA سریع")
plot(slowEMA, color=color.new(color.red, 0), title="EMA کند")
hline(50, "RSI 50", color=color.gray)
plot(rsi, title="RSI", color=color.blue, linewidth=1, transp=60, display=display.none) // به طور پیشفرض پنهان است
// نمایش اطلاعات آخرین معامله بر روی چارت
var label lastTradeLbl = na
if (barstate.islast)
label.delete(lastTradeLbl)
lastTradeLbl := label.new(x=bar_index, y=high, text =
"TP: " + str.tostring(tpPercent, "#.##") + "% SL: " + str.tostring(stopPercent, "#.##") + "%\n" +
"ریسک/معامله: " + str.tostring(riskPerTradePct, "#.##") + "%\n" +
"درصد qty استفاده شده: " + str.tostring(qtyPercentToUse, "#.##") + "%",
style=label.style_label_right, color=color.new(color.black, 80), textcolor=color.white, size=size.small)
// نمایش سیگنالهای خرید/فروش به صورت بصری
plotshape(longSignal, title="سیگنال خرید", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small, text="خرید")
plotshape(shortSignal, title="سیگنال فروش", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, text="فروش")
// ==========================
// === یادداشتها
// ==========================
// - اندازهگیری موقعیت از منطق درصد سرمایه استفاده میکند: position_value_pct = (risk% / stop%) * 100
// مثال: riskPerTradePct=2 و stopPercent=2 -> position_value_pct = 100% (کل سرمایه).
// - اگر میخواهید اهرم >1 را مجاز کنید، `maxPositionPct` را > 100 افزایش دهید. مراقب باشید.
// - کمیسیون و لغزش در بالای این اسکریپت قابل تنظیم هستند.
// - میتوانید فیلترهای ورودی (طولهای EMA، آستانه RSI، فیلتر حجم را حذف کنید) تا با دارایی/زمانبندی شما سازگار شود.
// - قبل از استفاده در معاملات زنده، به طور کامل در نمادها و زمانبندیهای مختلف تست کنید.
// ==========================
استراتژی("مدیریت ریسک EMA+MACD+RSI - TP 10% / SL 2% (قابل تنظیم)",
overlay=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=1, // با مقدار محاسبه شده qty_percent جایگزین خواهد شد
commission_type=strategy.commission.percent,
commission_value=0.04, // کمیسیون پیشفرض (درصد) — تغییر دهید به کارگزار خود
slippage=0)
// ==========================
// === ورودیهای کاربر
// ==========================
tpPercent = input.float(10.0, "سود بردن (%)", step=0.1)
stopPercent = input.float(2.0, "استاپ لاس (%)", step=0.1)
riskPerTradePct = input.float(2.0, "ریسک در هر معامله (% از سرمایه)", step=0.1)
maxPositionPct = input.float(100.0, "حداکثر موقعیت مجاز (% از سرمایه)", step=1.0)
fastEMAlen = input.int(20, "طول EMA سریع")
slowEMAlen = input.int(50, "طول EMA کند")
macdFast = input.int(12, "MACD سریع")
macdSlow = input.int(26, "MACD کند")
macdSig = input.int(9, "سیگنال MACD")
rsiLen = input.int(14, "طول RSI")
rsiThreshold = input.float(50.0, "آستانه RSI (فیلتر)")
useVolumeFilter = input.bool(true, "استفاده از تأیید حجم (بالای SMA)")
volSmaLen = input.int(20, "طول SMA حجم")
// اختیاری: حداقل سرمایه برای معامله (از خریدهای کوچک جلوگیری میکند)
minEquityToTrade = input.float(50.0, "حداقل سرمایه برای معامله (دلار)", step=1)
// ==========================
// === نشانگرها و فیلترها
// ==========================
price = close
fastEMA = ta.ema(price, fastEMAlen)
slowEMA = ta.ema(price, slowEMAlen)
= ta.macd(price, macdFast, macdSlow, macdSig)
rsi = ta.rsi(price, rsiLen)
volSMA = ta.sma(volume, volSmaLen)
volOK = not useVolumeFilter or (volume > volSMA)
// فیلتر روند: فقط زمانی که fastEMA بالای slowEMA است، خریدها را انجام دهید (و برعکس برای فروشها)
bullTrend = fastEMA > slowEMA
bearTrend = fastEMA < slowEMA
// سیگنالهای ورود (محافظهکارانه — نیاز به تأییدهای متعدد دارد)
longSignal = bullTrend and ta.crossover(macdHist, 0) and rsi > rsiThreshold and volOK
shortSignal = bearTrend and ta.crossunder(macdHist, 0) and rsi < (100 - rsiThreshold) and volOK
// ==========================
// === اندازهگیری موقعیت (qty_percent)
// ==========================
// اگر stopPercent برابر 0 یا نزدیک به 0 باشد، از تقسیم بر صفر جلوگیری کنید
stopPctSafe = math.max(stopPercent, 0.0001)
// ارزش موقعیت به عنوان درصدی از سرمایه مورد نیاز است تا ریسک "riskPerTradePct" با استاپ "stopPercent"
// فرمول مشتق شده: position_value = equity * (risk% / stop%) -> position_value_pct = (risk%/stop%) * 100
rawPosValuePct = (riskPerTradePct / stopPctSafe) * 100.0
// محدود به حداکثر مشخص شده توسط کاربر و 100% (نمیتوان بیش از 100% از سرمایه را تخصیص داد مگر اینکه بخواهید از اهرم استفاده کنید)
posValuePctCapped = math.min(rawPosValuePct, math.min(maxPositionPct, 100.0))
// اگر سرمایه حساب کمتر از حداقل باشد، اندازه را به صفر تنظیم کنید
qtyPercentToUse = strategy.equity >= minEquityToTrade ? posValuePctCapped : 0.0
// ایمنی: اگر درصد qty محاسبه شده 0 باشد، وارد معاملات نخواهیم شد
// (توجه: strategy.entry در v5 پارامتر qty_percent را میپذیرد)
// ==========================
// === اجرای سفارش
// ==========================
longId = "Long"
shortId = "Short"
// وقتی وارد میشویم، بلافاصله یک سفارش خروج متصل به ورودی با قیمتهای استاپ و محدود قرار میدهیم
if (longSignal and qtyPercentToUse > 0)
// محاسبه قیمت استاپ و سود در فضای قیمت بر اساس قیمت بسته فعلی (ورود با قیمت بازار خواهد بود)
stopPriceLong = price * (1 - stopPercent / 100)
limitPriceLong = price * (1 + tpPercent / 100)
// ارسال ورودی با استفاده از qty_percent
strategy.entry(id=longId, direction=strategy.long, qty_percent=qtyPercentToUse, comment="EMA+MACD+RSI Long")
// خروج را به ورودی نامگذاری شده متصل کنید
strategy.exit("Exit Long", from_entry=longId, stop=stopPriceLong, limit=limitPriceLong)
if (shortSignal and qtyPercentToUse > 0)
stopPriceShort = price * (1 + stopPercent / 100)
limitPriceShort = price * (1 - tpPercent / 100)
strategy.entry(id=shortId, direction=strategy.short, qty_percent=qtyPercentToUse, comment="EMA+MACD+RSI Short")
strategy.exit("Exit Short", from_entry=shortId, stop=stopPriceShort, limit=limitPriceShort)
// اختیاری: اطمینان حاصل کنید که خروجها وجود دارند اگر کاربر ورودیهای جدید را غیرفعال کند.
// (این به پر شدن چند بار کمک میکند: وقتی یک ورودی واقعاً پر میشود، خروج متصل اعمال خواهد شد)
// ==========================
// === ترسیم و برچسبها
// ==========================
plot(fastEMA, color=color.new(color.green, 0), title="EMA سریع")
plot(slowEMA, color=color.new(color.red, 0), title="EMA کند")
hline(50, "RSI 50", color=color.gray)
plot(rsi, title="RSI", color=color.blue, linewidth=1, transp=60, display=display.none) // به طور پیشفرض پنهان است
// نمایش اطلاعات آخرین معامله بر روی چارت
var label lastTradeLbl = na
if (barstate.islast)
label.delete(lastTradeLbl)
lastTradeLbl := label.new(x=bar_index, y=high, text =
"TP: " + str.tostring(tpPercent, "#.##") + "% SL: " + str.tostring(stopPercent, "#.##") + "%\n" +
"ریسک/معامله: " + str.tostring(riskPerTradePct, "#.##") + "%\n" +
"درصد qty استفاده شده: " + str.tostring(qtyPercentToUse, "#.##") + "%",
style=label.style_label_right, color=color.new(color.black, 80), textcolor=color.white, size=size.small)
// نمایش سیگنالهای خرید/فروش به صورت بصری
plotshape(longSignal, title="سیگنال خرید", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small, text="خرید")
plotshape(shortSignal, title="سیگنال فروش", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, text="فروش")
// ==========================
// === یادداشتها
// ==========================
// - اندازهگیری موقعیت از منطق درصد سرمایه استفاده میکند: position_value_pct = (risk% / stop%) * 100
// مثال: riskPerTradePct=2 و stopPercent=2 -> position_value_pct = 100% (کل سرمایه).
// - اگر میخواهید اهرم >1 را مجاز کنید، `maxPositionPct` را > 100 افزایش دهید. مراقب باشید.
// - کمیسیون و لغزش در بالای این اسکریپت قابل تنظیم هستند.
// - میتوانید فیلترهای ورودی (طولهای EMA، آستانه RSI، فیلتر حجم را حذف کنید) تا با دارایی/زمانبندی شما سازگار شود.
// - قبل از استفاده در معاملات زنده، به طور کامل در نمادها و زمانبندیهای مختلف تست کنید.
// ==========================
منتخب سردبیر
مشاهده بیشتردستیار هوشمند ارز دیجیتال
ترمینال ترید بایتیکل نرمافزار جامع ترید و سرمایهگذاری در بازار ارز دیجیتال است و امکاناتی مانند دورههای آموزشی ترید و سرمایهگذاری، تریدینگ ویو بدون محدودیت، هوش مصنوعی استراتژی ساز ترید، کلیه دادههای بازارهای مالی شامل دادههای اقتصاد کلان، تحلیل احساسات بازار، تکنیکال و آنچین، اتصال و مدیریت حساب صرافیها و تحلیلهای لحظهای را برای کاربران فراهم میکند.

