2.1 API کا استعمال کرتے ہوئے اکاؤنٹ کی معلومات حاصل کریں، مارکیٹ کے اعداد و شمار حاصل کریں، K لائن ڈیٹا حاصل کریں، مارکیٹ کی گہرائی حاصل کریں

مصنف:چھوٹا سا خواب, تخلیق: 2016-11-05 16:41:04, تازہ کاری: 2019-08-01 09:31:23

2.1 API کا استعمال کرتے ہوئے اکاؤنٹ کی معلومات حاصل کریں، مارکیٹ کے اعداد و شمار حاصل کریں، K لائن ڈیٹا حاصل کریں، مارکیٹ کی گہرائی حاصل کریں

آخر میں دوسرا باب آگیا ہے ، اور پچھلے باب کے دورے کے ذریعے ، آپ کو انوینٹر کی کوانٹیٹیشن کے مختلف افعال کے بارے میں کچھ سمجھنے کی ضرورت ہے۔ پھر کوڈ لکھنا شروع کریں!


  • API کا استعمال کرتے ہوئے اکاؤنٹ کی معلومات حاصل کریں

    فرض کریں کہ پہلے باب کے ذریعے جانے والے دورے کے بعد ہم نے ایک مینیجر، ایک ایکسچینج شامل کیا ہے، اور یقینا ہم کوڈ ٹیسٹنگ کے لئے موجد کی مقدار کی ڈسک کا استعمال کرسکتے ہیں۔

    تو پہلے ہم ایک حکمت عملی بناتے ہیں جسے ہم ٹیسٹ 1 کہتے ہیں۔img

    حکمت عملی ایڈیٹر انٹرفیسimg img

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

function main() {
    Log(exchange.GetAccount()); // 看过API 文档后知道, exchange就是交易所对象,实际上策略有个全局变量
                                // exchanges 数组,这个数组存放的就是你创建机器人或者回测时添加的交易所(可以是多个)
                                // 添加1个交易所 exchanges 数组就只包含1个交易所对象,即添加的交易所对象。
                                // 那么 exchange 和 exchanges 是什么关系呢? 其实 exchange 就是 exchanges[0] ,
                                // exchange 就是 exchanges 数组的第一个元素(这里这个元素是交易所对象)。
                                
                                // Log()函数应该也不陌生吧,这个API 就是输出一条日志,日志内容就是Log括号里面的参数。
}

ایک روبوٹ بنانا جسے ٹیسٹ ون بھی کہا جاتا ہے ، کوڈ ٹیسٹ ون نامی پابند حکمت عملی کا استعمال کرتے ہوئے ایجاد کنندہ کی طرف سے کیوٹیفائی کیا گیا ہے۔img img

یہ حکمت عملی فوری طور پر چلتی ہے اور اکاؤنٹ کی معلومات دکھاتی ہے۔img

یہ ظاہر ہوتا ہے کہ ہم اکاؤنٹ کی معلومات کے ساتھ موازنہ کرتے ہیں جو ہم نے ڈسک پر دیکھا تھا۔img

  • مارکیٹ کے اعداد و شمار حاصل کریں

function main() {
    Log(exchange.GetAccount()); // 已经知道怎么获取 主交易所 账户信息了
    //下面我们来试试 不停的获取行情数据。 
    while(true){ // 这里用一个无限循环的结构来不停的获取 交易所行情数据。
        Log("行情数据:", exchange.GetTicker()); // 哇! Log() 函数的括号里面可以写2个参数,第一个参数是: "行情数据:"
                                               // 第二个参数是 exchange.GetTicker() 这个函数的返回值。就是主交易所的行情数据。
                                               // 注意 Log() 函数的参数要用 逗号分隔。
        Sleep(1000);   // 咦~ 这个又是什么? 答:机器人程序 执行循环也需要休息!它可是执行很快的哦!(一秒N次)
                       // Sleep 函数的作用就是让程序暂停一会儿,括号里面的参数 1000 是 毫秒数, 1秒 = 1000毫秒。Sleep(1000);就是暂停1000毫秒。
                       // 不要小看这个参数,这个参数控制了程序的轮询频率,间接影响访问 交易所API 的频率,有些交易所API访问过于频繁可是会拒绝访问的。
    }
}

