حرکت پذیر اوسط لائنوں کے ساتھ گرڈ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-20 13:55:15
ٹیگز:

img

جائزہ

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

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

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

فوائد

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

خطرات

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

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

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

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

یہ مزید اصلاحات حکمت عملی کو زیادہ متحرک اور مقامی طور پر بہتر بنائیں گی۔

نتیجہ

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


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Seungdori_

//@version=5
strategy("Grid Strategy with MA", overlay=true, initial_capital = 100000, default_qty_type = strategy.cash, default_qty_value = 10000, pyramiding = 10, process_orders_on_close = true, commission_type = strategy.commission.percent, commission_value = 0.04)


//Inputs//

length = input.int(defval = 100, title = 'MA Length', group = 'MA')
MA_Type = input.string("SMA", title="MA Type", options=['EMA', 'HMA', 'LSMA', 'RMA', 'SMA', 'WMA'],group = 'MA')

logic = input.string(defval='ATR', title ='Grid Logic', options = ['ATR', 'Percent'])

band_mult = input.float(2.5, step = 0.1, title = 'Band Multiplier/Percent', group = 'Parameter')
atr_len = input.int(defval=100, title = 'ATR Length', group ='parameter')
//Var//

var int order_cond = 0
var bool order_1 = false
var bool order_2 = false
var bool order_3 = false
var bool order_4 = false
var bool order_5 = false
var bool order_6 = false
var bool order_7 = false
var bool order_8 = false
var bool order_9 = false
var bool order_10 = false
var bool order_11 = false
var bool order_12 = false
var bool order_13 = false
var bool order_14 = false
var bool order_15 = false


/////////////////////
//Region : Function//
/////////////////////
getMA(source ,ma_type, length) =>
    maPrice = ta.ema(source, length)
    ema = ta.ema(source, length)
    sma = ta.sma(source, length)
    if ma_type == 'SMA'
        maPrice := ta.sma(source, length)
        maPrice
    if ma_type == 'HMA'
        maPrice := ta.hma(source, length)
        maPrice
    if ma_type == 'WMA'
        maPrice := ta.wma(source, length)
        maPrice
    if ma_type == "RMA"
        maPrice := ta.rma(source, length)
    if ma_type == "LSMA"
        maPrice := ta.linreg(source, length, 0)
    maPrice

main_plot = getMA(ohlc4, MA_Type, length)


atr = ta.atr(length)

premium_zone_1 = logic == 'ATR' ? ta.ema(main_plot + atr*(band_mult*1), 5) : ta.ema((main_plot*(1+band_mult*0.01*1)), 5)
premium_zone_2 = logic == 'ATR' ? ta.ema(main_plot + atr*(band_mult*2), 5) : ta.ema((main_plot*(1+band_mult*0.01*2)), 5)
premium_zone_3 = logic == 'ATR' ? ta.ema(main_plot + atr*(band_mult*3), 5) : ta.ema((main_plot*(1+band_mult*0.01*3)), 5)
premium_zone_4 = logic == 'ATR' ? ta.ema(main_plot + atr*(band_mult*4), 5) : ta.ema((main_plot*(1+band_mult*0.01*4)), 5)
premium_zone_5 = logic == 'ATR' ? ta.ema(main_plot + atr*(band_mult*5), 5) : ta.ema((main_plot*(1+band_mult*0.01*5)), 5)
premium_zone_6 = logic == 'ATR' ? ta.ema(main_plot + atr*(band_mult*6), 5) : ta.ema((main_plot*(1+band_mult*0.01*6)), 5)
premium_zone_7 = logic == 'ATR' ? ta.ema(main_plot + atr*(band_mult*7), 5) : ta.ema((main_plot*(1+band_mult*0.01*7)), 5)
premium_zone_8 = logic == 'ATR' ? ta.ema(main_plot + atr*(band_mult*8), 5) : ta.ema((main_plot*(1+band_mult*0.01*8)), 5)
//premium_zone_9 = ta.rma(main_plot + atr*(band_mult*9), 5)
//premium_zone_10 = ta.rma(main_plot + atr*(band_mult*10), 5)


