Type/to search
0
Follow
48
Followers
SuperTrend V.1--سپر ٹرینڈ لائن سسٹم
Original
Created 2020-04-20 22:10:36  Updated 2024-12-12 21:03:30
 28
 12168

img

1. کہانی کی اصل

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

2. سسٹم کا تعارف

CMC مارکیٹس کے ذہین تجارتی نظام کی نئی نسل - سپر ٹرینڈ
یہاں اس نظام کو متعارف کرانے والا ایک مضمون ہے۔
img

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

مرکزی الگورتھم بھی ذیل کی تصویر میں متعارف کرایا گیا ہے۔
img

ایک کھردری نظر میں، مرکزی تفصیل HL2 کا ایک چینل ہے (K-line کی اوسط قیمت) کو n گنا ATR سے ضرب کیا گیا ہے۔ ایک رجحان پیش رفت بنائیں.
لیکن مضمون بہت مختصر ہے۔ کوئی تفصیلی الگورتھم نہیں ہے۔ پھر میں نے بہترین کمیونٹی Tradingview کے بارے میں سوچا۔
حیرت کی بات نہیں۔ یقینی طور پر، یہ وہاں ہے.
img

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

3. سورس کوڈ کا مطالعہ کریں۔

کوڈ زیادہ لمبا نہیں لگتا، تو آئیے اس کا ترجمہ کرتے ہیں اور اسے آزماتے ہیں۔ ! (っ•̀ω•́)っ✎⁾⁾!
img
مکمل پائن کوڈ اوپر کی طرح ہے۔ .

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

یہاں ہم FMZ میں ایک نئی حکمت عملی بناتے ہیں اور اسے SuperTrade کا نام دیتے ہیں۔
img

اگلا، ہم نے دو پیرامیٹرز فیکٹر اور پی ڈی سیٹ کیے ہیں۔
img

کوڈ کے آپریشن کو بہتر طریقے سے آسان بنانے اور اسے سمجھنے میں آسانی پیدا کرنے کے لیے، ہمیں Python کا ڈیٹا ایکسپینشن پیکج استعمال کرنے کی ضرورت ہے۔pandas

دوپہر کے کھانے کے دوران، میں نے ٹیچر مینگ مینگ سے پوچھا کہ کیا FMZ اس لائبریری کو سپورٹ کرتا ہے۔ میں نے دوپہر میں اسے چیک کیا اور اس نے حقیقت میں کام کیا۔
استاد مینگ مینگ واقعی حیرت انگیز ہے۔

1. ہمیں پانڈاس لائبریری ٹائم لائبریری درآمد کرنے کی ضرورت ہے۔
2. مرکزی فنکشن میں سہ ماہی معاہدہ ترتیب دیں (بنیادی طور پر OKEX چل رہا ہے)
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)

4. ہمیں K-line کے OHCLV کو بازیافت کرنے کی ضرورت ہے، لہذا GetRecords() استعمال کریں۔
5. ہم بازیافت شدہ ڈیٹا کو پانڈوں M15 = pd.DataFrame (ریکارڈز) میں درآمد کرتے ہیں۔
6. ہمیں ٹیبل ہیڈر ٹیگ میں ترمیم کرنے کی ضرورت ہے۔ M15.columns =['time','open','high','low','close','volume','OpenInterest']
درحقیقت، یہ صرف 'اوپن'، 'ہائی'، 'لو'، اور 'کلز' کے پہلے حروف کو چھوٹے میں تبدیل کرتا ہے، تاکہ بعد میں بڑے اور چھوٹے حروف میں ردوبدل کیے بغیر کوڈ لکھنا آسان ہو۔

def doTicker(records): M15 = pd.DataFrame(records) M15.columns = ['time','open','high','low','close','volume','OpenInterest']

7. ڈیٹا سیٹ hl2=(high+low)/2 میں ایک کالم hl2 شامل کریں۔

#HL2 M15['hl2']=(M15['high']+M15['low'])/2

