یہ حکمت عملی مارکیٹ کے رجحان کی سمت کی نشاندہی کرنے اور رجحانات پر عمل کرنے کے لئے چلنے والے اوسط اور ہل منحنی خطوط کو یکجا کرتی ہے۔
بنیادی منطق یہ ہے:
میک گینلی متحرک ایم اے مجموعی رجحان کی سمت کا جائزہ لیتا ہے
ہول وکر کراس اوور مخصوص لمبی / مختصر سگنل پیدا کرتے ہیں
سگنل کی تصدیق کے لئے اختیاری تصدیق کے اشارے
سٹاپ نقصان اور منافع لینے کے اصولوں کے ذریعے رسک مینجمنٹ
جب ہیل وکر الٹ جاتا ہے تو پوزیشن بند کریں
اسٹریٹجی کا مقصد رجحان کی پیروی کو میکانی طور پر منظم کرنا ہے ، انفرادی ذہنی اثرات کو کم سے کم کرنا ہے۔
ایم اے مجموعی سمت کا فیصلہ کرتا ہے، لچکدار تصدیق
ہول صاف لمبی / مختصر سگنل
قواعد پر مبنی رسک مینجمنٹ غلطیوں کو کم سے کم کرتی ہے
پیرامیٹر ٹیوننگ اور فلٹرز کو بہتر بنانے کی ضرورت ہے
رجحان کی درستگی میں غیر یقینی صورتحال ہے
جسم کے منحنی خطوط میں تاخیر کے اشارے ہوتے ہیں
اس حکمت عملی کا مقصد مارکیٹ کی رفتار سے ملنے کے لئے ٹرینڈ کے بعد کی کارروائیوں کو منظم کرنا ہے۔ لیکن پیرامیٹر کی اصلاح اور اشارے کی حدود استحکام کے لئے محتاط رہنے کی ضمانت دیتی ہیں۔
/*backtest start: 2023-08-14 00:00:00 end: 2023-09-13 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // © Milleman //@version=4 strategy("Millebot", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=100000, commission_type=strategy.commission.percent, commission_value=0.04) // Risk management settings Spacer2 = input(false, title="=== Risk management settings ===") Risk = input(1.0, title="% Risk")/100 RRR = input(2,title="Risk Reward Ratio",step=0.1,minval=0,maxval=20) SL = input(5,title="StopLoss %",step=0.25)/100 // Baseline : McGinley Dynamic Spacer3 = input(false, title="=== Baseline - Switch L/S ===") McG_Source = input(close, title="McGinley source") McG_length = input(50, title=" McG length", minval=1) McG_LS_Switch = 0.0 McG_LS_Switch := na(McG_LS_Switch[1]) ? ema(McG_Source, McG_length) : McG_LS_Switch[1] + (McG_Source - McG_LS_Switch[1]) / (McG_length * pow(McG_Source/McG_LS_Switch[1], 4)) // Confirmation indicator Spacer4 = input(false, title="=== Confirmation indicator ===") C1_Act = input(false, title=" Confirmation indicator Activation") C1_src = input(ohlc4, title="Source") C1_len = input(5,title="Length") C1 = sma(C1_src,C1_len) // Entry indicator : Hull Moving Average Spacer5 = input(false, title="=== Entry indicator configuration ===") src = input(ohlc4, title="Source") length = input(50,title="Length HMA") HMA = ema(wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length))),1) //VARIABLES MANAGEMENT TriggerPrice = 0.0, TriggerPrice := TriggerPrice[1] TriggerxATR = 0.0, TriggerxATR := TriggerxATR[1] SLPrice = 0.0, SLPrice := SLPrice[1], TPPrice = 0.0, TPPrice := TPPrice[1] isLong = false, isLong := isLong[1], isShort = false, isShort := isShort[1] //LOGIC GoLong = crossover(HMA[0],HMA[1]) and strategy.position_size == 0.0 and (McG_LS_Switch/McG_LS_Switch[1] > 1) and (not C1_Act or C1>C1[1]) GoShort = crossunder(HMA[0],HMA[1]) and strategy.position_size == 0.0 and (McG_LS_Switch/McG_LS_Switch[1] < 1) and (not C1_Act or C1<C1[1]) //FRAMEWORK //Long if GoLong and not GoLong[1] isLong := true, TriggerPrice := close TPPrice := TriggerPrice * (1 + (SL * RRR)) SLPrice := TriggerPrice * (1-SL) Entry_Contracts = strategy.equity * Risk / ((TriggerPrice-SLPrice)/TriggerPrice) / TriggerPrice //Het aantal contracts moet meegegeven worden. => budget * risk / %afstand tot SL / prijs = aantal contracts strategy.entry("Long", strategy.long, comment=tostring(round(TriggerxATR/TriggerPrice*1000)), qty=Entry_Contracts) strategy.exit("TPSL","Long", limit=TPPrice, stop=SLPrice, qty_percent = 100) if isLong and crossunder(HMA[0],HMA[1]) strategy.close_all(comment="TrendChange") isLong := false //Short if GoShort and not GoShort[1] isShort := true, TriggerPrice := close TPPrice := TriggerPrice * (1 - (SL * RRR)) SLPrice := TriggerPrice * (1 + SL) Entry_Contracts = strategy.equity * Risk / ((SLPrice-TriggerPrice)/TriggerPrice) / TriggerPrice //Het aantal contracts moet meegegeven worden. => budget * risk / %afstand tot SL / prijs = aantal contracts strategy.entry("Short", strategy.short, comment=tostring(round(TriggerxATR/TriggerPrice*1000)), qty=Entry_Contracts) strategy.exit("TPSL","Short", limit=TPPrice, stop=SLPrice)//, qty_percent = 100) if isShort and crossover(HMA[0],HMA[1]) strategy.close_all(comment="TrendChange") isShort := false //VISUALISATION plot(McG_LS_Switch,color=color.blue,title="Baseline") plot(C1_Act?C1:na,color=color.white,title="confirmation Indicator") plot(HMA, color=(HMA[0]>HMA[1]? color.green : color.red), linewidth=4, transp=40, title="Entry Indicator") plot(isLong or isShort ? TPPrice : na, title="TakeProfit", color=color.green, style=plot.style_linebr) plot(isLong or isShort ? SLPrice : na, title="StopLoss", color=color.red, style=plot.style_linebr) bgcolor(isLong[1] and cross(low,SLPrice) and low[1] > SLPrice ? color.yellow : na, transp=75, title="SL Long") bgcolor(isShort[1] and cross(high,SLPrice) and high[1] < SLPrice ? color.yellow : na, transp=75, title="SL Short")