3
ফোকাস
1444
অনুসারী

FMZ পরিমাণগত প্ল্যাটফর্ম কৌশল লেখার মৌলিক টিউটোরিয়াল (অবশ্যই পড়তে হবে)

তৈরি: 2019-08-13 17:47:27, আপডেট করা হয়েছে: 2021-08-06 10:29:46
comments   33
hits   69033

[TOC] এই টিউটোরিয়ালটি নীতিমালা লেখার প্রাথমিক জ্ঞান নিয়ে গঠিত, যার মধ্যে রয়েছে এপিআই উপস্থাপনা, পর্যালোচনা, চার্ট ইত্যাদি। এই মৌলিক টিউটোরিয়ালটি শেখার পরে, ব্যবহারকারীরা মৌলিক এপিআই ব্যবহার করতে এবং স্থিতিশীল রিয়েল-ডিস্ক নীতিমালা লিখতে সক্ষম হবেন। এই টিউটোরিয়ালটি শেখার আগে, প্রথমে শিখতে হবেএফএমজেড ইনভেন্টরস কোয়ান্টাম প্ল্যাটফর্ম ব্যবহারের সূচনা 。

পুরাতন টিউটোরিয়ালঃইনভেন্টর কোয়ান্টাম (FMZ.COM) কৌশল সম্পূর্ণ ব্যবহারের ম্যানুয়াল ২.০ (টিউটোরিয়াল), এই টিউটোরিয়ালটি অনেকগুলি পোস্টের সূচক দেয়, যা দেখার পরামর্শ দেওয়া হচ্ছে।

নীতিমালার প্রাথমিক বিবরণ

এপিআই সম্পর্কে

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

বর্তমানে ডিজিটাল মুদ্রা এক্সচেঞ্জের প্রধানত দুটি ইন্টারফেস প্রোটোকল রয়েছেঃ REST এবং Websocket। REST প্রোটোকলটি প্রতিবার ডেটা পাওয়ার জন্য একবার অ্যাক্সেস করা প্রয়োজন। উদাহরণস্বরূপ, সিমুলেশন এক্সচেঞ্জ Wex.app এর এপিআই, সরাসরি ব্রাউজারে https://api.wex.app/api/v1/public/ticker?market=BTC_USDT খুলুন এবং ফলাফলঃ

