پی ایس اے آر، ایم اے سی ڈی اور آر ایس آئی پر مبنی کثیر ٹائم فریم کوانٹیٹیٹیو ٹریڈنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-27 16:12:57
ٹیگز:

img

جائزہ

یہ حکمت عملی متعدد ٹائم فریموں میں خودکار لانگ اور شارٹ ٹریڈنگ کو نافذ کرنے کے لئے پیرابولک SAR ، MACD اور RSI اشارے کو جوڑتی ہے۔ یہ بنیادی طور پر اسٹاک اور خام مال کی مصنوعات کی انٹر ڈے ٹریڈنگ کے لئے موزوں ہے۔

حکمت عملی کا اصول

  1. پی ایس اے آر اشارے کا استعمال قیمت کی سمت اور رجحان کی تبدیلی کے نکات کا تعین کرنے کے لئے کیا جاتا ہے۔ گرنے والے نقطے تیزی کے اشارے ہیں جبکہ بڑھتے ہوئے نقطے bearish سگنل ہیں۔

  2. ایم اے سی ڈی اشارے قیمت کی رفتار کا اندازہ کرتا ہے۔ سیگنل لائن سے اوپر کی طرف ایم اے سی ڈی لائن عبور کرنا تیزی کا اشارہ ہے جبکہ نیچے کی طرف عبور کرنا bearish ہے۔

  3. آر ایس آئی اشارے سے زیادہ خریدنے اور زیادہ فروخت کی حالت کا اندازہ ہوتا ہے۔ حد سے اوپر آر ایس آئی تیزی سے بڑھ رہا ہے جبکہ اس سے نیچے bearish ہے۔

  4. مذکورہ بالا تین اشارے کے اشاروں کو یکجا کرکے حتمی طویل / مختصر فیصلہ کریں۔

  5. موافقت پذیر طور پر چپس انڈیکس اشارے کا استعمال کریں تاکہ وِپساؤ سے بچنے کے لئے مستحکم مارکیٹوں کو فلٹر کریں۔

  6. خطرہ اور منافع کے اہداف کو متحرک طور پر منظم کرنے کے لئے الٹ pyramiding پوزیشن سائزنگ کا استعمال کریں.

فوائد

  1. رجحان، رفتار اور آسکیلیٹرز کا اندازہ کرنے والے متعدد اشارے کا امتزاج درستگی کو بہتر بناتا ہے۔

  2. مارکیٹ کے حالات کو اپنانے کے لئے مارکیٹوں کو مضبوط بنانے کے لئے فلٹرنگ کی طرف سے پھنسنے سے بچنے کے لئے.

  3. متحرک خطرہ اور منافع کا انتظام ریورس پرامڈائزنگ پوزیشن سائزنگ کے ذریعے موافقت پذیر رکاوٹوں اور حدود کے ساتھ۔

  4. مختلف مصنوعات اور مارکیٹ کے ماحول کے لئے سایڈست پیرامیٹرز کے ساتھ انتہائی حسب ضرورت.

  5. متعدد ٹائم فریموں کی حمایت کریں، مختصر مدت کے دن کے اندر یا درمیانی / طویل مدتی پوزیشن ٹریڈنگ کے لئے لچکدار.

خطرے کا تجزیہ

  1. لمبی / مختصر فیصلے پیرامیٹر کی ترتیبات پر منحصر ہیں جو اگر نامناسب ہو تو غلطیاں پیدا کرسکتے ہیں۔

  2. غلط سگنل کا امکان جس کی وجہ سے رجحان کے خلاف فیصلے کیے جائیں۔

  3. غیر مناسب سٹاپ نقصان اور منافع لینے کی ترتیبات نقصانات میں اضافہ یا منافع کو کم کر سکتی ہیں۔

  4. بار بار مانیٹرنگ اور پیرامیٹرز کو بہتر بنانے کی ضرورت ہوتی ہے جس کے نتیجے میں انسانی مداخلت کے اعلی اخراجات ہوتے ہیں۔

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

  1. پیرامیٹر کی ترتیبات اور سگنل کی افادیت کا اندازہ کرنے کے لئے ماڈل کی توثیق ماڈیول شامل کریں.

  2. خودکار پیرامیٹر اور ماڈل کی اصلاح کے لیے مشین لرننگ ماڈیول میں اضافہ کریں۔

  3. فیچر اسپیس کو افزودہ کرنے اور فیصلوں کو بہتر بنانے کے لیے مزید ڈیٹا ذرائع کو استعمال کریں۔

  4. انسانی مداخلت کو کم کرنے کے لئے خودکار نگرانی اور بحالی کے نظام تیار کریں۔

  5. حکمت عملی کی کارکردگی کو درست کرنے کے لئے بیک ٹسٹنگ اور تخروپن کی تشخیص شامل کریں.

