
اس حکمت عملی میں رجحان کی واپسی کے اشارے کی بنیاد پر ، رجحان سے باخبر رہنے والے اسٹاپ نقصان کے طریقہ کار کے ساتھ مل کر ، رجحان کے بازار میں رجحان کا پیچھا کرنے ، اور بازار کو ختم کرنے میں نقصانات کو کم کرنے کا اثر حاصل ہوتا ہے۔
اس حکمت عملی میں ہل کی چلتی اوسط کو رجحانات کا بنیادی اشارے کے طور پر استعمال کیا جاتا ہے۔ جب قیمت ہل اوسط سے تجاوز کرتی ہے تو ، زیادہ کام کریں۔ جب قیمت ہل اوسط سے تجاوز کرتی ہے تو ، اس سے زیادہ کام کریں۔
پوزیشن کھولنے کے بعد ، اگر قیمت الٹ جاتی ہے ، یعنی ہل میڈین میں فورک ہیڈ کی تصدیق ہوتی ہے تو ، موجودہ پوزیشن کو بند کرنے کے لئے رجحان میں تبدیلی کی منطق پر عملدرآمد کیا جاتا ہے۔
اس حکمت عملی میں ٹرینڈ ٹریکنگ اسٹاپ کا طریقہ کار بھی متعارف کرایا گیا ہے۔ پوزیشن کھولنے کے بعد ، اے ٹی آر کے مطابق متحرک اسٹاپ کی قیمت کا حساب لگایا جائے گا۔ قیمتوں کے ساتھ ساتھ ، اسٹاپ لائن بھی متحرک طور پر ایڈجسٹ ہوتی ہے ، جس سے منافع بخش ٹریکنگ اسٹاپ حاصل ہوتا ہے۔
زلزلے کی صورت حال میں ممکنہ طور پر اسٹاپ نقصان کا سبب بنتا ہے
اسٹریٹجک حالات میں، سٹاپ نقصانات کو ٹریک کرنے سے قیمتوں میں تبدیلیوں کو ٹریک نہیں کیا جا سکتا
جعلی توڑ پھوڑ سے غیر ضروری نقصانات کا سامنا کرنا پڑ سکتا ہے
غلط پیرامیٹرز کی وجہ سے حکمت عملی کی کارکردگی خراب ہوسکتی ہے
دیگر اشارے شامل کریں جو تصدیق کے ساتھ مل کر سگنل کو بہتر بنائیں ، جیسے K- لائن کی شکل ، برن بینڈ ، RSI وغیرہ۔
مختلف اقسام اور دورانیہ کے پیرامیٹرز کے مطابق اصلاح کریں اور بہترین پیرامیٹرز کا مجموعہ تلاش کریں
پیرامیٹرز کو بہتر بنانے کے ل machine مشین لرننگ جیسے طریقوں کی کوشش کی جاسکتی ہے
نقصانات کو روکنے کے لئے الگورتھم کو بہتر بنائیں ، نقصانات کو روکنے کی ضمانت دیتے ہوئے ، غیر ضروری نقصانات کو کم سے کم کریں
پیسے کے انتظام کے ساتھ مل کر پوزیشن مینجمنٹ کی حکمت عملی کو بہتر بنانا
آٹو اسٹاپ کے بارے میں غور کریں
یہ حکمت عملی مجموعی طور پر ایک زیادہ مستحکم رجحان کی پیروی کرنے والی حکمت عملی ہے۔ اس حکمت عملی میں متحرک اسٹاپ نقصان کا طریقہ کار استعمال کیا جاتا ہے ، جس سے مارکیٹ میں اتار چڑھاؤ کے مطابق اسٹاپ نقصان کی حد کو ایڈجسٹ کیا جاسکتا ہے ، جس سے اسٹاپ نقصان کی پوزیشن کا امکان مؤثر طریقے سے کم کیا جاسکتا ہے۔ اس کے ساتھ ہی ، ہل اوسط اور رجحان میں تبدیلی کے منطق کی تعارف ، رجحان کے الٹ جانے پر تیزی سے ردعمل ظاہر کرسکتا ہے۔ تاہم ، اس حکمت عملی میں کچھ خطرات بھی موجود ہیں ، جیسے زلزلے کے حالات میں اسٹاپ نقصان کا خطرہ ، جھوٹے دھچکے کا خطرہ ، وغیرہ۔ مزید بہتر اشارے کے پیرامیٹرز ، اسٹاپ نقصان کے طریقہ کار ، پوزیشن مینجمنٹ وغیرہ کے ذریعہ ، اس حکمت عملی کو مختلف مارکیٹوں میں زیادہ مستحکم کارکردگی حاصل کرنے کے قابل بنایا جاسکتا ہے۔
/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// © Milleman
//@version=4
strategy("MilleMachine", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.06)
// Additional settings
Mode = input(title="Mode", defval="LongShort", options=["LongShort", "OnlyLong", "OnlyShort","Indicator Mode"])
UseTP = false //input(false, title="Use Take Profit?")
QuickSwitch = true //input(true, title="Quickswitch")
UseTC = true //input(true, title="Use Trendchange?")
// Risk management settings
//Spacer2 = input(false, title="======= Risk management settings =======")
Risk = input(1.0, title="% Risk",minval=0)/100
RRR = 2 //input(2,title="Risk Reward Ratio",step=0.1,minval=0,maxval=20)
SL_Mode = false // input(true, title="ON = Fixed SL / OFF = Dynamic SL (ATR)")
SL_Fix = 3 //input(3,title="StopLoss %",step=0.25, minval=0)/100
ATR = atr(14) //input(14,title="Periode ATR"))
Mul = input(2,title="ATR Multiplier",step=0.1)
xATR = ATR * Mul
SL = SL_Mode ? SL_Fix : (1 - close/(close+xATR))
// INDICATORS //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Ind(type, src, len) =>
float result = 0
if type=="McGinley"
result := na(result[1]) ? ema(src, len) : result[1] + (src - result[1]) / (len * pow(src/result[1], 4))
if type=="HMA"
result := wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))
if type=="EHMA"
result := ema(2*ema(src, len/2)-ema(src, len), round(sqrt(len)))
if type=="THMA"
lend = len/2
result := wma(wma(src, lend/3)*3-wma(src, lend/2)-wma(src,lend), lend)
if type=="SMA" // Simple
result := sma(src, len)
if type=="EMA" // Exponential
result := ema(src, len)
if type=="DEMA" // Double Exponential
e = ema(src, len)
result := 2 * e - ema(e, len)
if type=="TEMA" // Triple Exponential
e = ema(src, len)
result := 3 * (e - ema(e, len)) + ema(ema(e, len), len)
if type=="WMA" // Weighted
result := wma(src, len)
if type=="VWMA" // Volume Weighted
result := vwma(src, len)
if type=="SMMA" // Smoothed
w = wma(src, len)
result := (w[1] * (len - 1) + src) / len
if type == "RMA"
result := rma(src, len)
if type=="LSMA" // Least Squares
result := linreg(src, len, 0)
if type=="ALMA" // Arnaud Legoux
result := alma(src, len, 0.85, 6)
if type=="Kijun" //Kijun-sen
kijun = avg(lowest(len), highest(len))
result :=kijun
if type=="WWSA" // Welles Wilder Smoothed Moving Average
result := nz(result[1]) + (close -nz(result[1]))/len
result
// Baseline : Switch from Long to Short and vice versa
BL_Act = input(true, title="====== Activate Baseline - Switch L/S ======")
BL_type = input(title="Baseline Type", defval="McGinley", options=["McGinley","HMA","EHMA","THMA","SMA","EMA","DEMA","TEMA","WMA","VWMA","SMMA","RMA","LSMA","ALMA","Kijun","WWSA"])
BL_src = input(close, title="BL source")
BL_len = input(50, title="BL length", minval=1)
BL = Ind(BL_type,BL_src, BL_len)
// Confirmation indicator
C1_Act = input(false, title="===== Activate Confirmation indicator =====")
C1_type = input(title="C1 Entry indicator", defval="SMA", options=["McGinley","HMA","EHMA","THMA","SMA","EMA","DEMA","TEMA","WMA","VWMA","SMMA","RMA","LSMA","ALMA","Kijun","WWSA"])
C1_src = input(close, title="Source")
C1_len = input(5,title="Length", minval=1)
C1 = Ind(C1_type,C1_src,C1_len)
// Entry indicator : Hull Moving Average
Spacer5 = input(true, title="====== ENTRY indicator =======")
EI_type = input(title="EI Entry indicator", defval="HMA", options=["McGinley","HMA","EHMA","THMA","SMA","EMA","DEMA","TEMA","WMA","VWMA","SMMA","RMA","LSMA","ALMA","Kijun","WWSA"])
EI_src = input(close, title="Source")
EI_Len = input(46,title="Length", minval=1)
EI = Ind(EI_type,EI_src,EI_Len)
// Trail stop settings
TrailActivation = input(true, title="===== Activate Trailing Stop =====")
TS_type = input(title="TS Traling Stop Type", defval="EMA", options=["McGinley","HMA","EHMA","THMA","SMA","EMA","DEMA","TEMA","WMA","VWMA","SMMA","RMA","LSMA","ALMA","Kijun","WWSA"])
TrailSLScaling = 1 //input(100, title="SL Scaling", minval=0, step=5)/100
TrailingSourceLong = Ind(TS_type,low,input(5,"Smoothing Trail Long EMA", minval=1))
TrailingSourceShort = Ind(TS_type,high,input(2,"Smoothing Trail Short EMA", minval=1))
//VARIABLES MANAGEMENT
TriggerPrice = 0.0, TriggerPrice := TriggerPrice[1]
TriggerSL = 0.0, TriggerSL := TriggerSL[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(EI,EI[1]) and (strategy.position_size == 0.0 and QuickSwitch) and (not BL_Act or BL/BL[1] > 1) and (not C1_Act or C1>C1[1]) and (Mode == "LongShort" or Mode == "OnlyLong")
GoShort = crossunder(EI,EI[1]) and (strategy.position_size == 0.0 and QuickSwitch) and (not BL_Act or BL/BL[1] < 1) and (not C1_Act or C1<C1[1]) and (Mode == "LongShort" or Mode == "OnlyShort")
ExitLong = isLong and crossunder(EI,EI[1]) and UseTC
ExitShort = isShort and crossover(EI,EI[1]) and UseTC
//FRAMEWORK
//Reset Long-Short memory
if isLong and strategy.position_size == 0.0
isLong := false
if isShort and strategy.position_size == 0.0
isShort := false
//Long
if GoLong
isLong := true, TriggerPrice := close, TriggerSL := SL
TPPrice := UseTP? TriggerPrice * (1 + (TriggerSL * RRR)) : na
SLPrice := TriggerPrice * (1-TriggerSL)
Entry_Contracts = strategy.equity * Risk / ((TriggerPrice-SLPrice)/TriggerPrice) / TriggerPrice
strategy.entry("Long", strategy.long, comment=tostring(round((TriggerSL/TriggerPrice)*1000)), qty=Entry_Contracts)
strategy.exit("TPSL","Long", limit=TPPrice, stop=SLPrice)
if isLong
NewValSL = TrailingSourceLong * (1 - (SL*TrailSLScaling))
if TrailActivation and NewValSL > SLPrice
SLPrice := NewValSL
strategy.exit("TPSL","Long", limit=TPPrice, stop=SLPrice)
if ExitLong
strategy.close_all(comment="TrendChange")
isLong := false
//Short
if GoShort
isShort := true, TriggerPrice := close, TriggerSL := SL
TPPrice := UseTP? TriggerPrice * (1 - (TriggerSL * RRR)) : na
SLPrice := TriggerPrice * (1 + TriggerSL)
Entry_Contracts = strategy.equity * Risk / ((SLPrice-TriggerPrice)/TriggerPrice) / TriggerPrice
strategy.entry("Short", strategy.short, comment=tostring(round((TriggerSL/TriggerPrice)*1000)), qty=Entry_Contracts)
strategy.exit("TPSL","Short", limit=TPPrice, stop=SLPrice)
if isShort
NewValSL = TrailingSourceShort * (1 + (SL*TrailSLScaling))
if TrailActivation and NewValSL < SLPrice
SLPrice := NewValSL
strategy.exit("TPSL","Short", limit=TPPrice, stop=SLPrice)
if ExitShort
strategy.close_all(comment="TrendChange")
isShort := false
//VISUALISATION
plot(BL_Act?BL:na, color=color.blue,title="Baseline")
plot(C1_Act?C1:na, color=color.yellow,title="confirmation Indicator")
EIColor = EI>EI[1] ? color.green : color.red
Fill_EI = plot(EI, color=EIColor, linewidth=1, transp=40, title="Entry Indicator EI")
Fill_EID = plot(EI[1], color=EIColor, linewidth=1, transp=40, title="Entry Indicator EID")
fill(Fill_EI,Fill_EID, title="EI_Fill", color=EIColor,transp=50)
plot(strategy.position_size != 0.0 and (isLong or isShort) ? TriggerPrice : na, title="TriggerPrice", color=color.yellow, style=plot.style_linebr)
plot(strategy.position_size != 0.0 and (isLong or isShort) ? TPPrice : na, title="TakeProfit", color=color.green, style=plot.style_linebr)
plot(strategy.position_size != 0.0 and (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 and TriggerPrice>SLPrice ? color.yellow : na, transp=75, title="SL Long")
bgcolor(isShort[1] and cross(high,SLPrice) and high[1] < SLPrice and TriggerPrice<SLPrice ? color.yellow : na, transp=75, title="SL Short")