ایڈیپٹیو زیرو لیگ ای ایم اے حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-08 16:24:02
ٹیگز:

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

یہاں ٹریڈنگ اسکرپٹ کیا کرتا ہے کا ایک مختصر جائزہ ہے:

  1. ابتدائی طور پر ، یہ ڈیفالٹ ان پٹ کی تشکیل کا استعمال کرتے ہوئے حکمت عملی مرتب کرتا ہے جیسے مدت ، موافقت پذیر موڈ ، فائدہ کی حد ، حد ، اسٹاپ نقصان پوائنٹس اور منافع لینے کے پوائنٹس۔ کرنسی امریکی ڈالر اور ابتدائی سرمایہ 1000 پر مقرر کی گئی ہے۔

  2. اس کے بعد یہ مختلف مساوات اور ایہلرز کے طریقہ کار کے امتزاج کا استعمال کرتے ہوئے موافقت پذیر موڈ کے لئے حساب کتاب مرتب کرتا ہے (جب موافقت پذیر؟ ترتیب درست پر مقرر کی جاتی ہے تو استعمال ہوتا ہے) ۔

  3. یہ منتخب کردہ مدت کے دوران منتخب کردہ ڈیٹا ماخذ کی اوسط قیمت (EMA) کا حساب لگاتا ہے۔

  4. یہ ایک لوپ آپریشن انجام دیتا ہے تاکہ فائدہ اور غلطی کے correlation (EC) اقدار کو تلاش کیا جا سکے جو مطلق غلطی کو کم سے کم کریں.

  5. ان اقدار کا استعمال کرتے ہوئے، یہ حتمی EC قدر کا حساب لگاتا ہے اور EC اور EMA کی قیمت کو چارٹ پر دکھاتا ہے.

  6. یہ ایک مخصوص مقررہ حد سے اوپر ای سی اور ای ایم اے کے کراس اوور اور کراس اوور پر مبنی ممکنہ خرید اور فروخت کی شرائط پیدا کرتا ہے۔

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

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


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

//@version=3
strategy(title="Adaptive Zero Lag EMA", shorttitle="AZLEMA", overlay = true, initial_capital=1000, currency="USD", commission_type=strategy.commission.cash_per_contract, commission_value=0.000005, slippage = 5, pyramiding=1, calc_on_every_tick=true)

src = input(title="Source",  defval=close)
Period = input(title="Period", defval = 20)
adaptive = input(title="Adaptive?", defval=true)
GainLimit = input(title="Gain Limit",  defval = 15)
Threshold = input(title="Threshold",  defval=0.03, step=0.01)
fixedSL = input(title="SL Points", defval=50)
fixedTP = input(title="TP Points", defval=10)
risk = input(title='Risk', defval=0.01, step=0.01)

PI = 3.14159265359
s2 = 0.0
s3 = 0.0
delta = 0.0
inst = 0.0
len = 0.0
v1 = 0.0
v2 = 0.0
v4 = 0.0

//IF adaptive is true, use the Cosine IFM strategy for determining the dominant
//cycle period
if(adaptive)
    v1 := src - src[7]
    s2 := 0.2*(v1[1] + v1)*(v1[1] + v1) + 0.8*nz(s2[1])
    s3 := 0.2*(v1[1] - v1)*(v1[1] - v1) + 0.8*nz(s3[1])
    if (s2 != 0)
        v2 := sqrt(s3/s2)
    if (s3 != 0)
        delta := 2*atan(v2)
    for i = 0 to 100
        v4 := v4 + delta[i]
        if (v4 > 2*PI and inst == 0.0)
            inst := i - 1
    if (inst == 0.0)
        inst := inst[1]
    len := 0.25*inst + 0.75*nz(len[1])
    Period := round(len)

LeastError = 1000000.0
EC = 0.0
Gain = 0.0
EMA = 0.0
Error = 0.0
BestGain = 0.0

alpha =2/(Period + 1)
EMA := alpha*src + (1-alpha)*nz(EMA[1])

for i = -GainLimit to GainLimit
    Gain := i/10
    EC := alpha*(EMA + Gain*(src - nz(EC[1]))) + (1 - alpha)*nz(EC[1])
    Error := src - EC
    if(abs(Error)<LeastError)
        LeastError := abs(Error)
        BestGain := Gain

EC := alpha*(EMA + BestGain*(src - nz(EC[1]))) + (1-alpha)*nz(EC[1])

plot(EC, title="EC", color=orange, linewidth=2)
plot(EMA, title="EMA", color=red, linewidth=2)

buy = crossover(EC,EMA) and 100*LeastError/src > Threshold
sell = crossunder(EC,EMA) and 100*LeastError/src > Threshold

if buy
    strategy.entry("Enter Long", strategy.long)
else if sell
    strategy.entry("Enter Short", strategy.short)

مزید