discount_zone_1 = logic == 'ATR' ? ta.ema(main_plot - atr*(band_mult*1), 5) : ta.ema((main_plot*(1-band_mult*0.01*1)), 5)
discount_zone_2 = logic == 'ATR' ? ta.ema(main_plot - atr*(band_mult*2), 5) : ta.ema((main_plot*(1-band_mult*0.01*2)), 5)
discount_zone_3 = logic == 'ATR' ? ta.ema(main_plot - atr*(band_mult*3), 5) : ta.ema((main_plot*(1-band_mult*0.01*3)), 5)
discount_zone_4 = logic == 'ATR' ? ta.ema(main_plot - atr*(band_mult*4), 5) : ta.ema((main_plot*(1-band_mult*0.01*4)), 5)
discount_zone_5 = logic == 'ATR' ? ta.ema(main_plot - atr*(band_mult*5), 5) : ta.ema((main_plot*(1-band_mult*0.01*5)), 5)
discount_zone_6 = logic == 'ATR' ? ta.ema(main_plot - atr*(band_mult*6), 5) : ta.ema((main_plot*(1-band_mult*0.01*6)), 5)
discount_zone_7 = logic == 'ATR' ? ta.ema(main_plot - atr*(band_mult*7), 5) : ta.ema((main_plot*(1-band_mult*0.01*7)), 5)
discount_zone_8 = logic == 'ATR' ? ta.ema(main_plot - atr*(band_mult*8), 5) : ta.ema((main_plot*(1-band_mult*0.01*8)), 5)
//discount_zon_9 = ta.sma(main_plot - atr*(band_mult*9), 5)
//discount_zone_10 =ta.sma( main_plot - atr*(band_mult*10), 5)

//Region End//

////////////////////
// Region : Plots//
///////////////////

dis_low1 = plot(discount_zone_1, color=color.new(color.green, 80))
dis_low2 = plot(discount_zone_2, color=color.new(color.green, 70))
dis_low3 = plot(discount_zone_3, color=color.new(color.green, 60))
dis_low4 = plot(discount_zone_4, color=color.new(color.green, 50))
dis_low5 = plot(discount_zone_5, color=color.new(color.green, 40))
dis_low6 = plot(discount_zone_6, color=color.new(color.green, 30))
dis_low7 = plot(discount_zone_7, color=color.new(color.green, 20))
dis_low8 = plot(discount_zone_8, color=color.new(color.green, 10))
//dis_low9 = plot(discount_zone_9, color=color.new(color.green, 0))
//dis_low10 = plot(discount_zone_10, color=color.new(color.green, 0))

plot(main_plot, color =color.new(color.gray, 10))

pre_up1 = plot(premium_zone_1, color=color.new(color.red, 80))
pre_up2 = plot(premium_zone_2, color=color.new(color.red, 70))
pre_up3 = plot(premium_zone_3, color=color.new(color.red, 60))
pre_up4 = plot(premium_zone_4, color=color.new(color.red, 50))
pre_up5 = plot(premium_zone_5, color=color.new(color.red, 40))
pre_up6 = plot(premium_zone_6, color=color.new(color.red, 30))
pre_up7 = plot(premium_zone_7, color=color.new(color.red, 20))
pre_up8 = plot(premium_zone_8, color=color.new(color.red, 10))
//pre_up9 = plot(premium_zone_9, color=color.new(color.red, 0))
//pre_up10 = plot(premium_zone_10, color=color.new(color.red, 0))

fill(dis_low1, dis_low2, color=color.new(color.green, 95))
fill(dis_low2, dis_low3, color=color.new(color.green, 90))
fill(dis_low3, dis_low4, color=color.new(color.green, 85))
fill(dis_low4, dis_low5, color=color.new(color.green, 80))
fill(dis_low5, dis_low6, color=color.new(color.green, 75))
fill(dis_low6, dis_low7, color=color.new(color.green, 70))
fill(dis_low7, dis_low8, color=color.new(color.green, 65))
//fill(dis_low8, dis_low9, color=color.new(color.green, 60))
//fill(dis_low9, dis_low10, color=color.new(color.green, 55))

fill(pre_up1, pre_up2, color=color.new(color.red, 95))
fill(pre_up2, pre_up3, color=color.new(color.red, 90))
fill(pre_up3, pre_up4, color=color.new(color.red, 85))
fill(pre_up4, pre_up5, color=color.new(color.red, 80))
fill(pre_up5, pre_up6, color=color.new(color.red, 75))
fill(pre_up6, pre_up7, color=color.new(color.red, 70))
fill(pre_up7, pre_up8, color=color.new(color.red, 65))
//fill(pre_up8, pre_up9, color=color.new(color.red, 60))
//fill(pre_up9, pre_up10, color=color.new(color.red, 55))



//Region End//

///////////////////////
//Region : Strategies//
///////////////////////

//Longs//