{"data:{"buy":"11351.73","high":"11595.77","last":"11351.85","low":"11118.45","open":"11358.74","quoteVol":"95995607137.00903936","sell":"11356.02","time":1565593489318,"vol":"3552.5153"}}

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

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

বিভিন্ন প্রোগ্রামিং ভাষা

এফএমজেড প্ল্যাটফর্ম এপিআই ডকুমেন্টেশনের বেশিরভাগ উদাহরণ জাভাস্ক্রিপ্টের উপর ভিত্তি করে, তবে প্যাকেজিংয়ের কারণে, বিভিন্ন ভাষার মধ্যে প্রায় কোনও পার্থক্য নেই, কেবল ব্যাকরণগত সমস্যার দিকে মনোযোগ দেওয়া দরকার। C ++ কিছুটা বিশেষ, পরবর্তী টিউটোরিয়ালগুলিতে বিশেষ ভূমিকা থাকবে। Js তুলনামূলকভাবে সহজ এবং সামঞ্জস্যের সমস্যা নেই, তাই নতুনদের ব্যবহারের পরামর্শ দেওয়া হয়। এফএমজেড কোয়ান্টেশন প্ল্যাটফর্ম সম্পূর্ণ পাইথন সমর্থন করে, বিভিন্ন প্যাকেজগুলি অবাধে ইনস্টল করা যায় এবং কিছু প্রোগ্রামিং বেসিক ব্যবহারের পরামর্শ দেওয়া হয়।

Python এর বিভিন্ন সংস্করণ রয়েছে, তাই এটি প্রোগ্রামের শুরুতে নির্দিষ্ট করা যেতে পারে, যেমন#!Python2,#!Python3❚ নোট করুন যে জাভাস্ক্রিপ্ট সম্প্রতি ইএস 6 ব্যাকরণ আপগ্রেড করেছে, আগ্রহীরা এটি জানতে পারেন। নীচে একই ফাংশনগুলির জন্য পাইথন এবং জাভাস্ক্রিপ্ট কোড প্রদর্শিত হয়েছে, কেবল ব্যাকরণগত পার্থক্য রয়েছে, সুতরাং এপিআই ডকুমেন্টেশনটি কেবল জাভাস্ক্রিপ্টের উদাহরণ দেয়। এই টিউটোরিয়ালটি পাইথনের বিশেষ ব্যবহারের ক্ষেত্রেও কাজ করবে ❚

#python代码
def main():
    while True:
        Log(exchange.GetAccount().Balance)
        Sleep(2000)
#相应的Js代码
function main(){
    while(true){
        Log(exchange.GetAccount().Balance)
        Sleep(2000)
    }
}

তথ্যসূত্র

  • এফএমজেড প্ল্যাটফর্ম এপিআই ডকুমেন্টেশন, এই টিউটোরিয়ালটি প্রতিটি ইন্টারফেস সম্পর্কে বিস্তারিতভাবে আলোচনা করবে না, এই ডকুমেন্টেশনটি দেখুনঃ https://www.fmz.com/api
  • আপনি যদি ট্রেডিংভিউয়ের সিগন্যাল পেতে চান, তাহলে FMZ-এ ট্রেডিং করতে চাইলে এই নিবন্ধটি দেখুনঃ https://www.fmz.com/digest-topic/5533
  • জাভাস্ক্রিপ্ট, পাইথন দ্রুত শুরু, সহজ কৌশল লিখতে জটিল ব্যাকরণ প্রয়োজন হয় না, শুধুমাত্র কিছু মৌলিক ধারণা মাস্টার প্রয়োজন, আপনি প্রোগ্রামিং শিখতে পারেন, এই টিউটোরিয়ালটি শেখার সময়ঃ https://www.fmz.com/bbs-topic/382 https://www.fmz.com/bbs-topic/417
  • ম্যাক ভাষায় ডকুমেন্টেশন, ট্রেন্ডিং কৌশলগুলির জন্য ম্যাক ভাষায়ও সুবিধাজনক।
  • একটি C++ কলের উদাহরণ, C++ সম্পর্কে আগ্রহীরা দেখতে পারেন, কিন্তু এটি একটি ব্যাখ্যামূলক ভাষা নয়, ডিবাগ করা কঠিন, এটি ব্যবহারের জন্য সুপারিশ করা হয় নাঃhttps://www.fmz.com/strategy/61533
  • নেটইজ ক্লাউড ক্লাসরুমের ডিজিটাল মুদ্রার পরিমাণগত লেনদেনের কোর্স, এফএমজেড অফিসিয়াল পণ্য, মাত্র ২০ ইউয়ান, বিষয়বস্তু বিশদভাবে সমৃদ্ধ, হালকা থেকে গভীর, নতুনদের জন্য উপযুক্তকোর্সের লিংক
  • কিছু শিক্ষণ কৌশল, প্রাথমিক শিক্ষার জন্য উপযুক্ত, যখন আপনি প্রাথমিক বর্ধিতকরণ কৌশল শিখছেনঃhttps://www.fmz.com/square/s:tag:%E6%95%99%E5%AD%A6/1
  • কৌশল সম্পর্কে বিস্তারিত কোড বিবরণঃ https://www.fmz.com/bbs/s:tag: %E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%901

ডিবাগিং টুল

FMZ কোয়ান্টাম প্ল্যাটফর্মটি API ইন্টারফেসটি ডিবাগ করার জন্য একটি ডিবাগিং সরঞ্জাম সরবরাহ করে,https://www.fmz.com/m/debug 。 ডিবাগিং সরঞ্জামটি কেবল জাভাস্ক্রিপ্ট সমর্থন করে, এটি কেবলমাত্র একটি সময়কালের জন্য চালানো যেতে পারে, কোনও রিয়েল-টাইম তৈরি না করে এক্সচেঞ্জ ইন্টারফেসটি ডিবাগ করা যেতে পারে。 রিটার্নের ডেটা ফলাফল হিসাবে ফিরে আসবে, ডিবাগিং সরঞ্জামের কোড সংরক্ষণ করা হবে না。 এই টিউটোরিয়ালটি শেখার সময়, আপনি একই সাথে ডিবাগিং সরঞ্জামটি ব্যবহার করে পরীক্ষা করতে পারেন。 FMZ পরিমাণগত প্ল্যাটফর্ম কৌশল লেখার মৌলিক টিউটোরিয়াল (অবশ্যই পড়তে হবে)

কৌশলগত প্রোগ্রাম আর্কিটেকচার

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

অন্যান্য বিশেষ ফাংশন নিম্নরূপঃ

  • onexit ((() স্বাভাবিক প্রস্থান কুলুঙ্গি কুলুঙ্গি ফাংশন, সর্বোচ্চ 5 মিনিটের জন্য, যদি সময় অতিক্রম করা হয় তবে একটি interrupt ত্রুটি রিপোর্ট করা হবে। প্রস্থান প্রক্রিয়ার সময় কিছু ফলাফল সংরক্ষণ করা যেতে পারে।
  • onerror() অপ্রত্যাশিত হিসাবে ফাংশন থেকে প্রস্থান করুন, সর্বোচ্চ 5 মিনিটের জন্য, ঘোষণা করা যাবে না।
  • init (() একটি প্রারম্ভিককরণ ফাংশন হিসাবে, নীতি প্রোগ্রামটি স্বয়ংক্রিয়ভাবে চালানোর সময় ডাকা হয়, তবে ঘোষণা করা যায় না।
function onTick(){
   var ticker = exchange.GetTicker()
   var account = exchange.GetAccount()
    //在这里写策略逻辑,将会每6s调用一次
}
function main(){
    while(true){
        onTick()
        Sleep(6000)
    }
}

পূর্ববর্তী উদাহরণে যদি নেটওয়ার্ক অ্যাক্সেসের ত্রুটিটি সরাসরি নীতিটি বন্ধ করতে পারে, যদি আপনি এমন একটি নীতি চান যা স্বয়ংক্রিয় পুনরায় চালু না হয়, তবে আপনি রিয়েল-ডিস্ক নীতিটি ব্যবহার করতে পারেন try catch ত্রুটি-সহিষ্ণু প্রধান চক্র (ব্যাকআপ ব্যবহার করবেন না) । অবশ্যই, কেবলমাত্র যখন নীতিটি স্থিতিশীল থাকে তখনই এই অপারেশনটি সুপারিশ করা উচিত, অন্যথায় সমস্ত ত্রুটিগুলি রিপোর্ট করা হবে না, কৌশলটির সমস্যাগুলি নির্ণয় করা কঠিন।

function onTick(){
   var ticker = exchange.GetTicker()
   var account = exchange.GetAccount()
    //在这里写策略逻辑,将会每6s调用一次
}
function main(){
    try{
        while(true){
           onTick()
           Sleep(6000)
       }
    }catch(err){
        Log(err)
    }
}

এক্সচেঞ্জ এপিআই

এক্সচেঞ্জ এবং ট্রেডিং জোড়া সেটআপ

যেকোনো এক্সচেঞ্জের সাথে সম্পর্কিত API-কে কল করার সময়, এক্সচেঞ্জ এবং লেনদেনের জোড়া নির্দিষ্ট করা প্রয়োজন।exchangeযেমনঃexchange.GetTicker()এই এক্সচেঞ্জ-এ ট্রেডিং জোড়ার ট্রেডিং টিকারটি পাওয়া যাবে।

FMZ প্ল্যাটফর্ম একই সময়ে একাধিক এক্সচেঞ্জ-ট্রেডিং জোড়া যোগ করার জন্য সমর্থন করে, যেমন একই এক্সচেঞ্জ অ্যাকাউন্টের বিটিসি এবং ইটিএইচ একই সাথে পরিচালনা করা যায়। নোট করুন যে একই এক্সচেঞ্জের বিভিন্ন অ্যাকাউন্ট একই সাথে যুক্ত করা যেতে পারে, এগুলি FMZ ওয়েবসাইটে যুক্ত লেবেলের ভিত্তিতে পৃথক করা হয়। যখন একাধিক এক্সচেঞ্জ-ট্রেডিং জোড়া থাকে, তখন ব্যবহার করা হয়exchangesএকটি অ্যারেকে বলা হয়, যা একটি রিয়েল ডিস্ক তৈরির ক্রম অনুসারে যোগ করা হয়।exchanges[0]exchanges[1]… এবং এইভাবে, লেনদেনের ফর্ম্যাটটি হলBTC_USDTবিটিসি হল লেনদেনের মুদ্রা এবং ইউএসডিটি হল মূল্য নির্ধারণের মুদ্রা।

FMZ পরিমাণগত প্ল্যাটফর্ম কৌশল লেখার মৌলিক টিউটোরিয়াল (অবশ্যই পড়তে হবে)

স্পষ্টতই, যদি আমরা অনেকগুলি লেনদেনের জোড়া নিয়ে কাজ করি তবে এই পদ্ধতিটি খুব ঝামেলার কারণ হতে পারে, তবে সেট কারেন্সি ব্যবহার করে লেনদেনের জোড়া পরিবর্তন করা যেতে পারে, যেমনexchange.SetCurrency("BTC_USDT")এই সময়ে,exchangeএই ক্ষেত্রে, আপনি যে জোড়াটি বন্ধন করেছেন তাBTC_USDTএই বার্তায় বলা হয়েছে যে, “অনুসন্ধানের পর, এই বার্তাটি কার্যকর থাকবে।নোট করুন যে পুনরাবৃত্তিমূলক ট্রান্সফার জোড়া সমর্থন করেএখানে একটি উদাহরণ দেওয়া হল।

var symbols = ["BTC_USDT", "LTC_USDT", "EOS_USDT", "ETH_USDT"]
var buyValue = 1000
function main(){
  for(var i=0;i<symbols.length;i++){
      exchange.SetCurrency(symbols[i])
      var ticker = exchange.GetTicker()
      var amount = _N(buyValue/ticker.Sell, 3)
      exchange.Buy(ticker.Sell, amount)
      Sleep(1000)
  }
}

পাবলিক ইন্টারফেস

উদাহরণস্বরূপ, ট্রেডিং ইন্টারফেসগুলি সাধারণত সর্বজনীন ইন্টারফেস হয়, যা সকলের জন্য উপলব্ধ। সাধারণ ট্রেডিং ইন্টারফেসগুলি হ’লঃ ট্রেডিং টিকার, গভীরতা গভীরতা, কে লাইন রেকর্ডস এবং লেনদেনের রেকর্ড ট্রেড। ট্রেডিং কৌশলটি ট্রেডিংয়ের বিচার করার ভিত্তি। নীচে একের পর এক উপস্থাপন করা হয়েছে, ডিবাগিং সরঞ্জামগুলিতে নিজেরাই চেষ্টা করা ভাল, বিস্তারিত ব্যাখ্যা প্রয়োজন এপিআই ডকুমেন্টেশন দেখুন।

ইন্টারফেস সাধারণত আছেInfoক্ষেত্র, যা এক্সচেঞ্জ দ্বারা ফেরত আসা মূল তথ্য স্ট্রিংকে নির্দেশ করে, যা অতিরিক্ত তথ্যের জন্য ব্যবহার করা যেতে পারে, যা আগে পার্স করা প্রয়োজন, জাভাস্ক্রিপ্ট ব্যবহার করেJSON.parse()পাইথন json লাইব্রেরি ব্যবহার করে।Timeএই ক্ষেত্রটি অনুরোধের সময়সীমা নির্দেশ করে, যা বিলম্বিত হওয়ার জন্য ব্যবহার করা যেতে পারে।

রিয়েল-ডিস্কে এপিআই ইন্টারফেস ব্যবহার করে অ্যাক্সেস ব্যর্থ হয়ে ফিরে আসতে পারেnullপাইথন ফিরে এসেছে।None, এর মধ্যে থাকা ডেটা ব্যবহার করলে ত্রুটি দেখা দেয় এবং রিয়েল ডিস্ক বন্ধ হয়ে যায়, তাই ত্রুটি-সহনশীলতা অত্যন্ত গুরুত্বপূর্ণ ৷ এই টিউটোরিয়ালটি আলাদাভাবে এটি সম্পর্কে আলোচনা করবে ৷

GetTicker

বাজারের বর্তমান অবস্থা পেতে, সম্ভবত সবচেয়ে বেশি ব্যবহৃত ইন্টারফেস, আপনি সর্বশেষ লেনদেনের মূল্য, ক্রয়-বিক্রয় মূল্য, সাম্প্রতিক লেনদেনের পরিমাণ ইত্যাদি তথ্য পেতে পারেন। অর্ডার দেওয়ার আগে, আপনি টিকার তথ্যের ভিত্তিতে লেনদেনের মূল্য নির্ধারণ করতে পারেন। একটি বাস্তব ফেরতের উদাহরণ{"Info:{}, "High":5226.69, "Low":5086.37,"Sell":5210.63, "Buy":5208.5, "Last":5208.51, "Volume":1703.1245, "OpenInterest":0, "Time":1554884195976}

function main() {
    var ticker = exchange.GetTicker()
    Log(ticker) //在调试工具中 return ticker 。可以看到具体的结果。
    Log('上次成交价: ',ticker.Last, '买一价: ', ticker.Buy)
}

GetDepth

যদিও GetTicker-এ ক্রয় ও বিক্রয় সম্পর্কিত গভীর তথ্য রয়েছে, তবে আপনি যদি আরও গভীরভাবে অনুসন্ধান করতে চান তবে আপনি এই ইন্টারফেসটি ব্যবহার করতে পারেন, আপনি সাধারণত পরবর্তী 200 টি হ্যাং লিস্ট দেখতে পাবেন। আপনি এই ইন্টারফেসটি ব্যবহার করে আঘাতের দাম গণনা করতে পারেন। নীচে একটি সত্যিকারের প্রত্যাবর্তন ফলাফল রয়েছে।

{
    "Info":null,
    "Asks":[
        {"Price":5866.38,"Amount":0.068644},
        {"Price":5866.39,"Amount":0.263985},
        ......
        ]
    "Bids":[
        {"Price":5865.13,"Amount":0.001898},
        {"Price":5865,"Amount":0.085575},
        ......
        ],
    "Time":1530241857399
}

উদাহরণস্বরূপঃ

function main() {
    var depth = exchange.GetDepth()
    Log('买一价个: ', depth.Bids[0].Price, '卖一价格: ', depth.Asks[0].Price)
}

GetRecords

K লাইন, সবচেয়ে বেশি ব্যবহৃত ইন্টারফেসগুলির মধ্যে একটি, যা একসাথে দীর্ঘ সময়ের মূল্যের তথ্য ফেরত দেয়, বিভিন্ন সূচকের ভিত্তি গণনা করে। K লাইন চক্রটি যদি নির্দিষ্ট না করা হয় তবে ডিফল্ট চক্রটি ব্যবহার করা হবে যখন শারীরিক ডিস্ক যুক্ত করা হবে। K লাইন দৈর্ঘ্যটি নির্দিষ্ট করা যায় না, যা সময়ের সাথে সাথে ক্রমাগত বৃদ্ধি পায়, সর্বোচ্চ 2000 রুট, প্রথমবারের জন্য প্রায় 200 রুট (বিভিন্ন এক্সচেঞ্জগুলি ফেরত দেয়) । শেষ K লাইনটি সর্বশেষতম K লাইন, তাই ডেটা ক্রমাগত পরিবর্তিত হয়, প্রথম K লাইনটি সবচেয়ে পুরানো ডেটা।

exchange.SetMaxBarLen(Len)প্রথমবারের জন্য K-লাইন কমানোর জন্য একটি সেট করা যেতে পারে (কিছু এক্সচেঞ্জ দ্বারা সমর্থিত) এবং সর্বোচ্চ K-লাইন কমানোর জন্য একটি সেট করা যেতে পারে।যেমনঃexchange.SetMaxBarLen(500)

GetRecords সময়কাল নির্ধারণ করতে পারেঃ PERIOD_M1:1 মিনিট, PERIOD_M5:5 মিনিট, PERIOD_M15:15 মিনিট, PERIOD_M30:30 মিনিট, PERIOD_H1:1 ঘন্টা, PERIOD_D1:1 দিন।exchange.GetRecords(PERIOD_M1)。 সর্বশেষ হোস্ট আপগ্রেড করার পরে, কাস্টম চক্র সমর্থন করা হবে, চক্রের সেকেন্ডগুলি সরাসরি প্যারামিটার হিসাবে প্রেরণ করা হবে, মিনিটের স্তরের কাস্টমাইজেশন 1 মিনিটের K লাইন অনুসারে সংশ্লেষিত হবে, 1 মিনিটের নীচে K লাইন GetTrades ((() দ্বারা সংশ্লেষিত হবে, পণ্য ফিউচারগুলি টিকের উপর ভিত্তি করে সংশ্লেষিত হবে,。এই টিউটোরিয়ালের অন্যান্য অংশেও একই রকম ঘটনা ঘটতে পারে।PERIOD_M1এই ধরনের পূর্ণবর্ণিত ভেরিয়েবল, যা FMZ এর ডিফল্ট গ্লোবাল ভেরিয়েবল, আগ্রহীরা তাদের নির্দিষ্ট মানগুলি লগ করতে পারেন, যা সাধারণত সরাসরি ব্যবহার করা হয়।

রিটার্ন ডেটা উদাহরণঃ

[
    {"Time":1526616000000,"Open":7995,"High":8067.65,"Low":7986.6,"Close":8027.22,"Volume":9444676.27669432},
    {"Time":1526619600000,"Open":8019.03,"High":8049.99,"Low":7982.78,"Close":8027,"Volume":5354251.80804935},
    {"Time":1526623200000,"Open":8027.01,"High":8036.41,"Low":7955.24,"Close":7955.39,"Volume":6659842.42025361},
    ......
]

উদাহরণস্বরূপঃ

function main(){
    var close = []
    var records = exchange.GetRecords(PERIOD_H1)
    Log('total bars: ', records.length)
    for(var i=0;i<records.length;i++){
        close.push(records[i].Close)
    }
    return close
}

GetTrades

নির্দিষ্ট সময়সীমার জন্য লেনদেনের তথ্য পেতে (নিজের লেনদেনের তথ্য নয়), কিছু এক্সচেঞ্জ এটি সমর্থন করে না। এটি তুলনামূলকভাবে অস্বাভাবিক, এপিআই ডকুমেন্টেশনে বিস্তারিত তথ্য অনুসন্ধান করা যেতে পারে।

অ্যাকাউন্টের মাধ্যমে লেনদেন করুন

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

GetAccount অ্যাকাউন্ট পেতে

অ্যাকাউন্টের তথ্য পেতে. সবচেয়ে বেশি ব্যবহৃত ইন্টারফেসগুলির মধ্যে একটি, যাতে ব্যালেন্সের অভাব না হয়, অর্ডার দেওয়ার আগে এটি কল করতে হবে। ফলাফলগুলি হলঃ{"Stocks":0.38594816,"FrozenStocks":0,"Balance":542.858308,"FrozenBalance":0,"Info":{}}☞ যেখানে স্টকস হল ট্রেডিং জোড়ার ট্রেডিং মুদ্রার উপলব্ধ ব্যালেন্স, FrozenStocks হল অব্যবহৃত অর্ডারের হিমায়িত ব্যালেন্স, Balance হল মূল্য নির্ধারণের মুদ্রার উপলব্ধ ব্যালেন্স, FrozenBalance হল হিমায়িত ব্যালেন্স।BTC_USDTস্টক মানে বিটিসি, ব্যালেন্স মানে ইউএসডিটি।

নোট করুন যে রিটার্নের ফলাফলটি নির্দিষ্ট লেনদেনের জোড়ার ফলাফল, লেনদেনের অ্যাকাউন্টের অন্যান্য মুদ্রার তথ্য ইনফো ফিল্ডে রয়েছে, একাধিক লেনদেনের জোড়া পরিচালনা করার জন্য একাধিকবার কল করার দরকার নেই।

একটি ক্রমাগত প্রিন্ট করা বর্তমান লেনদেনের জোড়ার মোট মূল্যের একটি বাস্তব ডিস্কঃ

function main(){
    while(true){
        var ticker = exchange.GetTicker()
        var account = exchange.GetAccount()
        var price = ticker.Buy
        var stocks = account.Stocks + account.FrozenStocks
        var balance = account.Balance + account.FrozenBalance
        var value = stocks*price + balance
        Log('Account value is: ', value)
        LogProfit(value)
        Sleep(3000)//sleep 3000ms(3s), A loop must has a sleep, or the rate-limit of the exchange will be exceed
        //when run in debug tool, add a break here
    }
}

Buy এর অধীনে কিনুন

নিচের চার্জগুলোতে কল করুনঃexchange.Buy(Price, Amount)অথবাexchange.Buy(Price, Amount, Msg),Price হল মূল্য, Amount হল পরিমাণ,Msg হল একটি অতিরিক্ত স্ট্রিং যা রিয়েল-ডিস্ক লগগুলিতে প্রদর্শিত হতে পারে, তবে এটি বাধ্যতামূলক নয়। এই পদ্ধতিটি হ’ল আদেশের জন্য, যদি তাৎক্ষণিকভাবে সম্পূর্ণরূপে সম্পন্ন না হয় তবে এটি একটি অর্ডার তৈরি করে যা অবিলম্বে সম্পন্ন হয় না, অর্ডারটি সফলভাবে অর্ডার আইডি হিসাবে ফিরে আসে, ব্যর্থ হয়null, অর্ডার স্ট্যাটাস জানতে ব্যবহৃত হয়।

Price হল -1, Amount হল অর্ডার ভ্যালু, যেমনexchange.Buy(-1, 0.5)লেনদেন ঠিক আছেETH_BTC০.৫ বিটিসি-র ইটিএইচ কেনার জন্য ০.৫ বিটিসি-র বাজার মূল্যের প্রতিনিধিত্ব করে। কিছু এক্সচেঞ্জ বাজার মূল্য তালিকা এবং ফিউচার রিটার্নিং সমর্থন করে না।

সমস্ত দাম এবং পরিমাণের জন্য সঠিকতা প্রয়োজন, অংশে লেনদেন উপলব্ধ_N()সঠিকতা ফাংশন কন্ট্রোল করার জন্য। ফরওয়ার্ড ট্রেডিংয়ের জন্য Buy এবং Sell এর অতিরিক্ত অর্থ রয়েছে, যা আলাদাভাবে বর্ণনা করা হবে।

একটি উদাহরণ, যেখানে আপনি একই দামে কিনতে পারেনঃ

function main(){
    while(true){
        var ticker = exchange.GetTicker()
        var price = ticker.Sell
        if(price >= 7000){
            exchange.Buy(_N(price+5,2), 1, 'BTC-USDT')
            break
        }
        Sleep(3000)//Sleep 3000ms
    }
    Log('done')
}

বিক্রয় বিক্রয়

নিম্ন বিক্রয় কার্ড. প্যারামিটার এবং Buy একই. বাজার মূল্য কার্ডের প্যারামিটার অর্থ ভিন্ন, বাজার মূল্য বিক্রয় কার্ড যেমনexchange.Sell(-1, 0.2), যার অর্থ ০.২ ইটিএইচ।

GetOrder অর্ডার পেতে

অর্ডার আইডি থেকে অর্ডার তথ্য পেতে। সাধারণ ইন্টারফেস, কল পদ্ধতিexchange.GetOrder(OrderId),OrderId হল অর্ডার আইডি, যা অর্ডার দেওয়ার সময় ফেরত দেওয়া হয়।অর্ডারের ধরন লক্ষ্য করুনTypeফিল্ড এবং অর্ডার অবস্থাStatusপ্রকৃত মানগুলি সংখ্যাযুক্ত, যা বিভিন্ন অর্থের প্রতিনিধিত্ব করে, তবে স্মৃতিশক্তির পক্ষে অনুকূল নয়, এফএমজেড এই মানগুলিকে বিশ্বব্যাপী ধ্রুবক হিসাবে প্রতিনিধিত্ব করে, যেমন অর্ডার না দেওয়া অর্ডারStatusএর মান 0।ORDER_STATE_PENDING, এই সমস্ত গ্লোবাল কনস্ট্যান্টগুলি ডকুমেন্টেশনে পাওয়া যাবে।◦ ফলাফল ফেরত দিনঃ

{
    "Id":125723661, //订单id
    "Amount":0.01, //订单数量
    "Price":7000, //订单价格
    "DealAmount":0, //已成交数量
    "AvgPrice":0, //成交均价
    "Status":0, // 0:未完全成交, 1:已成交, 2:已撤单
    "Type":1,// 订单类型,0:买单, 1:卖单
    "ContractType":"",//合约类型,用于期货交易
    "Info":{} //交易所返回原始信息
    }
}

একটি নির্দিষ্ট সংখ্যক কয়েন কেনার কৌশলঃ

function main(){
    while(true){
        var amount = exchange.GetAccount().Stocks
        var ticker = exchange.GetTicker()
        var id = null
        if(5-amount>0.01){
            id = exchange.Buy(ticker.Sell, Math.min(5-amount,0.2))
        }else{
            Log('Job completed')
            return //return the main function, bot will stop
        }
        Sleep(3000) //Sleep 3000ms
        if(id){
            var status = exchange.GetOrder(id).Status
            if(status == 0){ //这里也可以用 status == ORDER_STATE_PENDING 来判断。
                exchange.CancelOrder(id)
            }
        }
    }
}

GetOrders অর্ডার জমা দেয়নি

GetOrder-এর মত অর্ডার লিস্টের নির্দিষ্ট ফলাফল।

উদাহরণস্বরূপ, যদি আপনি একটি অর্ডার বাতিল করে দেন, তবে সমস্ত অর্ডারের জন্য বর্তমান লেনদেন বাতিল করুনঃ

function CancelAll(){
    var orders = exchange.GetOrders()
    for(var i=0;i<orders.length;i++){
        exchange.CancelOrder(orders[i].Id) // cancel order by orderID
    }
}
function main(){
    CancelAll()
    while(true){
        //do something
        Sleep(10000)
    }
}

অর্ডার বাতিল করুন

অর্ডার id অনুযায়ী অর্ডার বাতিল করুনexchange.CancelOrder(OrderId)☞ প্রত্যাহার সফল true, অন্যথায় false ☞ লক্ষ্য করুন যে অর্ডার সম্পূর্ণরূপে অর্ডার করা হয়েছে। ব্যর্থতা প্রত্যাহার করবে ☞

ফরচার্ড এবং স্থায়ী চুক্তি

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

ফরমেট কন্ট্রাক্টের সাথে ফরওয়ার্ড কন্ট্রাক্টের সাদৃশ্য রয়েছে, তবে একই সময়ে একাধিক খালি থাকার ধারণা নেই।

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

SetContractType চুক্তি সেট করুন

ফিউচার ট্রেডিংয়ের প্রথম ধাপটি হ’ল ট্রেডিংয়ের জন্য চুক্তিটি সেট করা, উদাহরণস্বরূপ, ওকেএক্স ফিউচার, রিয়েল-টাইম বা পুনরাবৃত্তি তৈরি করার সময় বিটিসি ট্রেডিং জোড়া নির্বাচন করুন, কোডে এটি সেট করতে হবে যে এই সপ্তাহ, পরের সপ্তাহ বা ত্রৈমাসিক চুক্তি। যদি সেট না করা হয় তবে জিজ্ঞাসা করা হবেinvalid contract typeক্যাশ ট্রেডিং জোড়ার বিপরীতে, ফিউচার কন্ট্রাক্টগুলি প্রায়শই বিটিসির মতো ট্রেডিং-ট্রেডিং মুদ্রার সাথে জামানত হয়। বিটিসি-তে যুক্ত বিটিসি সাধারণত বিটিসি-তে জামানতযুক্ত বিটিসি_ইউএসডি ট্রেডিং জোড়ার প্রতিনিধিত্ব করে। যদি ইউএসডিটি-তে জামানতযুক্ত ফিউচার থাকে, তবে একটি বাস্তব ডিস্ক তৈরি করতে হবে যা বিটিসি_ইউএসডিটি ট্রেডিং জোড়া যুক্ত করবে। যেমন মুদ্রা ওকেএক্স ফিউচারগুলি একই সাথে মুদ্রা বেস এবং ইউএসডিটি বেস পুনর্নবীকরণের প্রয়োজন।ট্রেডিং জোড়া সেট করার পরে, নির্দিষ্ট ধরনের চুক্তি যেমন স্থায়ী, সাপ্তাহিক, পরবর্তী ইত্যাদি সেট করতে হবে। চুক্তিটি সেট করার পরে, ক্রয়-বিক্রয় এবং অন্যান্য ক্রিয়াকলাপের ব্যবস্থা করা যেতে পারে।

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

//OKEX期货
exchange.SetContractType("swap")        // 设置为永续合约
exchange.SetContractType("this_week")   // 设置为当周合约
exchange.SetContractType("next_week")   // 设置为次周合约
exchange.SetContractType("quarter")     // 设置为季度合约

//HuobiDM
exchange.SetContractType("this_week")   // 设置为当周合约 
exchange.SetContractType("next_week")   // 设置为次周合约
exchange.SetContractType("quarter")     // 设置为季度合约
exchange.SetContractType("swap")        // 设置为永续合约

//币安期货
exchange.SetContractType("swap")   // 设置为永续合约,注意币本位和USDT本位都存在永续
exchange.SetContractType("quarter")   // 设置为当季合约
exchange.SetContractType("next_quarter")  // 设置为次季合约

//BitMEX
exchange.SetContractType("XBTUSD")    // 设置为永续合约
exchange.SetContractType("XBTM19")  // 具体某个时间结算的合约,详情登录BitMEX查询各个合约代码

//GateIO
exchange.SetContractType("swap")      // 设置为永续合约,不设置默认为swap永续合约。 

//Deribit
exchange.SetContractType("BTC-27APR18")  // 具体某个时间结算的合约,详情参看Deribit官网。

GetPosition পজিশন ধারণ

বর্তমান হোল্ডিং তথ্যের একটি তালিকা পেতে, OKEX ((OKCOIN) ফরচার্ডগুলি একটি প্যারামিটার পাস করতে পারে, যা প্রাপ্ত করার জন্য চুক্তির ধরন নির্দিষ্ট করে। যদি কোনও হোল্ডিং না থাকে তবে খালি তালিকাটি ফিরে আসে[]☞ হোল্ডিং রিটার্নের তথ্য নিম্নরূপ, এখানে অনেক তথ্য রয়েছে, যার জন্য ট্রেডিং-এর বিশ্লেষণ প্রয়োজন।

ডাটা টাইপ পরিবর্তনশীল নাম চিত্রিত করা

“Object HDID Info HDID এক্সচেঞ্জ দ্বারা প্রত্যাবর্তিত প্রাথমিক কাঠামো” number Margin Level দরজা দরজা আকার OKCoin 10 অথবা 20, OK ফিউচার ফোরক্লোজ মোড ফিক্সড 10 ফেরত দেয়, কারণ নেটিভ API সমর্থন করে না “number” অর্থ হল “Amount” অর্থ হল “হোল্ডিং”, “OKCoin” অর্থ হল “কন্ট্রাক্টের শেয়ারের সংখ্যা” (একটি পূর্ণসংখ্যা যা 1 এর চেয়ে বড়) “number of frozenAmount of frozen storage” “সংখ্যা হিমায়িত পরিমাণ” “সংখ্যা হিমায়িত পরিমাণ” নাম্বারডাইরেক্টরপ্রাইসডাইরেক্টরডাইরেক্টরহোল্ডারগড়মূল্য নাম্বার ডেইজ মার্জিন ডেইজ ফ্রিজ গ্যারান্টি [number] [Profit] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [num কনস্ট্যান্ট টাইপ ক্যাপিটালাইজেশনের জন্য PD_LONG একাধিক শীর্ষ অবস্থান (CTP-তে closebuy_today প্লেইন), PD_SHORT শূন্য শীর্ষ অবস্থান (CTP-তে closesell_today প্লেইন), (CTP-তে ফরওয়ার্ড) PD_LONG_YD গতকালের একাধিক শীর্ষ অবস্থান (closebuy প্লেইন), PD_SHORT_YD গতকালের শূন্য শীর্ষ অবস্থান (closesell প্লেইন) string jQueryContractType jQuery ফরেক্স কন্ট্রাক্ট কোড, স্টক এক্সচেঞ্জ কোড_স্টক কোড কোড, নির্দিষ্ট প্যারামিটার SetContractType প্রেরণ টাইপ

function main(){
    exchange.SetContractType("this_week");
    var position = exchange.GetPosition();
    if(position.length>0){ //特别要注意引用前要先判断position长度再引用,否则会出错
        Log("Amount:", position[0].Amount, "FrozenAmount:", position[0].FrozenAmount, "Price:",
            position[0].Price, "Profit:", position[0].Profit, "Type:", position[0].Type,"ContractType:", position[0].ContractType)
    }
}

ফিউচার পজিশন খোলার

প্রথমত, লিভারের আকার নির্ধারণ করতে হবে, এবং কিভাবে এটি কল করতে হবেঃexchange.SetMarginLevel(10)10 মানে 10 গুণ লিভারেজ, লিভারেজ আ