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