وقت کی حد کے ساتھ ڈبل ایم اے حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-14 16:45:03
ٹیگز:

img

جائزہ

یہ حکمت عملی حکمت عملی کے آغاز کے وقت کو کنٹرول کرنے کے لئے اصل دوہری چلتی اوسط حکمت عملی پر مبنی ٹائم لیمٹ ماڈیول کو نافذ کرتی ہے۔ ٹائم لیمٹ ماڈیول حکمت عملی کے چلانے کے وقت کو مؤثر طریقے سے سنبھال سکتا ہے اور غیر سازگار مارکیٹ کے حالات میں تجارتی خطرات کو کم کرسکتا ہے۔

اصول

یہ حکمت عملی تیز اور سست ایم اے کا استعمال کرتے ہوئے تجارتی سگنل تیار کرتی ہے۔ تیز ایم اے کی مدت 14 دن اور سست ایم اے کی مدت 21 دن ہے۔ جب تیز ایم اے سست ایم اے سے تجاوز کرتا ہے تو خرید کا سگنل تیار ہوتا ہے۔ جب تیز ایم اے سست ایم اے سے تجاوز کرتا ہے تو فروخت کا سگنل تیار ہوتا ہے۔

اسٹریٹجی میں تجارتی سمت کو تبدیل کرنے کے لئے تجارتی الٹ کا اختیار بھی شامل ہے۔

ٹائم لیمٹ ماڈیول ٹائم اسٹیمپ کا استعمال کرتے ہوئے موجودہ وقت کا تشکیل شدہ آغاز کے وقت کے مقابلے میں موازنہ کرتا ہے ، اگر حکمت عملی شروع ہوتی ہے یا نہیں اس پر قابو پانے کے لئے سچ یا غلط لوٹاتا ہے۔ آغاز کا سال ، مہینہ ، دن ، گھنٹہ اور منٹ مقرر کرنے کی ضرورت ہے۔ حکمت عملی صرف اس وقت شروع ہوگی جب موجودہ وقت تشکیل شدہ آغاز کے وقت سے زیادہ ہو۔

فوائد

  • دوہری ایم اے مؤثر طریقے سے درمیانی اور قلیل مدتی رجحانات کو پکڑتا ہے
  • ٹائم لیمٹ ماڈیول حکمت عملی کے چلانے کے وقت کو درست طریقے سے کنٹرول کرتا ہے ، غیر مناسب مارکیٹ کے حالات میں غیر ضروری تجارت سے بچتا ہے
  • تجارت کے الٹ کرنے کا اختیار لچک کا اضافہ کرتا ہے

خطرات اور حل

  • ڈبل ایم اے سے زیادہ ٹریڈنگ سگنل پیدا ہو سکتے ہیں، جس سے ٹریڈنگ کی تعدد اور اخراجات میں اضافہ ہوتا ہے
  • غلط وقت کی حد کی ترتیب کھوئے ہوئے مواقع کا سبب بن سکتی ہے
  • غلط تجارتی الٹ پھیر غلط تجارتی سگنلز کا باعث بن سکتا ہے

ایم اے کی مدت کو بہتر بنانا تجارتی تعدد کو کم کرسکتا ہے۔ کھوئے ہوئے مواقع سے بچنے کے لئے آغاز کا وقت بھی عقلی طور پر طے کیا جانا چاہئے۔ آخر میں ، مارکیٹ کے حالات کی بنیاد پر سگنلز کو الٹ کرنے کا انتخاب احتیاط سے کریں۔

اصلاح کی ہدایات

  • اسٹاپ نقصان ماڈیول شامل کرنے سے انفرادی تجارتوں کے خطرے کو بہتر طور پر کنٹرول کیا جاسکتا ہے
  • ایک ٹریلنگ سٹاپ نقصان کو لاگو کرنا جو سٹاپ نقصان کے نقطہ کو آہستہ آہستہ منتقل کرتا ہے منافع میں مقفل کرنے میں مدد مل سکتی ہے
  • متعدد علامتوں میں سگنل کو یکجا کرنے سے سگنل کا معیار بہتر ہوسکتا ہے اور جھوٹے سگنل کو کم کیا جاسکتا ہے
  • ایک پیرامیٹر کی اصلاح ماڈیول تیار کرنا جو خود بخود پیرامیٹر کے بہترین مجموعے تلاش کرتا ہے

خلاصہ

