ایلٹروٹ کچھی کی واپسی کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-27 16:30:51
ٹیگز:

جائزہ

اس حکمت عملی میں ٹرینڈ کی سمت کی نشاندہی کرنے کے لئے کراس پیریڈ تکنیکی اشارے استعمال کیے جاتے ہیں ، جس میں کم خطرہ والے ٹرینڈ ٹریکنگ ٹریڈنگ کے حصول کے لئے ٹرینڈ فلٹرنگ اور اتار چڑھاؤ فلٹرنگ کے ساتھ مل کر۔

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

  1. خرید و فروخت کے سگنل کا تعین کرنے کے لئے اعلی کم نقطہ کی پیشرفت کا استعمال کریں۔ جب قیمت 7 مدت کی اونچائی کو توڑتی ہے تو مختصر ہوجائیں ، اور جب یہ 7 مدت کی کم سے کم کو توڑتی ہے تو طویل ہوجائیں۔

  2. ٹرینڈ فلیکس اشارے اہم رجحان کی سمت کا تعین کرتا ہے۔ یہ اشارے ڈبل ہموار کرنے کی تکنیکوں کو جوڑتا ہے اور مؤثر طریقے سے رجحان کے درمیانی حصوں کی نشاندہی کرسکتا ہے۔ 1 سے زیادہ کی قیمت ایک بڑھتی ہوئی رجحان کی نشاندہی کرتی ہے ، جبکہ -1 سے نیچے کی قیمت ایک نیچے کی رجحان کی نشاندہی کرتی ہے۔ یہاں ہمیں لانگ کے لئے ٹرینڈ فلیکس > 1 اور شارٹس کے لئے < -1 کی ضرورت ہوتی ہے ، اس طرح استحکام کی حالتوں کو فلٹر کرنا۔

  3. نوسانات کی حدوں کی نشاندہی کرنے کے لئے بولنگر بینڈ استعمال کریں۔ جب بند ہونے کی قیمت بینڈ کے اندر ہو تو لانگ اور شارٹس سے گریز کریں۔

  4. پوزیشنوں کا انتظام کرنے کے لئے سٹاپ نقصان اور منافع لے کر منتقل کریں.

فوائد کا تجزیہ

  1. کراس پیریڈ اشارے دوہری ہموار کرنے کی تکنیک کے ساتھ مل کر مؤثر طریقے سے رجحانات کی سمتوں کی نشاندہی کرسکتے ہیں اور مارکیٹس میں اتار چڑھاؤ سے بچ سکتے ہیں۔

  2. رجحان کی سمت اور اتار چڑھاؤ کے پیٹرن دونوں کو مدنظر رکھتے ہوئے تجارتی سگنل کو زیادہ قابل اعتماد بناتا ہے۔

  3. معقول سٹاپ نقصان اور منافع لینے کی ترتیبات منافع میں مقفل ہیں اور نقصانات کو بڑھانے سے روکتے ہیں۔

  4. یہ حکمت عملی نسبتاً سادہ اور لاگو کرنا آسان ہے۔

خطرے کا تجزیہ

  1. بریک آؤٹ سگنلز میں غلط بریک آؤٹ ہوسکتے ہیں ، جس کے نتیجے میں غلط تجارت ہوتی ہے۔ فلٹرنگ کے مزید حالات پر غور کیا جاسکتا ہے۔

  2. فکسڈ سائیکل پیرامیٹرز مارکیٹ کی تبدیلیوں کے مطابق نہیں ہوسکتے ہیں۔ پیرامیٹرز کی متحرک اصلاح پر غور کیا جاسکتا ہے۔

  3. قیمتوں میں رکاوٹوں کی عدم موجودگی انتہائی مارکیٹ کے حالات سے ہونے والے بڑے نقصانات کو روکنے میں ناکام رہتی ہے۔

  4. مقررہ منافع اور سٹاپ نقصان کے پوائنٹس کو مارکیٹ کی اتار چڑھاؤ کے مطابق ذہین طور پر ایڈجسٹ نہیں کیا جا سکتا.

اصلاح کی ہدایات

  1. فیصلے کی درستگی کو بہتر بنانے کے لئے حکمت عملی کا مجموعہ بنانے کے لئے مزید رجحانات کے فیصلے کے اشارے شامل کرنے پر غور کریں۔

  2. خطرہ کو کم کرنے کے لئے جب اتار چڑھاؤ شدید ہو تو تجارت کو روکنے کے لئے اتار چڑھاؤ کی نشاندہی کرنے والے ماڈیول شامل کریں۔

  3. متحرک پیرامیٹر کی اصلاح کے حصول کے لئے مشین لرننگ الگورتھم متعارف کروانا۔

  4. نقصانات کو روکنے کے لئے قیمت سٹاپ نقصان کے ماڈیولز کو شامل کریں جب نقصانات ایک مخصوص حد تک پہنچیں.

  5. منافع لینے اور نقصان روکنے کے تناسب کا حساب مارکیٹ کی اتار چڑھاؤ کی بنیاد پر منافع لینے اور نقصان روکنے کے ذہین ایڈجسٹمنٹ کو حاصل کرنے کے لئے.

