یہ اوسط سمت انڈیکس (ADX) اور قیمت کے وقفے پر مبنی ایک مقداری تجارتی حکمت عملی ہے۔ یہ حکمت عملی بنیادی طور پر مارکیٹ کے رجحان کی طاقت کا اندازہ کرنے کے لئے ADX اشارے کی اقدار کی نگرانی کرتی ہے اور مارکیٹ کی رفتار کو پکڑنے کے لئے قیمت کے وقفے کے اشاروں کو جوڑتی ہے۔ یہ حکمت عملی مخصوص تجارتی سیشنوں کے اندر کام کرتی ہے اور اسٹاپ نقصان اور روزانہ تجارت کی حدود کے ذریعے رسک مینجمنٹ کو نافذ کرتی ہے۔
بنیادی منطق میں مندرجہ ذیل اہم عناصر شامل ہیں:
یہ واضح منطق کے ساتھ ایک اچھی طرح سے ساختہ رجحان کی پیروی کرنے والی حکمت عملی ہے۔ یہ ایک مؤثر رسک مینجمنٹ فریم ورک کے تحت ADX اشارے کو قیمتوں کے وقفوں کے ساتھ جوڑ کر مارکیٹ کے رجحانات کو پکڑتا ہے۔ اگرچہ اصلاح کی گنجائش ہے ، لیکن حکمت عملی کی بنیاد مضبوط ہے اور مقداری تجارتی نظام کے بنیادی جزو کے طور پر موزوں ہے۔ تاجروں کو مشورہ دیا جاتا ہے کہ وہ براہ راست تجارت سے پہلے مکمل بیک ٹیسٹنگ اور پیرامیٹر کی اصلاح کریں ، اور مارکیٹ کے حالات کی بنیاد پر مخصوص بہتری لائیں۔
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © HuntGatherTrade // ======================== // NQ 30 minute, ES 30 minute //@version=5 strategy("ADX Breakout", overlay=false, initial_capital=25000, default_qty_value=1) // =============================== // Input parameters // =============================== stopLoss = input(1000.0, title="Stop Loss ($)", group="Exits") session = input("0730-1430:1234567", group="Trade Session") highestLB = input(34, title="Highest lookback window", group="Indicator values") // =============================== // Trade Session Handling // =============================== t = time(timeframe.period, session) // Reset numTrades at the start of each session var int numTrades = 0 is_new_session = ta.change(time("D")) != 0 if is_new_session numTrades := 0 // =============================== // Entry Conditions // =============================== [plusDI, minusDI, adxValue] = ta.dmi(50, 14) entryCondition = (close >= ta.highest(close, highestLB)[1]) and (adxValue < 17.5) and (strategy.position_size == 0) and (numTrades < 3) and not na(t) // =============================== // 7. Execute Entry // =============================== var float stopPricePlot = na if entryCondition entryPrice = close + syminfo.mintick strategy.entry("Long Entry", strategy.long, stop=entryPrice) //stopPrice = strategy.position_avg_price - (stopLoss / syminfo.pointvalue) //strategy.exit("Stop Loss", "Long Entry", stop=stopPrice) numTrades += 1 if (strategy.position_size > 0) and (strategy.position_size[1] == 0) stopPoints = stopLoss / syminfo.pointvalue stopPrice = strategy.position_avg_price - stopPoints stopPrice := math.round(stopPrice / syminfo.mintick) * syminfo.mintick strategy.exit("Stop Loss", from_entry="Long Entry", stop=stopPrice) if ta.change(strategy.opentrades) == 1 float entryPrice = strategy.opentrades.entry_price(0) stopPricePlot := entryPrice - (stopLoss / syminfo.pointvalue) if ta.change(strategy.closedtrades) == 1 stopPricePlot := na plot(stopPricePlot, "Stop-loss level", color.red, 1, plot.style_linebr) // =============================== // Exit at End of Session // =============================== if na(t) and strategy.position_size != 0 strategy.close_all(comment="End of Day Exit")