
یہ ایک ٹرینڈ ٹریکنگ حکمت عملی ہے جو متعدد تکنیکی اشارے پر مبنی ہے ، جس میں متحرک طور پر ایڈجسٹ کرنے والے ہولڈرز کے ذریعہ بینڈ ٹریڈنگ کی اجازت دی جاتی ہے۔ اس حکمت عملی میں بنیادی طور پر مارکیٹ کے رجحانات کا تجزیہ کرنے اور ٹریڈنگ سگنل تیار کرنے کے لئے انڈیکس کی متحرک اوسط ((EMA) ، نسبتا strong مضبوط اشارے ((RSI) اور رجحان کی سمت کا اشارہ ((ADX) استعمال کیا جاتا ہے ، جبکہ متحرک اسٹاپ نقصان اور منافع کے اہداف کو قائم کرنے کے لئے حقیقی اتار چڑھاؤ کی چوڑائی ((ATR) کا استعمال کیا جاتا ہے۔
یہ حکمت عملی ایک رجحان ٹریڈنگ سسٹم ہے جس میں متعدد تکنیکی اشارے شامل ہیں۔ یہ بنیادی طور پر ای ایم اے کی طرف سے قیمت کے رجحان کی سمت کا تعین کرتا ہے ، آر ایس آئی مارکیٹ میں اوور بیئر اور اوور سیل کی حیثیت کا اندازہ کرتا ہے ، اے ڈی ایکس رجحان کی طاقت کی تصدیق کرتا ہے ، اور آخر میں اے ٹی آر کا استعمال کرتے ہوئے پوزیشن سائز اور رسک مینجمنٹ پیرامیٹرز کو متحرک طور پر ایڈجسٹ کرتا ہے۔ حکمت عملی متعدد پوزیشن حساب کتاب کے طریقوں کی حمایت کرتی ہے ، بشمول اکاؤنٹ فیصد ، فکسڈ فنڈز اور فکسڈ معاہدوں کی تعداد پر مبنی۔
یہ ایک جامع حکمت عملی ہے جس میں متعدد تکنیکی اشارے کا استعمال کیا جاتا ہے ، جس میں متعدد جہتوں کے رجحان کی تصدیق اور بہتر رسک مینجمنٹ میکانزم کے ذریعہ نسبتا stable مستحکم تجارت کی جاتی ہے۔ اس حکمت عملی کا فائدہ اس نظام کے رجحان کی تصدیق کے طریقہ کار اور لچکدار پوزیشن مینجمنٹ میں ہے ، لیکن اس میں اشارے کی پسماندگی اور مارکیٹ کے ماحول میں موافقت جیسے مسائل پر بھی توجہ دینے کی ضرورت ہے۔ اس حکمت عملی کو مستقل طور پر بہتر بنانے اور خطرے کے کنٹرول میں بہتری کے ذریعہ ، مارکیٹ کے مختلف ماحول میں مستحکم کارکردگی کا امکان ہے۔
/*backtest
start: 2025-02-10 00:00:00
end: 2025-02-17 00:00:00
period: 45m
basePeriod: 45m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Momentum Scalper", shorttitle="EMS", overlay=true, pyramiding=0)
// === ПАРАМЕТРЫ ===
posSizeMethod = input.string("Capital %", title="Метод расчета позиции", options=["% Based", "Capital %", "Fixed Capital Based", "Fixed Contract Size"])
riskPerTrade = input.float(3, title="Риск на сделку (%)", minval=0.1, maxval=100, step=0.5) / 100
capitalPctPerTrade = input.float(10, title="Доля капитала на сделку (%)", minval=0.1, maxval=100, step=0.5) / 100
fixedCapitalAmount = input.float(100, title="Фиксированная сумма капитала", minval=0)
fixedContractSize = input.int(10, title="Фиксированный размер контракта")
atrLength = input.int(14, title="Длина ATR")
atrMultiplierSL = input.float(2.5, title="ATR множитель для SL")
atrMultiplierTP = input.float(1.5, title="ATR множитель для TP")
timeoutBars = input.int(20, title="Выход через X баров, если нет TP/SL")
emaLength = input.int(50, title="Длина EMA")
rsiLength = input.int(14, title="Длина RSI")
rsiOverbought = input.int(70, title="RSI перекупленность")
rsiOversold = input.int(30, title="RSI перепроданность")
adxLength = input.int(14, title="Длина ADX")
adxThreshold = input.float(20, title="Порог ADX для тренда")
leverage = input.int(15, title="Плечо", minval=1, maxval=100)
// === ИНДИКАТОРЫ ===
atr = ta.atr(atrLength)
ema = ta.ema(close, emaLength)
rsi = ta.rsi(close, rsiLength)
// === ADX ===
diPlus = ta.rma(math.max(high - high[1], 0), adxLength)
diMinus = ta.rma(math.max(low[1] - low, 0), adxLength)
dx = 100 * math.abs(diPlus - diMinus) / (diPlus + diMinus)
adx = ta.rma(dx, adxLength)
// === УСЛОВИЯ ВХОДА ===
longEntry = ta.crossover(close, ema) and rsi > 50 and adx > adxThreshold
shortEntry = ta.crossunder(close, ema) and rsi < 50 and adx > adxThreshold
// === РАСЧЕТ РАЗМЕРА ПОЗИЦИИ ===
var float qty = na
riskAmount = strategy.equity * riskPerTrade
stopLossDistance = atr * atrMultiplierSL
positionSize = riskAmount / stopLossDistance
if (posSizeMethod == "% Based")
qty := strategy.equity * riskPerTrade / (atr * atrMultiplierSL)
else if (posSizeMethod == "Capital %")
qty := strategy.equity * capitalPctPerTrade / close
else if (posSizeMethod == "Fixed Capital Based")
qty := fixedCapitalAmount / close
else if (posSizeMethod == "Fixed Contract Size")
qty := fixedContractSize
qty := qty * leverage // Умножаем на плечо
// === СТОП-ЛОСС И ТЕЙК-ПРОФИТ ===
entryPrice = close
stopLossLong = entryPrice - atrMultiplierSL * atr
stopLossShort = entryPrice + atrMultiplierSL * atr
takeProfit1 = entryPrice + atrMultiplierTP * atr * (longEntry ? 1 : -1)
takeProfit2 = entryPrice + atrMultiplierTP * atr * (longEntry ? 2 : -2) / 1.5
// === ТРЕЙЛИНГ-СТОП ===
trailStopDistance = atr * atrMultiplierSL
if (longEntry)
strategy.entry("Long", strategy.long, qty=qty)
strategy.exit("Exit Long", "Long", stop=stopLossLong, limit=takeProfit1, trail_points=trailStopDistance)
alertMessage = syminfo.ticker + " LONG\n" +
"Leverage: Cross " + str.tostring(leverage) + "x\n" +
"➡️ Entry: " + str.tostring(entryPrice) + "\n" +
"🟢 Take profit 1: " + str.tostring(takeProfit1) + "\n" +
"🛑 Stop loss: " + str.tostring(stopLossLong)
alert(alertMessage, alert.freq_once_per_bar_close)
if (shortEntry)
strategy.entry("Short", strategy.short, qty=qty)
strategy.exit("Exit Short", "Short", stop=stopLossShort, limit=takeProfit1, trail_points=trailStopDistance)
alertMessage = syminfo.ticker + " SHORT\n" +
"Leverage: Cross " + str.tostring(leverage) + "x\n" +
"➡️ Entry: " + str.tostring(entryPrice) + "\n" +
"🟢 Take profit 1: " + str.tostring(takeProfit1) + "\n" +
"🛑 Stop loss: " + str.tostring(stopLossShort)
alert(alertMessage, alert.freq_once_per_bar_close)
// === ВИЗУАЛИЗАЦИЯ ===
plotshape(longEntry, color=color.green, style=shape.labelup, location=location.belowbar, text="BUY")
plotshape(shortEntry, color=color.red, style=shape.labeldown, location=location.abovebar, text="SELL")
plot(ema, color=color.blue, title="EMA")
bgcolor(rsi > rsiOverbought or rsi < rsiOversold ? color.new(color.gray, 80) : na)