اس حکمت عملی کا نام
حکمت عملی تجارتی سگنل پیدا کرنے کے لئے 5 دن کے اسٹوکاسٹک اشارے %K اور %D لائن کراسورس کا استعمال کرتی ہے۔ جب %K نیچے سے %D سے تجاوز کرتا ہے تو ، خرید کا سگنل تیار کیا جاتا ہے۔ جب %K اوپر سے %D سے نیچے عبور کرتا ہے تو ، فروخت کا سگنل تیار کیا جاتا ہے۔ جھوٹے سگنل کو فلٹر کرنے کے لئے ، 50 دن کی ایس ایم اے لائنیں استعمال کی جاتی ہیں - صرف اس وقت جب بند قیمت ایس ایم اے کے نچلے حصے سے نیچے ہوتی ہے تو ، خرید کا سگنل درست ہوتا ہے۔ صرف اس وقت جب بند قیمت ایس ایم اے کے اعلی نقطہ سے اوپر ہوتی ہے تو ، فروخت کا سگنل درست ہوتا ہے۔
خریدنے کا اشارہ موصول ہونے پر ، حکمت عملی ایک مقررہ مقدار کے ساتھ طویل پوزیشن کھولے گی۔ فروخت کا اشارہ موصول ہونے پر ، اگر یہ ایک طرفہ تجارتی موڈ میں ہے تو ، یہ پچھلی طویل پوزیشن کو بند کردے گا اور مختصر پوزیشن کھول دے گا۔ اگر ہیجنگ موڈ میں ہے تو ، یہ ہیجنگ کے لئے صرف اضافی مختصر پوزیشن کھول دے گا۔ ہر تجارتی یونٹ کے لئے ، موجودہ قیمت کے ایک خاص فیصد کی بنیاد پر بے ترتیب اسٹاپ نقصان اور منافع لینے کے پوائنٹس مقرر کیے جاتے ہیں۔ اس سے منافع میں تالا لگانے اور خطرات پر قابو پانے کی اجازت ملتی ہے۔
اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ یہ دو طرفہ تجارت میں نسبتا low کم جھوٹے سگنل کی شرح کو حاصل کرنے کے لئے ایس ایم اے فلٹر کے ساتھ اسٹوکاسٹک سگنلز کا استعمال کرتا ہے۔ اس سے زیادہ منافع کے مواقع پیدا ہوتے ہیں۔ اس کے علاوہ ، بے ترتیب اسٹاپ نقصان / منافع لینے کا طریقہ کار منافع کمانے کے بعد وقت میں منافع حاصل کرنے کی اجازت دیتا ہے ، تمام منافع واپس کرنے سے گریز کرتا ہے۔ اور نقصان کو کم کرنے کے لئے بڑے نقصان کی صورت میں نقصانات کو کم کرتا ہے۔ خلاصہ میں ، حکمت عملی میں زیادہ منافع کا مارجن اور بہتر رسک کنٹرول ہے۔
اس حکمت عملی کے اہم خطرات میں شامل ہیں اسٹوکاسٹک اشارے کے جھوٹے سگنل غیر ضروری نقصانات کا باعث بن سکتے ہیں۔ غیر مناسب بے ترتیب اسٹاپ نقصان / منافع حاصل کرنے والے پوائنٹس بہت جارحانہ ہوسکتے ہیں ، جس سے قبل از وقت یا دیر سے باہر نکلنے کا سبب بنتا ہے ، جو منافع بخش پر اثر انداز ہوتا ہے۔ ہیجنگ تجارت میں وقت میں نقصانات کو کم کرنے کی عدم صلاحیت نقصانات کو بڑھانے کا باعث بن سکتی ہے۔
خطرات کو کم کرنے کے لئے ، ایس ایم اے فلٹر کے پیرامیٹرز کو زیادہ سے زیادہ غلط سگنل کو فلٹر کرنے کے لئے بہتر بنایا جاسکتا ہے۔ رجحانات کے خلاف تجارت سے بچنے کے لئے مارکیٹ کے رجحانات کا تعین کرنے کے لئے دوسرے اشارے کو جوڑنے پر بھی غور کریں۔ آخر میں ، معقول اسٹاپ نقصان کی حد مقرر کی جانی چاہئے ، اور خطرہ کو کنٹرول کرنے کے لئے ہیجنگ یونٹوں کے لئے آزاد اسٹاپ نقصان کے نکات کا استعمال کیا جانا چاہئے۔
حکمت عملیوں کو مندرجہ ذیل پہلوؤں میں بہتر بنایا جاسکتا ہے:
غلط سگنل کو کم کرنے کے لئے بہترین پیرامیٹر مجموعہ تلاش کرنے کے لئے اسٹوکاسٹک کے پیرامیٹرز کو بہتر بنائیں.
رجحانات کا تعین کرنے میں اسٹوکاسٹک کی مدد کرنے کے لئے دیگر تکنیکی اشارے کو بہتر بنائیں یا شامل کریں ، مثال کے طور پر MACD ، KD وغیرہ۔
مختلف پیرامیٹرز کے تحت اسٹوکاسٹک سگنلز کی درستگی ، جیت کی شرح وغیرہ جیسے میٹرکس کا مطالعہ کرنے کے لئے مشین لرننگ ماڈلز کا استعمال کریں ، تاکہ زیادہ سے زیادہ پیرامیٹر کی جگہ مل سکے۔
بے ترتیب سٹاپ نقصان / منافع لینے کے الگورتھم کو بہتر بنانے کے لئے انہیں زیادہ ذہین اور متحرک بنانے کے لئے، مثال کے طور پر منتقل سٹاپ نقصان، پوزیشن سائزنگ وغیرہ جیسے تصورات کو شامل کریں.
پوزیشن سائزنگ ماڈیول شامل کریں، کارکردگی، مارکیٹ کے نظام وغیرہ کی بنیاد پر متحرک پوزیشن ایڈجسٹمنٹ کی اجازت دیتا ہے.
/*backtest start: 2023-12-31 00:00:00 end: 2024-01-07 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 var int slippage = 0 strategy("X48 - DayLight Hunter | Strategy | V.01.01", overlay=true, calc_on_order_fills = true, initial_capital = 50,default_qty_type = strategy.fixed, default_qty_value = 1, commission_type = strategy.commission.percent, commission_value = 0, currency = currency.USD, slippage = 0) var bool hedge_mode = false var int sto_buy = 0 var int sto_sell = 0 Trade_Mode = input.string(defval = "Hedge", title = "⚖️ Mode For Trade [Oneway / Hedge]", options = ["Oneway", "Hedge"], group = "Mode Trade", tooltip = "Oneway = Switching Position Type With Signal\nHedge Mode = Not Switching Position Type Unitl TP or SL") Risk_Mode = input.string(defval = "Low Risk", title = "⚖️ Risk Signal Mode [Low / Medium / High]", options = ["Low Risk", "Medium Risk", "High Risk"], group = "Mode Trade", tooltip = "[[Signal Form Stochastic]]\nLow Risk is >= 80 and <= 20\nMedium Risk is >= 70 and <= 30\nHigh Risk is >= 50 and <=50") if Trade_Mode == "Oneway" hedge_mode := false else hedge_mode := true if Risk_Mode == "Low Risk" sto_buy := 20 sto_sell := 80 else if Risk_Mode == "Medium Risk" sto_buy := 30 sto_sell := 70 else if Risk_Mode == "High Risk" sto_buy := 50 sto_sell := 50 periodK = input.int(15, title="%K Length", minval=1, group = "Stochastic Setting", inline = "Sto0") smoothK = input.int(3, title="%K Smoothing", minval=1, group = "Stochastic Setting", inline = "Sto0") periodD = input.int(3, title="%D Smoothing", minval=1, group = "Stochastic Setting", inline = "Sto0") SMA_Mode = input.bool(defval = true, title = "SMA High and Low Filter Mode", group = "SMA Filter Mode", tooltip = "Sell Signal With Open >= SMA High\nBuy Signal With Close <= SMA Low") SMA_High = input.int(defval = 50, title = "SMA High", group = "SMA Filter Mode", inline = "SMA1") SMA_Low = input.int(defval = 50, title = "SMA Low", group = "SMA Filter Mode", inline = "SMA1") k = ta.sma(ta.stoch(close, high, low, periodK), smoothK) d = ta.sma(k, periodD) high_line = ta.sma(high, SMA_High) low_line = ta.sma(low, SMA_Low) plot(SMA_Mode ? high_line : na, "H-Line", color = color.yellow, linewidth = 2) plot(SMA_Mode ? low_line : na, "L-Line", color = color.blue, linewidth = 2) entrybuyprice = strategy.position_avg_price var bool longcondition = na var bool shortcondition = na if SMA_Mode == true longcondition := ta.crossover(k,d) and d <= sto_buy and close < low_line and open < low_line// or ta.crossover(k, 20)// and close <= low_line shortcondition := ta.crossunder(k,d) and d >= sto_sell and close > high_line and open > high_line// or ta.crossunder(k, 80)// and close >= high_line else longcondition := ta.crossover(k,d) and d <= sto_buy shortcondition := ta.crossunder(k,d) and d >= sto_sell //longcondition_double = ta.crossover(d,20) and close < low_line// and strategy.position_size > 0 //shortcondition_double = ta.crossunder(d,80) and close > high_line// and strategy.position_size < 0 //=============== TAKE PROFIT and STOP LOSS by % ================= tpsl(percent) => strategy.position_avg_price * percent / 100 / syminfo.mintick GR4 = "=====🆘🆘🆘 TAKE PROFIT & STOP LOSS BY [%] 🆘🆘🆘=====" mode= input.bool(title="🆘 Take Profit & Stop Loss By Percent (%)", defval=true, group=GR4, tooltip = "Take Profit & Stop Loss by % Change\n0 = Disable") tp_l = tpsl(input.float(0, title='🆘 TP [LONG] % >> [Oneway Only]', group=GR4, tooltip = "0 = Disable")) tp_s = tpsl(input.float(0, title='🆘 TP [SHORT] % >> [Oneway Only]', group=GR4, tooltip = "0 = Disable")) sl = tpsl(input.float(0, title='🆘 Stop Loss %', group=GR4, tooltip = "0 = Disable")) tp_pnl = input.float(defval = 1, title = "🆘 TP by PNL $ eg. (0.1 = 0.1$)", group = GR4) spread_size = input.float(defval = 0.350, title = "🆘 Spread Point Size(Eg. 35 Point or 350 Point From Your Broker Digits)", tooltip = "Spread Point Form Your Broker \nEg. 1920.124 - 1920.135 or 1920.12 - 1920.13\nPlease Check From Your Broker", group = GR4) GR5 = "===💮💮💮 Hedge Mode 💮💮💮===" //hedge_mode = input.bool(defval = true, title = "⚖️ Hedge Mode", group = GR5) hedge_point = input.int(defval = 500, title = "💯 Hedge Point Range", group = GR5, tooltip = "After Entry Last Position And Current Price More Than Point Range Are Open New Hedge Position") hedge_gale = input.float(defval = 2.0, title = "✳️ Martingale For Hedge Multiply [default = 2]", tooltip = "Martingale For Multiply Hedge Order", group = GR5) hedge_point_size = hedge_point/100 calcStopLossPrice(OffsetPts) => if strategy.position_size > 0 strategy.position_avg_price - OffsetPts * syminfo.mintick else if strategy.position_size < 0 strategy.position_avg_price + OffsetPts * syminfo.mintick else na calcStopLossL_AlertPrice(OffsetPts) => strategy.position_avg_price - OffsetPts * syminfo.mintick calcStopLossS_AlertPrice(OffsetPts) => strategy.position_avg_price + OffsetPts * syminfo.mintick calcTakeProfitPrice(OffsetPts) => if strategy.position_size > 0 strategy.position_avg_price + OffsetPts * syminfo.mintick else if strategy.position_size < 0 strategy.position_avg_price - OffsetPts * syminfo.mintick else na calcTakeProfitL_AlertPrice(OffsetPts) => strategy.position_avg_price + OffsetPts * syminfo.mintick calcTakeProfitS_AlertPrice(OffsetPts) => strategy.position_avg_price - OffsetPts * syminfo.mintick var stoploss = 0. var stoploss_l = 0. var stoploss_s = 0. var takeprofit = 0. var takeprofit_l = 0. var takeprofit_s = 0. var takeprofit_ll = 0. var takeprofit_ss = 0. if mode == true if (strategy.position_size > 0) if sl > 0 stoploss := calcStopLossPrice(sl) stoploss_l := stoploss else if sl <= 0 stoploss := na if tp_l > 0 takeprofit := tp_l takeprofit_ll := close + ((close/100)*tp_l) //takeprofit_s := na else if tp_l <= 0 takeprofit := na if (strategy.position_size < 0) if sl > 0 stoploss := calcStopLossPrice(sl) stoploss_s := stoploss else if sl <= 0 stoploss := na if tp_s > 0 takeprofit := tp_s takeprofit_ss := close - ((close/100)*tp_s) //takeprofit_l := na else if tp_s <= 0 takeprofit := na else if strategy.position_size == 0 stoploss := na takeprofit := na //takeprofit_l := calcTakeProfitL_AlertPrice(tp_l) //takeprofit_s := calcTakeProfitS_AlertPrice(tp_s) //stoploss_l := calcStopLossL_AlertPrice(sl) //stoploss_s := calcStopLossS_AlertPrice(sl) //////////// INPUT BACKTEST RANGE //////////////////////////////////////////////////// var string BTR1 = '════════⌚⌚ INPUT BACKTEST TIME RANGE ⌚⌚════════' i_startTime = input(defval = timestamp("01 Jan 1945 00:00 +0000"), title = "Start", inline="timestart", group=BTR1, tooltip = 'Start Backtest YYYY/MM/DD') i_endTime = input(defval = timestamp("01 Jan 2074 23:59 +0000"), title = "End", inline="timeend", group=BTR1, tooltip = 'End Backtest YYYY/MM/DD') //////////////// Strategy Alert For X4815162342 BOT ////////////////////// Text_Alert_Future = '{{strategy.order.alert_message}}' copy_Fu = input( defval= Text_Alert_Future , title="Alert Message for BOT", inline = '00' ,group = '═ Bot Setting ═ \n >> If You Dont Use Bot Just Pass It' ,tooltip = 'Alert For X48-BOT > Copy and Paste To Alert Function') TimeFrame_input = input(defval= 'Input Your TimeFrame [1m, 15m, 1h, 4h, 1d ,1w]' , title="TimeFrame Text Alert", inline = '00' ,group = '═ Bot Setting ═ \n >> If You Dont Use Bot Just Pass It') string Alert_EntryL = '🪙 Asset : {{ticker}} \n💱 Status : {{strategy.market_position}}\n🕛 TimeFrame : '+str.tostring(TimeFrame_input)+'\n💸 Price : {{strategy.order.price}} $\n✅ TP : '+str.tostring(takeprofit_ll)+' $\n❌ SL : '+str.tostring(stoploss_l)+' $\n⏰ Time : {{timenow}}' string Alert_EntryS = '🪙 Asset : {{ticker}} \n💱 Status : {{strategy.market_position}}\n🕛 TimeFrame : '+str.tostring(TimeFrame_input)+'\n💸 Price : {{strategy.order.price}} $\n✅ TP : '+str.tostring(takeprofit_ss)+' $\n❌ SL : '+str.tostring(stoploss_s)+' $\n⏰ Time : {{timenow}}' string Alert_TPSL = '🪙 Asset : {{ticker}}\n🕛 TimeFrame : '+str.tostring(TimeFrame_input)+'\n💹 {{strategy.order.comment}}\n💸 Price : {{strategy.order.price}} $\n⏰ Time : {{timenow}}' if true if longcondition strategy.entry("Long", strategy.long, comment = "🌙", alert_message = Alert_EntryL) //if longcondition_double // //strategy.cancel_all() // strategy.entry("Long2", strategy.long, comment = "🌙🌙") // //strategy.exit("Exit",'Long', qty_percent = 100 , profit = takeprofit, stop = stoploss, comment_profit = "TP💚L", comment_loss = "SL💚L") if shortcondition strategy.entry("Short", strategy.short, comment = "👻", alert_message = Alert_EntryS) //strategy.exit("Exit",'Short', qty_percent = 100, profit = takeprofit, stop = stoploss, comment_profit = "TP❤️️S", comment_loss = "SL❤️️S") //if shortcondition_double // //strategy.cancel_all() // strategy.entry("Short2", strategy.short, comment = "👻👻") if strategy.position_size > 0 and strategy.opentrades >= 1 and hedge_mode == true entrypricel = strategy.opentrades.entry_price(strategy.opentrades - 1) callpointsize = entrypricel - close lastsize = strategy.position_size if callpointsize >= hedge_point_size and longcondition strategy.order("Long2", strategy.long, qty = lastsize * hedge_gale, comment = "🌙⌛", alert_message = Alert_EntryL) else if strategy.position_size < 0 and strategy.opentrades >= 1 and hedge_mode == true entryprices = strategy.opentrades.entry_price(strategy.opentrades - 1) callpointsize = (entryprices - close)* -1 lastsize = (strategy.position_size) * -1 if callpointsize >= hedge_point_size and shortcondition strategy.order("Short2", strategy.short, qty = lastsize * hedge_gale, comment = "👻⌛", alert_message = Alert_EntryS) last_price_l = (strategy.opentrades.entry_price(strategy.opentrades - 1) + (strategy.opentrades.entry_price(strategy.opentrades - 1)/100) * takeprofit) + spread_size last_price_s = (strategy.opentrades.entry_price(strategy.opentrades - 1) - (strategy.opentrades.entry_price(strategy.opentrades - 1)/100) * takeprofit) - spread_size current_price = request.security(syminfo.tickerid, "1", close) current_pricel = request.security(syminfo.tickerid, "1", close) + spread_size current_prices = request.security(syminfo.tickerid, "1", close) - spread_size //if mode == true if strategy.position_size > 0 and strategy.openprofit >= tp_pnl and mode == true and hedge_mode == true lastsize = strategy.position_size lastprofitorder = strategy.openprofit //if lastprofitorder >= 0.07 //strategy.close('Long', qty = lastsize, comment = "TP💚L", alert_message = Alert_TPSL, immediately = true) strategy.cancel_all() strategy.close_all(comment = "TP💚PNL", alert_message = Alert_TPSL, immediately = true) //strategy.close_all(comment = "TP💚LH", alert_message = Alert_TPSL) //strategy.exit("Exit",'Long2', qty_percent = 100, profit = last_price_l, stop = stoploss, comment_profit = "TP💚LH", comment_loss = "SL💚LH", alert_message = Alert_TPSL) //strategy.exit("Exit",'Long', qty_percent = 100, profit = last_price_l, stop = stoploss, comment_profit = "TP💚L", comment_loss = "SL💚L", alert_message = Alert_TPSL) else if strategy.position_size > 0 and strategy.openprofit < tp_pnl and mode == true and hedge_mode == true strategy.exit("Exit",'Long', qty_percent = 100, stop = stoploss, comment_loss = "SL💚%L", alert_message = Alert_TPSL) if strategy.position_size > 0 and mode == true and hedge_mode == false //strategy.close_all(comment = "TP💚LH", alert_message = Alert_TPSL, immediately = true) strategy.exit("Exit",'Long', qty_percent = 100, profit = takeprofit, stop = stoploss, comment_profit = "TP💚%L", comment_loss = "SL💚%L", alert_message = Alert_TPSL) //strategy.exit("Exit",'Long', qty_percent = 100, profit = takeprofit, stop = stoploss, comment_profit = "TP💚LL", comment_loss = "SL💚L", alert_message = Alert_TPSL) //else if strategy.position_size > 0 and strategy.opentrades > 1 // lastsize = strategy.position_size // lastprofitorder = strategy.openprofit // if lastprofitorder >= 0.07 // strategy.close_all(comment = "TP💚LL", alert_message = Alert_TPSL) if strategy.position_size < 0 and strategy.openprofit >= tp_pnl and mode == true and hedge_mode == true lastsize = (strategy.position_size) * -1 lastprofitorder = strategy.openprofit //if lastprofitorder >= 0.07 //strategy.close('Short', qty = lastsize, comment = "TP❤️️S", alert_message = Alert_TPSL, immediately = true) strategy.cancel_all() strategy.close_all(comment = "TP❤️️PNL", alert_message = Alert_TPSL, immediately = true) //strategy.close_all(comment = "TP❤️️SH", alert_message = Alert_TPSL) //strategy.exit("Exit",'Short2', qty_percent = 100, profit = last_price_s, stop = stoploss, comment_profit = "TP❤️️SH", comment_loss = "SL❤️️SH", alert_message = Alert_TPSL) //strategy.exit("Exit",'Short', qty_percent = 100, profit = last_price_s, stop = stoploss, comment_profit = "TP❤️️S", comment_loss = "SL❤️️S", alert_message = Alert_TPSL) else if strategy.position_size < 0 and strategy.openprofit < tp_pnl and mode == true and hedge_mode == true strategy.exit("Exit",'Short', qty_percent = 100, stop = stoploss, comment_loss = "SL❤️️%S", alert_message = Alert_TPSL) if strategy.position_size < 0 and mode == true and hedge_mode == false //strategy.close_all(comment = "TP❤️️SH", alert_message = Alert_TPSL, immediately = true) strategy.exit("Exit",'Short', qty_percent = 100, profit = takeprofit, stop = stoploss, comment_profit = "TP❤️️%S", comment_loss = "SL❤️️%S", alert_message = Alert_TPSL) //strategy.exit("Exit",'Short', qty_percent = 100, profit = takeprofit, stop = stoploss, comment_profit = "TP❤️️S", comment_loss = "SL❤️️S", alert_message = Alert_TPSL) //else if strategy.position_size < 0 and strategy.opentrades > 1 // lastsize = (strategy.position_size) * -1 // lastprofitorder = strategy.openprofit // if lastprofitorder >= 0.07 // strategy.close_all(comment = "TP❤️️SS", alert_message = Alert_TPSL) //===================== เรียกใช้ library ========================= import X4815162342/X48_LibaryStrategyStatus/2 as fuLi //แสดงผล Backtest show_Net = input.bool(true,'Monitor Profit&Loss', inline = 'Lnet', group = '= PNL MONITOR SETTING =') position_ = input.string('bottom_center','Position', options = ['top_right','middle_right','bottom_right','top_center','middle_center','bottom_center','middle_left','bottom_left'] , inline = 'Lnet') size_i = input.string('auto','size', options = ['auto','tiny','small','normal'] , inline = 'Lnet') color_Net = input.color(color.blue,"" , inline = 'Lnet') // fuLi.NetProfit_Show(show_Net , position_ , size_i, color_Net )