وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ایم اے سی ڈی اور آر ایس آئی پر مبنی طویل مختصر تجارتی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-10-09 15:33:17
ٹیگز:

جائزہ

یہ حکمت عملی MACD اور RSI اشارے کو یکجا کرتی ہے تاکہ غیر واضح رجحان کی صورتحال میں زیادہ منافع حاصل کرنے کے لئے بیک وقت طویل اور مختصر تجارت کو نافذ کیا جاسکے۔

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

  1. تیز EMA (12 دن) اور سست EMA (26 دن) کا حساب لگائیں
  2. MACD کنورجنس ڈائیورجنس (فاسٹ EMA مائنس سست EMA) کا حساب لگائیں
  3. سگنل لائن کے طور پر ایم اے سی ڈی کے 9 دن کے چلتے ہوئے اوسط کا حساب لگائیں
  4. 14 دن کے آر ایس آئی کا حساب لگائیں
  5. جب MACD<-0.1، RSI<27 اور تیز EMA سست EMA سے نیچے ہو تو طویل عرصے تک جائیں
  6. جب ایم اے سی ڈی>0.125، آر ایس آئی>81 اور تیز ای ایم اے سست ای ایم اے سے اوپر ہو تو مختصر جائیں
  7. استعمال کریں منافع لے لو، سٹاپ نقصان، ٹریلنگ سٹاپ نقصان پوزیشنوں کو منظم کرنے کے لئے

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

  1. طویل اور مختصر دونوں جا رہے ہیں غیر رجحان مارکیٹوں میں زیادہ منافع پیدا کر سکتے ہیں
  2. رجحان اشارے ای ایم اے اور الٹ اشارے آر ایس آئی کا امتزاج سگنل کی کوالٹی کو بہتر بناتا ہے
  3. منافع میں مقفل کرنے کے لئے ٹریلنگ اسٹاپ نقصان کا استعمال مؤثر طریقے سے نقصان کے خطرے کو کنٹرول کرتا ہے

خطرے کا تجزیہ

  1. دو طرفہ تجارت کے لیے مارجن کی ضروریات کو پورا کرنے کے لیے زیادہ سرمایہ کی ضرورت ہوتی ہے۔
  2. جب قیمتیں تیزی سے الٹ جاتی ہیں تو وہ لمبی اور مختصر پوزیشنوں دونوں پر اسٹاپ نقصان کو مار سکتی ہیں
  3. پیرامیٹر کی غلط ترتیبات سے زیادہ تجارت ہوسکتی ہے

خطرے کے حل:

  1. پوزیشن سائزنگ کی حمایت کرنے کے لئے کافی سرمایہ
  2. ہجوم سے زیادہ رکنے سے بچنے کے لئے معقول اسٹاپ نقصان کا فاصلہ
  3. تجارتی تعدد کو کم کرنے کے لئے پیرامیٹرز کو بہتر بنائیں

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

  1. اندراج کے وقت کو بہتر بنانے کے لئے اتار چڑھاؤ کے اشارے کو یکجا کرنے پر غور کریں
  2. زیادہ سے زیادہ تلاش کرنے کے لئے مختلف پیرامیٹر مجموعے کی جانچ کریں
  3. مارکیٹ کے حالات کی بنیاد پر سٹاپ نقصان کی حکمت عملی کو بہتر بنائیں، جیسے ٹریلنگ سٹاپ نقصان
  4. پیرامیٹرز کو خود کار طریقے سے بہتر بنانے کے لئے مشین سیکھنے کے الگورتھم کا استعمال کریں

خلاصہ

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


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

//@version=3
// Revision:        290
// Author:          @Hugo_Moriceau
//study("Moriceau_Crypto_strategies_Long_short_indicator_thesis",overlay=true)

// Pyramide 10 order size 100, every tick

strategy("Moriceau_Crypto_strategies_Long_short_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)

dataB = macd < -0.1  and rsi<27 and fastMA < slowMA
// data1 = macd > 0.125  and rsi>81 and fastMA> slowMA
dataS = macd > 0.125 and rsi > 81 and fastMA > slowMA

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

// === LOGIC ===

// is fast ma above slow ma?
Achat = macd < -0.1  and rsi < 27 and fastMA < slowMA ? true : false
vente = macd > 0.125 and rsi > 81 and fastMA > slowMA ? true : false

// are we inverting our trade direction?
tradeDirection = vente ? Achat ? false : true : Achat ? 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))
plotchar(dataB, char='B',color=black,size = size.auto,location = location.belowbar,transp= 0)  
plotchar(dataS, char='S',color=black,size = size.auto,location = location.abovebar,transp= 0)

//fast = plot(maFast, title = "FastMA", color = yellow, linewidth = 2, style = line, transp = 50)
//slow = plot(maSlow, title = "SlowMA", color = black, linewidth = 2, style = line, transp = 50)

// === BACKTEST RANGE ===
FromMonth = input(defval = 05, title = "From Month", minval = 1)
FromDay   = input(defval = 23, title = "From Day", minval = 1)
FromYear  = input(defval = 2021, title = "From Year", minval = 2017)
ToMonth   = input(defval = 5, title = "To Month", minval = 1)
ToDay     = input(defval = 25, title = "To Day", minval = 1)
ToYear    = input(defval = 2021, title = "To Year", minval = 2017)


// === STRATEGY RELATED INPUTS ===+
// the risk management inputs
inpTakeProfit   = input(defval = 2500, title = "Take Profit", minval = 28)
inpStopLoss     = input(defval = 600, title = "Stop Loss", minval = 15)
inpTrailStop    = input(defval = 300, title = "Trailing Stop Loss", minval = 5)
inpTrailOffset  = input(defval = 50, title = "Trailing Stop Loss Offset", minval = 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


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

enterLong() => not tradeDirection[1] and tradeDirection 
exitLong() => tradeDirection[1] and not tradeDirection
strategy.entry(id = "Achat", long = true, when = enterLong()) // use function or simple condition to decide when to get in
strategy.close(id = "TP 50% Sell", 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 = "Vente", long = false, when = enterShort())
strategy.close(id = "Vente", when = exitShort())

// === STRATEGY RISK MANAGEMENT EXECUTION ===

// finally, make use of all the earlier values we got prepped
strategy.exit("Vente", from_entry = "Vente", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Short", from_entry = "Achat", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)

مزید