2.1 অ্যাকাউন্ট তথ্য, মার্কেট ডেটা, কে-লাইন ডেটা, বাজার গভীরতার তথ্য পেতে API ব্যবহার করুন

লেখক:ছোট্ট স্বপ্ন, তৈরিঃ ২০১৬-১১-০৫ ১৬ঃ৪১ঃ০৪, আপডেটঃ ২০১৯-০৮-০১ ০৯ঃ৩১ঃ২৩

2.1 অ্যাকাউন্ট তথ্য, মার্কেট ডেটা, কে-লাইন ডেটা, বাজার গভীরতার তথ্য পেতে API ব্যবহার করুন

অবশেষে দ্বিতীয় অধ্যায়, যা পূর্ববর্তী অধ্যায়ের একটি ট্যুরের মাধ্যমে উদ্ভাবকদের পরিমাণের বিভিন্ন বৈশিষ্ট্য সম্পর্কে কিছু ধারণা থাকা উচিত; তারপর কোড লিখতে শুরু করুন!


  • অ্যাকাউন্ট তথ্য API ব্যবহার করে পান

    ধরুন, প্রথম অধ্যায়ের ট্যুরের মধ্য দিয়ে আমরা ম্যানেজার, এক্সচেঞ্জ যোগ করেছি, এবং অবশ্যই আমরা ইনভেন্টর কোয়ালিফাইড অ্যানালগ ডিস্ক ব্যবহার করে কোড টেস্ট করতে পারি।

    প্রথমত, আমরা একটি কৌশল তৈরি করি, যা আমরা টেস্ট-১ বলি।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 নোটঃকিছু শিক্ষার্থী হয়তো জানতে পারবে যে, GetTicker ফাংশন দ্বারা প্রাপ্ত তথ্যের সর্বোচ্চ মূল্য এবং সর্বনিম্ন মূল্যের মধ্যে অনেক পার্থক্য রয়েছে। অর্থাৎ, GetTicker দ্বারা ফিরে আসা বাজারের তথ্যের High, Low হল এক্সচেঞ্জের দ্বারা নির্ধারিত চক্রের মধ্যে সর্বোচ্চ, সর্বনিম্ন মূল্য।

  • কে-লাইন তথ্য সংগ্রহ করা

    এপিআই ডকুমেন্টের বর্ণনা দেখে নেওয়া যাকঃ
GetRecords(Period)	返回一个K线历史, K线周期在创建机器人时指定, Record数组结构
不加参数, 默认返回添加机器人时时指量的K线周期, 但也可以自定义K线周期
支持: PERIOD_M1 指1分钟, PERIOD_M5 指5分钟, PERIOD_M15 指15分钟, PERIOD_M30 指30分钟, PERIOD_H1 指1小时, PERIOD_D1 指一天

আমরা একটি কোড লিখেছি যা ডিফল্ট চক্র (৫ মিনিট) এর জন্য কে-লাইন ডেটা সংগ্রহ করে।

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-রেখা সময়ের ক্রম অনুসারে দূর থেকে নিকটতম ক্রম অনুসারে সাজানো হয়েছে। যাইহোক, আমরা কে লাইনটি বুঝতে পারিঃ ((কিছু গ্রাফের লালটি সূর্যের রেখা, সবুজটি লিঙ্গের রেখা, এবং কিছু বিপরীত রঙের প্রতিনিধিত্ব করে))imgনীচে প্ল্যাটফর্মের 5 মিনিটের চক্রের জন্য একটি কে-লাইন উদাহরণ চার্ট দেখুন।img সতর্কতাঃএকটি K-রেখা চক্রের সমাপ্তির পরে, এর মান নির্ধারিত হয়। বাস্তব ব্যবহারে আমরা var records = exchanges[0] কল করি। GetRecords ((); রিটার্ন করা ডেটা রেকর্ডস অ্যারেতে শেষ উপাদানটি হ'লঃ records[records.length - 1], যা চক্রটি শেষ না হওয়া পর্যন্ত অবিচ্ছিন্নভাবে পরিবর্তিত হয়। এমনকি শেষ সেকেন্ডে সূর্যের আলো থেকে ক্যান্সারে রূপান্তরিত হতে পারে।

GetRecords ফাংশনটি প্যারামিটার ছাড়াই প্যারামিটার সেট করা ডিফল্ট চক্র অনুযায়ী ডেটা ফেরত দেয়। আপনি প্যারামিটারগুলিও পাস করতে পারেন যা K-শ্রেণীর চক্র নির্দিষ্ট করে। বর্তমানে, পুনরাবৃত্তি সিস্টেমগুলি প্যারামিটারগুলি পাস করতে সমর্থন করে।

  • বাজারের গভীর তথ্য পেতে

    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}]
}