img نوٹ:شاید آپ کو معلوم ہو کہ گیٹ ٹکر فنکشن کی طرف سے حاصل کردہ اعداد و شمار میں سب سے زیادہ قیمت اور سب سے کم قیمت میں بہت فرق ہے۔ اس کے بارے میں ، گیٹ ٹکر کے ذریعہ واپس آنے والے مارکیٹ کے اعداد و شمار کی اعلی ، کم قیمت ایک معاہدہ شدہ سائیکل کے اندر اندر سب سے زیادہ ، سب سے کم قیمت ہے ، خاص طور پر تبادلے کی ترتیب کے مطابق۔

  • K لائن ڈیٹا حاصل کریں

    آئیے پہلے ای پی آئی دستاویزات کی وضاحت دیکھتے ہیں:
GetRecords(Period)	返回一个K线历史, K线周期在创建机器人时指定, Record数组结构
不加参数, 默认返回添加机器人时时指量的K线周期, 但也可以自定义K线周期
支持: PERIOD_M1 指1分钟, PERIOD_M5 指5分钟, PERIOD_M15 指15分钟, PERIOD_M30 指30分钟, PERIOD_H1 指1小时, PERIOD_D1 指一天

ہم نے کوڈ کا ایک ٹکڑا لکھا ہے اور اسے ٹیسٹ کیا ہے کہ کیا ہم ڈیفالٹ سائیکل (5 منٹ) کے لئے K لائن ڈیٹا حاصل کرسکتے ہیں؟

function main() {
    Log(exchange.GetAccount()); // 已经知道怎么获取 主交易所 账户信息了
    //下面我们来试试 不停的获取行情数据。 
    var records = exchanges[0].GetRecords();  // 按照默认周期获取K线数据
    Log("records:", records);  // 在日志中输出 获取到的K线数据。
}

