اعداد و شمار مقداری تجارت کا ذریعہ ہیں ، بڑی مقدار میں اعداد و شمار کو موثر انداز میں کیسے منظم کیا جائے یہ ایک بہت اہم لنک ہے ، ڈیٹا بیس بہترین حل میں سے ایک ہے ، آج کل ڈیٹا بیس کا اطلاق ہر طرح کی روزانہ کی تجارت ، اعلی تعدد کی تجارت اور دیگر حکمت عملیوں کے لئے مقداری معیار ہے۔ اس مضمون میں ہم ایف ایم زیڈ کوانٹ کے بلٹ ان ڈیٹا بیس کا مطالعہ کریں گے (https://www.fmz.com) ، بشمول: ڈیٹا ٹیبلز بنانے ، ڈیٹا اسٹور کرنے ، ڈیٹا کو تبدیل کرنے ، ڈیٹا کو حذف کرنے ، حوالہ جات کے اعداد و شمار اور عملی طور پر ان کا اطلاق کرنے کا طریقہ۔
وہ لوگ جو ایف ایم زیڈ کوانٹ پلیٹ فارم سے واقف ہیں انہیں معلوم ہونا چاہئے کہ مقامی دوبارہ استعمال کے ل data ڈیٹا کو بچانے سے پہلے ، آپ صرف _G() فنکشن استعمال کرسکتے ہیں ، جو ہر بار جب آپ حکمت عملی کو روکتے ہیں تو خود بخود ضروری معلومات کو محفوظ کرتا ہے۔ لیکن اگر آپ زیادہ سے زیادہ پیچیدہ فارمیٹڈ ڈیٹا کو بچانا چاہتے ہیں تو ، _G() فنکشن ظاہر ہے کہ بہت قابل اطلاق نہیں ہے ، لہذا ، بہت سے لوگوں نے اس مسئلے کو حل کرنے کے لئے اپنا ڈیٹا بیس بنانے کا فیصلہ کیا۔
جب خود ساختہ ڈیٹا بیس کی بات آتی ہے تو ، آپ کو اوریکل ، ایس کیو ایل ، کے ڈی بی ، ون ٹِک ، نو ایس کیو ایل کے بارے میں سوچنا چاہئے۔ یہ فنکشن اور کارکردگی دونوں میں انٹرپرائز لیول کی بہت عمدہ ایپلی کیشنز ہیں۔ تاہم ، اس میں کئی مسائل بھی ہیں: شروع کرنا مشکل ہے ، اور تشکیل بوجھل ہے اور دیکھ بھال مشکل ہے۔ خوردہ مقداری تاجروں کے لئے ، یہ توپوں سے مکھیوں کو مارنے کی طرح ہے۔ یہاں تک کہ اگر وہ شروع کرتے ہیں تو ، وہ افعال کا صرف ایک چھوٹا سا حصہ استعمال کرتے ہیں۔
اس کے بعد ، آئیے ایف ایم زیڈ کوانٹ کے ذریعہ تیار کردہ لائٹ ڈیٹا بیس پر ایک نظر ڈالیں۔ ڈی بی ایکسیک ایف ایم زیڈ کوانٹ کا ایک بلٹ ان ریلیشنل ڈیٹا مینجمنٹ سسٹم انٹرفیس ہے۔ یہ ایس کیو ایلائٹ کی بنیاد پر تیار کیا گیا ہے اور سی میں لکھا گیا ہے۔ یہ نہ صرف چھوٹے سائز کا ہے ، وسائل کی کم کھپت ہے ، بلکہ پروسیسنگ میں بھی تیز ہے۔ یہ مالیاتی مقداری تجزیہ کے شوقین افراد کے لئے ڈیٹا مینجمنٹ کو مقامی طور پر نافذ کرنے کے لئے بہت موزوں ہے ، کیونکہ مختلف
اس کے علاوہ ، SQLite زبان سیکھنا بہت آسان ہے ، اور ڈیٹا بیس پر انجام دیا جانے والا زیادہ تر کام SQLite بیانات کے ذریعہ مکمل ہوتا ہے۔ اگر آپ بنیادی گرائمر سے واقف ہیں تو ، آپ زیادہ تر تقاضوں کو پورا کرسکتے ہیں۔ مندرجہ ذیل SQLite کا بنیادی گرائمر ہے۔
ایس کیو ایلائٹ کا گرائمر بڑے اور چھوٹے حرفوں کے لئے حساس نہیں ہے ، حالانکہ کچھ کمانڈز ہیں جو بڑے اور چھوٹے حرفوں کے لئے حساس ہیں ، جیسے کہ گلوب اور گلوب ، جو مختلف معنی کی نمائندگی کرتے ہیں۔ ایس کیو ایلائٹ کے بیانات کسی بھی مطلوبہ الفاظ سے شروع ہوسکتے ہیں ، جیسے منتخب کریں ، داخل کریں ، اپ ڈیٹ کریں ، حذف کریں ، تبدیل کریں ، چھوڑ دیں ، وغیرہ ، جس کا مطلب ہے: ڈیٹا نکالیں ، ڈیٹا داخل کریں ، ڈیٹا کو اپ ڈیٹ کریں ، ڈیٹا کو حذف کریں ، ڈیٹا بیس میں ترمیم کریں ، اور ڈیٹا ٹیبل کو حذف کریں۔ تمام بیانات انگریزی سیمیکولن کے ذریعہ ختم ہوتے ہیں۔ مندرجہ ذیل ایک سادہ ڈیٹا بیس تخلیق ، شامل کریں ، حذف کریں ، تبدیل کریں ، اور چیک آپریشنز ہیں:
function main() {
// Create: If the "users" table does not exist, create one, "id" is an integer and is incremented automatically, "name" is in text form and is not empty
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('Zhang San')"));
Log(DBExec("INSERT INTO users(name) values('Li Si')"));
// Delete:
Log(DBExec("DELETE FROM users WHERE id=1;"));
// Modify:
Log(DBExec("UPDATE users SET name='Wang Wu' WHERE id=2"));
// Search:
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 ، لاگ ، منافع ، چارٹ۔ یعنی جب ٹیبلز بناتے ہو تو ، آپ کو سسٹم کے محفوظ کردہ ناموں سے گریز کرنا چاہئے۔ آئیے مندرجہ بالا کوڈ چلائیں اور مندرجہ ذیل آؤٹ پٹ کریں:
SQLite کی بنیادی گرامر سیکھنے کے بعد، ہم FMZ Quant کے بلٹ ان ڈیٹا بیس کا استعمال کرتے ہوئے ٹک ڈیٹا جمع کرنے اور استعمال کرنے کا ایک مثال بنانے کے لئے لوہے گرم ہے جبکہ حملہ.
سب سے پہلے ، اس بات کو یقینی بنائیں کہ آپ ڈوکر کا تازہ ترین ورژن استعمال کررہے ہیں۔ اگر آپ نے پہلے ڈوکر ڈاؤن لوڈ کیا ہے اور استعمال کیا ہے تو ، آپ کو پہلے اسے حذف کرنے کی ضرورت ہے ، اور پھر اسے دوبارہ ڈاؤن لوڈ کریں اور دوبارہ تعینات کریںhttps://www.fmz.com/m/add-node page.
function main() {
// Subscribe contracts
_C(exchange.SetContractType, 'swap');
// Create 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);'
));
// Get 10 pieces of tick data
while (true) {
let tick = exchange.GetTicker();
// Add data to 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})`);
// Search all data
let allDate = DBExec('select * from tick');
if (allDate.values.length > 10) {
break;
}
Sleep(1000);
}
// Search all data
Log(DBExec('select * from tick'));
// Search the first data
Log(DBExec('select * from tick limit 1'));
// Search first two pieces of 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'));
// Search all data
let allDate = DBExec('select * from tick')
Log(allDate);
}
مثال کے طور پر ونڈوز کو لیں ، حکمت عملی چلانے کے بعد ، روبوٹ نمبر کے نام سے ایک فولڈر ڈوکر ڈائرکٹری کی ڈائرکٹری
مندرجہ بالا کوڈ پہلے
آخر میں ہم کچھ کوڈ شامل کرتے ہیں تاکہ اعداد و شمار کو زیادہ بصری طور پر ظاہر کرنے کے لئے ایف ایم زیڈ کوانٹ ڈیٹا بیس میں اعداد و شمار حاصل کرکے حکمت عملی کے لئے ایک اسٹیٹس بار تیار کیا جاسکے ، جوڑنے کا کوڈ مندرجہ ذیل دکھاتا ہے:
// Create 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;'));
// Subscribe contracts
_C(exchange.SetContractType, 'swap');
// Create 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 pieces of tick data
while (true) {
let tick = exchange.GetTicker();
// Add data to 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})`);
// Search all data
let allDate = DBExec('select * from tick');
if (allDate.values.length > 10) {
break;
}
Sleep(1000);
}
// Search all data
Log(DBExec('select * from tick'));
// Search the first data
Log(DBExec('select * from tick limit 1'));
// Search first two pieces of 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'));
// Search all data
let allDate = DBExec('select * from tick')
Log(allDate);
// Create 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/388963مکمل حکمت عملی کا کوڈ کاپی کرنے کے لئے.
اگر آپ ڈیٹا کو مستقل طور پر ڈسک پر محفوظ نہیں کرنا چاہتے ہیں تو ، آپ میموری ڈیٹا بیس میں کام کرنے کے لئے SQL بیان سے پہلے
DBExec(":select 1,2,3");
ڈیٹا بیس نہ صرف بڑے پیمانے پر ڈیٹا لے سکتی ہے ، بلکہ بہت سے مقداری تجارتی شائقین کا خواب بھی لے سکتی ہے۔ ڈیٹا بیس کا استعمال کسی بھی طرح سے اس مضمون میں مثالوں تک محدود نہیں ہے۔ مزید استعمال کے طریقوں کے ل please ، براہ کرم ایس کیو ایلائٹ ٹیوٹوریل اور ایف ایم زیڈ کوانٹ کے فالو اپ مضامین کا حوالہ دیں۔