8. اگلا، آئیے اے ٹی آر کا حساب لگاتے ہیں۔
کیونکہ ATR کے حساب کتاب کے لیے متغیر لمبائی کی درآمد کی ضرورت ہوتی ہے، اس کی قیمت Pd ہے۔

اس کے بعد ہم مائی لینگویج مینوئل کا حوالہ دیتے ہیں، اور ATR حقیقی اتار چڑھاؤ اوسط کے الگورتھم کے مراحل درج ذیل ہیں:
TR : MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR : RMA(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 سیٹ اپ کریں، یعنی ایک نیا پیرامیٹر بنانے کے لیے 1 گرڈ کے قریب دائیں منتقل کریں۔

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

اگلا، TR کی تین موازنہ اقدار کی صف کو ریکارڈ کرنے کے لیے ایک انٹرمیڈیٹ متغیر کی وضاحت کریں۔ (HIGH-LOW)(high-prev_close)(low-prev_close)

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

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

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

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

===

پھر EMA کا حساب لگانے کے لیے EWM الگورتھم استعمال کریں۔
مکمل اے ٹی آر کیلکولیشن کا عمل درج ذیل ہے۔

#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 -(Factor * atr)
Dn=hl2 +(Factor * 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])
اگر یہ گرنے کے مرحلے میں ہے، (اوپری لائن) TrendDown=min(Dn,TrendDown[1])
کہنے کا مطلب یہ ہے کہ ایک رجحان میں، اے ٹی آر ویلیو بینڈٹ بولنگر کی حکمت عملی سے ملتی جلتی تکنیک استعمال کر رہی ہے۔
چینل کے دوسری طرف کو تنگ کرتے رہیں

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

یہاں ہمیں ڈیٹا سیٹ کے لیے پہلے نئے فیلڈز TrendUp، TrendDown، Trend، اور linecolor بنانے کی ضرورت ہے۔ اور انہیں ابتدائی قیمت دیں۔
پھر 0 کے ساتھ پہلے شمار کیے گئے نتائج میں null اقدار کے ساتھ ڈیٹا کو بھرنے کے لیے fillna(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 کا حساب لگانا
TrendUp = MAX(Up,TrendUp[-1]) if close[-1]>TrendUp[-1] else Up
عام معنی یہ ہے کہ اگر پچھلا بند > پچھلا TrendUp، اگر یہ درست ہے، تو Up کی زیادہ سے زیادہ قدر لیں اور پچھلے TrendUp کی، اگر یہ درست نہیں ہے تو، Up کی قیمت لیں اور اسے موجودہ TrendUp میں منتقل کریں۔

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 کا حساب لگائیں۔
TrendDown=min(Dn,TrendDown[-1]) if close[-1]<TrendDown[-1] else Dn
عام معنی یہ ہے کہ اگر پچھلا بند < پچھلا ٹرینڈ ڈاؤن، اگر یہ درست ہے، تو Dn اور پچھلے TrendDown کے درمیان کم از کم قدر لیں، اگر یہ درست نہیں ہے، تو Dn کی قدر لیں اور اسے موجودہ TrendDown میں منتقل کریں۔

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]

ذیل میں کنٹرول کی سمت کا حساب لگانے کا جھنڈا ہے میں نے چھدم کوڈ کو آسان بنایا
Trend= 1 if (close > TrendDown[-1]) else (x)
x = -1 if (close< TrendUp[-1]) else Trend[-1]

اس کا مطلب یہ ہے کہ اگر اختتامی قیمت > پچھلا TrendDown ہے، تو 1 لے لو (تیزی) اگر نہیں، تو x لے لو
اگر اختتامی قیمت پچھلے TrendUp سے کم ہے، تو لے لو -1 (مختصر) اگر نہیں، تو پچھلا رجحان لیں (جس کا مطلب ہے کہ یہ کوئی تبدیلی نہیں ہے)۔
گرافک زبان میں ترجمہ کیا گیا ہے، اس کا مطلب ہے جھنڈے کو تیزی میں تبدیل کرنے کے لیے اوپری ریل کو توڑنا، جھنڈے کو مندی میں بدلنے کے لیے نچلی ریل کو توڑنا، اور دیگر اوقات میں کوئی تبدیلی نہیں ہوتی۔

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

