سٹاپ نقصان اور منافع لینے کے ساتھ کثیر اشارے رجحان کی پیروی کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-15 15:39:32
ٹیگز:

حکمت عملی کا جائزہ

اسٹاپ نقصان اور منافع حاصل کرنے والی حکمت عملی کے بعد ملٹی اشارے والے رجحان میں رجحان کی سمت کا تعین کرنے کے لئے ای ایم اے ، ایم اے سی ڈی ، او بی وی اور پی ایس اے آر جیسے اشارے شامل ہوتے ہیں ، اور خطرات پر قابو پانے کے لئے تجارت میں داخل ہونے کے بعد اسٹاپ نقصان اور منافع حاصل کرتے ہیں۔ یہ تجارتی سگنلز کی تصدیق کے لئے متعدد عوامل کو ترکیب کرتا ہے ، جبکہ رجحانات کی پیروی کرتے وقت ہر تجارت کے اجر اور خطرے کا سختی سے انتظام کرتا ہے۔

حکمت عملی منطق

  1. رجحان کی سمت کا تعین کریں: جب EMA، MACD، OBV اور PSAR اپیل یا bearish سگنل دینے کے لئے سیدھ میں ہیں.

  2. داخلے کے قواعد: بیل سگنلز پر طویل جانا، ریچھ سگنلز پر مختصر جانا.

  3. سٹاپ نقصان/منافع لینا: ہر تجارت کے لیے سٹاپ نقصان اور منافع لینا مقرر کریں، جس کی بنیاد پی ایس اے آر کی سطح پر ہے، جس میں داخل ہونے کے بعد۔

  4. باہر نکلنے کے قواعد: جب سٹاپ نقصان یا منافع لینے کا عمل شروع ہوتا ہے تو پوزیشنیں بند کردیں۔

اس حکمت عملی کا فائدہ یہ ہے کہ اعلی امکان سگنل کی تخلیق کے لئے متعدد اشارے استعمال کیے جاتے ہیں ، جبکہ اسٹاپ نقصان / منافع حاصل کرنے کے قواعد منافع میں مقفل کرتے ہوئے خطرات کو فعال طور پر کنٹرول کرتے ہیں۔ اشارے کے مرکب اور پیرامیٹر کی ترتیبات کو مارکیٹ کے حالات کی بنیاد پر بہتر بنایا جاسکتا ہے۔

حکمت عملی کے فوائد

  • متعدد اشارے اعلی امکان سگنل کے لئے مل کر

  • سٹاپ نقصان/منافع لینے والے خطرات کو فعال طور پر کنٹرول کرتا ہے

  • پی ایس اے آر کی سطح پر مبنی منافع/سٹاپ نقصان

  • لچکدار اشارے اور پیرامیٹر کی اصلاح

  • مسلسل منافع میں رجحانات

خطرے سے متعلق انتباہات

  • پیچیدہ کثیر اشارے کا مجموعہ

  • سگنل لیگ کے ممکنہ خطرات

  • ریورس اور حدود کے لئے ہوشیار رہو

  • مسلسل پیرامیٹر ٹیسٹنگ اور اصلاح کی ضرورت ہے

نتیجہ

اسٹاپ نقصان اور منافع حاصل کرنے کے ساتھ ملٹی اشارے کے رجحان کی پیروی کرنے والی حکمت عملی درستگی کو بڑھا کر اور خطرات کو فعال طور پر سنبھال کر رجحان کی تجارت کو جامع طور پر بہتر بناتی ہے۔ مختلف مارکیٹوں اور پیرامیٹرز پر بار بار جانچ کے ذریعے ، اسے ایک مضبوط اور قابل اعتماد مقداری نظام میں بہتر بنایا جاسکتا ہے۔


