MACD پر مبنی کریپٹو ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-19 11:21:42
ٹیگز:

جائزہ

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

حکمت عملی منطق

  1. 12 دن کے EMA اور 26 دن کے EMA کا حساب مختصر مدت اور طویل مدتی چلتی اوسط کے طور پر لگائیں۔

  2. مختصر اور طویل EMAs کے درمیان فرق کا حساب MACD ہسٹوگرام کے طور پر لگائیں۔

  3. سگنل لائن کے طور پر ایم اے سی ڈی کے 9 دن کے ای ایم اے کا حساب لگائیں۔

  4. 14 دن کے آر ایس آئی کا حساب لگائیں تاکہ زیادہ خریدنے / زیادہ فروخت کی سطح کا فیصلہ کیا جاسکے۔

  5. خرید کا اشارہ دکھاتا ہے جب MACD سگنل لائن سے اوپر عبور کرتا ہے اور RSI 81 سے زیادہ ہوتا ہے۔

  6. فروخت کا اشارہ دکھاتا ہے جب MACD سگنل لائن سے نیچے عبور کرتا ہے اور RSI 27 سے کم ہوتا ہے۔

  7. داخلہ اور باہر نکلنے کے لئے بلٹ ان حکمت عملی ماڈیول کا استعمال کریں.

فوائد کا تجزیہ

  1. ایم اے سی ڈی رجحانات اور تبدیلیوں کی نشاندہی کرسکتا ہے ، آر ایس آئی زیادہ خرید / زیادہ فروخت کی سطحوں کو ظاہر کرتا ہے۔ دونوں کا امتزاج سگنل کی درستگی کو بہتر بناتا ہے۔

  2. ایم اے سی ڈی صفر لائن سے اوپر/نیچے مختصر مدت کے مقابلے میں طویل مدتی رجحان کی سمت/طاقت کی نشاندہی کرتا ہے۔

  3. اعلی / کم سطحوں پر RSI ممکنہ overheating / oversold کا اشارہ کرتا ہے۔ تجارتی سگنل تلاش کرنے میں مدد کرتا ہے۔

  4. واضح اور سادہ ٹریڈنگ سگنل، تجارت کو منظم طریقے سے انجام دینے میں آسان.

  5. حسب ضرورت پیرامیٹرز کو بہتر بنانے اور مختلف مارکیٹ کے حالات کو اپنانے کے لئے.

خطرے کا تجزیہ

  1. ایم اے سی ڈی اور آر ایس آئی کے اعداد و شمار جھوٹے بریکآؤٹس اور بے ضابطگیوں کا شکار ہوتے ہیں، غلط سگنل پیدا کر سکتے ہیں۔

  2. فکسڈ پیرامیٹرز تبدیل مارکیٹوں کو اپنانے میں ناکام ہو سکتے ہیں، اصلاح کی ضرورت ہے.

  3. سگنلز تاخیر کا شکار ہو سکتے ہیں، موڑ کے مقامات پر تجارت کرنے کے قابل نہیں.

  4. صرف طویل / مختصر، مختلف مارکیٹوں سے منافع حاصل کرنے کے قابل نہیں.

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

  1. زیادہ سے زیادہ ترتیبات تلاش کرنے کے لئے مختلف پیرامیٹر مجموعے کی جانچ کریں.

  2. جھوٹے بریکآؤٹ ٹریڈز سے بچنے کے لیے فلٹرز شامل کریں۔

  3. ایک طرفہ بازاروں میں نقصانات کو محدود کرنے کے لئے سٹاپ نقصان شامل کریں.

  4. پوزیشنوں کا سائز، رجحانات میں اضافہ اور حدود میں کمی کا انتظام کریں.

  5. زیادہ درست سگنل کے لئے دیگر اشارے کے ساتھ مل کر.

  6. مختلف آلات اور ٹائم فریم پر ٹیسٹ.

خلاصہ

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


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-12 04:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Revision:        5
// Author:          @Hugo_Moriceau
//study("Thesis_EMLYON_Withdate-strategies-Daily_Crypto_Moriceau_indicator",overlay=true)

// Pyramide 10 order size 100, every tick

strategy("Daily_Crypto_Moriceau_indicator",overlay=true)

// === GENERAL INPUTS ===

fast = 12, slow = 26
fastMA = ema(close, fast)
slowMA = ema(close, slow)

macd = fastMA - slowMA
signal = sma(macd, 9)
rsi = rsi(close,14)



tradeInvert     = input(defval = false, title = "Invert Trade Direction?")

// === LOGIC ===

// is fast ma above slow ma?
aboveBelow = fastMA >= slowMA ? true : false

// are we inverting our trade direction?
tradeDirection = tradeInvert ? aboveBelow ? false : true : aboveBelow ? true : false

// === Plot Setting ===

//plot(fastMA,color=red)
//plot(slowMA,color=blue)
//barcolor(color=iff(fastMA > slowMA, yellow, na))
//barcolor(color=iff(fastMA < slowMA, black, na))
barcolor(color=iff(macd > 0.12*close , fuchsia, na))
barcolor(color=iff(macd < -0.1*close , lime, na))
dataS= macd > 0.125 and rsi>81 and fastMA > slowMA
dataB= macd < -0.1  and rsi<27 and fastMA< slowMA


plotchar(dataB, char='B',color=black,size = size.tiny,location = location.belowbar,transp= 0)  
plotchar(dataS, char='S',color=black,size = size.tiny,location = location.abovebar,transp= 0)


// === BACKTEST RANGE ===
FromMonth = input(defval = 01, title = "From Month", minval = 1)
FromDay   = input(defval = 01, title = "From Day", minval = 1)
FromYear  = input(defval = 2017, title = "From Year", minval = 2014)
ToMonth   = input(defval = 2, title = "To Month", minval = 1)
ToDay     = input(defval = 10, title = "To Day", minval = 1)
ToYear    = input(defval = 2019, title = "To Year", minval = 2018)


// === STRATEGY RELATED INPUTS ===+
// the risk management inputs
inpTakeProfit   = input(defval = 20000, title = "Take Profit", minval = 0)
inpStopLoss     = input(defval = 1500, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 100, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)

// === 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


// === STRATEGY - LONG POSITION EXECUTION ===

enterLong() => not tradeDirection[1] and tradeDirection 
exitLong() => tradeDirection[1] and not tradeDirection
strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in
strategy.close(id = "Long", when = exitLong()) // ...and when to get out

// === 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 ===

// finally, make use of all the earlier values we got prepped
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)

مزید