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

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

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

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

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

کوڈ کے آپریشن کو بہتر طریقے سے آسان بنانے اور اسے سمجھنے میں آسانی پیدا کرنے کے لیے، ہمیں 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]
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)


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

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

گیتھب پر جے ایس ورژن بھی ہے۔ میں 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++ کے معنی کو تقریباً سمجھتا ہوں اور موقع ملنے پر اسے دوبارہ لکھوں گا۔
مجھے امید ہے کہ ہر کوئی اس سے جوہر سیکھ سکتا ہے۔ یہ مشکل ہے۔ ~!