خلاصہ

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


/*backtest
start: 2023-08-27 00:00:00
end: 2023-09-26 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Eltrut", shorttitle="Eltrut Strat", overlay=true, pyramiding=0, default_qty_type= strategy.percent_of_equity,calc_on_order_fills=false, slippage=25,commission_type=strategy.commission.percent,commission_value=0.075)

testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


// R E F L E X / T R E N D F L E X

f_supersmoother(_src,_len)=>
    pi = 2 * asin(1)
    _a = exp(-sqrt(2) * pi / _len)
    _c2 = 2 * _a * cos(sqrt(2) * pi / _len)
    _c3 = -_a * _a
    _c1 = 1 - _c2 - _c3
    _out = 0.0
    _out := _c1 * _src + _c2 * nz(_out[1],nz(_src[1],_src)) + _c3 * nz(_out[2],nz(_src[2],nz(_src[1],_src)))

f_IQIFM(_src1,_max)=>
    _src = _src1 < 0.001 ? _src1 * 10000 : _src1
    _imult = 0.635, _qmult = 0.338 , _inphase = 0.0, _quad = 0.0
    _re = 0.0, _im = 0.0, _deltaphase = 0.0, _instper = 0.0, _per = 0.0, _v4 = 0.0
    _v1 = _src - nz(_src[7])
    _inphase := 1.25 * (nz(_v1[4]) - _imult * _v1[2]) + _imult * nz(_inphase[3])
    _quad := _v1[2] - _qmult * _v1 + _qmult * nz(_quad[2])
    _re := 0.2 * (_inphase * _inphase[1] + _quad * _quad[1]) + 0.8 * nz(_re[1])
    _im := 0.2 * (_inphase * _quad[1] - _inphase[1] * _quad) + 0.8 * nz(_im[1])
    if _re != 0.0
        _deltaphase := atan(_im / _re)
    for i = 0 to _max
        _v4 := _v4 + _deltaphase[i]
        if _v4 > 4 * asin(1) and _instper == 0.0
            _instper := i
    if _instper == 0.0
        _instper := nz(_instper[1])
    _per := 0.25 * _instper + 0.75 * nz(_per[1])
    _per

f_flex(_src1, _fixed_len, _reflex) =>
    _src = _src1
    _len = _fixed_len 
    _ss1 = f_supersmoother(_src, _len)
    _ss = _ss1
    _slope = (_ss[_len] - _ss) / _len
    _sum = 0.0
    for _i = 1 to _len
        _c1 = _reflex ? _ss + _i * _slope - _ss[_i] : _ss - _ss[_i]
        _sum := _sum + _c1
    _sum := _sum / _len
    _ms = 0.0
    _ms := 0.04 * pow(_sum,2) + 0.96 * nz(_ms[1])
    _flex1 = _ms != 0 ? _sum / sqrt(nz(_ms)) : 0.0
    _flex = _flex1
    _flex

rflx = f_flex(close, 20, true)  
trndflx = f_flex(close, 20, false)   

// S I G N A L
hi7 = highest(7)
lo7 = lowest(7)
long_cond = crossunder(close, lo7[1])
short_cond = crossover(close, hi7[1])

// F I L T E R S

long_filter1 = trndflx < 1
short_filter1 = trndflx > -1

basis = sma(close, 35)
dev = 3 * stdev(close, 35)
long_filter2 = close > basis - dev
short_filter2 = close < basis + dev

// S T R A T E G Y

long = long_cond and long_filter1 and long_filter2
short = short_cond and short_filter1 and short_filter2

if( true)
    strategy.entry("Long", strategy.long, when = long)
    strategy.entry("Long", strategy.long, when = short)


// User Options to Change Inputs (%)
stopPer = input(3, title='Stop Loss %', type=input.float) / 100
takePer = input(9, 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)

if strategy.position_size > 0 
    strategy.exit(id="Exit Long", stop=longStop, limit=longTake)
if strategy.position_size < 0 
    strategy.exit(id="Exit Short", stop=shortStop, limit=shortTake)


// P L O T 

plotshape(long, color = #1e90ff, text = "", style=shape.triangleup, location=location.belowbar, size=size.tiny)
plotshape(short, color = #ff69b4, text = "", style=shape.triangledown, location=location.abovebar, size=size.tiny)

alertcondition(long, "Long", "Enter Long")
alertcondition(short, "Short", "Enter S")

مزید