FMZ کوانٹ ڈیٹا بیس کی تعمیر کے لئے SQLite کا استعمال کریں [TOC]
ڈیٹا مقداری تجارت کا ذریعہ ہے۔ بڑی مقدار میں ڈیٹا کا موثر انتظام کرنا بہت ضروری ہے۔ ڈیٹا بیس بہترین حل میں سے ایک ہے۔ آج کل ، ڈیٹا بیس کا اطلاق مختلف دن کی تجارت ، اعلی تعدد کی تجارت اور دیگر حکمت عملیوں کی معیاری مقداری ترتیب بن گیا ہے۔ اس مضمون میں ہم ایف ایم زیڈ کوانٹ کے بلٹ ان ڈیٹا بیس کا مطالعہ کریں گے (FMZ.COM) ، بشمول: ڈیٹا ٹیبلز بنانے ، ڈیٹا کو محفوظ کرنے ، ڈیٹا کو تبدیل کرنے ، ڈیٹا کو حذف کرنے اور حوالہ جات کے اعداد و شمار کے ساتھ ساتھ اسے عملی طور پر استعمال کرنے کا طریقہ۔
وہ لوگ جو ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم سے واقف ہیں انہیں معلوم ہونا چاہئے کہ اس سے پہلے ، اگر آپ دوبارہ استعمال کے لئے مقامی میں ڈیٹا محفوظ کرنا چاہتے ہیں تو ، آپ صرف _G() فنکشن استعمال کرسکتے ہیں۔ جب بھی آپ حکمت عملی کو روکتے ہیں تو ، _G() فنکشن خود بخود مطلوبہ معلومات کو محفوظ کردے گا۔ لیکن اگر آپ زیادہ سے زیادہ پیچیدہ فارمیٹڈ ڈیٹا کو محفوظ کرنا چاہتے ہیں تو ، _G() فنکشن ظاہر ہے کہ موزوں نہیں ہے ، لہذا بہت سے لوگ اس مسئلے کو حل کرنے کے لئے اپنا ڈیٹا بیس بنانے کے بارے میں سوچتے ہیں۔
جب خود ساختہ ڈیٹا بیس کی بات آتی ہے تو ، ہر کوئی اوریکل ، ایس کیو ایل ، کے ڈی بی ، ون ٹِک ، نو ایس کیو ایل کے بارے میں سوچ سکتا ہے۔ یہ تمام انٹرپرائز لیول کی عمدہ ایپلی کیشنز ہیں ، دونوں فنکشن اور کارکردگی کے لحاظ سے۔ لیکن کچھ مسائل بھی ہیں: شروع کرنا مشکل ہے ، اور تشکیل اور دیکھ بھال مشکل ہے۔ مقداری تجارت میں خوردہ سرمایہ کاروں کے لئے ، یہ پہیے پر مکھی کو توڑنے کی طرح ہے۔ یہاں تک کہ اگر آپ پہلے ہی ان ایپلی کیشنز کے ساتھ شروع ہوچکے ہیں تو ، ان میں سے صرف چند افعال استعمال کیے جائیں گے۔
اس کے بعد ، آئیے ایف ایم زیڈ کوانٹ کے بلٹ ان ہلکے وزن والے ڈیٹا بیس سے واقف ہوں۔ ڈی بی ایکسیک ایف ایم زیڈ کوانٹ میں بنایا گیا رشتہ دار ڈیٹا مینجمنٹ سسٹم انٹرفیس ہے۔ یہ ایس کیو ایلائٹ کی بنیاد پر تیار کیا گیا ہے اور سی میں لکھا گیا ہے۔ یہ نہ صرف چھوٹے سائز کا ہے ، وسائل کی کم قبضے میں ہے ، بلکہ اس کی پروسیسنگ کی رفتار بھی بہت تیز ہے۔ یہ مالیاتی مقداری تجزیہ کے شوقین افراد کے لئے مقامی طور پر ڈیٹا مینجمنٹ کو نافذ کرنے کے لئے بہت موزوں ہے ، کیونکہ یہ مختلف
اس کے علاوہ ، ایس کیو ایلائٹ زبان سیکھنے کی لاگت بہت کم ہے ، اور ڈیٹا بیس پر انجام دیئے جانے والے زیادہ تر کام ایس کیو ایلائٹ بیانات کے ذریعہ کیے جاتے ہیں۔ بنیادی نحو سے واقف ہو کر زیادہ تر ضروریات کو پورا کیا جاسکتا ہے۔ مندرجہ ذیل ایس کیو ایلائٹ کا بنیادی نحو ہے۔
ایس کیو ایلائٹ کا نحو بڑے اور چھوٹے حروف کے لئے حساس نہیں ہے ، لیکن کچھ کمانڈز بڑے اور چھوٹے حروف کے لئے حساس ہیں ، جیسے کہ گلوب اور گلوب ، جن کے مختلف معنی ہیں۔ ایس کیو ایلائٹ کے بیانات کسی بھی مطلوبہ الفاظ جیسے SELECT ، INSERT ، UPDATE ، DELETE ، ALTER ، DROP ، وغیرہ سے شروع ہوسکتے ہیں ، جس کا مطلب بالترتیب ہے: ڈیٹا نکالنا ، ڈیٹا داخل کرنا ، ڈیٹا کو اپ ڈیٹ کرنا ، ڈیٹا کو حذف کرنا ، ڈیٹا بیس میں ترمیم کرنا ، اور ڈیٹا ٹیبل کو حذف کرنا۔ تمام بیانات کو نیم قطرہ کے ساتھ ختم کیا جاتا ہے۔ مندرجہ ذیل آپریشنز ہیں جیسے ایک سادہ ڈیٹا بیس کی تخلیق ، اضافہ ، حذف ، ترمیم اور استفسار:
function main() {
// create: if the table of "users" do not exist, create one; "id" is integer and increases automatically; "name" is in form of text and not null
Log(DBExec('CREATE TABLE IF NOT EXISTS "users" (id INTEGER PRIMARY KEY AUTOINCREMENT, name text not NULL);'));
// add:
Log(DBExec("INSERT INTO users(name) values('A')"));
Log(DBExec("INSERT INTO users(name) values('B')"));
// delete:
Log(DBExec("DELETE FROM users WHERE id=1;"));
// modify:
Log(DBExec("UPDATE users SET name='C' WHERE id=2"));
// query:
Log(DBExec('select 2, ?, ?, ?, ?', 'ok', true,9.8,null));
Log(DBExec('select * from kvdb'));
Log(DBExec('select * from cfg'));
Log(DBExec('select * from log'));
Log(DBExec('select * from profit'));
Log(DBExec('select * from chart'));
Log(DBExec("selEct * from users"));
}
ڈیٹا بیس میں عام طور پر ایک یا ایک سے زیادہ ٹیبلز ہوتی ہیں ، ہر ٹیبل کا نام کی شناخت ہوتی ہے ، یہ نوٹ کیا جانا چاہئے کہ سسٹم کے محفوظ کردہ ٹیبلز ہیں: kvdb ، cfg ، لاگ ، منافع ، چارٹ۔ یعنی ، جب ٹیبلز بناتے ہو تو آپ کو سسٹم کے محفوظ کردہ ناموں سے گریز کرنا چاہئے۔ آئیے اوپر کوڈ چلائیں ، جو مندرجہ ذیل برآمد کرتا ہے:
ایس کیو ایلائٹ کے بنیادی نحو کو جاننے کے بعد ، آئیے جب تک لوہا گرم ہے اس وقت تک حملہ کریں۔ ٹک ڈیٹا کو جمع کرنے اور استعمال کرنے کا ایک مثال بنانے کے لئے ایف ایم زیڈ کوانٹ کی کوانٹیٹیٹیو بلٹ ان ڈیٹا بیس کا استعمال کریں۔
مرحلہ 1: ڈوکر کو اپ ڈیٹ کریںسب سے پہلے ، اس بات کو یقینی بنائیں کہ آپ ڈوکر کا تازہ ترین ورژن استعمال کررہے ہیں۔ اگر آپ نے پہلے ڈوکر ڈاؤن لوڈ کیا ہے اور استعمال کیا ہے تو ، آپ کو پہلے اسے حذف کرنے کی ضرورت ہے ، اور اسے صفحے پر دوبارہ ڈاؤن لوڈ اور تعینات کرنے کی ضرورت ہے (https://www.fmz.com/m/add-node).
مرحلہ 2: حکمت عملی تیار کریں
function main() {
// set contract
_C(exchange.SetContractType, 'swap');
// create the data table
DBExec('CREATE TABLE IF NOT EXISTS "tick" (id INTEGER PRIMARY KEY AUTOINCREMENT,'.concat(
'High FLOAT not NULL,',
'Low FLOAT not NULL,',
'Sell FLOAT not NULL,',
'Buy FLOAT not NULL,',
'Last FLOAT not NULL,',
'Volume INTEGER not NULL,',
'Time INTEGER not NULL);'
));
// obtain 10 tick data
while (true) {
let tick = exchange.GetTicker();
// add data in the tick table
DBExec(`INSERT INTO tick(High, Low, Sell, Buy, Last, Volume, Time) values(${tick.High}, ${tick.Low}, ${tick.Sell}, ${tick.Buy}, ${tick.Last}, ${tick.Volume}, ${tick.Time})`);
// query all data
let allDate = DBExec('select * from tick');
if (allDate.values.length > 10) {
break;
}
Sleep(1000);
}
// query all data
Log(DBExec('select * from tick'));
// query the first data
Log(DBExec('select * from tick limit 1'));
// query the first two data
Log(DBExec('select * from tick limit 0,2'));
// delete the first data
Log(DBExec('DELETE FROM tick WHERE id=1;'));
// modify the second data
Log(DBExec('UPDATE tick SET High=10000 WHERE id=2'));
// query all data
let allDate = DBExec('select * from tick')
Log(allDate);
}
مرحلہ 3: آپریشنل حکمت عملیمثال کے طور پر ونڈوز کو لے لو۔ حکمت عملی کو چلانے کے بعد ، ڈوکر ڈائرکٹری کی لغت
مندرجہ بالا کوڈ پہلے
مرحلہ 4: اسٹیٹس بار بنائیںآخر میں ، ہم کچھ کوڈ کو شامل کرتے ہیں تاکہ ڈیٹا کو زیادہ بدیہی طور پر ظاہر کرنے کے لئے ایف ایم زیڈ کوانٹ ڈیٹا بیس میں ڈیٹا حاصل کرکے حکمت عملی کے لئے ایک اسٹیٹس بار بنایا جاسکے۔ نیا کوڈ مندرجہ ذیل ہے:
// create a status bar
let table = {
type: 'table',
title: 'Binance Tick data',
cols: allDate.columns,
rows: allDate.values
}
LogStatus('`' + JSON.stringify(table) + '`');
مندرجہ بالا کوڈ ڈیٹا بیس میں موجود اعداد و شمار سے
/*backtest
start: 2020-07-19 00:00:00
end: 2020-08-17 23:59:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"LTC_USDT"}]
*/
function main() {
Log(DBExec('DROP TABLE tick;'));
// set contract
_C(exchange.SetContractType, 'swap');
// establish the data table
DBExec('CREATE TABLE IF NOT EXISTS "tick" (id INTEGER PRIMARY KEY AUTOINCREMENT,'.concat(
'High FLOAT not NULL,',
'Low FLOAT not NULL,',
'Sell FLOAT not NULL,',
'Buy FLOAT not NULL,',
'Last FLOAT not NULL,',
'Volume INTEGER not NULL,',
'Time INTEGER not NULL);'
));
// obtain 10 tick data
while (true) {
let tick = exchange.GetTicker();
// add data in the tick table
DBExec(`INSERT INTO tick(High, Low, Sell, Buy, Last, Volume, Time) values(${tick.High}, ${tick.Low}, ${tick.Sell}, ${tick.Buy}, ${tick.Last}, ${tick.Volume}, ${tick.Time})`);
// query all data
let allDate = DBExec('select * from tick');
if (allDate.values.length > 10) {
break;
}
Sleep(1000);
}
// query all data
Log(DBExec('select * from tick'));
// query the first data
Log(DBExec('select * from tick limit 1'));
// query the first two data
Log(DBExec('select * from tick limit 0,2'));
// delet the first data
Log(DBExec('DELETE FROM tick WHERE id=1;'));
// modify the second data
Log(DBExec('UPDATE tick SET High=10000 WHERE id=2'));
// query all data
let allDate = DBExec('select * from tick')
Log(allDate);
// create the status bar
let table = {
type: 'table',
title: 'Binance Tick data',
cols: allDate.columns,
rows: allDate.values
}
LogStatus('`' + JSON.stringify(table) + '`');
}
لنک پر کلک کریں:https://www.fmz.com/strategy/265906، اور آپ کو مکمل سورس کوڈ کاپی کر سکتے ہیں.
آپریٹنگ ڈیٹا کو مستقل طور پر ڈسک پر محفوظ نہیں کیا جا کرنے کے لئے چاہتے ہیں تو، آپ کو شامل کر سکتے ہیں:
علامت SQL بیان سے پہلے ان میموری ڈیٹا بیس میں کام کرنے کے لئے، اور ڈیٹا بوٹ دوبارہ شروع ہونے کے بعد ری سیٹ کیا جائے گا.
DBExec(":select 1,2,3");
ڈیٹا بیس نہ صرف بڑے پیمانے پر ڈیٹا لے سکتا ہے ، بلکہ بہت سے مقداری تجارتی شائقین کے خوابوں کو بھی لے سکتا ہے۔ ڈیٹا بیس کا استعمال ، کسی بھی طرح سے ، مضمون میں مذکور مثالوں تک محدود نہیں ہے۔ مزید استعمال کرنے کے طریقوں کے ل you ، آپ SQLite ٹیوٹوریل اور مضامین کی سیریز کا حوالہ دے سکتے ہیں جو بعد میں FMZ Quant پر پوسٹ کی جائیں گی۔