آؤٹ پٹ دکھائیں: ریکارڈز: [{Time:1478260200000,Open:4765.14,High:4773,Low:4764.54,Close:4769.47,Volume:5211.5399999999}، {Time:1478260500000,Open:4769.47,High:4773.01,Low:4764,Close:4764.78,Volume:3742.250000000002}، {Time:1478260800000,Open:4764.78,High:4782,Low:4764,Close:4781.28,Volume:7929.090000000004}، {Time:1478261100000,Open:4781.28,High:4795,Low:4774,Close:4792.02,Volume:11793.540000000006}، {Time:1478261400000,Open:4792.02,High:4792.96,Low:4781,Close:4786.78,Volume:9204.90000000001}، {Time:1478261700000,Open:4786.51,High:4788.66,Low:4775,Close:4775.31,Volume:7722.33999999965}

جیسا کہ آپ دیکھ سکتے ہیں کہ متغیر ریکارڈز ایک ساختی صف ہے جو K لائن کے وقت کے مطابق ترتیب دی گئی ہے، دور سے قریب تک۔ ہم K لائن کے بارے میں بات کرتے ہیں: ((کچھ گراف سرخ سورج کی روشنی کے لئے ہیں ، سبز صنف کے لئے ہیں ، اور کچھ اس کے برعکس رنگ کے لئے ہیں۔))imgذیل میں پلیٹ فارم کے 5 منٹ کے دورانیے کے لئے K لائن مثال چارٹ ملاحظہ کریں۔img نوٹ:ایک K لائن کا دورانیہ مکمل ہونے کے بعد ہی اس کی قدر طے ہوتی ہے۔ عملی استعمال میں ہم var records = exchanges[0] کو کال کرتے ہیں۔ GetRecords (() ؛ واپس آنے والے ڈیٹا ریکارڈز صف میں آخری عنصر یعنی: records[records.length - 1] ، اس کا دورانیہ مکمل ہونے تک مستقل طور پر بدلتا رہتا ہے۔ یہاں تک کہ ممکنہ طور پر آخری سیکنڈ میں ، سورج کی روشنی سے جینس تبدیل ہوجاتا ہے۔

GetRecords فنکشن بغیر کسی پیرامیٹر کے پالیسی کی ترتیبات کے مطابق ڈیفالٹ دوروں کا ڈیٹا واپس کرتا ہے۔ یہ بھی ممکن ہے کہ پیرامیٹرز کو K لائنوں کے دوروں کی وضاحت کے لئے منتقل کیا جائے۔ فی الحال، ریٹرننگ سسٹم نے پیرامیٹرز کو منتقل کرنے کے لئے پیرامیٹرز کو منتقل کرنے کے لئے پیرامیٹرز کی وضاحت کرنے کے لئے GetRecords کی حمایت کی ہے (غیر پیرامیٹرز کے مطابق ڈیفالٹ دوروں کا ڈیٹا واپس) تاکہ پالیسی ریٹرننگ کے دوران ایک ہی وقت میں مختلف دوروں کا استعمال کیا جاسکے۔

  • مارکیٹ کی گہرائی سے معلومات حاصل کریں

    GetDepth ایک گہرائی ساخت واپس کرتا ہے
function main() {
    var depth = exchanges[0].GetDepth();   //获取市场深度信息,  返回订单薄信息,一个对象包含2个属性,每个属性是一个对象数组。
    Log("depth:", depth);    // 日志中输出,一下的输出是 整理过的格式,是方便读者理解,实际上是所有内容都在一行显示的。
}

مندرجہ بالا کوڈ کی جانچ پڑتال مندرجہ ذیل ہے:

depth: 
{"Asks":[{"Price":4726.07,"Amount":15},   // 卖单数组,回测时,数据都是模拟出来的,所以Amount 都是 15,索引为0的是卖一,依次类推。
         {"Price":4726.08,"Amount":15},
         {"Price":4726.09,"Amount":15},
         {"Price":4726.1,"Amount":15},
         {"Price":4726.11,"Amount":15},
         {"Price":4726.12,"Amount":15},
         {"Price":4726.13,"Amount":15},
         {"Price":4726.14,"Amount":15},
         {"Price":4726.15,"Amount":15},
         {"Price":4726.16,"Amount":15},
         {"Price":4726.17,"Amount":15}],
"Bids":[{"Price":4726.05,"Amount":15},   //  买单数组,索引为0的是买一, 向后依次类推。
        {"Price":4726.04,"Amount":15},
        {"Price":4726.03,"Amount":15},
        {"Price":4726.02,"Amount":15},
        {"Price":4726.01,"Amount":15},
        {"Price":4726,"Amount":15},
        {"Price":4725.99,"Amount":15},
        {"Price":4725.98,"Amount":15},
        {"Price":4725.97,"Amount":15},
        {"Price":4725.96,"Amount":15},
        {"Price":4725.95,"Amount":15}]
}

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

img

مارکیٹ کی گہرائی سے متعلق معلومات کے ساتھ کیا کرنا ہے؟ مارکیٹ کے اعداد و شمار کے بہت سے استعمال ہوتے ہیں ، مثال کے طور پر کھانے کی فہرست (یقینی طور پر ، فہرست بھی ہے) ۔

function main() {    
    var depth = exchanges[0].GetDepth();    // 获取市场深度
    Log("depth:", depth);                   // 日志输出显示
    Log(exchanges[0].GetAccount());         // 输出 吃单前的 账户信息
    var buyPrice = depth.Asks[0].Price;     // 设置吃卖单的价格,即卖一,
                                            // 有时为确保吃单成功,这样处理:var buyPrice = depth.Asks[0].Price + slidePrice;
    var buyAmount = depth.Asks[0].Amount;   // 吃卖单的量
    exchanges[0].Buy(buyPrice, buyAmount);  // 执行买入操作, 吃掉卖一 这个单子
    Log(exchanges[0].GetAccount());         // 显示买入后的  账户信息,对比初始账户信息。可以对比出 买入操作的成交的数量。
}

انوینٹر کیوٹیفیکیشن کے نتائج:img


مزید

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

فلائی ڈاگاس مسئلے کو شامل کریں: روبوٹ کی فہرست میں ، حالت سرخ رنگ کے اوپری مثلث میں ایک حیرت انگیز نشان ہے ، جیسے کہ یہ غیر معمولی اشارہ ہے۔

فلائی ڈاگہیلو ، میں پلیٹ فارم کا تجربہ کر رہا ہوں ، پہلا قدم اکاؤنٹ کی معلومات کی جانچ کرنا ہے ، کوئی لاگ آؤٹ پٹ نہیں ہے ، غلطی کا اشارہ ہے ، مجھے نہیں معلوم کہ مسئلہ کہاں ہے؟ روبوٹ ٹیسٹ کا کوڈ: function main (() { لاگ ((exchange.GetAccount (()) ؛ لاگ (("ٹیسٹ"); } نتائج: ٹیسٹ 1 حکمت عملی: ٹیسٹ 1 (آخری تازہ کاری 2018-09-13 14:25:33) تاریخ: 2018-09-13 14:07:57 تازہ ترین آغاز 2018-09-13 14:40:24 بندش 2018-09-13 14:40:25 حالت: K لائن کا دورانیہ 1 منٹ میں خرابی ہے۔ چین میں میزبان: 42.236.82.38 - linux/amd64 (عوامی) ، ID: 118025 ٹریڈنگ پلیٹ فارم: BotVS/BTC_USD

فلائی ڈاگہیلو ، میں پلیٹ فارم کا تجربہ کر رہا ہوں ، پہلا قدم اکاؤنٹ کی معلومات کی جانچ کرنا ہے ، کوئی لاگ آؤٹ پٹ نہیں ہے ، غلطی کا اشارہ ہے ، مجھے نہیں معلوم کہ مسئلہ کہاں ہے؟ روبوٹ ٹیسٹ کا کوڈ: function main (() { لاگ ((exchange.GetAccount (()) ؛ لاگ (("ٹیسٹ"); } نتائج: ٹیسٹ 1 حکمت عملی: ٹیسٹ 1 (آخری تازہ کاری 2018-09-13 14:25:33) تاریخ: 2018-09-13 14:07:57 تازہ ترین آغاز 2018-09-13 14:40:24 بندش 2018-09-13 14:40:25 حالت: K لائن کا دورانیہ 1 منٹ میں خرابی ہے۔ چین میں میزبان: 42.236.82.38 - linux/amd64 (عوامی) ، ID: 118025 ٹریڈنگ پلیٹ فارم: BotVS/BTC_USD

ہاکسلاٹو`exchange.GetTicker()` کو کال کرتے وقت ، اکثر **GetTicker: timeout** ظاہر ہوتا ہے ، براہ کرم کیوں؟

ڈھیہہیلو، کیا آپ کو لگتا ہے کہ حقیقی ڈیجیٹل اعداد و شمار کا استعمال کرتے ہوئے حقیقی ڈیٹا کا استعمال کیا جاتا ہے؟

بیجاسوشِوِشِزَونگ

شاندیانلیوبراہ کرم exchange.GetDepth (() کو پوچھیں کہ کیا موجودہ تبادلے کی تمام معلومات واپس آتی ہے؟ کیا یہ بہت زیادہ تبادلے کی وجہ سے صرف کچھ ڈیٹا واپس کرے گا؟

ماؤ باؤGetRecords ((Period) ایک K لائن کی تاریخ واپس کرتا ہے، لیکن اس K لائن کی تاریخ میں کتنے K لائن بار ہیں، اور یہ کہاں مخصوص ہے؟

پینگلیہینگٹھیک ہے، میں نے غلطی کی تھی، میں نے اسے درست کر دیا ہے۔

پینگلیہینگGetAccount: دستخطوں میں مماثلت یہ کیسے ہوا، مونگو بھائی؟

اینڈی2 سادہکیوں ڈسک کی گہرائی کی رقم 15 ہے؟ ڈسک ماضی کے اعداد و شمار یا تصادفی طور پر تیار کردہ اعداد و شمار کی ہے؟ اگر یہ ماضی کا ڈیٹا ہے تو ، رقم قابل قدر ہے۔

cjz140record ایک فنکشن ہے، length کیا ہے؟ depth ایک آبجیکٹ ہے؟ آبجیکٹ اور فنکشن میں کیا فرق ہے؟ مثال کے طور پر depth ((Asks ((price,amount)) ، جہاں depth ایک آبجیکٹ ہے، asks ایک صف ہے؟ price اور amount خصوصیات ہیں؟

فینگ بیسلائیڈ پرائس کیا ہے؟

چھوٹا سا خواباگر آپ کے پاس کوئی سوال ہے تو ، آپ کو اس کو شامل کرنے کی ضرورت ہے۔ @ ایڈمنسٹریٹر

فلائی ڈاگبہت بہت شکریہ آپ کے جوابات کے لئے۔ میں نے مشورہ دیا اور پھر کوشش کروں گا۔

چھوٹا سا خوابمیں نہیں جانتا کہ یہ عوامی میزبان کا مسئلہ ہے یا نہیں ، آپ نجی میزبان کا استعمال کرکے جانچ سکتے ہیں ، نجی میزبان ممکن ہونا چاہئے ، آپ اپنے کمپیوٹر پر ایک کو تعینات کرتے ہیں۔

چھوٹا سا خوابآپ اپنے نجی میزبان سے کوشش کر سکتے ہیں۔

چھوٹا سا خوابیہ اس بات کی نشاندہی کرسکتا ہے کہ حکمت عملی کس طرح کی عملدرآمد کی منطق ہے ، یا یہ ممکن ہے کہ حکمت عملی اچھی طرح سے چل رہی ہو ، لیکن کسی بھی عمل کو متحرک نہ کرے۔

چھوٹا سا خوابسرخ رنگ کے اشارے سے پتہ چلتا ہے کہ روبوٹ چل رہا ہے۔ غلطی کی اطلاع دینے کے لئے ، روبوٹ لاگ ان ، یا منتظم لاگ ان کی معلومات کو چیک کرنا ضروری ہے۔

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

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

شاندیانلیوٹھیک ہے، میں سمجھ گیا، شکریہ

چھوٹا سا خواباس کے علاوہ ، یہ بھی کہا جاتا ہے کہ اس کی قیمتوں کا تعین کرنے کے لئے ، آپ کو اس کی قیمتوں کا تعین کرنے کی ضرورت ہے۔

شاندیانلیوبہت بہت شکریہ۔ اس کے علاوہ ، براہ کرم پوچھیں ، جب ہم نے ریئل ڈسک کی سطح کی تقلید کی تو ، exchange.GetDepth (() واپس آیا۔ کیا یہ BotVS کے مطابق ڈیٹا ہے یا حقیقی تاریخی اعداد و شمار؟

چھوٹا سا خوابواپسی کی فائلوں کی تعداد کی تفصیلات دیکھیں کہ کس طرح تبادلہ API انٹرفیس فراہم کرتا ہے ، کچھ تبادلے زیادہ سے زیادہ واپسی کرتے ہیں ، اور کچھ تبادلے انٹرفیس کی حمایت کرتے ہیں گہرائی میں انضمام ، کچھ کی حمایت نہیں کرتے ہیں ، خاص طور پر تبادلے پر منحصر ہے ، بوٹ وی ایس کو ڈیفالٹ کے طور پر ڈیٹا واپس کرنے کے لئے پیک کیا گیا ہے ، اگر آپ براہ راست کال کرنا چاہتے ہیں تو ، آپ تبادلہ.IO فنکشن کا استعمال کرسکتے ہیں ، پیرامیٹرز کو ترتیب دیں کال کریں ((یہ فنکشن دستخط سے پاک ہے ، API دستاویزات میں مزید ملاحظہ کریں)).

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

چھوٹا سا خواب^^ شروع میں میں نے بھی غلطی کی ہے~

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

اینڈی2 سادہگہری اعداد و شمار ابھی تک نہیں ہوئے ہیں ، قیمتوں کے منحنی خطوط ماضی میں ہوئے ہیں۔ افراد کا خیال ہے کہ ماضی اور مستقبل کے اعداد و شمار کے ساتھ مل کر موجودہ خرید و فروخت کا فیصلہ کرنا زیادہ قابل اعتماد ہے۔ گہری اعداد و شمار کو بھی ریکارڈ کرنے کی سفارش کی جاتی ہے۔

چھوٹا سا خوابگہرائی کے اعداد و شمار بہت زیادہ ہیں۔ اگر تمام ریکارڈ کیے جائیں تو بہت زیادہ ہوگا۔ لہذا گہرائی کے اعداد و شمار کے علاوہ دوسرے اعداد و شمار کے اعداد و شمار کے اعداد و شمار کے اعداد و شمار ہیں۔

چھوٹا سا خوابrecords ایک متغیر ہے جو API فنکشن GetRecords کی طرف سے واپس کیے گئے K لائن ڈیٹا کو حاصل کرنے کے لئے استعمال کیا جاتا ہے، length JS زبان میں عددی قسم کے متغیر کی لمبائی کی خصوصیت ہے، جو کہ صف کی لمبائی (یعنی اس میں موجود عناصر کی تعداد) کی نمائندگی کرتی ہے، depth کی طرح records بھی ایک متغیر ہے جو GetDepth فنکشن کی طرف سے واپس کیے گئے گہرائی کے اعداد و شمار کو حاصل کرنے کے لئے استعمال کیا جاتا ہے، یہ records، depth، ticker کے اعداد و شمار کی ساخت API دستاویزات میں پایا جا سکتا ہے.

چھوٹا سا خواباس کا مطلب یہ ہے کہ ایک چھوٹی سی قیمت کے علاوہ ایک چھوٹی سی قیمت کے لئے کھانا کھلانا آسان ہے۔