/*backtest
start: 2023-08-15 00:00:00
end: 2023-09-14 00:00:00
period: 1h
basePeriod: 15m
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/
// © exlux99

//@version=4

strategy("Scalping FOrex full strategy with risk management",overlay=true,initial_capital = 10000, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.cash_per_contract ,commission_value=0.00005)

//VOLUME o
shortlen = input(1, minval=1, title = "Short Length OBV")
longlen = input(8, minval=1, title = "Long Length OBV")
upColor = #2196F3//input(#2196F3, "Color Up")
dnColor = #6B1599//input(#6B1599, "Color Down")
f_normGradientColor(_series, _crossesZero, _colorNormLen, _dnColor, _upColor) =>
    _dnValue = _crossesZero?-100:0
    _mult = 0.0
    _lowest = lowest(_colorNormLen)
    _highest = highest(_colorNormLen)
    _diff1 = close - _lowest
    _diff2 = _highest - _lowest
    if _diff2 > 0
        _mult := _diff1 / _diff2 * 100
    color.from_gradient(sign(_series) * _mult, _dnValue, 100, _dnColor, _upColor)
shorta = ema(volume, shortlen)
longa = ema(volume, longlen)
osc = 100 * (shorta - longa) / longa

start = input(0.1, title="PSAR START")
increment = input(0.05,title="PSAR INC")
maximum = input(0.3, title="PSAR MAX")
// multitp=input(1)
// multisl=input(1)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
    firstTrendBar = false
    SAR := nextBarSAR
    if bar_index == 1
        float prevSAR = na
        float prevEP = na
        lowPrev = low[1]
        highPrev = high[1]
        closeCur = close
        closePrev = close[1]
        if closeCur > closePrev
            uptrend := true
            EP := high
            prevSAR := lowPrev
            prevEP := high
        else
            uptrend := false
            EP := low
            prevSAR := highPrev
            prevEP := low
        firstTrendBar := true
        SAR := prevSAR + start * (prevEP - prevSAR)
    if uptrend
        if SAR > low
            firstTrendBar := true
            uptrend := false
            SAR := max(EP, high)
            EP := low
            AF := start
    else
        if SAR < high
            firstTrendBar := true
            uptrend := true
            SAR := min(EP, low)
            EP := high
            AF := start
    if not firstTrendBar
        if uptrend
            if high > EP
                EP := high
                AF := min(AF + increment, maximum)
        else
            if low < EP
                EP := low
                AF := min(AF + increment, maximum)
    if uptrend
        SAR := min(SAR, low[1])
        if bar_index > 1
            SAR := min(SAR, low[2])
    else
        SAR := max(SAR, high[1])
        if bar_index > 1
            SAR := max(SAR, high[2])
    nextBarSAR := SAR + AF * (EP - SAR)
//    if barstate.isconfirmed
    
//         if uptrend
//             strategy.entry("ParSE", strategy.short, stop=nextBarSAR, comment="ParSE")
//             strategy.cancel("ParLE")
//         else
//             strategy.entry("ParLE", strategy.long, stop=nextBarSAR, comment="ParLE")
//             strategy.cancel("ParSE")
//plot(SAR, style=plot.style_cross, linewidth=3, color=color.orange)


psarshort = close- SAR
psarlong= SAR-close

 


lena = input(200, minval=1, title="Length EMA")
srca = input(close, title="Source")
out = ema(srca, lena)

fast_length = input(title="Fast Length MACD", type=input.integer, defval=12)
slow_length = input(title="Slow Length MACD", type=input.integer, defval=25)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing MACD", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA (Oscillator)", type=input.bool, defval=true)
sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=true)
// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal


long = hist[1]<0 and hist > 0 and close > out and uptrend and osc < 0
short = hist[1]>0 and hist< 0 and close < out and not uptrend and osc >0

// ------------------------- Strategy Logic --------------------------------- //
var longOpeneds = false
var shortOpeneds = false
var int timeOfBuys = na
var float tpLong = na
var float slLong = na
var int entrys = na

 

longConditions = long and not longOpeneds and entrys<100

if longConditions
    longOpeneds := true
    timeOfBuys := time
    tpLong := close+ (psarshort) //* multitp)
    slLong := close- (psarshort)//*multisl)
    entrys:=entrys+1


tpLongTrigger = (longOpeneds[1] and (crossover(close, tpLong) or crossover( high,tpLong)))
slLongTrigger = (longOpeneds[1] and (crossunder(close, slLong) or crossunder( low,slLong)))

longExitSignals =  slLongTrigger or tpLongTrigger  or short
exitLongConditions = longOpeneds[1] and longExitSignals

if exitLongConditions
    longOpeneds := false
    timeOfBuys := na
    tpLong := na
    slLong := na
    
if(short)
    entrys:=0

//short
// ------------------------- Strategy Logic --------------------------------- //
var longOpenedss = false
// var shortOpeneds = false
var int timeOfBuyss = na
var float tpLongs = na
var float slLongs = na
var int entry = na

 

longConditionss = short and not longOpenedss and entry<100

if longConditionss
    longOpenedss := true
    timeOfBuyss := time
    tpLongs := close- (psarlong)//*multitp )
    slLongs := close+ (psarlong)//*multisl)
    entry:=1

 

tpLongTriggers = (longOpenedss[1] and ( crossunder(close, tpLongs) or crossunder( low,tpLongs)))
slLongTriggers = (longOpenedss[1] and (crossover(close, slLongs) or crossover( high,slLongs)))

longExitSignalss =  slLongTriggers or tpLongTriggers  or long
exitLongConditionss = longOpenedss[1] and longExitSignalss

if exitLongConditionss
    longOpenedss := false
    timeOfBuyss := na
    tpLongs := na
    slLongs := na

if(long)
    entry:=0
    
longEntry=input(true)
shortEntry=input(true)

if(longEntry)
    strategy.entry("long",1,when=longConditions)
    strategy.close('long',when=exitLongConditions)

if(shortEntry)
    strategy.entry("short",0,when=longConditionss)
    strategy.close("short",when=exitLongConditionss)


مزید