حکمت عملی کے بعد کثیر عنصر چلتی اوسط رجحان

مصنف:چاؤ ژانگ، تاریخ: 2024-01-18 12:07:52
ٹیگز:

img

جائزہ

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

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

اس حکمت عملی کا بنیادی منطق یہ ہے کہ جب 20 دن کا ای ایم اے 100 دن کے ایس ایم اے سے اوپر اور 100 دن کا ایس ایم اے 200 دن کے ایس ایم اے سے اوپر عبور کرتا ہے تو طویل عرصے تک جانا ہے۔ جب 20 دن کا ای ایم اے 100 دن کے ایس ایم اے سے نیچے عبور کرتا ہے تو پوزیشنیں بند کردیں۔ یعنی ، رجحان کی سمت کا تعین کرنے کے لئے مختلف ادوار کے تین حرکت پذیر اوسط استعمال کریں۔

خاص طور پر ، حکمت عملی 20 دن کے ای ایم اے ، 100 دن کے ایس ایم اے اور 200 دن کے ایس ایم اے کی اقدار کا حساب لگاتی ہے ، اور رجحان کا فیصلہ کرنے کے لئے ان کے طول و عرض کے تعلقات کا موازنہ کرتی ہے۔ جب 20 دن کا ای ایم اے 100 دن کے ایس ایم اے سے اوپر عبور کرتا ہے تو ، اس کا مطلب یہ ہے کہ قیمتوں میں اضافہ ہونا شروع ہو گیا ہے۔ اس وقت ، اگر 100 دن کا ایس ایم اے بھی 200 دن کے ایس ایم اے سے بڑا ہے تو ، اس سے یہ ظاہر ہوتا ہے کہ درمیانے اور طویل مدتی رجحانات بھی بڑھ رہے ہیں۔ یہ ایک مضبوط طویل سگنل ہے۔

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

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

فوائد

اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ اس میں واضح رجحان ٹریڈنگ کے قواعد مرتب کیے گئے ہیں جو درمیانی اور طویل مدتی رجحانات کو مؤثر طریقے سے ٹریک کرسکتے ہیں۔ مخصوص فوائد مندرجہ ذیل ہیں:

  1. رجحان کا اندازہ کرنے کے لئے متعدد حرکت پذیر اوسط کا استعمال کریں ، جو نسبتا reliable قابل اعتماد ہے۔

  2. طویل مدتی ہولڈنگ پوزیشنوں کو اختیار کریں تاکہ مارکیٹ میں مختصر مدت کے اتار چڑھاو کے بغیر رجحان کی نقل و حرکت کو ٹریک کیا جاسکے۔

  3. حکمت عملی سگنل کی تصدیق کے لئے MACD اور RSI جیسے اشارے کا امتزاج غلط بریک آؤٹس کو فلٹر کرسکتا ہے۔

  4. ای ایم اے اور ایس ایم اے لائنز کے گولڈن کراس اور ڈیتھ کراس کا استعمال کرتے ہوئے انٹری اور آؤٹ پوائنٹس کا تعین کرنے کے لئے ، قوانین آسان اور واضح ہیں۔

  5. اسٹاپ نقصان کے ذریعے نقصانات کو محدود کرکے خطرات کو مؤثر طریقے سے کنٹرول کرسکتے ہیں۔

خطرات اور حل

اس حکمت عملی کے کچھ خطرات بھی ہیں۔ بنیادی مسئلہ یہ ہے کہ جب رجحان الٹ جاتا ہے تو یہ وقت میں نقصانات کو روک نہیں سکتا ہے۔ مخصوص خطرات اور حل مندرجہ ذیل ہیں۔

  1. وقت میں رجحان کی تبدیلی کے مقامات کا سراغ لگانے میں ناکام: چلتی اوسط سائیکلوں کو مختصر کریں ، یا جامع فیصلے کے لئے مزید اشارے شامل کریں۔

  2. طویل عرصے تک ہولڈنگ وقت آسانی سے زیادہ نقصانات کا باعث بن سکتا ہے: بروقت سٹاپ نقصان کے لئے مناسب طریقے سے باہر نکلنے والی لائنوں کو مختصر کریں.

  3. چلتی اوسط اشارے تاخیر کا شکار ہوتے ہیں: فعال سٹاپ نقصان کے لئے اسٹاپ نقصان کی لائنوں کا ایک خاص فیصد شامل کریں۔

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

اس حکمت عملی کو مندرجہ ذیل پہلوؤں میں بھی بہتر بنایا جاسکتا ہے:

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

  2. رجحانات اور انٹری ٹائمنگ کا فیصلہ کرنے کے لئے دوسرے اشارے یا ماڈل آزمائیں۔ جیسے بولنگر بینڈ ، کے ڈی اشارے ، وغیرہ۔

  3. پیرامیٹرز کو متحرک طور پر بہتر بنانے کے لئے مشین لرننگ اور دیگر طریقوں کا استعمال کریں۔ مثال کے طور پر ، اسٹاپ نقصان کی وسعت کو ایڈجسٹ کرنے کے لئے تقویت سیکھنے کا استعمال کریں۔

  4. غلط بریک آؤٹ سے بچنے کے لئے تجارتی حجم کے اشارے شامل کریں۔ مثال کے طور پر ، بیلنس حجم پر ، لین دین کا حجم ، وغیرہ۔

  5. خود کار طریقے سے سٹاپ نقصان اور ٹریکنگ سٹاپ نقصان کے نظام تیار کریں جو مارکیٹ کے حالات کی بنیاد پر سٹاپ نقصان کی پوزیشنوں کو ایڈجسٹ کرسکتے ہیں۔

