یہ ایک سادہ حرکت پذیر اوسط رجحان کی پیروی کرنے والی حکمت عملی ہے جو بٹ کوائن اور ایتھریم کے لئے موزوں ہے۔ یہ رجحان کی سمت کی نشاندہی کرنے کے لئے متعدد اشارے جیسے حرکت پذیر اوسط ، ایم اے سی ڈی اور آر ایس آئی کو یکجا کرتا ہے ، اور طویل مدتی رجحان کی نگرانی کے لئے فکسڈ پوزیشن سائزنگ کو اپناتا ہے۔
اس حکمت عملی کا بنیادی منطق یہ ہے کہ جب 20 دن کا ای ایم اے 100 دن کے ایس ایم اے سے اوپر اور 100 دن کا ایس ایم اے 200 دن کے ایس ایم اے سے اوپر عبور کرتا ہے تو طویل عرصے تک جانا ہے۔ جب 20 دن کا ای ایم اے 100 دن کے ایس ایم اے سے نیچے عبور کرتا ہے تو پوزیشنیں بند کردیں۔ یعنی ، رجحان کی سمت کا تعین کرنے کے لئے مختلف ادوار کے تین حرکت پذیر اوسط استعمال کریں۔
خاص طور پر ، حکمت عملی 20 دن کے ای ایم اے ، 100 دن کے ایس ایم اے اور 200 دن کے ایس ایم اے کی اقدار کا حساب لگاتی ہے ، اور رجحان کا فیصلہ کرنے کے لئے ان کے طول و عرض کے تعلقات کا موازنہ کرتی ہے۔ جب 20 دن کا ای ایم اے 100 دن کے ایس ایم اے سے اوپر عبور کرتا ہے تو ، اس کا مطلب یہ ہے کہ قیمتوں میں اضافہ ہونا شروع ہو گیا ہے۔ اس وقت ، اگر 100 دن کا ایس ایم اے بھی 200 دن کے ایس ایم اے سے بڑا ہے تو ، اس سے یہ ظاہر ہوتا ہے کہ درمیانے اور طویل مدتی رجحانات بھی بڑھ رہے ہیں۔ یہ ایک مضبوط طویل سگنل ہے۔
ایک طویل پوزیشن میں داخل ہونے کے بعد ، حکمت عملی رجحان کی پیروی کرنے کے لئے پوزیشن کو برقرار رکھے گی۔ جب 20 دن کا ای ایم اے 100 دن کے ایس ایم اے سے نیچے ایک بار پھر عبور کرتا ہے تو ، اس سے یہ ظاہر ہوتا ہے کہ قلیل مدتی رجحان الٹنے کا اشارہ ہوا ہے۔ اس وقت ، حکمت عملی نقصانات کو روکنے کے لئے پوزیشنوں کو بند کرنے کا انتخاب کرے گی۔
اس کے علاوہ ، حکمت عملی میں رجحان کی تصدیق کے لئے ایم اے سی ڈی اور آر ایس آئی جیسے اشارے بھی شامل ہیں۔ صرف اس وقت جب ایم اے سی ڈی کی ڈی آئی ایف لائن ، ڈی ای ایم اے لائن اور ہسٹ بار لائن سب بڑھ رہے ہیں ، اور آر ایس آئی اشارے 50 سے اوپر ہے ، تو یہ طویل پوزیشن کھولنے کا انتخاب کرے گا۔
اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ اس میں واضح رجحان ٹریڈنگ کے قواعد مرتب کیے گئے ہیں جو درمیانی اور طویل مدتی رجحانات کو مؤثر طریقے سے ٹریک کرسکتے ہیں۔ مخصوص فوائد مندرجہ ذیل ہیں:
رجحان کا اندازہ کرنے کے لئے متعدد حرکت پذیر اوسط کا استعمال کریں ، جو نسبتا reliable قابل اعتماد ہے۔
طویل مدتی ہولڈنگ پوزیشنوں کو اختیار کریں تاکہ مارکیٹ میں مختصر مدت کے اتار چڑھاو کے بغیر رجحان کی نقل و حرکت کو ٹریک کیا جاسکے۔
حکمت عملی سگنل کی تصدیق کے لئے MACD اور RSI جیسے اشارے کا امتزاج غلط بریک آؤٹس کو فلٹر کرسکتا ہے۔
ای ایم اے اور ایس ایم اے لائنز کے گولڈن کراس اور ڈیتھ کراس کا استعمال کرتے ہوئے انٹری اور آؤٹ پوائنٹس کا تعین کرنے کے لئے ، قوانین آسان اور واضح ہیں۔
اسٹاپ نقصان کے ذریعے نقصانات کو محدود کرکے خطرات کو مؤثر طریقے سے کنٹرول کرسکتے ہیں۔
اس حکمت عملی کے کچھ خطرات بھی ہیں۔ بنیادی مسئلہ یہ ہے کہ جب رجحان الٹ جاتا ہے تو یہ وقت میں نقصانات کو روک نہیں سکتا ہے۔ مخصوص خطرات اور حل مندرجہ ذیل ہیں۔
وقت میں رجحان کی تبدیلی کے مقامات کا سراغ لگانے میں ناکام: چلتی اوسط سائیکلوں کو مختصر کریں ، یا جامع فیصلے کے لئے مزید اشارے شامل کریں۔
طویل عرصے تک ہولڈنگ وقت آسانی سے زیادہ نقصانات کا باعث بن سکتا ہے: بروقت سٹاپ نقصان کے لئے مناسب طریقے سے باہر نکلنے والی لائنوں کو مختصر کریں.
چلتی اوسط اشارے تاخیر کا شکار ہوتے ہیں: فعال سٹاپ نقصان کے لئے اسٹاپ نقصان کی لائنوں کا ایک خاص فیصد شامل کریں۔
اس حکمت عملی کو مندرجہ ذیل پہلوؤں میں بھی بہتر بنایا جاسکتا ہے:
بہترین پیرامیٹرز تلاش کرنے کے لئے چلتی اوسط سائیکلوں کے مزید مجموعے کی جانچ کریں۔
رجحانات اور انٹری ٹائمنگ کا فیصلہ کرنے کے لئے دوسرے اشارے یا ماڈل آزمائیں۔ جیسے بولنگر بینڈ ، کے ڈی اشارے ، وغیرہ۔
پیرامیٹرز کو متحرک طور پر بہتر بنانے کے لئے مشین لرننگ اور دیگر طریقوں کا استعمال کریں۔ مثال کے طور پر ، اسٹاپ نقصان کی وسعت کو ایڈجسٹ کرنے کے لئے تقویت سیکھنے کا استعمال کریں۔
غلط بریک آؤٹ سے بچنے کے لئے تجارتی حجم کے اشارے شامل کریں۔ مثال کے طور پر ، بیلنس حجم پر ، لین دین کا حجم ، وغیرہ۔
خود کار طریقے سے سٹاپ نقصان اور ٹریکنگ سٹاپ نقصان کے نظام تیار کریں جو مارکیٹ کے حالات کی بنیاد پر سٹاپ نقصان کی پوزیشنوں کو ایڈجسٹ کرسکتے ہیں۔
خلاصہ یہ ہے کہ یہ حکمت عملی ایک سادہ اور سیدھی سیدھی رجحان کی پیروی کرنے والی حکمت عملی ہے۔ یہ رجحان کی سمت کا تعین کرنے کے لئے حرکت پذیر اوسط ، ایم اے سی ڈی اور آر ایس آئی کو سگنلز کو فلٹر کرنے کے لئے استعمال کرتی ہے۔ رجحان کی نقل و حرکت کو ٹریک کرنے کے لئے نسبتا 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