সংশ্লিষ্ট অর্ডার পিনটি এরকম ((এখানে OKCoin এর আসল তথ্য) ⇒ প্রকৃতপক্ষে প্রক্রিয়াটির সময় বাজারের গভীরতার তথ্য ((অর্ডার পিন) দ্রুত পরিবর্তিত হয়, আগ্রহী শিক্ষার্থীরা OKCoin নিবন্ধন করতে পারে এবং তারপরে লগ ইন করে দেখতে পারে।

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 (() { Log ((exchange.GetAccount (())); Log (("পরীক্ষা"); } ফলাফলঃ পরীক্ষা ১ কৌশলঃ পরীক্ষা ১ (শেষ আপডেট ২০১৮-০৯-১৩ ১৪ঃ২৫ঃ৩৩) তারিখঃ 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 (পাবলিক), আইডিঃ 118025 ট্রেডিং প্ল্যাটফর্মঃ BotVS/BTC_USD

ফ্লাইডগছোট্ট স্বপ্ন, হ্যালো, আমি প্ল্যাটফর্মের সাথে সিমুলেশন পরীক্ষা করছি, প্রথম ধাপে অ্যাকাউন্টের তথ্য পরীক্ষা করছি, কোনও লগ আউটপুট নেই, ত্রুটি নির্দেশ করে, সমস্যাটি কোথায়? রোবট টেস্ট কোডঃ function main (() { Log ((exchange.GetAccount (())); Log (("পরীক্ষা"); } ফলাফলঃ পরীক্ষা ১ কৌশলঃ পরীক্ষা ১ (শেষ আপডেট ২০১৮-০৯-১৩ ১৪ঃ২৫ঃ৩৩) তারিখঃ 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 (পাবলিক), আইডিঃ 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 হল বৈশিষ্ট্য?

ফ্যাংবিস্লাইড প্রাইস কি?

ছোট্ট স্বপ্নঠিক আছে, যদি আপনার কোন প্রশ্ন থাকে তাহলে আপনি কিউকিউ অফিসিয়াল গ্রুপ যোগ করতে পারেন @ অ্যাডমিন

ফ্লাইডগঅনেক অনেক ধন্যবাদ, আমি পরামর্শ অনুসারে চেষ্টা করেছি, আবার চেষ্টা করব।

ছোট্ট স্বপ্নআমি জানি না এটা পাবলিক হোস্টের সমস্যা কি না, আপনি প্রাইভেট হোস্ট ব্যবহার করে পরীক্ষা করতে পারেন, প্রাইভেট হোস্ট করা উচিত, আপনি আপনার কম্পিউটারে একটি স্থাপন করতে পারেন।

ছোট্ট স্বপ্নআপনি আপনার ব্যক্তিগত হোস্ট ব্যবহার করে দেখুন।

ছোট্ট স্বপ্নএটি হতে পারে যে নীতিটি কী প্রয়োগের যুক্তি, অথবা এটি হতে পারে যে নীতিটি সঠিকভাবে কাজ করে, কিন্তু কোনও ক্রিয়াকলাপ ট্রিগার করে না।

ছোট্ট স্বপ্নযদি রোবট চালিত হয়, তাহলে লাল চিহ্নের সাহায্যে একটি ত্রুটি রিপোর্ট করা হয় এবং রোবট লগ বা অ্যাডমিনিস্ট্রেটর লগের তথ্য পরীক্ষা করা প্রয়োজন।

ছোট্ট স্বপ্নসাম্প্রতিক নেটওয়ার্ক সমস্যা, এছাড়াও অ্যালগরিদম ডিস্কে অ্যাকাউন্ট আপডেট না করা হলে অপ্রচলিত, আপনি exchange.IO (("mode") ব্যবহার করে অ্যাকাউন্ট প্রাপ্তি মোড সামঞ্জস্য করতে পারেন।

ছোট্ট স্বপ্নএকটি বাস্তব ডিস্ক একটি 24 ঘন্টা চলমান সিমুলেট ডিস্ক, যা বেশ কয়েকটি মূলধারার এক্সচেঞ্জের বাজার অনুসরণ করে।

শানদিয়ানলিউঠিক আছে, আমি বুঝতে পেরেছি, ধন্যবাদ।

ছোট্ট স্বপ্নবাস্তব মানের পুনরায় পরিমাপ, কেনা বেচা 1 গজ বাস্তব তথ্য ।

শানদিয়ানলিউঅনেক ধন্যবাদ. এছাড়াও, অনুগ্রহ করে জিজ্ঞাসা করুন যে, অ্যালগরিদম পুনরায় পরীক্ষা করার সময়, এক্সচেঞ্জ.গেটডিপথ ()) কি বটভিএস-সমন্বিত ডেটা বা প্রকৃত ঐতিহাসিক ডেটা ফেরত দেয়?

ছোট্ট স্বপ্নরিটার্ন ফাইলের সংখ্যা কতটি দেখুন এক্সচেঞ্জের API ইন্টারফেস সরবরাহ করে, কিছু এক্সচেঞ্জের রিটার্ন বেশি কিছু কম, এবং কিছু এক্সচেঞ্জ ইন্টারফেস সমর্থন করে গভীরতা একীভূত, কিছু সমর্থন করে না, নির্দিষ্টভাবে এক্সচেঞ্জের বাস্তবায়নের উপর নির্ভর করে, বটভিএস ডিফল্টরূপে ডেটা ফেরত দেয়, যদি আপনি সরাসরি কল করতে চান তবে আপনি exchange.IO ফাংশনটি ব্যবহার করতে পারেন, প্যারামিটার সেট করুন কল করুন ((এই ফাংশনটি স্বাক্ষর মুক্ত, আরও দেখুন API ডকুমেন্টেশন) ।) ।

ছোট্ট স্বপ্নএটি নির্দিষ্ট করতে পারে না যে, কতটি K-লাইন এক্সচেঞ্জের দ্বারা নির্দিষ্টভাবে প্রেরণ করা হয়, প্রতিটি এক্সচেঞ্জের জন্য এটি ভিন্ন হতে পারে। অন্যান্য এক্সচেঞ্জগুলিতে K-লাইন ইন্টারফেস সরবরাহ করা হয় না। ম্যানেজার স্বয়ংক্রিয়ভাবে এক্সচেঞ্জের লেনদেনের রেকর্ড সংগ্রহ করে, K-লাইন উত্পন্ন করে, যা প্রথমটি থেকে শুরু হয়।

ছোট্ট স্বপ্নপ্রথম দিকে আমিও ভুল করতাম।

ছোট্ট স্বপ্নঠিক আছে, আসুন আমরা এটি বিবেচনা করি, এই প্রশ্নের মূলত দুটি কারণ রয়েছেঃ - ১, গভীরতা ডেটা খুব বড়, প্রতি সেকেন্ডে পরিবর্তিত হয়, এবং দ্রুত গতিতে পরিবর্তিত হয়, আমরা যা দেখি তা হ'ল আসল স্লট ডেটা। - ২, প্রকৃত গভীরতার তথ্য তৈরি করা হলেও, কারণ এই মুহুর্তে পুনরায় পরীক্ষার অংশগ্রহণকারীরা কেবলমাত্র আমরা এবং অন্য কোনও অংশগ্রহণকারী নেই, এটি অর্ডার করা পাতলা গভীরতার পরিবেশকে সঠিকভাবে সিমুলেট করতে পারে না; আসলে বর্তমান পুনরায় পরীক্ষার সিস্টেমের চেয়ে খুব বেশি আলাদা নয়। তবে আমরা চেষ্টা করব যতটা সম্ভব বাস্তবতার কাছাকাছি অপ্টিমাইজ করার জন্য, আপনার পরামর্শের জন্য ধন্যবাদ ^^

অ্যান্ডি 2 সহজগভীর তথ্য এখনও ঘটেনি, মূল্য কার্ভগুলি অতীতে ঘটেছে। ব্যক্তিরা বিশ্বাস করে যে অতীত এবং ভবিষ্যতের ডেটা একসাথে বর্তমান কেনা বেচা রায়কে আরও নির্ভরযোগ্য করে তোলে। গভীর তথ্যও রেকর্ড করার পরামর্শ দেওয়া হয়।

ছোট্ট স্বপ্নগভীরতা ডেটা খুব বড় যদি সব রেকর্ড করা হয় তবে খুব বেশি হবে। সুতরাং গভীরতা ডেটা প্রথম গ্রেড ব্যতীত অন্য সবগুলি অ্যালগরিদমিক মান।

ছোট্ট স্বপ্নrecords হল একটি ভেরিয়েবল, যা API ফাংশন GetRecords দ্বারা ফিরে আসা K-লাইন ডেটা গ্রহণ করতে ব্যবহৃত হয়, length হল JS ভাষায় অ্যারে টাইপ ভেরিয়েবলের দৈর্ঘ্য বৈশিষ্ট্য, যা অ্যারে দৈর্ঘ্য (যেমন এর উপাদান সংখ্যা) প্রতিনিধিত্ব করে। depth এর মতো records হল একটি ভেরিয়েবল, যা GetDepth ফাংশন দ্বারা ফিরে আসা গভীরতার ডেটা গ্রহণ করতে ব্যবহৃত হয়। এই records, depth, ticker এর ডেটা স্ট্রাকচার API ডকুমেন্টেশনে পাওয়া যাবে।

ছোট্ট স্বপ্নস্লাইডিং দাম, অনুবাদটি কিছুটা সোজা, একক খাবারের জন্য একক দামের সাথে আরও সহজ চুক্তি করা।