نتیجہ

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


/*backtest
start: 2024-01-16 00:00:00
end: 2024-01-17 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="BTC_Long_Only_TV01_200507", overlay=true)

//////////// !!!!!!!!!!!!!!!! WORK BEST IN 2 HOURS for BTC, ETH and ETHXBT !!!!!!!!!!!!!!!!!!! /////////////////////
//280820 - After long esting this is the best script for ETHUSD in 4 hours. From 01/01/2020 til 28/08/2020


[macdLine, macdSignalLine, macdHist] = macd(close, 12, 26, 7)  

//_rsi_len = input(14, title="RSI length")
_rsi_len = 14 
  
NewValue = 0
PreviousValue = 0
leverage = 1

smaPercentageIncrease = 0.0
SMA_PERCENT_INCREASE = 0.0
float atrValue = 0
bool bPositionOpened = false
float stockPositionSize = 0 
float volatilityPercentage = 0.0
bool bDisplayArrow = false 
bool bEMAIsRising = false
bool bSMAIsRising = false
bool bSMASlowIsRising = false
bool bMACDIsRising = false
bool bMACDHistIsRising = false
bool bMACDSignalIsRising = false

float stopLoss = input (5, "StopLoss in %", type=input.float) //StopLoss associated with the order
//Best for alt versus BTC float stopLoss = input (3, "StopLoss in %", type=input.float) //StopLoss associated with the order 
float positionSize = 1000
float currentPrice = close 
float stopLossPrice = 0
float entryPrice = 0


//-----------------------------------------------------------


// === INPUT BACKTEST RANGE ONE YEAR 
//FromDay   = input(defval = 01, title = "From Day", minval = 1, maxval = 31)
//FromMonth = input(defval = 01, title = "From Month", minval = 1, maxval = 12)
//FromYear  = input(defval = 2020, title = "From Year", minval = 2017)
FromDay   = 01
FromMonth = 01
FromYear  = 2020

//ToDay     = input(defval = 01, title = "To Day", minval = 1, maxval = 31)
//ToMonth   = input(defval = 01, title = "To Month", minval = 1, maxval = 12)
//ToYear    = input(defval = 2023, title = "To Year", minval = 2017)
ToDay     = 14
ToMonth   = 05
ToYear    = 2029

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"


//FUNCTION DEFINITIONS
//----------------------
IsRising(data, loopBack) =>
    bIsRising = true
    for n = 1 to loopBack
        if data[n] > data[n-1]
            bIsRising := false
        continue
    bIsRising
    
IsFalling(data, loopBack) =>
    bIsFalling = true
    for n = 1 to loopBack
        if data[n] < data[n-1]
            bIsFalling := false
        continue
    bIsFalling
    
// END OF FUNCTION DEFINITIONS //


emaLength = 20
smaLength = 100
smaSlowLength = 200
 
ema = ema(close, emaLength) 
sma = sma(close, smaLength)
smaSlow = sma(close, smaSlowLength)

plot(sma, color=color.green)
plot(smaSlow, color=color.orange)
plot(ema, color=color.yellow)

//reload previous values
stopLossPrice := na(stopLossPrice[1]) ? 0.0 : stopLossPrice[1]
entryPrice := na(entryPrice[1]) ? 0.0 : entryPrice[1]
bPositionOpened := na(bPositionOpened[1]) ? false : bPositionOpened[1]
positionSize := na(positionSize[1]) ? 1000 : positionSize[1]
stockPositionSize := na(stockPositionSize[1]) ? 0 : stockPositionSize[1]
//leverage := na(leverage[1]) ? 1 : leverage[1]

bEMAIsRising := IsRising(ema, 2) 
bSMAIsRising := IsRising(sma, 3)
bMACDIsRising := IsRising(macdLine, 3)
bMACDHistIsRising := IsRising(macdHist, 1)
bSMASlowIsRising := IsRising(smaSlow, 10)
bMACDSignalIsRising := IsRising(macdSignalLine, 3)


atrValue := atr(14)
volatilityPercentage := (atrValue/currentPrice)*100 //calcute the volatility. Percentage of the actual price

 
if (window()) 
    //Check if we can open a LONG
    if (bPositionOpened == false and bSMASlowIsRising == true and bMACDIsRising == true and bEMAIsRising == true and bSMAIsRising == true and ema[0] > sma[0] and sma[0] < currentPrice)
        //Enter in short position 
        stockPositionSize := (positionSize*leverage)/currentPrice //Calculate the position size based on the actual price and the position Size (in $) configured.
        
        //calculate exit values
        stopLossPrice := currentPrice*(1-stopLoss/100) 
        strategy.entry("myPosition", strategy.long, qty=stockPositionSize, comment="BUY at " + tostring(currentPrice))
        entryPrice := currentPrice //store the entry price
        bPositionOpened := true  
        bDisplayArrow := true 
        
    if (bPositionOpened == true and (currentPrice <= stopLossPrice or crossunder(ema[1], sma[1])))
        strategy.close("myPosition", comment="" + tostring(currentPrice) ) //Stop
        //uncomment the below line to make the bot investing the full portfolio amount to test compounding effect.
        //positionSize := positionSize + ((stockPositionSize * currentPrice) - (positionSize*leverage)) 
        //reset some flags 
        bPositionOpened := false 
        bDisplayArrow := true 
        entryPrice := 0.0
        


مزید