گرڈینٹ الٹ ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-10-09 15:10:39
ٹیگز:

جائزہ

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

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

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

  1. مدت پیرامیٹر len1 کے ساتھ ایک بیس لائن MA کا حساب لگائیں، جو طویل مدتی رجحان کی نمائندگی کرتا ہے۔

  2. مدت len2 کے ساتھ ایک سگنل MA کا حساب لگائیں، جو مختصر مدت کے رجحان کی نمائندگی کرتا ہے، len2 < len1.

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

  4. جب مختصر ایم اے نیچے سے لمبی ایم اے کو عبور کرتا ہے تو ، طویل ہوجائیں ، جس سے رجحان کی تبدیلی کا اشارہ ہوتا ہے اور قیمت بڑھ سکتی ہے۔

  5. جب قیمت واپس لمبی ایم اے کی طرف بڑھتی ہے تو، پوزیشن بند کر دیں.

  6. ایم اے کے کراس اوور کو پکڑ کر، یہ درمیانی مدت کے رجحان کی تبدیلیوں کو تجارت کرتا ہے.

فوائد

  1. ایم اے کراس اوور سسٹم کا استعمال کرتے ہوئے درمیانی مدت کے رجحان کی تبدیلیوں کو مؤثر طریقے سے پکڑتا ہے۔

  2. ٹریڈنگ سگنل کی پیروی کرنا آسان اور واضح ہے۔

  3. اپنی مرضی کے مطابق مدت پیرامیٹرز مختلف مصنوعات اور تاجروں کے مطابق.

  4. ہر تجارت کے خطرے کو کنٹرول کرنے کے لئے سٹاپ نقصان اور منافع لے سکتے ہیں.

  5. مخصوص قیمتوں کی پیشن گوئی کرنے کی ضرورت نہیں، صرف رجحان کی سمت کی پرواہ.

خطرات

  1. زیادہ جھوٹے سگنل بار بار ایم اے کراسنگ کے ساتھ رینج مارکیٹوں کے دوران ہوسکتے ہیں۔

  2. قلیل مدتی قیمتوں میں اتار چڑھاؤ سے فائدہ اٹھانے کے قابل نہیں، صرف درمیانی اور طویل مدتی رجحان ٹریڈنگ کے لئے موزوں ہے.

  3. ایم اے سسٹم قیمت کی تبدیلی میں تاخیر کرتا ہے، وقت پر رجحان کی تبدیلیوں کو پکڑنے کے قابل نہیں ہے.

  4. تجارتی تعدد کم ہو سکتا ہے، کافی منافع حاصل کرنے کے قابل نہیں.

  5. مارکیٹ کو اپنانے کے لیے پیرامیٹرز کو بروقت ایڈجسٹ کرنے کی ضرورت ہے۔

اصلاح

  1. غلط سگنل کو فلٹر کرنے کے لئے MACD، KD جیسے دیگر اشارے کے ساتھ مل کر.

  2. رجحان فلٹر شامل کریں، صرف تب ہی تجارت کریں جب رجحان واضح ہو۔

  3. متعدد ٹائم فریم کی تجارت، مختلف ادوار کے ایم اے کو چھانٹنے سے زیادہ مواقع.

  4. متحرک طور پر پیرامیٹرز کو بہتر بنانے کے لئے مارکیٹ کو تبدیل کرنے کے لئے.

  5. رجحان کی تبدیلیوں کا جائزہ لینے میں مدد کے لئے مشین لرننگ ماڈلز متعارف کروائیں۔

نتیجہ

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


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

//@version=3
//Created by 100kiwi
strategy(title = "TrapTrading", overlay = true)