ٹی ایس ایل اور لائن کلر کا حساب لگائیں۔
Tsl= rendUp if (Trend==1) else TrendDown
Tsl گراف پر SuperTrend کی قدر کو ظاہر کرنے کے لیے استعمال کیا جاتا ہے۔ اس کا مطلب ہے کہ جب آپ میں تیزی ہو، تو چارٹ پر نچلے ٹریک کو نشان زد کریں، اور جب آپ مندی میں ہوں، تو چارٹ پر اوپری ٹریک کو نشان زد کریں۔
linecolor= 'green' if (Trend==1) else 'red'
لائن کلر کا مطلب یہ ہے کہ اگر آپ تیزی سے ہیں، گرین لائن کو نشان زد کریں، اگر آپ بیئرش ہیں، تو خالی رنگ کو نشان زد کریں (بنیادی طور پر ٹریڈنگ ویو ڈسپلے کے لیے استعمال کیا جاتا ہے)

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 لائنیں ہیں۔
Tradingview میں، اس کا مطلب ہے جھنڈے کو الٹانے کے بعد سگنل دینا۔
مشروط بیانات کو ازگر میں تبدیل کریں۔
اگر پچھلا ٹرینڈ فلیگ -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

5. تمام کوڈز

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

'''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

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

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

img

6. حتمی خیالات

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

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

میں نے TradingView پر الگ سے dn TrendUp TrendDn کا منصوبہ بنایا
اس سے آپ کو اس حکمت عملی کو بہتر طور پر سمجھنے میں مدد ملے گی۔

ایک نظر میں صاف
img

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

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

مجھے امید ہے کہ ہر کوئی اس سے جوہر سیکھ سکتا ہے۔
یہ مشکل ہے۔ ~!

Related Recommendations
Comment
All comments (25)

    YYDS!

    5 years ago

    如果直接使用这个策略在OK交易所交易需要怎么连接交易所,小白一个不会python,看不明白

    6 years ago

    这里如果312那波行情没吃到的话应该参数还有很大的调整空间,因为supertrend主要就是抓趋势单,312是不应该错过的。另外期待lz的pine翻译器早日问世

    6 years ago

    可惜各种周期和参数,回测效果都不怎么好, 不知道其它人怎么优化的?

    6 years ago

    可以了,弄好了,感谢您的付出

    6 years ago

    用不了呢,显示这个:Traceback (most recent call last): File "<string>", line 1473, in Run File "<string>", line 8, in <module> ImportError: No module named pandas

    6 years ago

    意思是缺少pandas包 你的系统可能需要pip install pandas

    6 years ago

    请问这是怎么处理的呢?万分感谢

    6 years ago

    pine的翻译器,期待

    6 years ago

    没啥文化只能说一声 牛逼!

    6 years ago

    “估摸着某一天写一个pine的翻译器。一切皆可python。”—— 牛,好些人看好这个!

    6 years ago

    啊哈哈,谢谢老板

    6 years ago

    期待期待,pine真的看不太懂,教程也很少

    6 years ago

    回测引擎的代码是否可以开源呢,我想实现复现一下 然后用svm找出最好的参数

    6 years ago

    这个系统好像也曾经是收益率前十的期货策略。长期坚持做下去是能赚钱的。

    6 years ago

    恩啊。学习精髓。

    6 years ago

    你好,请教下,PD就是 ATR的长度值吧? 比如 ATR(14) ,就是 PD赋值14了吧?

    6 years ago

    是的,完全正确

    6 years ago

    好的,谢谢!!!
    顺手mq4也收走了,谢谢。。 o(∩_∩)o

    6 years ago

    感谢梦梦老师哈

    6 years ago

    碰巧我也写了个JS版本的。

    6 years ago

    求JS版!

    6 years ago

    一会儿,公开。

    6 years ago

    赞的,!

    6 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)