نتیجہ

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


/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vikris

//@version=4
strategy("[VJ]Phoenix Force of PSAR +MACD +RSI", overlay=true, calc_on_every_tick = false,pyramiding=0)

// ********** Strategy inputs - Start **********

// Used for intraday handling
// Session value should be from market start to the time you want to square-off 
// your intraday strategy
// Important: The end time should be at least 2 minutes before the intraday
// square-off time set by your broker
var i_marketSession = input(title="Market session", type=input.session, 
     defval="0915-1455", confirm=true)

// Make inputs that set the take profit % (optional)
longProfitPerc = input(title="Long Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=3) * 0.01

shortProfitPerc = input(title="Short Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=3) * 0.01
     
// Set stop loss level with input options (optional)
longLossPerc = input(title="Long Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=3) * 0.01

shortLossPerc = input(title="Short Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=3) * 0.01    


// ********** Strategy inputs - End **********


// ********** Supporting functions - Start **********

// A function to check whether the bar or period is in intraday session
barInSession(sess) => time(timeframe.period, sess) != 0



// Figure out take profit price
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Determine stop loss price
longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)


// ********** Supporting functions - End **********


// ********** Strategy - Start **********
// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)

// Trade only if intraday session is active

//=================Strategy logic goes in here===========================
 
psar = sar(0.02,0.02,0.2)
c1a = close > psar
c1v = close < psar

malen = input(50, title="MA Length")
mm200 = sma(close, malen)
c2a = close > mm200
c2v = close < mm200

fast = input(12, title="MACD Fast EMA Length")
slow = input(26, title="MACD Slow EMA Length")
[macd,signal,hist] = macd(close, fast,slow, 9)
c3a = macd >= 0
c3v = macd <= 0

rsilen = input(7, title="RSI Length")
th = input(50, title="RSI Threshold")
rsi14 = rsi(close, rsilen)
c4a = rsi14 >= th
c4v = rsi14 <= th

chopi = input(7, title="Chop Index lenght")
ci = 100 * log10(sum(atr(1), chopi) / (highest(chopi) - lowest(chopi))) / log10(chopi)

buy = c1a and c2a and c3a and c4a ? 1 : 0
sell = c1v and c2v and c3v and c4v ? -1 : 0


//Final Long/Short Condition
longCondition = buy==1 and ci <50
shortCondition = sell==-1 and ci <50 
 
//Long Strategy - buy condition and exits with Take profit and SL
if (longCondition and intradaySession)
    stop_level = longStopPrice
    profit_level = longExitPrice
    strategy.entry("My Long Entry Id", strategy.long)
    strategy.exit("TP/SL", "My Long Entry Id", stop=stop_level, limit=profit_level)


//Short Strategy - sell condition and exits with Take profit and SL
if (shortCondition and intradaySession)
    stop_level = shortStopPrice
    profit_level = shortExitPrice
    strategy.entry("My Short Entry Id", strategy.short)
    strategy.exit("TP/SL", "My Short Entry Id", stop=stop_level, limit=profit_level)
 
 
// Square-off position (when session is over and position is open)
squareOff = (not intradaySession) and (strategy.position_size != 0)
strategy.close_all(when = squareOff, comment = "Square-off")

// ********** Strategy - End **********

مزید