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