ہل فشیر انٹیلیجنٹ ملٹی فیکٹر حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-16 15:10:06
ٹیگز:

img

جائزہ

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

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

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

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

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

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

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

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

خطرات اور حل

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

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

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

حکمت عملی کو مندرجہ ذیل سمتوں میں بہتر بنایا جاسکتا ہے:

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

  2. اسکورنگ کے لئے مزید اشارے شامل کریں، اکثریت کے فیصلے کی حکمت عملی اختیار کریں، اور فیصلے کی درستگی کو بہتر بنائیں۔

  3. ایک بریک آؤٹ کی تصدیق کا طریقہ کار شامل کریں جو غلط آپریشن سے بچنے کے لئے دوبارہ تصدیق کے لئے اہم قیمت کی سطح اور چینلز کا استعمال کرتا ہے۔

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

نتیجہ

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


/*backtest
start: 2023-01-09 00:00:00
end: 2024-01-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is free to copy/paste/use. no permission required. just do it!
// © @SeaSide420 
//@version=4
strategy(title="Hull Fisher",currency="USD",default_qty_type=strategy.percent_of_equity,default_qty_value=100,commission_type=strategy.commission.percent,commission_value=0.25)

//=================================== Inputs =========================================================
period =input(title="HullMA Length", type=input.integer, defval=14, minval=2)
length =input(9, minval=1, title="Signal Length")
line1 = input(5, minval=2, title="Top Line")
line5 = input(-5, maxval=-2, title="Bottom Line")
price = input(open, type=input.source, title="Price data")
entry1 =input(true,type=input.bool, title="Open when HullFisher crossover outside Lines")
entry2 =input(true,type=input.bool, title="Open when HullFisher past zero")
useHMA =input(true,type=input.bool, title="Include Hull_moving_average")
useCCI =input(true,type=input.bool, title="Include Commodity_channel_index")
fishclose=input(true,type=input.bool, title="Close order when Fisher crossover")
HMAclose=input(true,type=input.bool, title="Close order when Hull crossover")

//================================ Calculations ======================================================
HMA = hma(price,period)
HMA2 = HMA[1]
high_ = highest(HMA, length)
low_ = lowest(HMA, length)
round_(val) => val > .99 ? .999 : val < -.99 ? -.999 : val
value = 0.0
value := round_(.66 * ((HMA - low_) / max(high_ - low_, .001) - .5) + .67 * nz(value[1]))
value1 = 0.0
value1 := .5 * log((1 + value) / max(1 - value, .001)) + .5 * nz(value1[1])
value2 = value1[1]
CCI1 = cci(price,period)
CCI2 = CCI1[1]
line2 = line1/2
line4 = line5/2

//================================ Draw Plots =======================================================
colorchange1 =CCI1>CCI2?color.lime:color.red
colorchange2 =value1>value2?color.lime:color.red
a =plot(line1,style=plot.style_line,color=color.red,transp=50,linewidth=2,title="Top Line")
b =plot(line2,style=plot.style_line,color=color.red,transp=50,linewidth=2,title="Upper Line")
c =plot(0,style=plot.style_line,color=color.black,transp=50,linewidth=2,title="Middle Line")
d =plot(line4,style=plot.style_line,color=color.lime,transp=50,linewidth=2,title="Lower Line")
e =plot(line5,style=plot.style_line,color=color.lime,transp=50,linewidth=2,title="Bottom Line")
f =plot(value1, color=color.black,transp=50,linewidth=2, title="Value 1")
g =plot(value2, color=color.black,transp=50,linewidth=2, title="Value 2")
h =plot(CCI1/50,style=plot.style_area, color=colorchange1,transp=50,linewidth=2, title="CCI")
fill(f,g,color=colorchange2,transp=20,title="Color fill")
plot(cross(value1, value2) ? value1 : na, style=plot.style_circles, color=color.black, linewidth=10)
plot(cross(value1, value2) ? value1 : na, style=plot.style_circles, color=color.white, linewidth=8)
plot(cross(value1, value2) ? value1 : na, style=plot.style_circles, color=colorchange2, linewidth=5)

//============================= Entry conditions ====================================================
// Outside Lines crossover or zero lines crossover
LongCondition1 = value1>value2 and value1<line5 and entry1 and not useCCI and not useHMA
ShortCondition1 = value1<value2 and value1>line1 and entry1 and not useCCI and not useHMA
LongCondition2 = value1>value2 and value1>0 and entry2 and not useCCI and not useHMA
ShortCondition2 = value1<value2 and value1<0 and entry2 and not useCCI and not useHMA

// Use CCI
LongCondition3 = value1>value2 and value1<line5 and CCI1>CCI2 and entry1 and useCCI and not useHMA
ShortCondition3 = value1<value2 and value1>line1 and CCI1<CCI2 and entry1 and useCCI and not useHMA
LongCondition4 = value1>value2 and value1>0 and CCI1>CCI2 and entry2 and useCCI and not useHMA
ShortCondition4 = value1<value2 and value1<0 and CCI1<CCI2 and entry2 and useCCI and not useHMA

// Use HMA
LongCondition5 = value1>value2 and value1<line5 and CCI1>CCI2 and HMA>HMA2 and entry1 and not useCCI and useHMA
ShortCondition5 = value1<value2 and value1>line1 and CCI1<CCI2 and HMA<HMA2 and entry1 and not useCCI and useHMA
LongCondition6 = value1>value2 and value1>0 and CCI1>CCI2 and HMA>HMA2 and entry2 and not useCCI and useHMA
ShortCondition6 = value1<value2 and value1<0 and CCI1<CCI2 and HMA<HMA2 and entry2 and not useCCI and useHMA

//Use CCI & HMA
LongCondition7 = value1>value2 and value1<line5 and CCI1>CCI2 and HMA>HMA2 and entry1 and useCCI and useHMA
ShortCondition7 = value1<value2 and value1>line1 and CCI1<CCI2 and HMA<HMA2 and entry1 and useCCI and useHMA
LongCondition8 = value1>value2 and value1>0 and CCI1>CCI2 and HMA>HMA2 and entry2 and useCCI and useHMA
ShortCondition8 = value1<value2 and value1<0 and CCI1<CCI2 and HMA<HMA2 and entry2 and useCCI and useHMA

//========================= Exit & Entry excecution =================================================
if HMAclose and fishclose and value1<value2 and HMA<HMA2
    strategy.close("BUY")
if HMAclose and fishclose and value1>value2 and HMA>HMA2
    strategy.close("SELL")
if HMAclose and HMA<HMA2
    strategy.close("BUY")
if HMAclose and HMA>HMA2
    strategy.close("SELL")
if fishclose and value1<value2
    strategy.close("BUY")
if fishclose and value1>value2
    strategy.close("SELL")    
if LongCondition1 or LongCondition2 or LongCondition3 or LongCondition4 or LongCondition5 or LongCondition6 or LongCondition7 or LongCondition8
    strategy.entry("BUY", strategy.long)
if ShortCondition1 or ShortCondition2 or ShortCondition3 or ShortCondition4 or ShortCondition5 or ShortCondition6 or ShortCondition7 or ShortCondition8
    strategy.entry("SELL", strategy.short)


مزید