حکمت عملی کے بعد طویل-مختصر متوازن حرکت پذیر اوسط رجحان


تخلیق کی تاریخ: 2024-01-18 12:07:52 آخر میں ترمیم کریں: 2024-01-18 12:07:52
کاپی: 0 کلکس کی تعداد: 608
1
پر توجہ دیں
1617
پیروکار

حکمت عملی کے بعد طویل-مختصر متوازن حرکت پذیر اوسط رجحان

جائزہ

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

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

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

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

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

اس کے علاوہ ، حکمت عملی MACD اور RSI جیسے اشارے کے ساتھ مل کر رجحان کی تصدیق کرتی ہے۔ MACD کی DIF لائن ، DEMA لائن اور HIST کالم لائن صرف اس صورت میں زیادہ پوزیشن لینے کا انتخاب کرتی ہے جب RSI اشارے 50 سے زیادہ ہو۔

اسٹریٹجک فوائد

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

  1. ایک کثیر گروپ منتقل اوسط کا استعمال کرتے ہوئے رجحانات کا تعین کرنے کے لئے زیادہ قابل اعتماد ہے.
  2. طویل مدتی پوزیشن رکھنے کا طریقہ رجحانات کی پیروی کرتا ہے ، جو قلیل مدتی مارکیٹ میں اتار چڑھاؤ سے پریشان نہیں ہوتا ہے۔
  3. MACD اور RSI جیسے اشارے کے ساتھ مل کر حکمت عملی کے اشارے کی تصدیق کی جاسکتی ہے ، جس سے جعلی بریک کو فلٹر کیا جاسکتا ہے۔
  4. ای ایم اے لائن اور ایس ایم اے لائن کے ذریعہ گولڈ فورک اور ڈیڈ فورک کے ذریعہ داخلے اور باہر نکلنے کے مقامات کا فیصلہ کرنے کے لئے ، قواعد آسان اور واضح ہیں۔
  5. خطرے کو مؤثر طریقے سے کنٹرول کرنے اور نقصان کو روکنے کے ذریعے نقصان کو محدود کرنے کے قابل.

خطرات اور حل

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

  1. ٹرینڈ ریورس پوائنٹ پر وقت پر ٹریک کرنے میں ناکامی: اوسط سائیکل کو مختصر کیا جاسکتا ہے ، یا مزید اشارے شامل کیے جاسکتے ہیں تاکہ جامع فیصلہ کیا جاسکے۔

  2. طویل عرصے تک پوزیشن رکھنے سے بڑے نقصانات کا سامنا کرنا پڑتا ہے: آپ کو مناسب طریقے سے باہر نکلنے کی لائن کو کم کیا جاسکتا ہے ، اور وقت پر نقصان کو روک دیا جاسکتا ہے۔

  3. اوسط لکیری اشارے تاخیر کا شکار ہیں: ایک خاص تناسب کی واپسی کی روک تھام کی لائن ، فعال روک تھام شامل کی جاسکتی ہے۔

اصلاح کی سمت

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

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

  2. رجحانات اور داخلے کے وقت کا تعین کرنے کے لئے دوسرے اشارے یا ماڈلز کی کوشش کریں۔ جیسے برن بینڈ ، کے ڈی اشارے وغیرہ

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

  4. ٹرانزیکشن حجم کے اشارے کے ساتھ مل کر جھوٹے بریک سے بچنے کے لئے۔ جیسے توانائی کی لہر کا اشارہ ، ٹرانزیکشن حجم وغیرہ۔

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*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