longCondition1 = ta.crossunder(low, discount_zone_7)
longCondition2 = ta.crossunder(low, discount_zone_6)
longCondition3 = ta.crossunder(low, discount_zone_5)
longCondition4 = ta.crossunder(low, discount_zone_4)
longCondition5 = ta.crossunder(low, discount_zone_3)
longCondition6 = ta.crossunder(low, discount_zone_2)
longCondition7 = ta.crossunder(low, discount_zone_1)
longCondition8 = ta.crossunder(low, main_plot)
longCondition9 = ta.crossunder(low, premium_zone_1)
longCondition10 = ta.crossunder(low, premium_zone_2)
longCondition11 = ta.crossunder(low, premium_zone_3)
longCondition12 = ta.crossunder(low, premium_zone_4)
longCondition13 = ta.crossunder(low, premium_zone_5)
longCondition14 = ta.crossunder(low, premium_zone_6)
longCondition15 = ta.crossunder(low, premium_zone_7)

if (longCondition1) and order_1 == false
    strategy.entry("Long1", strategy.long)
    order_1 := true
if (longCondition2) and order_2 == false
    strategy.entry("Long2", strategy.long)
    order_2 := true
if (longCondition3) and order_3 == false
    strategy.entry("Long3", strategy.long)
    order_3 := true
if (longCondition4) and order_4 == false
    strategy.entry("Long4", strategy.long)
    order_4 := true
if (longCondition5) and order_5 == false
    strategy.entry("Long5", strategy.long)
    order_5 := true
if (longCondition6) and order_6 == false
    strategy.entry("Long6", strategy.long)
    order_6 := true
if (longCondition7) and order_7 == false
    strategy.entry("Long7", strategy.long)
    order_7 := true
if (longCondition8) and order_8 == false
    strategy.entry("Long8", strategy.long)
    order_8 := true
if (longCondition9) and order_9 == false
    strategy.entry("Long9", strategy.long)
    order_9 := true
if (longCondition10) and order_10 == false
    strategy.entry("Long10", strategy.long)
    order_10 := true
if (longCondition11) and order_11 == false
    strategy.entry("Long11", strategy.long)
    order_11 := true
if (longCondition12) and order_12 == false
    strategy.entry("Long12", strategy.long)
    order_12 := true
if (longCondition13) and order_13 == false
    strategy.entry("Long13", strategy.long)
    order_13 := true
if (longCondition14) and order_14 == false
    strategy.entry("Long14", strategy.long)
    order_14 := true
if (longCondition15) and order_15 == false
    strategy.entry("Long14", strategy.long)
    order_15 := true

//Close//

shortCondition1 = ta.crossover(high, discount_zone_6)
shortCondition2 = ta.crossover(high, discount_zone_5)
shortCondition3 = ta.crossover(high, discount_zone_4)
shortCondition4 = ta.crossover(high, discount_zone_3)
shortCondition5 = ta.crossover(high, discount_zone_2)
shortCondition6 = ta.crossover(high, discount_zone_1)
shortCondition7 = ta.crossover(high, main_plot)
shortCondition8 = ta.crossover(high, premium_zone_1)
shortCondition9 = ta.crossover(high, premium_zone_2)
shortCondition10 = ta.crossover(high, premium_zone_3)
shortCondition11 = ta.crossover(high, premium_zone_4)
shortCondition12 = ta.crossover(high, premium_zone_5)
shortCondition13 = ta.crossover(high, premium_zone_6)
shortCondition14 = ta.crossover(high, premium_zone_7)
shortCondition15 = ta.crossover(high, premium_zone_8)

if (shortCondition1) and order_1 == true
    strategy.close("Long1")
    order_1 := false
if (shortCondition2) and order_2 == true
    strategy.close("Long2")
    order_2 := false
if (shortCondition3) and order_3 == true
    strategy.close("Long3")
    order_3 := false
if (shortCondition4) and order_4 == true
    strategy.close("Long4")
    order_4 := false
if (shortCondition5) and order_5 == true
    strategy.close("Long5")
    order_5 := false
if (shortCondition6) and order_6 == true
    strategy.close("Long6")
    order_6 := false
if (shortCondition7) and order_7 == true
    strategy.close("Long7")
    order_7 := false
if (shortCondition8) and order_8 == true
    strategy.close("Long8")
    order_8 := false
if (shortCondition9) and order_9 == true
    strategy.close("Long9")
    order_9 := false
if (shortCondition10) and order_10 == true
    strategy.close("Long10")
    order_10 := false
if (shortCondition11) and order_11 == true
    strategy.close("Long11")
    order_11 := false
if (shortCondition12) and order_12 == true
    strategy.close("Long12")
    order_12 := false
if (shortCondition13) and order_13 == true
    strategy.close("Long13")
    order_13 := false
if (shortCondition14) and order_14 == true
    strategy.close("Long14")
    order_14 := false
if (shortCondition15) and order_15 == true
    strategy.close("Long15")
    order_15 := false



مزید