یہ حکمت عملی دوہری ایم اے کا استعمال کرتے ہوئے تجارتی سگنل تیار کرتی ہے اور ٹائم لیمٹ ماڈیول کے ذریعہ چلانے کے وقت کو کنٹرول کرتی ہے ، غیر سازگار مارکیٹ کے حالات سے بچتے ہوئے مؤثر طریقے سے رجحانات کو پکڑتی ہے۔ ہر تجارت کی استحکام اور منافع بخش کو بہتر بناتے ہوئے تجارتی تعدد کو کم کرنے کے لئے پیرامیٹر ٹوننگ ، اسٹاپ نقصان ماڈیول ، کراس اثاثہ سگنل جنریشن وغیرہ کے ذریعہ مزید بہتری لائی جاسکتی ہے۔


/*backtest
start: 2023-11-06 00:00:00
end: 2023-11-13 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "Strategy Code Example", shorttitle = "Strategy Code Example", overlay = true)

// Revision:        1
// Author:          @JayRogers
//
// *** THIS IS JUST AN EXAMPLE OF STRATEGY TIME LIMITING ***
//
//  This is a follow up to my previous strategy example for risk management, extended to include a time limiting factor.

// === GENERAL INPUTS ===
// short ma
maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 14, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open, title = "Slow MA Source")
maSlowLength   = input(defval = 21, title = "Slow MA Period", minval = 1)

// === STRATEGY RELATED INPUTS ===
tradeInvert     = input(defval = false, title = "Invert Trade Direction?")
// Risk management
inpTakeProfit   = input(defval = 1000, title = "Take Profit", minval = 0)
inpStopLoss     = input(defval = 200, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 200, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
// *** FOCUS OF EXAMPLE ***
// Time limiting
// a toggle for enabling/disabling
useTimeLimit    = input(defval = true, title = "Use Start Time Limiter?")
// set up where we want to run from
startYear       = input(defval = 2016, title = "Start From Year",  minval = 0, step = 1)
startMonth      = input(defval = 05, title = "Start From Month",  minval = 0,step = 1)
startDay        = input(defval = 01, title = "Start From Day",  minval = 0,step = 1)
startHour       = input(defval = 00, title = "Start From Hour",  minval = 0,step = 1)
startMinute     = input(defval = 00, title = "Start From Minute",  minval = 0,step = 1)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// *** FOCUS OF EXAMPLE ***
// === TIME LIMITER CHECKING FUNCTION ===
// using a multi line function to return true or false depending on our input selection
// multi line function logic must be indented.
startTimeOk() =>
    // get our input time together
    inputTime   = timestamp(syminfo.timezone, startYear, startMonth, startDay, startHour, startMinute)
    // check the current time is greater than the input time and assign true or false
    timeOk      = time > inputTime ? true : false
    // last line is the return value, we want the strategy to execute if..
    // ..we are using the limiter, and the time is ok -OR- we are not using the limiter
    r = (useTimeLimit and timeOk) or not useTimeLimit

// === SERIES SETUP ===
/// a couple of ma's..
maFast = ema(maFastSource, maFastLength)
maSlow = ema(maSlowSource, maSlowLength)

// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = red, linewidth = 2, style = line, transp = 50)

// === LOGIC ===
// is fast ma above slow ma?
aboveBelow = maFast >= maSlow ? true : false
// are we inverting our trade direction?
tradeDirection = tradeInvert ? aboveBelow ? false : true : aboveBelow ? true : false

// *** FOCUS OF EXAMPLE ***
// wrap our strategy execution in an if statement which calls the time checking function to validate entry
// like the function logic, content to be included in the if statement must be indented.
if( startTimeOk() )
    // === STRATEGY - LONG POSITION EXECUTION ===
    enterLong = not tradeDirection[1] and tradeDirection
    exitLong = tradeDirection[1] and not tradeDirection
    strategy.entry( id = "Long", long = true, when = enterLong )
    strategy.close( id = "Long", when = exitLong )
    
    // === STRATEGY - SHORT POSITION EXECUTION ===
    enterShort = tradeDirection[1] and not tradeDirection
    exitShort = not tradeDirection[1] and tradeDirection
    strategy.entry( id = "Short", long = false, when = enterShort )
    strategy.close( id = "Short", when = exitShort )
    
    // === STRATEGY RISK MANAGEMENT EXECUTION ===
    strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
    strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)


مزید