گولڈن کراس ایس ایم اے ٹریڈنگ حکمت عملی مختلف ٹائم فریموں کے دو حرکت پذیر اوسط کے درمیان کراس اوور کی بنیاد پر خرید اور فروخت کے سگنل تیار کرتی ہے۔ خاص طور پر ، جب تیز رفتار حرکت پذیر اوسط نیچے سے سست رفتار حرکت پذیر اوسط سے تجاوز کرتا ہے تو ، ایک سنہری کراس تشکیل دیا جاتا ہے ، جو ایک تیزی سے رجحان کی تبدیلی کی نشاندہی کرتا ہے۔ جب تیز رفتار ایم اے اوپر سے سست رفتار ایم اے سے نیچے عبور کرتا ہے تو ، ایک موت کا کراس تشکیل دیا جاتا ہے ، جو bearish رجحان کی تبدیلی کی نشاندہی کرتا ہے۔
یہ حکمت عملی دو اصولوں پر مبنی ہے:
متحرک اوسط مارکیٹ کے رجحان اور رفتار کی عکاسی کرسکتے ہیں۔ قلیل مدتی ایم اے حالیہ قیمتوں کی نقل و حرکت اور الٹ کو پکڑتا ہے۔ طویل مدتی ایم اے غالب رجحان کو ظاہر کرتا ہے۔
جب تیز رفتار ایم اے آہستہ آہستہ ایم اے کے ساتھ سنہری کراس بناتا ہے تو ، اس سے یہ ظاہر ہوتا ہے کہ قلیل مدتی رفتار طویل مدتی رجحان پر طاقت حاصل کررہی ہے ، لہذا ممکنہ طور پر ایک اپ ٹرینڈ کا آغاز ہے۔ موت کا کراس اس بات کی نشاندہی کرتا ہے کہ طویل مدتی ڈاؤن ٹرینڈ غالب ہے ، لہذا ممکنہ طور پر جاری ڈاؤن ٹرینڈ۔
خاص طور پر ، یہ حکمت عملی 13 اور 30 مدت کے سادہ چلتے ہوئے اوسط کا استعمال کرتی ہے اور ان کے کراس اوور سگنلز کی تجارت کرتی ہے۔ کراس اوور منطق یہ ہے:
ایم اے کے مابین سنہری کراس ایک طویل سگنل تیار کرتا ہے ، جو خریدنے کے موقع کی نشاندہی کرتا ہے۔ سگنل کی قابل عمل کا اندازہ کچھ کم سے کم مدت کے دوران برقرار رہنے والے عروج کے رجحان کی ضرورت سے کیا جاتا ہے تاکہ بیل رجحان کی تصدیق کی جاسکے۔
ایم اے کے مابین موت کا کراس ایک مختصر سگنل پیدا کرتا ہے۔ اسی طرح ، مختصر سگنل کے قابل عمل ہونے کی تصدیق کے ل a ، ایک مستقل ڈاؤن ٹرینڈ کی ضرورت ہے۔
ایم اے کے مابین ڈھلوان کا فرق کراس اوور سگنلز کی طاقت کا اندازہ کرنے کے لئے استعمال ہوتا ہے۔ صرف اس صورت میں جب فرق ایک حد سے تجاوز کرتا ہے تو سگنل کو تجارت کے ل strong کافی مضبوط سمجھا جاتا ہے۔ اس سے غلط سگنلز کو ختم کرنے میں مدد ملتی ہے۔
سٹاپ نقصان 20 فیصد اور منافع 100 فیصد مقرر کیا جاتا ہے.
ایس ایم اے کراس اوور حکمت عملی کے مندرجہ ذیل فوائد ہیں:
منطق سادہ اور سمجھنے میں آسان ہے، beginners کے لئے موزوں.
شور کو فلٹر کرنے اور قلیل مدتی اتار چڑھاؤ سے گمراہ ہونے سے بچنے کے لئے قیمتوں کا اوسط استعمال کرتا ہے۔
اس کے بجائے صرف اندھے طور پر کراس اوور سگنل کی پیروی کرنے کے بجائے رجحان کی مستقل مزاجی کا اندازہ کرتا ہے ، جس سے مارکیٹ کے مجموعی حالات کے ساتھ زیادہ تصدیق کی ضمانت ملتی ہے۔
MAs پر جھکاؤ رفتار فیکٹر متعارف کرایا سگنل زیادہ قابل اعتماد بنانے کے لئے.
صرف چند اہم پیرامیٹرز جیسے ایم اے کی مدت اور رجحان کی مدت کے ساتھ آسان بیک ٹیسٹنگ اور اصلاح.
اس حکمت عملی میں مندرجہ ذیل خطرات بھی ہیں:
کراس اوور سگنل فطرت کے لحاظ سے پسماندہ ہیں اور الٹ کی پیش گوئی نہیں کرسکتے ہیں۔ تاخیر کا خطرہ موجود ہے۔ مختصر ایم اے کا استعمال کرنا چاہئے یا پیش گوئی کرنے والے اشارے کے ساتھ مل کر۔
مکینیکل سسٹم بیک وقت تجارت کو متحرک کرنے کا رجحان رکھتے ہیں ، رفتار کو بڑھا دیتے ہیں اور اسٹاپ نقصان / منافع حاصل کرنے کو باطل کرتے ہیں۔ مرحلہ وار باہر نکلنے یا دستی اوور رائڈ کا استعمال کرنا چاہئے۔
متضاد ضمنی بازاروں میں اچھی کارکردگی کا مظاہرہ نہیں کرتا ہے۔ ایسے آلات سے گریز کریں اور ٹرینڈنگ جوڑوں پر توجہ دیں۔
کارکردگی کا انحصار مناسب طریقے سے کیلیبرڈ پیرامیٹرز جیسے رجحان کی مدت پر ہے۔ زیادہ سے زیادہ اقدار تلاش کرنے کے لئے تکرار ٹیسٹنگ کی ضرورت ہے۔
اسٹریٹیجی کو مزید بہتر بنایا جاسکتا ہے:
مخالف رجحان کی تجارت سے بچنے کے لئے اعلی ٹائم فریم ٹرینڈ تشخیص شامل کرنا۔ مثال کے طور پر ہفتہ وار یا ماہانہ قیمتوں کا استعمال کرنا۔
غلط سگنلز کو ختم کرنے کے لئے تجارتی حجم کی تصدیق کی ضرورت ہے۔ صرف بڑھتی ہوئی حجم کے ساتھ تجارتی سگنل۔
بہترین ادوار کا مجموعہ تلاش کرنے کے لئے ایم اے پیرامیٹرز کو بہتر بنانا۔ موافقت پذیر چلتی اوسط پر غور کریں۔
سگنل کی تصدیق اور درستگی میں مدد کے لئے MACD، KD جیسے مقبول اشارے شامل کریں.
خطرے کو بہتر طریقے سے کنٹرول کرنے کے لئے مرحلہ وار سٹاپ نقصان / منافع لے لو.
ایس ایم اے کراس اوور حکمت عملی انتہائی بدیہی اور تشریح کرنے میں آسان ہے۔ یہ چلتی اوسط کی شور فلٹرنگ کی خاصیت کو کراس اوور سگنلز کی سادہ رجحان کی نشاندہی کی صلاحیت کے ساتھ جوڑتا ہے۔ اضافی سگنل کی تصدیق زیادہ عملی اور استحکام فراہم کرتی ہے۔ احاطہ کردہ بہتری کے علاوہ ، مزید اصلاحات کے لئے کافی گنجائش باقی ہے ، جس سے یہ تحقیق کرنے کے قابل حکمت عملی بن جاتی ہے۔
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © MakeMoneyCoESTB2020 //*********************Notes for continued work*************** //************************************************************ //Hello my fellow investors //I am creating a simple non-cluttered strategy that uses 3(+1) simple means to determine: viability, entry, and exit //1) Has a consistent trend been maintained for several days/weeks //2) SH SMA crossover LG SMA = Bullish entry/LG SMA crossover SH SMA = Bearish entry //3) Use the Slope factor & Weeks in Trend (WiT) to dertermine how strong of an entry signal you are comfortable with //4) Exit position based on next SMA cross and trend reversal or stop loss% //3+1) For added confidence in trend detection: Apply MACD check - buy--> MACD line above signal line and corssover below histogram \\ sell --> MACD line below signal line and crossover above histogram. //*)This code also allows you to determine your desired backtesting date compliments of alanaster //This code is the product of many hours of hard work on the part of the greater tradingview community. The credit goes to everyone in the community who has put code out there for the greater good. //Happy Hunting! // 1. Define strategy settings************************************************************************************************************************************************************************* //Title strategy("KISS Strategy: SMA + EMA", shorttitle="KISS Strat") //define calculations price source price = input(title="Price Source", defval=close) // 2. Calculate strategy values************************************************************************************************************************************************************************* //Calculate 13/30/200SMA SH_SMA_length= input(title="SH SMA Length", defval=13) //short SMA length LG_SMA_length= input(title="LG SMA Length", defval=30) //long SMA length GV_SMA_length= input(title="SH SMA Length", defval=200) //Gravitational SMA length SH_SMA=sma(price, SH_SMA_length) //short SMA LG_SMA=sma(price, LG_SMA_length) //long SMA GV_SMA=sma(price, GV_SMA_length) //gravitational SMA //calculate MACD //define variables for speed fast = 12, slow = 26 //define parameters to calculate MACD fastMA = ema(price, fast) slowMA = ema(price, slow) //define MACD line macd = fastMA - slowMA //define SIGNAL line signal = sma(macd, 9) //Determine what type of trend we are in dcp = security(syminfo.tickerid, 'D', close) //daily close price wcp = security(syminfo.tickerid, 'W', close) //weekly close price WiT = input(title="Weeks In Trend", defval=1, maxval=5, minval=1) //User input for how many weeks of price action to evaluate (Weeks in Trend = WiT) BearTrend = false //initialize trend variables as false BullTrend = false //initialize trend variables as false // BullTrend := (wcp > SH_SMA) and (SH_SMA > LG_SMA) //true if price is trending up based on weekly price close // BearTrend := (wcp < SH_SMA) and (SH_SMA < LG_SMA) //true if price is trending down based on weekly price close // BullTrend := (price > SH_SMA) and (SH_SMA > LG_SMA) //true if price is trending up // BearTrend := (price < SH_SMA) and (SH_SMA < LG_SMA) //true if price is trending down //Determine if the market has been in a trend for 'n' weeks n=WiT //create loop internal counting variable for i=1 to WiT //create loop to determine if BearTrend=true to set number of weeks if (wcp[n] < price) //evaluate if BearTrend=false comparing the current price to a paticular week close BearTrend := false //set value to false if older price value is less than newer: trending up break //break out of for loop when trend first falters if (wcp[n] > price) //evaluate if BearTrend=true comparing the current price to a paticular week close BearTrend := true //set value to true if older price value is greater than newer: trending down n:=n-1 //set internal counter one day closer to present m=WiT //create loop internal counting variable for j=1 to WiT //create loop to determine if BearTrend=true to set number of weeks if (wcp[m] > price) //evaluate if BullTrend=false comparing the current price to a paticular week close BullTrend := false //set value to false if older price value is greater than newer: trending down break //break out of for loop when trend first falters if (wcp[m] < price) //evaluate if BullTrend=true comparing the current price to a paticular week close BullTrend := true //set value to true if older price value is less than newer: trending up m:=m-1 //set internal counter one day closer to present //Determine if crossings occur SH_LGcrossover = crossover(SH_SMA, LG_SMA) //returns true if short crosses over long SH_LGcrossunder = crossunder(SH_SMA, LG_SMA) //returns true if short crosses under long //Determine the slope of the SMAs when a cross over occurs SlopeFactor= input(title="Slope Factor", defval=.01, minval=0, step = 0.001) //user input variable for what slope to evaluate against XSlopeSH = abs(SH_SMA-SH_SMA[2]) //slope of short moving average (time cancels out) XSlopeLG = abs(LG_SMA-LG_SMA[2]) //slope of long moving average (time cancels out) StrongSlope = iff (abs(XSlopeSH-XSlopeLG)>SlopeFactor, true, false) //create a boolean variable to determine is slope intensity requirement is met // ************************************ INPUT BACKTEST RANGE ******************************************=== coutesy of alanaster fromMonth = input(defval = 4, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) // === INPUT SHOW PLOT === showDate = input(defval = true, title = "Show Date Range", type = input.bool) // === FUNCTION EXAMPLE === start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true bgcolor(color = showDate and window() ? color.gray : na, transp = 90) // === EXECUTION === //strategy.entry("L", strategy.long, when = window() and crossOv) // enter long when "within window of time" AND crossover //strategy.close("L", when = window() and crossUn) // exit long when "within window of time" AND crossunder // 3. Output strategy data************************************************************************************************************************************************************************* //Embolden line if a trend exists trendcolorLG = BearTrend?color.red:color.black //highlights beartrend condition met graphically trendcolorSH = BullTrend?color.green:color.black //highlights beartrend condition met graphically //plot SMAs plot(SH_SMA, title = "SH SMA", color = trendcolorSH) plot(LG_SMA, title = "LG SMA", color = trendcolorLG) plot(GV_SMA, title = "GV SMA", color = color.silver, linewidth = 4, transp = 70) //Highlight crossovers plotshape(series=SH_LGcrossover, style=shape.arrowup, location=location.belowbar,size=size.normal, color=color.green) plotshape(series=SH_LGcrossunder, style=shape.arrowdown, location=location.abovebar,size=size.normal, color=color.red) // 4. Determine Long & Short Entry Calculations************************************************************************************************************************************************************************* //Define countback variable countback=input(minval=0, maxval=5, title="Price CountBack", defval=0) //User input for what evaluations to run: SMA or SMA + EMA SMA_Y_N=input(defval = "Y", title="Run SMA", type=input.string, options=["Y", "N"]) MACD_Y_N=input(defval = "N", title="Run MACD", type=input.string, options=["Y", "N"]) //Calculate SMA Cross entry conditions SMAbuy=false SMAsell=false SMAbuy := SH_LGcrossover and StrongSlope and BearTrend[WiT*7] //enter long if short SMA crosses over long SMA & security has been in a BearTrend for 'n' days back SMAsell := SH_LGcrossunder and StrongSlope and BullTrend[WiT*7] //enter short if short SMA crosses under long SMA & security has been in a BullTrend for 'n' days back //Calculate MACD Cross entry conditions MACDbuy = iff(MACD_Y_N=="Y", crossunder(signal[countback], macd[countback]), true) and iff(MACD_Y_N=="Y", macd[countback]<0, true) and StrongSlope and BearTrend //enter long if fast MACD crosses over slow MACD & there is a strong slope & security has been in a BearTrend for 'n' days back MACDsell = iff(MACD_Y_N=="Y", crossunder(macd[countback], signal[countback]), true) and iff(MACD_Y_N=="Y", signal[countback]>0, true) and StrongSlope and BullTrend //enter short if fast MACD crosses under slow MACD & there is a strong slope & security has been in a BullTrend for 'n' days back //long entry condition dataHCLB=(iff(SMA_Y_N=="Y", SMAbuy, true) and iff(MACD_Y_N=="Y", MACDbuy, true)) plotshape(dataHCLB, title= "HC-LB", color=color.lime, style=shape.circle, text="HC-LB") strategy.entry("HC-Long", strategy.long, comment="HC-Long", when = dataHCLB and window()) //short entry condition dataHCSB=(iff(SMA_Y_N=="Y", SMAsell, true) and iff(MACD_Y_N=="Y", MACDsell, true)) plotshape(dataHCSB, title= "HC-SB", color=color.fuchsia, style=shape.circle, text="HC-SB") strategy.entry("HC-Short", strategy.short, comment="HC-Short", when=dataHCSB and window()) // 5. Submit Profit and Loss Exit Calculations Orders************************************************************************************************************************************************************************* // User Options to Change Inputs (%) stopPer = input(12, title='Stop Loss %', type=input.float) / 100 takePer = input(25, title='Take Profit %', type=input.float) / 100 // Determine where you've entered and in what direction longStop = strategy.position_avg_price * (1 - stopPer) shortStop = strategy.position_avg_price * (1 + stopPer) shortTake = strategy.position_avg_price * (1 - takePer) longTake = strategy.position_avg_price * (1 + takePer) //exit position conditions and orders if strategy.position_size > 0//or crossunder(price[countback], upperBB) strategy.exit(id="Close Long", when = window(), stop=longStop, limit=longTake) if strategy.position_size < 0 //or crossover(price[countback], lowerBB) strategy.exit(id="Close Short", when = window(), stop=shortStop, limit=shortTake) //Evaluate/debug equation*************************************************************************************************************************************************************************** // plotshape((n==5? true : na), title='n=5', style=shape.labeldown, location=location.abovebar, text='5', color=color.white, textcolor=color.black, transp=0) //print n value if 5 // plotshape((n==4? true : na), title='n=4', style=shape.labeldown, location=location.abovebar, text='4', color=color.white, textcolor=color.black, transp=0) //print n value if 4 // plotshape((n==3? true : na), title='n=3', style=shape.labeldown, location=location.abovebar, text='3', color=color.white, textcolor=color.black, transp=0) //print n value if 3 // plotshape((n==2? true : na), title='n=2', style=shape.labeldown, location=location.abovebar, text='2', color=color.white, textcolor=color.black, transp=0) //print n value if 2 // plotshape((n==1? true : na), title='n=1', style=shape.labeldown, location=location.abovebar, text='1', color=color.white, textcolor=color.black, transp=0) //print n value if 1 // lineValue = 11 //set random visible line value to check when equation is true // colorP = (BearTrend==true) ? color.green : color.red // plot (lineValue, title = "BearTrend", color = colorP) //Plot when condition true=green, false=red // plot (XSlopeLG+15, color=color.white) //used for code debugging // plot (XSlopeSH+15, color=color.blue) //used for code debugging // plot (abs(XSlopeSH-XSlopeLG)+20, color=color.fuchsia) //used for code debugging