
یہ حکمت عملی ایک انڈیکس کے متحرک اوسط ((EMA) کراس سگنل پر مبنی سمارٹ ڈالر لاگت اوسط ((DCA) حکمت عملی ہے ، جس میں خود بخود اتار چڑھاؤ کے لئے محفوظ آرڈر ((SO) کی تعیناتی اور ایک جدید ڈبل ٹریک اسٹاپ نقصان کا طریقہ کار شامل ہے۔ یہ بڑھتے ہوئے رجحان کی تصدیق پر مارکیٹ میں داخل ہوتا ہے ، اور پھر مارکیٹ میں اتار چڑھاؤ کے مطابق اضافی محفوظ آرڈرز کو خود بخود تعینات کرتا ہے ، جبکہ معیاری ٹریکنگ اسٹاپ نقصان اور منافع کو لاک کرنے والے ٹریکنگ سسٹم کا استعمال کرتے ہوئے منافع کی حفاظت کرتا ہے۔ یہ حکمت عملی زیادہ اتار چڑھاؤ والے مارکیٹ کے ماحول میں کام کرنے کے لئے موزوں ہے ، خاص طور پر 1 گھنٹہ کے دورانیے کے لئے بہتر ہے ، جس میں $ 4000 کی کل رقم کا استعمال ہوتا ہے۔
اس حکمت عملی کا بنیادی منطق مندرجہ ذیل اہم اجزاء کے گرد گھومتا ہے۔
رجحانات کا پتہ لگانے کا نظام: تیز رفتار EMA ((پہلے سے طے شدہ 9 سائیکل) اور سست رفتار EMA ((پہلے سے طے شدہ 21 سائیکل) کے کراس کا استعمال کرتے ہوئے ممکنہ اوپر کی طرف رجحانات کی نشاندہی کریں۔ جب تیز رفتار EMA اوپر کی طرف سست رفتار EMA کو عبور کرتا ہے تو ، نظام اوپر کی طرف رجحانات کی تصدیق کرتا ہے اور بنیادی اندراج کے احکامات کو متحرک کرتا ہے۔
ملٹی لیئر DCA رسائی نظاماس کے علاوہ ، یہ بھی کہا گیا ہے کہ اس میں تین درجے ہیں:
متحرک موافقت کا طریقہ کار: سیکیورٹی آرڈرز کی ٹرگر قیمتیں اے ٹی آر ((اوسط حقیقی رینج) اشارے پر مبنی متحرک طور پر شمار کی جاسکتی ہیں ، جس سے حکمت عملی کو مارکیٹ میں موجودہ اتار چڑھاؤ کے مطابق خود بخود داخلے کی پوزیشن کو ایڈجسٹ کرنے کی اجازت ملتی ہے۔ صارف کو اے ٹی آر ضرب ((ڈیفالٹ ایس او 1 1.2 گنا اے ٹی آر ، ایس او 2 2.5 گنا اے ٹی آر) یا فکسڈ فی صد کمی ((ڈیفالٹ ایس او 1 4٪ ، ایس او 2 8٪) کا استعمال کرتے ہوئے سیکیورٹی آرڈرز کے ٹرگر پوائنٹس کا حساب لگانے کا اختیار ہے۔
ڈبل ریل سٹاپ نقصان تحفظ نظام:
ٹھنڈک کا دورانیہ: بنیادی احکامات پر عملدرآمد کے بعد ٹھنڈک کی مدت نافذ کریں ((ڈیفالٹ 4 K لائنیں) ، مختصر وقت میں ضرورت سے زیادہ تجارت کو روکنے کے لئے۔
تجزیہ کے بعد ، اس حکمت عملی میں درج ذیل نمایاں فوائد ہیں:
لچکدار: اے ٹی آر کے ذریعہ سیکیورٹی آرڈرز کی قیمتوں کو متحرک کرنے کے حساب سے ، حکمت عملی کو مارکیٹ کے مختلف اتار چڑھاؤ کے ماحول میں ذہانت سے ڈھالنے کی اجازت دیتا ہے ، جس سے سیکیورٹی آرڈرز کے فاصلے کو اعلی اتار چڑھاؤ کے دوران مناسب طریقے سے بڑھایا جاسکتا ہے ، اور کم اتار چڑھاؤ کے دوران فاصلے کو سخت کیا جاسکتا ہے۔
فنڈ مینجمنٹ کی اصلاح: بڑھتی ہوئی فنڈز کی تقسیم کا استعمال کرتے ہوئے ((1000 ڈالر→ 1250 ڈالر→ 1750 ڈالر) ، “پرائمریڈ” پوزیشن مینجمنٹ اصول کے مطابق ، حکمت عملی کو قیمتوں میں کمی کے وقت زیادہ سے زیادہ فنڈز کے ساتھ بہتر اوسط داخلے کی قیمت حاصل کرنے کی اجازت دیتا ہے۔
دوہری تحفظ: جدید ڈبل ریل اسٹاپ سسٹم بنیادی نیچے جانے والے خطرے سے تحفظ فراہم کرتا ہے اور منافع بخش ہونے پر خود بخود زیادہ قدامت پسند اسٹاپ موڈ میں تبدیل ہوجاتا ہے ، جس سے منافع کو زیادہ سے زیادہ کرنے اور خطرے پر قابو پانے میں موثر توازن پیدا ہوتا ہے۔
اپنی مرضی کے مطابق لچک: تمام اہم پیرامیٹرز حسب ضرورت ہیں ، بشمول ای ایم اے کا دورانیہ ، اے ٹی آر کی لمبائی ، سیکیورٹی آرڈر کا فاصلہ ، اسٹاپ نقصان کا تناسب اور آرڈر کا سائز ، جس سے تاجر کو ذاتی خطرے کی ترجیحات اور مارکیٹ کے حالات کے مطابق بہتر بنانے کی اجازت ملتی ہے۔
انضمام: حکمت عملی میں انتباہ کی شرائط JSON پیغام میں فارمیٹ کی گئی ہیں تاکہ تیسری پارٹی کے خودکار تجارتی پلیٹ فارم (جیسے 3Commas) کے ساتھ انضمام کو آسان بنایا جاسکے ، جس سے مکمل طور پر خودکار تجارتی عملدرآمد ممکن ہو۔
اس جامع حکمت عملی کے باوجود، مندرجہ ذیل ممکنہ خطرات اور چیلنجز موجود ہیں:
رجحان کے الٹ جانے کا خطرہ: حکمت عملی ای ایم اے کراس سگنل پر انحصار کرتی ہے ، جس سے مارکیٹ میں تیزی سے تبدیلی یا ہلچل والی مارکیٹ میں غلط سگنل پیدا ہوسکتے ہیں ، جس سے غیر ضروری داخلے کا سبب بنتا ہے۔ اس کا حل ای ایم اے کے دورانیے کی لمبائی کو ایڈجسٹ کرنا یا اضافی تصدیق کے اشارے شامل کرنا ہے۔
اخراجات کا خطرہ: مسلسل گرتی ہوئی منڈیوں میں ، یہاں تک کہ اگر تمام سیکیورٹی آرڈرز تعینات کیے جائیں تو بھی ، اوسط درجے کی قیمت مارکیٹ کی قیمت سے کہیں زیادہ ہوسکتی ہے ، جس سے طویل مدتی نقصان ہوتا ہے۔
زیادہ تجارت کا خطرہ: متحرک مارکیٹوں میں ، EMAs اکثر کراس ہوسکتے ہیں ، جس سے بہت زیادہ تجارت ہوتی ہے۔ اگرچہ ٹھنڈک کی مدت کا میکانزم بنایا گیا ہے ، لیکن اس میں مزید اصلاحات یا اضافی تجارتی تعدد کی حدود شامل کرنے کی ضرورت ہوسکتی ہے۔
ڈبل ریل سٹاپ ایک دوسرے کی مداخلت: کچھ مارکیٹ کے حالات میں ، دو اسٹاپ میکانیزم ایک دوسرے کے ساتھ مداخلت کرسکتے ہیں ، جس کی وجہ سے قبل از وقت انخلا یا دوبارہ سگنل ملتا ہے۔ ان دونوں اسٹاپ پیرامیٹرز کے مابین توازن کو باقاعدگی سے دوبارہ جانچنا اور ایڈجسٹ کرنا چاہئے۔
پیرامیٹرز کو بہتر بنانے میں دشواری: حکمت عملی کے متعدد پیرامیٹرز کو زیادہ سے زیادہ اثر حاصل کرنے کے لئے باہمی ہم آہنگی کی ضرورت ہوتی ہے ، جس سے پیرامیٹرز کی اصلاح کی پیچیدگی میں اضافہ ہوتا ہے۔
کوڈ کے گہرائی سے تجزیہ کے مطابق ، اس حکمت عملی میں ممکنہ اصلاحات یہ ہیں:
ایک سے زیادہ رجحانات کی تصدیق کا طریقہ کار متعارف کرایا: موجودہ حکمت عملی صرف ایک ای ایم اے کراس سگنل پر انحصار کرتی ہے ، اور اس میں اضافی رجحان کی تصدیق کرنے والے اشارے شامل کرنے پر غور کیا جاسکتا ہے ، جیسے کہ آر ایس آئی ، ایم اے سی ڈی ، یا طویل عرصے تک رجحان کا فیصلہ ، تاکہ غلط سگنل کو کم کیا جاسکے۔ ایسا کرنے سے جعلی بریک کے خطرے کو نمایاں طور پر کم کیا جاسکتا ہے۔
متحرک فنڈز کی تقسیم کا نظام: موجودہ حکمت عملی آرڈر سائز کے طور پر فکسڈ ڈالر کی رقم کا استعمال کرتی ہے ، جس کو مارکیٹ میں اتار چڑھاؤ یا اکاؤنٹ کے حقوق و مفادات پر مبنی متحرک ایڈجسٹمنٹ سسٹم کے طور پر بہتر بنایا جاسکتا ہے ، تاکہ مارکیٹ کے مختلف حالات میں خطرہ کی مناسب سطح کو برقرار رکھا جاسکے۔
بہتر اسٹاپ نقصان سے باہر نکلنے کی حکمت عملی: زیادہ پیچیدہ اسٹاپ لاجسٹکس تیار کیے جاسکتے ہیں ، جیسے کہ مارکیٹ میں اتار چڑھاؤ کی بنیاد پر خود کار طریقے سے اسٹاپ ٹریکنگ ، یا مختصر مدت کے اتار چڑھاؤ کے دوران جلد سے جلد باہر نکلنے سے بچنے کے ل exit باہر نکلنے کے فیصلے کو بہتر بنانے کے لئے متحرک حجم اور حجم کے اشارے کو مربوط کرنا۔
کنٹرول میں اضافے کی واپسی: مجموعی طور پر واپسی کی حد کی خصوصیت شامل کی گئی ہے ، جب حکمت عملی نے زیادہ سے زیادہ واپسی کی فیصد کی حد تک پہنچنے پر نئے احکامات کو خود بخود روک دیا یا موجودہ پوزیشنوں کو بند کردیا ، تاکہ مارکیٹ کے انتہائی حالات میں تباہ کن نقصانات سے بچایا جاسکے۔
سائیکل کی اصلاح کے نظام: خودکار سائیکل آپٹیمائزیشن کی خصوصیت تیار کی گئی ہے تاکہ حکمت عملی مارکیٹ کی حالت میں ہونے والی تبدیلیوں کے مطابق ای ایم اے کی لمبائی ، اے ٹی آر سائیکل اور وقت سے متعلق دیگر پیرامیٹرز کو خود بخود ایڈجسٹ کرسکے۔
“سمارٹ اتار چڑھاؤ سے باخبر رہنے والی ڈی سی اے حکمت عملی اور ڈبل ٹریک اسٹاپ سسٹم” ایک اچھی طرح سے ڈیزائن کیا گیا مقداری تجارت کا پروگرام ہے ، جو خاص طور پر اتار چڑھاؤ والے بازاروں میں بڑھتے ہوئے رجحان کو پکڑنے اور خطرے کا انتظام کرنے کے لئے موزوں ہے۔ یہ رجحان سے باخبر رہنے ، ڈالر کی لاگت کی اوسط اور اتار چڑھاؤ کی شرح کو خود بخود ایڈجسٹ کرنے کے طریقہ کار کو ہوشیار طریقے سے جوڑتا ہے ، اور ایک جدید ڈبل ٹریک اسٹاپ سسٹم کے ذریعہ منافع کی حفاظت کرتا ہے۔
اس حکمت عملی کا بنیادی فائدہ اس کی موافقت اور خطرے کے انتظام کے توازن میں ہے ، جو مختلف مارکیٹ کے ماحول میں داخلے اور باہر نکلنے کے فیصلوں کو خود بخود ایڈجسٹ کرنے کی صلاحیت رکھتا ہے۔ اے ٹی آر کا استعمال کرتے ہوئے سیکیورٹی آرڈر ٹرگر پوائنٹس کو متحرک طور پر حساب کتاب کرنے کے لئے ، حکمت عملی کو پہلے سے طے شدہ جامد پیرامیٹرز پر انحصار کرنے کے بجائے ، حقیقی وقت کی مارکیٹ کی شرائط پر ذہین ردعمل کا اظہار کرنے کی اجازت دیتا ہے۔
اگرچہ رجحانات کی نشاندہی اور فنڈ مینجمنٹ میں ممکنہ خطرات موجود ہیں ، لیکن ان کو موثر انداز میں کم کیا جاسکتا ہے۔ خاص طور پر ایک سے زیادہ رجحانات کی شناخت اور متحرک فنڈ مختص کرنے کے نظام کو متعارف کرانے سے حکمت عملی کی استحکام اور طویل مدتی کارکردگی میں نمایاں اضافہ ہوگا۔
یہ حکمت عملی ایک جامع، توسیع پذیر فریم ورک فراہم کرتی ہے جو اوپر کی طرف جانے والے رجحانات کے مواقع کو پکڑنے کے ساتھ ساتھ مارکیٹ کے خراب حالات میں کافی خطرے سے تحفظ فراہم کرتی ہے.
/*backtest
start: 2025-03-14 00:00:00
end: 2025-04-02 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy(
title="BONK/USD (1H) - $4k DCA + Dual Trailing + Date Filter", // Updated Title
overlay=true,
initial_capital=4000,
currency=currency.USD,
default_qty_type=strategy.fixed,
default_qty_value=0, // Quantity calculated dynamically based on USD value
commission_type=strategy.commission.percent, // Example: Add commission settings
commission_value=0.1 // Example: 0.1% commission
)
// 1) USER INPUTS (Defaults adjusted for 1H timeframe - REQUIRES BACKTESTING/TUNING)
// --- Trend ---
fastMALen = input.int(9, title="Fast EMA Length (Default for 1H)")
slowMALen = input.int(21, title="Slow EMA Length (Default for 1H)")
// --- Trailing Stops ---
trailStopPerc = input.float(8.0, title="Standard Trailing Stop (%) (Default for 1H)", minval=0.1) / 100
lockInThreshold = input.float(2.5, title="Profit Lock-In Trigger (%) (Default for 1H)", minval=0.1) / 100
lockInTrailPct = input.float(1.5, title="Lock-In Trail (%) after Trigger (Default for 1H)", minval=0.1) / 100
// --- Safety Orders (SO) ---
useATRSpacing = input.bool(true, title="Use ATR-Based Spacing?")
atrLength = input.int(14, title="ATR Length", minval=1)
atrSo1Multiplier = input.float(1.2, title="ATR SO1 Multiplier (Default for 1H)", minval=0.1)
atrSo2Multiplier = input.float(2.5, title="ATR SO2 Multiplier (Default for 1H)", minval=0.1)
// --- Fallback SO Spacing (if not using ATR) ---
fallbackSo1Perc = input.float(4.0, title="Fallback SO1 Drop (%) (Default for 1H)", minval=0.1) / 100
fallbackSo2Perc = input.float(8.0, title="Fallback SO2 Drop (%) (Default for 1H)", minval=0.1) / 100
// --- Entry Cooldown ---
cooldownBars = input.int(4, "Cooldown Bars After Base Entry (Default for 1H)", minval=0)
// --- Order Sizes in USD ---
baseUsd = input.float(1000.0, title="Base Order Size (USD)", minval=1.0)
so1Usd = input.float(1250.0, title="Safety Order 1 Size (USD)", minval=1.0)
so2Usd = input.float(1750.0, title="Safety Order 2 Size (USD)", minval=1.0)
// 2) CALCULATIONS
// --- Trend & Reversal Detection ---
fastMA = ta.ema(close, fastMALen)
slowMA = ta.ema(close, slowMALen)
trendUp = ta.crossover(fastMA, slowMA)
trendDown = ta.crossunder(fastMA, slowMA)
// --- ATR Value ---
atrValue = ta.atr(atrLength)
// 3) BASE ENTRY LOGIC
// Base Buy Signal: EMA crossover
baseBuySignal = trendUp
var int lastBuyBar = na // Tracks the bar index of the last base entry
inCooldown = not na(lastBuyBar) and (bar_index - lastBuyBar < cooldownBars)
var float baseEntryPrice = na // Stores the price of the initial base entry for SO calculations
// --- Execute Base Entry ---
// Added 'inDateRange' to the condition
if baseBuySignal and strategy.position_size == 0 and not inCooldown
baseQty = baseUsd / close // Calculate quantity based on USD
strategy.entry("Base Order", strategy.long, qty=baseQty, comment="Base Entry")
baseEntryPrice := close
lastBuyBar := bar_index
// 4) SAFETY ORDERS LOGIC
// --- Calculate SO Trigger Prices ---
float so1TriggerPrice = na
float so2TriggerPrice = na
if not na(baseEntryPrice) // Only calculate if a base order has been placed
so1TriggerPrice := useATRSpacing ?
(baseEntryPrice - atrValue * atrSo1Multiplier) :
(baseEntryPrice * (1 - fallbackSo1Perc))
so2TriggerPrice := useATRSpacing ?
(baseEntryPrice - atrValue * atrSo2Multiplier) :
(baseEntryPrice * (1 - fallbackSo2Perc))
// --- Conditions for SO Execution ---
// Added 'inDateRange' check
// Ensure base order exists, price trigger hit, and the specific SO hasn't filled yet
bool so1Condition = not na(baseEntryPrice) and strategy.position_size > 0 and close <= so1TriggerPrice and strategy.opentrades == 1
bool so2Condition = not na(baseEntryPrice) and strategy.position_size > 0 and close <= so2TriggerPrice and strategy.opentrades == 2
// --- Execute SO1 ---
if so1Condition
so1Qty = so1Usd / close // Calculate quantity based on USD
strategy.entry("Safety Order 1", strategy.long, qty=so1Qty, comment="SO1")
// --- Execute SO2 ---
if so2Condition
so2Qty = so2Usd / close // Calculate quantity based on USD
strategy.entry("Safety Order 2", strategy.long, qty=so2Qty, comment="SO2")
// 5) AVERAGE ENTRY PRICE
// Use the built-in variable for the average price of the open position
avgEntryPrice = strategy.position_avg_price
// 6) DUAL TRAILING STOP LOGIC
// Variables to track trailing stop levels and states
var float highestSinceEntry = na
var float trailStopPrice = na
var bool stopHitNormal = false
var bool lockInTriggered = false
var float lockInPeak = na
var float lockInStopPrice = na
var bool stopHitLockIn = false
// --- Update Trailing Logic when in a Position ---
if strategy.position_size > 0
// --- Standard Trail ---
highestSinceEntry := na(highestSinceEntry) ? close : math.max(highestSinceEntry, close)
trailStopPrice := highestSinceEntry * (1 - trailStopPerc)
stopHitNormal := close < trailStopPrice
// --- Lock-In Trail ---
if not lockInTriggered and close >= avgEntryPrice * (1 + lockInThreshold)
lockInTriggered := true
lockInPeak := close
if lockInTriggered
lockInPeak := math.max(lockInPeak, close)
lockInStopPrice := lockInPeak * (1 - lockInTrailPct)
stopHitLockIn := close < lockInStopPrice
else
stopHitLockIn := false
lockInStopPrice := na
// --- Reset Variables when Flat ---
else
highestSinceEntry := na
trailStopPrice := na
stopHitNormal := false
lockInTriggered := false
lockInPeak := na
lockInStopPrice := na
stopHitLockIn := false
baseEntryPrice := na
// lastBuyBar is intentionally NOT reset here, cooldown depends on it
// 7) EXIT CONDITIONS
// Added 'inDateRange' check
// Exit if either trailing stop is hit OR if the trend reverses downward, within the active date range
exitCondition = (stopHitNormal or stopHitLockIn or trendDown) and strategy.position_size > 0
if exitCondition
strategy.close_all(comment="Exit: SL / LockIn / TrendDown")
// 8) ALERT CONDITIONS (Potential 3Commas Integration)
// WARNING: Verify and adapt these JSON message strings for your specific 3Commas bot configuration!
// The required format ('action', parameters, etc.) can vary.
// Added 'inDateRange[1]' check for Base Alert
alertcondition(inDateRange[1] and baseBuySignal and strategy.position_size[1] == 0 and not inCooldown[1],
title="Base Buy Alert",
message='{"action":"start_deal","order":"base"} // Verify/Adapt JSON for your 3Commas bot!')
// Added 'inDateRange' check for SO1 Alert
alertcondition(so1Condition, title="SO1 Alert",
message='{"action":"add_funds","order":"so1"} // Verify/Adapt JSON for your 3Commas bot!')
// Added 'inDateRange' check for SO2 Alert
alertcondition(so2Condition, title="SO2 Alert",
message='{"action":"add_funds","order":"so2"} // Verify/Adapt JSON for your 3Commas bot!')
// Added 'inDateRange' check for Exit Alert
alertcondition(exitCondition, title="Exit Alert",
message='{"action":"close_at_market_price"} // Verify/Adapt JSON for your 3Commas bot!')
// 9) PLOTS & DEBUG TABLE
// --- Plot MAs ---
plot(fastMA, color=color.new(color.green, 0), title="Fast EMA", linewidth=2)
plot(slowMA, color=color.new(color.red, 0), title="Slow EMA", linewidth=2)
// --- Plot Trailing Stops ---
plot(strategy.position_size > 0 ? trailStopPrice : na, color=color.new(color.orange, 0), title="Standard Trailing Stop", style=plot.style_linebr, linewidth=2)
plot(lockInTriggered ? lockInStopPrice : na, color=color.new(color.fuchsia, 0), title="Lock-In Trailing Stop", style=plot.style_linebr, linewidth=2)
// --- Debug Info Table ---
var table tradeInfo = table.new(position=position.bottom_right, columns=2, rows=10, border_width=1)