/////////////////////////////////////////////////////////////////////
// COMPONENT CODE START
//*******************************************************************
// Backtesting Period Selector | Component by pbergden
//*******************************************************************
testStartYear = input(2015, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// COMPONENT CODE STOP
/////////////////////////////////////////////////////////////////////

// input
buySide = input(defval = true, title = "Trade Direction (ON: Buy Side OFF: Sell Side)", type = bool)
counterTrend  = input(defval = true, title = "Trade Mode (ON: Counter Trend OFF: Trend Following)", type = bool)
len1 = input(defval = 14, title = "Period")
multiple = input(defval = 1.4, title = "Multiple")

m1 = close - close[len1]
controlPoint = counterTrend ? lowest(abs(m1), len1) == abs(m1) : highest(abs(m1), len1) == abs(m1)
baseLine = valuewhen(controlPoint, avg(close, close[len1]), 0)

// trap line
atr = atr(len1)
line1Up = baseLine + (atr * multiple)
line2Up = baseLine + (atr * 2 * multiple)
line3Up = baseLine + (atr * 3 * multiple)
line4Up = baseLine + (atr * 4 * multiple)
line5Up = baseLine + (atr * 5 * multiple)
line6Up = baseLine + (atr * 6 * multiple)
line7Up = baseLine + (atr * 7 * multiple)
line8Up = baseLine + (atr * 8 * multiple)
line9Up = baseLine + (atr * 9 * multiple)
line10Up = baseLine + (atr * 10 * multiple)
line1Down = baseLine - (atr * multiple)
line2Down = baseLine - (atr * 2 * multiple)
line3Down = baseLine - (atr * 3 * multiple)
line4Down = baseLine - (atr * 4 * multiple)
line5Down = baseLine - (atr * 5 * multiple)
line6Down = baseLine - (atr * 6 * multiple)
line7Down = baseLine - (atr * 7 * multiple)
line8Down = baseLine - (atr * 8 * multiple)
line9Down = baseLine - (atr * 9 * multiple)
line10Down = baseLine - (atr * 9 * multiple)

// draw
color = close >= baseLine ? teal : red
barcolor(controlPoint ? yellow : na, title = "Candle Color")

plot(baseLine, title = "Base Line", color = white, linewidth = 4, style = stepline, transp = 0)
plot(line1Up, title = "1Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line2Up, title = "2Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line3Up, title = "3Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line4Up, title = "4Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line5Up, title = "5Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line6Up, title = "6Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line7Up, title = "7Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line8Up, title = "8Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line9Up, title = "9Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line10Up, title = "10Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line1Down, title = "1Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line2Down, title = "2Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line3Down, title = "2Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line4Down, title = "4Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line5Down, title = "5Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line6Down, title = "6Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line7Down, title = "7Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line8Down, title = "8Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line9Down, title = "9Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line10Down, title = "10Down Line", color = red, linewidth = 1, style = stepline, transp = 0)

// strategy code
if testPeriod() and buySide
    strategy.exit("Exit Long0", from_entry = "Long0", qty = 1, limit = line2Up)
    strategy.exit("Exit Long1", from_entry = "Long1", qty = 1, limit = line1Up)
    strategy.exit("Exit Long2", from_entry = "Long2", qty = 1, limit = baseLine)
    strategy.exit("Exit Long3", from_entry = "Long3", qty = 1, limit = line1Down)
    strategy.exit("Exit Long4", from_entry = "Long4", qty = 1, limit = line2Down)
    strategy.exit("Exit Long5", from_entry = "Long5", qty = 1, limit = line3Down)
    strategy.exit("Exit Long6", from_entry = "Long6", qty = 1, limit = line4Down)
    strategy.exit("Exit Long7", from_entry = "Long7", qty = 1, limit = line5Down)
    strategy.exit("Exit Long8", from_entry = "Long8", qty = 1, limit = line6Down)
    strategy.exit("Exit Long9", from_entry = "Long9", qty = 1, limit = line7Down)
    strategy.exit("Exit Long10", from_entry = "Long10", qty = 1, limit = line8Down)
    strategy.order("Long0", strategy.long, qty = 1, limit = baseLine, when = strategy.position_size <= 0)
    strategy.order("Long1", strategy.long, qty = 1, limit = line1Down, when = strategy.position_size <= 1)
    strategy.order("Long2", strategy.long, qty = 1, limit = line2Down, when = strategy.position_size <= 2)
    strategy.order("Long3", strategy.long, qty = 1, limit = line3Down, when = strategy.position_size <= 3)
    strategy.order("Long4", strategy.long, qty = 1, limit = line4Down, when = strategy.position_size <= 4)
    strategy.order("Long5", strategy.long, qty = 1, limit = line5Down, when = strategy.position_size <= 5)
    strategy.order("Long6", strategy.long, qty = 1, limit = line6Down, when = strategy.position_size <= 6)
    strategy.order("Long7", strategy.long, qty = 1, limit = line7Down, when = strategy.position_size <= 7)
    strategy.order("Long8", strategy.long, qty = 1, limit = line8Down, when = strategy.position_size <= 8)
    strategy.order("Long9", strategy.long, qty = 1, limit = line9Down, when = strategy.position_size <= 9)
    strategy.order("Long10", strategy.long, qty = 1, limit = line10Down, when = strategy.position_size <= 10)
else
    if testPeriod() and not buySide
        strategy.exit("Exit Short0", from_entry = "Short0", qty = 1, limit = line2Down)
        strategy.exit("Exit Short1", from_entry = "Short1", qty = 1, limit = line1Down)
        strategy.exit("Exit Short2", from_entry = "Short2", qty = 1, limit = baseLine)
        strategy.exit("Exit Short3", from_entry = "Short3", qty = 1, limit = line1Up)
        strategy.exit("Exit Short4", from_entry = "Short4", qty = 1, limit = line2Up)
        strategy.exit("Exit Short5", from_entry = "Short5", qty = 1, limit = line3Up)
        strategy.exit("Exit Short6", from_entry = "Short6", qty = 1, limit = line4Up)
        strategy.exit("Exit Short7", from_entry = "Short7", qty = 1, limit = line5Up)
        strategy.exit("Exit Short8", from_entry = "Short8", qty = 1, limit = line6Up)
        strategy.exit("Exit Short9", from_entry = "Short9", qty = 1, limit = line7Up)
        strategy.exit("Exit Short10", from_entry = "Short10", qty = 1, limit = line8Up)
        strategy.order("Short0", strategy.short, qty = 1, limit = baseLine, when = strategy.position_size >= 0)
        strategy.order("Short1", strategy.short, qty = 1, limit = line1Up, when = strategy.position_size >= -1)
        strategy.order("Short2", strategy.short, qty = 1, limit = line2Up, when = strategy.position_size >= -2)
        strategy.order("Short3", strategy.short, qty = 1, limit = line3Up, when = strategy.position_size >= -3)
        strategy.order("Short4", strategy.short, qty = 1, limit = line4Up, when = strategy.position_size >= -4)
        strategy.order("Short5", strategy.short, qty = 1, limit = line5Up, when = strategy.position_size >= -5)
        strategy.order("Short6", strategy.short, qty = 1, limit = line6Up, when = strategy.position_size >= -6)
        strategy.order("Short7", strategy.short, qty = 1, limit = line7Up, when = strategy.position_size >= -7)
        strategy.order("Short8", strategy.short, qty = 1, limit = line8Up, when = strategy.position_size >= -8)
        strategy.order("Short9", strategy.short, qty = 1, limit = line9Up, when = strategy.position_size >= -9)
        strategy.order("Short10", strategy.short, qty = 1, limit = line10Up, when = strategy.position_size >= -10)

مزید