وسائل لوڈ ہو رہے ہیں... لوڈنگ...

سپر ٹرینڈ V.1 -- سپر ٹرینڈ لائن سسٹم

مصنف:FMZ~Lydia, تخلیق: 2022-12-01 11:36:33, تازہ کاری: 2023-09-11 20:04:38

img

I. کہانی کا آغاز

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

II. نظام کا تعارف

سی ایم سی مارکیٹس میں ذہین ٹریڈنگ سسٹم کی نئی نسل میں، ہم استعمال کرنے کے لئے تکنیکی اشارے سے سپر ٹرینڈ لائن منتخب کر سکتے ہیں، ہم اپنی ترجیحات کے مطابق بڑھتی ہوئی سگنل اور کم ہوتی ہوئی سگنل کے رنگ اور موٹائی کو ایڈجسٹ کر سکتے ہیں۔ تو ایک سپر رجحان اشارے کیا ہے؟ سپر رجحان اشارے فارمولے کو سمجھنے سے پہلے، یہ ATR کو سمجھنے کے لئے ضروری ہے، کیونکہ سپر رجحان اشارے کی قیمت کا حساب کرنے کے لئے ATR کی قیمت کو اپناتا ہے. اہم الگورتھم مندرجہ ذیل شکل میں بھی بیان کیے گئے ہیں:

img

ایک مختصر نظر ڈالیں۔ یہ بنیادی طور پر اس چینل کی وضاحت کرتا ہے جہاں HL2 (k- لائن اوسط قیمت) کے علاوہ اے ٹی آر کا n گنا۔ ایک رجحان کی پیشرفت کریں۔ لیکن مضمون سادہ ہے۔ کوئی تفصیلی الگورتھم نہیں۔ پھر میں نے سب سے حیرت انگیز کمیونٹی کا سوچا، ٹریڈنگ ویو۔ بے شک، وہ واقعتاً موجود ہے۔

img

چارٹ کو دیکھ کر، یہ رجحان کے مطابق ہے۔ بدقسمتی سے، یہ صرف الرٹ کا الارم سگنل ہے۔

III. ماخذ کوڈ سیکھنا

کوڈ بہت لمبا نہیں ہے، تو چلو اسے ترجمہ کرنے کی کوشش کرتے ہیں.!(っ•̀ω•́)っ))!

img

مکمل پائن کوڈ مندرجہ بالا ہے.

VI. کوڈ کی تبدیلی

یہاں ہم FMZ پر ایک نئی حکمت عملی تخلیق، اس کا نام سپر رجحان

img

اگلا، ہم دو پیرامیٹرز مقرر کریں گے، فیکٹر اور پی ڈی

img

کوڈ آپریشن کو بہتر طور پر آسان بنانے اور تفہیم کو آسان بنانے کے لئے، ہمیں پطرون کے اعلی درجے کی ڈیٹا توسیع پیکج پانڈاس کا استعمال کرنے کی ضرورت ہے (https://pandas.pydata.org/) ایف ایم زیڈ اب اس لائبریری کی حمایت کرتا ہے.

  1. ہم پانڈا لائبریری اور وقت لائبریری درآمد کرنے کی ضرورت ہے
  2. مرکزی فنکشن میں، سہ ماہی معاہدوں کا استعمال مقرر کریں (بنیادی طور پر اوککس کے لئے)
  3. ہر 15 منٹ میں ایک بار کا پتہ لگانے کے لئے ایک سائیکل doTicker مقرر کریں. 15 منٹ کی مدت پر کوڈ چلائیں پھر ہم doTicker () میں اہم حکمت عملی لکھتے ہیں.
import pandas as pd
import time

def main():
    exchange.SetContractType("quarter")
    preTime = 0
    Log(exchange.GetAccount())
    while True:
        records = exchange.GetRecords(PERIOD_M15)
        if records and records[-2].Time > preTime:
            preTime = records[-2].Time
            doTicker(records[:-1])
        Sleep(1000 *60)
  1. ہم K لائن کی OHCLV بازیافت کرنے کی ضرورت ہے، تو ہم GetRecords استعمال کرتے ہیں (()
  2. ہم پینڈا M15 = pd.DataFrame ((ریکارڈز) پر حاصل کردہ ڈیٹا درآمد
  3. ہم ٹیبل کے ہیڈر لیبل میں ترمیم کرنے کی ضرورت ہے. M15.columns = [time,open,high,low,close,volume,OpenInterest] دراصل، یہ open، high، low، اور close کے ابتدائی حروف کو چھوٹے حروف میں تبدیل کرنا ہے، تاکہ ہمارے بعد کے کوڈ لکھنے کو بڑے حروف سے چھوٹے حروف میں تبدیل کرنے کی ضرورت نہ ہو۔
def doTicker(records):
    M15 = pd.DataFrame(records)
    M15.columns = ['time','open','high','low','close','volume','OpenInterest']  
  1. ڈیٹا سیٹ hl2 hl2=(high+low) /2 میں ایک کالم شامل کریں
#HL2
M15['hl2']=(M15['high']+M15['low'])/2
  1. پھر آئیے اے ٹی آر کا حساب لگائیں کیونکہ ATR حساب کی ضرورت ہے ایک متغیر لمبائی درآمد کرنے کے لئے، جس کی قدر ہے Pd

پھر ہم MyLanguage کے دستی کا حوالہ دیتے ہیں، اور ATR حقیقی اتار چڑھاؤ طول و عرض کی اوسط قیمت کے الگورتھم اقدامات مندرجہ ذیل ہیں: TR: MAX ((MAX(((HIGH-LOW),ABS ((REF ((CLOSE,1)-HIGH)),ABS ((REF ((CLOSE,1)-LOW)); اے ٹی آر: آر ایم اے (TR,N)

TR قدر مندرجہ ذیل تین اختلافات میں سے زیادہ سے زیادہ ہے

  1. موجودہ تجارتی دن کی سب سے زیادہ قیمت اور سب سے کم قیمت کے درمیان اتار چڑھاؤ HIGH-LOW
  2. پچھلے تجارتی دن کی اختتامی قیمت اور موجودہ تجارتی دن کی اعلی ترین قیمت کے درمیان اتار چڑھاؤ REF (CLOSE، 1) - HIGH
  3. پچھلے تجارتی دن کی اختتامی قیمت اور موجودہ تجارتی دن کی سب سے کم قیمت کے درمیان اتار چڑھاؤ REF (CLOSE، 1) - LOW تو TR: MAX(MAX(((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW) ؛

پیتھون کے حساب میں

M15['prev_close']=M15['close'].shift(1)

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

ranges= [M15['high'] - M15['low'],M15['high']-M15['prev_close'],M15['low']-M15['prev_close']]

اگلا ، ہم ایک انٹرمیڈیٹ متغیر کی وضاحت کرتے ہیں جو TR کے لئے 3 متضاد اقدار کی ایک صف ریکارڈ کرتا ہے۔ (ہائی-لو) (ہائی-پریو_کلوز) (لو-پریو_کلوز)

M15['tr'] = pd.DataFrame(ranges).T.abs().max(axis=1)

ہم ڈیٹا سیٹ میں ایک نیا کالم بیان کرتے ہیں اور اسے TR کا نام دیتے ہیں۔ TR کی قدر انٹرمیڈیٹ متغیر کی سب سے بڑی مطلق قیمت ہے ، جس میں افعال abs () اور max () کا استعمال ہوتا ہے

    alpha = (1.0 / length) if length > 0 else 0.5
    M15['atr']=M15['tr'].ewm(alpha=alpha, min_periods=length).mean()

آخر میں ، ہمیں اے ٹی آر ، اے ٹی آر: آر ایم اے (ٹی آر ، این) کی قدر کا حساب لگانے کی ضرورت ہے۔ یہ پتہ چلتا ہے کہ آر ایم اے الگورتھم اصل میں ای ایم اے الگورتھم کا ایک مقررہ قدر والا متغیر ہے۔ N وہ متغیر ہے جسے ہم درآمد کرتے ہیں۔ اے ٹی آر کا ڈیفالٹ پیرامیٹر 14 ہے۔ یہاں ہم الفا = لمبائی کے متضاد کو درآمد کرتے ہیں۔

===

پھر ای ایم ایم الگورتھم ای ایم اے کا حساب کرنے کے لئے استعمال کیا جاتا ہے اے ٹی آر کے حساب کا مکمل عمل مندرجہ ذیل ہے

    #ATR(PD)
    length=Pd
    M15['prev_close']=M15['close'].shift(1)
    ranges= [M15['high'] - M15['low'],M15['high']-M15['prev_close'],M15['low']-M15['prev_close']]
    M15['tr'] = pd.DataFrame(ranges).T.abs().max(axis=1)
    alpha = (1.0 / length) if length > 0 else 0.5
    M15['atr']=M15['tr'].ewm(alpha=alpha, min_periods=length).mean()

9 اوپر اور Dn حساب شروع کریں

    M15['Up']=M15['hl2']-(Factor*M15['atr'])
    M15['Dn']=M15['hl2']+(Factor*M15['atr'])

Up=hl2 - ((فیکٹر * atr) Dn=hl2 + ((فیکٹر * atr) یہ آسان نہیں ہے؟

یہاں ٹی وی سے لائنز 15-21 کے بنیادی کوڈ سیکشن ہے

TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn

Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown

linecolor = Trend == 1 ? green : red

اس پیراگراف کا بنیادی نکتہ یہ ہے کہ، اگر یہ تیزی کے مرحلے میں ہے، (نیچے کی لائن) TrendUp=max (Up, TrendUp [1]) اگر یہ گرنے کے مرحلے میں ہے، (اوپر لائن) ٹرینڈ ڈاؤن = منٹ (Dn، ٹرینڈ ڈاؤن [1]) یعنی ایک رجحان میں اے ٹی آر ویلیو بانڈٹ بولنگر حکمت عملی کی طرح ایک ٹیکنالوجی کا استعمال کر رہا ہے۔ چینل کے دوسرے حصے کو تنگ کرتے رہیں

یہاں، TrendUp اور TrendDown کے ہر حساب خود تکرار کی ضرورت ہوتی ہے. یعنی ہر قدم کا حساب پچھلے مرحلے کے مطابق لگایا جائے۔ لہذا، ڈیٹا سیٹ لوپ میں تکرار کیا جانا چاہئے.

سب سے پہلے، ہم نئے کھیتوں TrendUp، TrendDown، Trend، ڈیٹا سیٹ کے لئے لائن کلر تخلیق. اور ان کو ایک ابتدائی قدر دے پھر ہم استعمال کرتے ہیں گرامر fillna (0) 0 کے ساتھ پہلے حساب نتیجہ میں صفر قدر کے ساتھ اعداد و شمار کو بھرنے کے لئے

    M15['TrendUp']=0.0
    M15['TrendDown']=0.0
    M15['Trend']=1
    M15['Tsl']=0.0
    M15['linecolor']='Homily'
    M15 = M15.fillna(0)

ایک کے لئے لوپ فعال کریں لوپ میں پطرون ترنری آپریشن کا استعمال کرتے ہوئے

    for x in range(len(M15)):

ٹرینڈ اپ کا حساب لگائیں TrendUp = MAX(Up,TrendUp[-1]) اگر قریب[-1]>TrendUp[-1] دوسری صورت میں اوپر اس کا مطلب یہ ہے کہ اگر پچھلے بند> پچھلے ٹرینڈ اپ درست ہے تو ، اوپر اور پچھلے ٹرینڈ اپ کے درمیان زیادہ سے زیادہ قیمت لی جائے گی۔ اگر نہیں تو ، اوپر کی قیمت لی جائے گی اور موجودہ ٹرینڈ اپ میں منتقل کردی جائے گی۔

        M15['TrendUp'].values[x] = max(M15['Up'].values[x],M15['TrendUp'].values[x-1]) if (M15['close'].values[x-1]>M15['TrendUp'].values[x-1]) else M15['Up'].values[x]

اسی طرح، ٹرینڈ ڈاؤن کا حساب لگائیں TrendDown=min(Dn,TrendDown[-1]) اگر قریب [-1]

        M15['TrendDown'].values[x] = min(M15['Dn'].values[x],M15['TrendDown'].values[x-1]) if (M15['close'].values[x-1]<M15['TrendDown'].values[x-1]) else M15['Dn'].values[x]

مندرجہ ذیل کنٹرول کی سمت کا حساب کرنے کے لئے پرچم ہے. میں نے سادہ جعلی کوڈ رجحان= 1 اگر (بند کریں > رجحان نیچے[-1]) دوسری صورت میں (x) x = -1 اگر (قریب< ٹرینڈ اپ[-1]) دوسری صورت میں ٹرینڈ[-1]

اس کا مطلب یہ ہے کہ اگر اختتامی قیمت> پچھلے ٹرینڈ ڈاؤن ہے تو ، 1 کی قدر لیں (بلس) ۔ اگر نہیں تو ، ایکس کی قدر لیں اگر اختتامی قیمت پچھلے ٹرینڈ اپ سے کم ہے تو ، -1 کی قدر لیں (بھاری) ۔ اگر نہیں تو ، پچھلے ٹرینڈ (یعنی غیر تبدیل شدہ) کو لیں تصویر کی زبان میں ترجمہ کرنے کے لئے یہ ہے کہ بالیش کے لئے اوپری ٹریک ٹرانزیشن پرچم کی خرابی؛ اور bearish کے لئے نچلی ٹریک ٹرانزیشن پرچم کی خرابی.

        M15['Tsl'].values[x] = M15['TrendUp'].values[x] if  (M15['Trend'].values[x]==1) else M15['TrendDown'].values[x]

Tsl اور Linecolor کا حساب لگائیں TSl= rendUp اگر (ٹرینڈ==1) دوسری صورت میں ٹرینڈ ڈاؤن tsl تصویر پر سپر ٹرینڈ کی نمائندگی کرنے کے لئے استعمال ہونے والا قدر ہے۔ اس کا مطلب یہ ہے کہ جب ہم تیزی سے ہیں تو تصویر پر نیچے کی ٹریک کو نشان زد کریں ، اور جب ہم bearish میں ہیں تو تصویر پر اوپری ٹریک کو نشان زد کریں۔ linecolor= green if (Trend==1) else red لائن کلر کا مطلب یہ ہے کہ اگر ہم بولش میں ہیں تو سبز لائن کو نشان زد کریں ، اور اگر ہم bearish میں ہیں تو خالی رنگ کو نشان زد کریں (بنیادی طور پر ٹریڈ ویو ڈسپلے کے مقصد کے لئے)

        M15['Tsl'].values[x] = M15['TrendUp'].values[x] if  (M15['Trend'].values[x]==1) else M15['TrendDown'].values[x]
        M15['linecolor'].values[x]= 'green' if ( M15['Trend'].values[x]==1) else  'red'

اگلے 23-30 کوڈ لائنز بنیادی طور پر پلاٹ ڈرائنگ ہیں، جو یہاں وضاحت نہیں کی جاتی ہیں.

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

    if(M15['Trend'].values[-1] == 1 and M15['Trend'].values[-2] == -1):
        Log('SuperTrend V.1 Alert Long',"Create Order Buy)
    if(M15['Trend'].values[-1] == -1 and M15['Trend'].values[-2] == 1):
        Log('SuperTrend V.1 Alert Long',"Create Order Sell)

مکمل کوڈ مندرجہ ذیل ہے:

    M15['TrendUp']=0.0
    M15['TrendDown']=0.0
    M15['Trend']=1
    M15['Tsl']=0.0
    M15['linecolor']='Homily'
    M15 = M15.fillna(0)
    
    for x in range(len(M15)):
        M15['TrendUp'].values[x] = max(M15['Up'].values[x],M15['TrendUp'].values[x-1]) if (M15['close'].values[x-1]>M15['TrendUp'].values[x-1]) else M15['Up'].values[x]
        M15['TrendDown'].values[x] = min(M15['Dn'].values[x],M15['TrendDown'].values[x-1]) if (M15['close'].values[x-1]<M15['TrendDown'].values[x-1]) else M15['Dn'].values[x]
        M15['Trend'].values[x] = 1 if (M15['close'].values[x] > M15['TrendDown'].values[x-1]) else ( -1 if (M15['close'].values[x]< M15['TrendUp'].values[x-1])else M15['Trend'].values[x-1] )
        M15['Tsl'].values[x] = M15['TrendUp'].values[x] if  (M15['Trend'].values[x]==1) else M15['TrendDown'].values[x]
        M15['linecolor'].values[x]= 'green' if ( M15['Trend'].values[x]==1) else  'red'
        
    if(M15['Trend'].values[-1] == 1 and M15['Trend'].values[-2] == -1):
        Log('SuperTrend V.1 Alert Long',"Create Order Buy)
        Log('Tsl=',Tsl)
    if(M15['Trend'].values[-1] == -1 and M15['Trend'].values[-2] == 1):
        Log('SuperTrend V.1 Alert Long',"Create Order Sell)
        Log('Tsl=',Tsl)

img img

V. مکمل کوڈ

میں نے مجموعی طور پر کوڈ کی ساخت کو ایڈجسٹ کیا. اور میں نے حکمت عملی میں طویل اور مختصر جانے سے متعلق آرڈر کی ہدایات کو ضم کیا. یہاں مکمل کوڈ ہے:

'''backtest
start: 2019-05-01 00:00:00
end: 2020-04-21 00:00:00
period: 15m
exchanges: [{"eid":"Futures_OKCoin","currency":"BTC_USD"}]
'''

import pandas as pd
import time

def main():
    exchange.SetContractType("quarter")
    preTime = 0
    Log(exchange.GetAccount())
    while True:
        records = exchange.GetRecords(PERIOD_M15)
        if records and records[-2].Time > preTime:
            preTime = records[-2].Time
            doTicker(records[:-1])
        Sleep(1000 *60)

       
def doTicker(records):
    #Log('onTick',exchange.GetTicker())
    M15 = pd.DataFrame(records)

    #Factor=3
    #Pd=7
    
    M15.columns = ['time','open','high','low','close','volume','OpenInterest']  
    
    #HL2
    M15['hl2']=(M15['high']+M15['low'])/2

    #ATR(PD)
    length=Pd
    M15['prev_close']=M15['close'].shift(1)
    ranges= [M15['high'] - M15['low'],M15['high']-M15['prev_close'],M15['low']-M15['prev_close']]
    M15['tr'] = pd.DataFrame(ranges).T.abs().max(axis=1)
    alpha = (1.0 / length) if length > 0 else 0.5
    M15['atr']=M15['tr'].ewm(alpha=alpha, min_periods=length).mean()


    M15['Up']=M15['hl2']-(Factor*M15['atr'])
    M15['Dn']=M15['hl2']+(Factor*M15['atr'])
    
    M15['TrendUp']=0.0
    M15['TrendDown']=0.0
    M15['Trend']=1
    M15['Tsl']=0.0
    M15['linecolor']='Homily'
    M15 = M15.fillna(0)

    for x in range(len(M15)):
        M15['TrendUp'].values[x] = max(M15['Up'].values[x],M15['TrendUp'].values[x-1]) if (M15['close'].values[x-1]>M15['TrendUp'].values[x-1]) else M15['Up'].values[x]
        M15['TrendDown'].values[x] = min(M15['Dn'].values[x],M15['TrendDown'].values[x-1]) if (M15['close'].values[x-1]<M15['TrendDown'].values[x-1]) else M15['Dn'].values[x]
        M15['Trend'].values[x] = 1 if (M15['close'].values[x] > M15['TrendDown'].values[x-1]) else ( -1 if (M15['close'].values[x]< M15['TrendUp'].values[x-1])else M15['Trend'].values[x-1] )
        M15['Tsl'].values[x] = M15['TrendUp'].values[x] if  (M15['Trend'].values[x]==1) else M15['TrendDown'].values[x]
        M15['linecolor'].values[x]= 'Long' if ( M15['Trend'].values[x]==1) else  'Short'
 

    linecolor=M15['linecolor'].values[-2]
    close=M15['close'].values[-2]
    Tsl=M15['Tsl'].values[-2] 


    if(M15['Trend'].values[-1] == 1 and M15['Trend'].values[-2] == -1):

        Log('SuperTrend V.1 Alert Long','Create Order Buy')
        Log('Tsl=',Tsl)
        position = exchange.GetPosition()
        if len(position) > 0:
            Amount=position[0]["Amount"]
            exchange.SetDirection("closesell")
            exchange.Buy(_C(exchange.GetTicker).Sell*1.01, Amount);
        
        exchange.SetDirection("buy")
        exchange.Buy(_C(exchange.GetTicker).Sell*1.01, vol);

    if(M15['Trend'].values[-1] == -1 and M15['Trend'].values[-2] == 1):
        Log('SuperTrend V.1 Alert Long','Create Order Sell')
        Log('Tsl=',Tsl)
        position = exchange.GetPosition()
        if len(position) > 0:
            Amount=position[0]["Amount"]
            exchange.SetDirection("closebuy")
            exchange.Sell(_C(exchange.GetTicker).Buy*0.99,Amount);
        exchange.SetDirection("sell")
        exchange.Sell(_C(exchange.GetTicker).Buy*0.99, vol*2);

عوامی حکمت عملی کا خطاب:https://www.fmz.com/strategy/200625

VI. بیک ٹسٹنگ اور خلاصہ

ہم نے پچھلے سال کے اعداد و شمار کو بیک ٹسٹنگ کے لیے منتخب کیا۔ ہم OKEX سہ ماہی معاہدے کو 15 منٹ کی مدت کے لئے استعمال کرتے ہیں. مقرر پیرامیٹرز ہیں: فیکٹر=3 Pd=45 Vol=100 (ہر آرڈر کے لئے 100 معاہدے) سالانہ واپسی تقریبا 33٪ ہے. عام طور پر، واپسی بہت زیادہ نہیں ہے، 312 کی شدید کمی کا نظام پر نسبتاً بڑا اثر پڑا، اگر کوئی 312 نہیں ہے، واپسی بہتر ہونا چاہئے.

img

VII. آخر میں لکھیں

سپر ٹرینڈ ایک بہت اچھا تجارتی نظام ہے

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

میں نے TradeView پر الگ الگ، dn، TrendUp اور TrendDn نقشہ، جس سے حکمت عملی کو بہتر طور پر سمجھنا آسان ہوجاتا ہے۔ ایک نظر میں واضح طور پر دیکھیں:

img

اس کے علاوہ، github پر js کا ایک ورژن ہے۔ میں js میں اچھا نہیں ہوں، لیکن ایسا لگتا ہے کہ اگر بیان میں کچھ غلط ہے۔ پتہ:https://github.com/Dodo33/gekko-supertrend-strategy/blob/master/Supertrend.js

آخر میں، میں نے اصل ورژن کا سراغ لگایا. یہ 29 مئی 2013 کو شائع ہوا تھا مصنف راجاندران آر ہے C ++ کوڈ MT4 فورم پر شائع کیا گیا تھا:https://www.mql5.com/en/code/viewcode/10851/128437/Non_Repainting_SuperTrend.mq4میں نے C++ کے معنی کو تقریباً سمجھ لیا ہے، اور موقع ملنے پر میں اسے دوبارہ لکھوں گا۔

مجھے امید ہے کہ آپ اس سے جوہر سیکھ سکتے ہیں۔ یہ مشکل ہے!


متعلقہ

مزید