রিসোর্স লোড হচ্ছে... লোডিং...

বাজার

exchange.GetTicker

{@struct/Ticker Ticker} স্ট্রাকচারটি বর্তমান সেট ট্রেডিং জোড়া, চুক্তি কোড, অর্থাৎ টিকার ডেটার সাথে মিলে যায়।GetTicker ()ফাংশন বিনিময় বস্তুর একটি সদস্য ফাংশন {@var/EXCHANGE exchange}, ব্যবহারexchangeবস্তুর সদস্য ফাংশন (পদ্ধতি) শুধুমাত্র সম্পর্কিতexchange, এবং এটি নথিতে পুনরাবৃত্তি করা হবে না।

দ্যexchange.GetTicker()ফাংশনটি {@struct/Ticker Ticker} স্ট্রাকচার ফেরত দেয় যখন ডেটা অনুরোধ সফল হয়, এবং যখন ডেটা অনুরোধ ব্যর্থ হয় তখন null মান ফেরত দেয়। {@struct/Ticker Ticker}, শূন্য মান

বিনিময়.GetTicker ((() বিনিময়.GetTicker ((প্রতীক)

প্যারামিটারsymbol{@struct/Ticker Ticker} তথ্যের সাথে সংশ্লিষ্ট নির্দিষ্ট ট্রেডিং জোড়া এবং চুক্তি কোড নির্দিষ্ট করতে ব্যবহৃত হয়। যদি এই পরামিতিটি পাস না করা হয়, তাহলে বর্তমানে সেট করা ট্রেডিং জোড়া এবং চুক্তি কোডের বাজার তথ্য ডিফল্টরূপে অনুরোধ করা হবে। কল করার সময়exchange.GetTicker(symbol)ফাংশন,exchangeযদি আপনি USDT হিসাবে নামযুক্ত মুদ্রা এবং BTC হিসাবে ট্রেডিং মুদ্রা সঙ্গে বাজার তথ্য অনুরোধ করতে হবে, পরামিতিsymbolহচ্ছেঃ"BTC_USDT", এবং ফরম্যাটটি হল FMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত ট্রেডিং জোড়ার ফরম্যাট। কল করার সময়exchange.GetTicker(symbol)ফাংশন,exchangeযদি আপনি BTC এর U-স্ট্যান্ডার্ড চিরস্থায়ী চুক্তির বাজার তথ্য অনুরোধ করতে চান, প্যারামিটারsymbolহচ্ছেঃ"BTC_USDT.swap", এবং ফরম্যাটটি হলট্রেডিং জুটিএবংচুক্তির কোডFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত, চিহ্ন . দ্বারা পৃথক। কল করার সময়exchange.GetTicker(symbol)ফাংশন,exchangeআপনি যদি BTC এর U-স্ট্যান্ডার্ড অপশন চুক্তির বাজার তথ্য অনুরোধ করতে চান, প্যারামিটারsymbolহচ্ছেঃ"BTC_USDT.BTC-240108-40000-C"(উদাহরণস্বরূপ Binance Option BTC-240108-40000-C) ফরম্যাটটি হলট্রেডিং জুটিFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত এবং এক্সচেঞ্জ দ্বারা সংজ্ঞায়িত নির্দিষ্ট বিকল্প চুক্তির কোড, অক্ষর . দ্বারা পৃথক।

প্রতীক মিথ্যা স্ট্রিং

function main(){
    // If it is a futures exchange object, set the contract code first, e.g. set it as a perpetual contract
    // exchange.SetContractType("swap")

    var ticker = exchange.GetTicker()
    /*
        The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
        At this point, the ticker is null, and it will cause an error when accessing ticker.High, so when testing this code, make sure that the exchange interface can be accessed.
    */
    Log("Symbol:", ticker.Symbol, "High:", ticker.High, "Low:", ticker.Low, "Sell:", ticker.Sell, "Buy:", ticker.Buy, "Last:", ticker.Last, "Open:", ticker.Open, "Volume:", ticker.Volume)
}
def main():
    ticker = exchange.GetTicker()
    Log("Symbol:", ticker["Symbol"], "High:", ticker["High"], "Low:", ticker["Low"], "Sell:", ticker["Sell"], "Buy:", ticker["Buy"], "Last:", ticker["Last"], "Open:", ticker.Open, "Volume:", ticker["Volume"])
void main() {
    auto ticker = exchange.GetTicker();
    Log("Symbol:", ticker.Symbol, "High:", ticker.High, "Low:", ticker.Low, "Sell:", ticker.Sell, "Buy:", ticker.Buy, "Last:", ticker.Last, "Open:", ticker.Open, "Volume:", ticker.Volume);
}

ফিউচার এক্সচেঞ্জ অবজেক্টের জন্য (যেমন,exchangeঅথবাexchanges[0]), আপনি ব্যবহার করে চুক্তি কোড সেট করতে হবেexchange.SetContractType()টিকার ফাংশন কল করার আগে ফাংশন, যা পুনরাবৃত্তি করা হবে না।

function main() {
    var ticker = exchange.GetTicker("BTC_USDT")
    Log(ticker)
}
def main():
    ticker = exchange.GetTicker("BTC_USDT")
    Log(ticker)
void main() {
    auto ticker = exchange.GetTicker("BTC_USDT");
    Log(ticker);
}

ব্যবহার করুনsymbolএকটি নির্দিষ্ট প্রতীকের জন্য বাজার তথ্য অনুরোধ করার পরামিতি (স্পট প্রতীক) ।

দ্যTickerতথ্য রিটার্নexchange.GetTicker()ব্যাকটেস্টিং সিস্টেমে ফাংশন।HighএবংLowতারা সিমুলেটেড মান, বিক্রি এক থেকে নেওয়া এবং যে সময়ে বাজারের এক কিনতে।Tickerতথ্য রিটার্নexchange.GetTicker()বাস্তব বাজারে কাজ করে।HighএবংLowক্যাপসুল এক্সচেঞ্জ দ্বারা ফেরত দেওয়া তথ্যের উপর ভিত্তি করে মানগুলিTickইন্টারফেস, যা একটি নির্দিষ্ট সময়ের মধ্যে সর্বোচ্চ এবং সর্বনিম্ন মূল্য অন্তর্ভুক্ত করে (সাধারণত 24 ঘন্টা সময়কাল) । এক্সচেঞ্জ যে সমর্থন করে নাexchange.GetTicker()ফাংশনঃ

ফাংশনের নাম সমর্থিত না হওয়া স্পট এক্সচেঞ্জ সমর্থিত নয় এমন ফিউচার এক্সচেঞ্জ
GetTicker ফিউচার_এভো

{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange

exchange.GetDepth

বর্তমান সেট ট্রেডিং জোড়া, চুক্তি কোড, অর্থাৎ অর্ডার বুক ডেটার সাথে সামঞ্জস্যপূর্ণ স্পট বা চুক্তির {@struct/Depth Depth} কাঠামো পান।

দ্যexchange.GetDepth()ফাংশনটি {@struct/Depth Depth} স্ট্রাকচারটি ফেরত দেয় যদি ডেটা অনুরোধ সফল হয়, এবং যদি ডেটা অনুরোধ ব্যর্থ হয় তবে এটি শূন্য ফেরত দেয়। {@struct/Depth Depth}, শূন্য মান

এক্সচেঞ্জ.গ্রেটডিপথ ((() এক্সচেঞ্জ.গ্রেটডিপথ ((সিম্বল)

প্যারামিটারsymbol{@struct/Depth Depth} তথ্যের সাথে সংশ্লিষ্ট নির্দিষ্ট ট্রেডিং জোড়া এবং চুক্তি কোড নির্দিষ্ট করতে ব্যবহৃত হয়। যদি এই পরামিতিটি পাস না করা হয়, তাহলে বর্তমানে সেট করা ট্রেডিং জোড়া এবং চুক্তি কোডের অর্ডার বুক ডেটা ডিফল্টরূপে অনুরোধ করা হবে।exchange.GetDepth(symbol)ফাংশন,exchangeযদি আপনি USDT হিসাবে নামযুক্ত মুদ্রা এবং BTC হিসাবে লেনদেনের মুদ্রা দিয়ে অর্ডার বুক তথ্য পেতে অনুরোধ করতে চান, প্যারামিটারsymbolহচ্ছেঃ"BTC_USDT", এবং ফরম্যাট হল ট্রেডিং জোড়া ফরম্যাট যা FMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত।exchange.GetDepth(symbol)ফাংশন,exchangeযদি আপনি BTC এর U- স্ট্যান্ডার্ড চিরস্থায়ী চুক্তির অর্ডার বুক ডেটা অনুরোধ করতে চান, প্যারামিটারsymbolহচ্ছেঃ"BTC_USDT.swap", এবং ফরম্যাটটি হলট্রেডিং জুটিএবংচুক্তির কোডFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত, অক্ষর দ্বারা পৃথক ..exchange.GetDepth(symbol)ফাংশন,exchangeবিটিসি এর ইউ-স্ট্যান্ডার্ড অপশন চুক্তির অর্ডার বুক ডেটা অনুরোধ করার প্রয়োজন হলে, প্যারামিটারsymbolহচ্ছেঃ"BTC_USDT.BTC-240108-40000-C"(উদাহরণস্বরূপ Binance Option BTC-240108-40000-C) ফরম্যাটটি হলট্রেডিং জুটিFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত এবং এক্সচেঞ্জ দ্বারা সংজ্ঞায়িত নির্দিষ্ট বিকল্প চুক্তির কোড, অক্ষর . দ্বারা পৃথক। প্রতীক মিথ্যা স্ট্রিং

function main(){
    var depth = exchange.GetDepth()
    /*
        The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
        At this point, the depth is null, which will cause an error when accessing depth.Asks[1].Price, so make sure you can access the exchange interface when testing the code.
    */
    var price = depth.Asks[1].Price
    Log("Sell 2 price is:", price)
}
def main():
    depth = exchange.GetDepth()
    price = depth["Asks"][1]["Price"]
    Log("Sell 2 price is:", price)
void main() {
    auto depth = exchange.GetDepth();
    auto price = depth.Asks[1].Price;
    Log("Sell 2 price is:", price);
}

পরীক্ষাexchange.GetDepth()ফাংশনঃ

function main() {
    // BTC U-based perpetual contract
    var depth = exchange.GetDepth("BTC_USDT.swap")
    Log(depth)
}
def main():
    depth = exchange.GetDepth("BTC_USDT.swap")
    Log(depth)
void main() {
    auto depth = exchange.GetDepth("BTC_USDT.swap");
    Log(depth);
}

যখন কনফিগার করাexchangeবস্তুর একটি ফিউচার বিনিময় বস্তুর, ব্যবহারsymbolএকটি নির্দিষ্ট প্রতীকের অর্ডার বুক ডেটা (ফ্যুচার প্রতীক) অনুরোধ করার পরামিতি।

ব্যাকটেস্টিং সিস্টেমে, প্রতিটি গ্রেডের জন্য ডেটাexchange.GetDepth()ফাংশন ব্যবহার করার সময়টিক সিমুলেট করুনব্যাকটেস্টিং সিস্টেমে, ব্যাকটেস্টিং সিস্টেম দ্বারা ফেরত দেওয়া তথ্যগুলিexchange.GetDepth()ফাংশন ব্যবহার করার সময়রিয়েল টিকব্যাকটেস্টিং হচ্ছে দ্বিতীয় স্তরের গভীর স্ন্যাপশট।

{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}

exchange.GetTrades

{@struct/Trade Trade} স্ট্রাকচার অ্যারেটি বর্তমান সেট ট্রেডিং জোড়া, চুক্তি কোড, অর্থাৎ বাজার লেনদেনের তথ্যের সাথে সামঞ্জস্যপূর্ণ স্পট বা চুক্তির।

দ্যexchange.GetTrades()ফাংশন {@struct/Trade Trade} স্ট্রাকচারগুলির একটি অ্যারে ফেরত দেয় যদি তথ্যের অনুরোধ সফল হয়, এবং এটি তথ্যের অনুরোধ ব্যর্থ হলে শূন্য মান ফেরত দেয়। {@struct/Trade Trade} অ্যারে, শূন্য মান

এক্সচেঞ্জ.গেটট্রেডস ((() exchange.GetTrades (প্রতীক)

প্যারামিটারsymbol{@struct/Trade Trade} অ্যারে ডেটার সাথে সংশ্লিষ্ট নির্দিষ্ট ট্রেডিং জোড়া এবং চুক্তি কোড নির্দিষ্ট করতে ব্যবহৃত হয়। যদি এই পরামিতিটি পাস না করা হয়, তাহলে বর্তমানে সেট করা ট্রেডিং জোড়া এবং চুক্তি কোডের সর্বশেষ লেনদেন রেকর্ডের তথ্য ডিফল্টরূপে অনুরোধ করা হবে। যখন কল করা হয়exchange.GetTrades(symbol)ফাংশন,exchangeযদি আপনি USDT হিসাবে নামযুক্ত মুদ্রা এবং BTC হিসাবে ট্রেডিং মুদ্রা সঙ্গে অর্ডার বুক তথ্য পেতে অনুরোধ করতে হবে, পরামিতিsymbolহচ্ছেঃ"BTC_USDT", এবং ফরম্যাট হল ট্রেডিং জোড়া ফরম্যাট যা FMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত।exchange.GetTrades(symbol)ফাংশন,exchangeযদি আপনি BTC এর U- স্ট্যান্ডার্ড চিরস্থায়ী চুক্তির অর্ডার বুক ডেটা অনুরোধ করতে চান, প্যারামিটারsymbolহচ্ছেঃ"BTC_USDT.swap", এবং ফরম্যাটটি হলট্রেডিং জুটিএবংচুক্তির কোডFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত, অক্ষর দ্বারা পৃথক ..exchange.GetTrades(symbol)ফাংশন,exchangeযদি আপনি BTC এর U- স্ট্যান্ডার্ড অপশন চুক্তির অর্ডার বুক ডেটা অনুরোধ করতে চান, প্যারামিটারsymbolহচ্ছেঃ"BTC_USDT.BTC-240108-40000-C"(উদাহরণস্বরূপ Binance Option BTC-240108-40000-C) ফরম্যাটটি হলট্রেডিং জুটিFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত এবং এক্সচেঞ্জ দ্বারা সংজ্ঞায়িত নির্দিষ্ট বিকল্প চুক্তির কোড, অক্ষর . দ্বারা পৃথক। প্রতীক মিথ্যা স্ট্রিং

function main(){
    var trades = exchange.GetTrades()
    /*
        The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
        At this point, trade is null. When accessing trade[0].Id, it will cause an error. Therefore, when testing this code, ensure that you can access the exchange interface.
    */
    Log("id:", trades[0].Id, "time:", trades[0].Time, "Price:", trades[0].Price, "Amount:", trades[0].Amount, "type:", trades[0].Type)
}
def main():
    trades = exchange.GetTrades()
    Log("id:", trades[0]["Id"], "time:", trades[0]["Time"], "Price:", trades[0]["Price"], "Amount:", trades[0]["Amount"], "type:", trades[0]["Type"])
void main() {
    auto trades = exchange.GetTrades();
    Log("id:", trades[0].Id, "time:", trades[0].Time, "Price:", trades[0].Price, "Amount:", trades[0].Amount, "type:", trades[0].Type);
}

পরীক্ষা করুনexchange.GetTrades()ফাংশনঃ

function main() {
    // BTC's U-based perpetual contract
    var trades = exchange.GetTrades("BTC_USDT.swap")
    Log(trades)
}
def main():
    trades = exchange.GetTrades("BTC_USDT.swap")
    Log(trades)
void main() {
    auto trades = exchange.GetTrades("BTC_USDT.swap");
    Log(trades);
}

যখন কনফিগার করাexchangeবস্তুর একটি ফিউচার বিনিময় বস্তুর, ব্যবহারsymbolএকটি নির্দিষ্ট প্রতীকের জন্য বাজার লেনদেনের রেকর্ডের তথ্য অনুরোধ করার পরামিতি (ফ্যুচার প্রতীক) ।

exchange.GetTrades()বর্তমান ট্রেডিং জোড়া পেতে ফাংশন, বাজার এর লেনদেনের ইতিহাস (তাদের নিজস্ব নয়) চুক্তির সাথে মিলে যায়। কিছু এক্সচেঞ্জ এই ফাংশন সমর্থন করে না, এবং নির্দিষ্ট তথ্য ফেরত হয় লেনদেন রেকর্ড পরিসীমা কত এক্সচেঞ্জ উপর নির্ভর করে এবং নির্দিষ্ট পরিস্থিতি অনুযায়ী পরিচালনা করা প্রয়োজন। ফেরত তথ্য একটি অ্যারে, যেখানে কালানুক্রমিক আদেশের প্রতিটি উপাদান এবংexchange.GetRecords ()ফাংশন একই ক্রমের ডেটা ফেরত দেয়, অর্থাৎ, অ্যারের শেষ উপাদানটি বর্তমান সময়ের নিকটতম ডেটা। দ্যexchange.GetTrades()ফাংশন একটি খালি অ্যারে ফেরত যখন ব্যবহারটিক সিমুলেট করুনব্যাকটেস্টিং সিস্টেমে ব্যাকটেস্টিং।exchange.GetTrades()ব্যবহারের সময়রিয়েল টিকব্যাকটেস্টিং সিস্টেমে ব্যাকটেস্টিং হল অর্ডার ফ্লো স্ন্যাপশট ডেটা, অর্থাৎ {@struct/Trade Trade} স্ট্রাকচার অ্যারে। এক্সচেঞ্জ যে সমর্থন করে নাexchange.GetTrades()ফাংশনঃ

ফাংশনের নাম সমর্থিত না হওয়া স্পট এক্সচেঞ্জ সমর্থিত নয় এমন ফিউচার এক্সচেঞ্জ
GetTrades ফিউচার_বিটমার্ট / ফিউচার_বিবক্স

{@fun/Market/exchange.GetTicker বিনিময়.GetTicker}, {@fun/Market/exchange.GetDepth বিনিময়.GetDepth}, {@fun/Market/exchange.GetRecords বিনিময়.GetRecords}

exchange.GetRecords

বর্তমান সেট ট্রেডিং জোড়া, চুক্তি কোড, অর্থাৎ কে-লাইন ডেটা অনুসারে স্পট বা চুক্তির {@struct/Record Record} কাঠামো অ্যারে পান।

দ্যexchange.GetRecords()ফাংশন {@struct/Record Record} স্ট্রাকচারগুলির একটি অ্যারে ফেরত দেয় যখন ডেটা অনুরোধ সফল হয়, এবং এটি ডাটা অনুরোধ ব্যর্থ হলে শূন্য মান ফেরত দেয়। {@struct/Record Record} অ্যারে, শূন্য মান

এক্সচেঞ্জ.গেট রেকর্ডস ((() exchange.GetRecords (প্রতীক) exchange.GetRecords (প্রতীক, বিন্দু) exchange.GetRecords ((প্রতীক, সময়সীমা, সীমা) এক্সচেঞ্জ.গেট রেকর্ডস (অবধি) exchange.GetRecords ((সময়সীমা, সীমা)

প্যারামিটারsymbol{@struct/Record Record} অ্যারে ডেটার সাথে সংশ্লিষ্ট নির্দিষ্ট ট্রেডিং জোড়া এবং চুক্তি কোড নির্দিষ্ট করতে ব্যবহৃত হয়। যদি এই পরামিতিটি পাস না করা হয়, তাহলে বর্তমানে সেট করা ট্রেডিং জোড়া এবং চুক্তি কোডের কে-লাইন ডেটা ডিফল্টরূপে অনুরোধ করা হবে। যখন কল করা হয়exchange.GetRecords(symbol)ফাংশন,exchangeযদি আপনি USDT হিসাবে নামযুক্ত মুদ্রা এবং BTC হিসাবে লেনদেন মুদ্রা সঙ্গে তথ্য পেতে অনুরোধ করতে হবে, পরামিতিsymbolহচ্ছেঃ"BTC_USDT", এবং ফরম্যাট হল ট্রেডিং জোড়া ফরম্যাট যা FMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত।exchange.GetRecords(symbol)ফাংশন,exchangeযদি আপনি BTC এর U- স্ট্যান্ডার্ড চিরস্থায়ী চুক্তির অর্ডার বুক ডেটা অনুরোধ করতে চান, প্যারামিটারsymbolহচ্ছেঃ"BTC_USDT.swap", এবং ফরম্যাটটি হলট্রেডিং জুটিএবংচুক্তির কোডFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত, অক্ষর দ্বারা পৃথক ..exchange.GetRecords(symbol)ফাংশন,exchangeযদি আপনি BTC এর U- স্ট্যান্ডার্ড অপশন চুক্তির অর্ডার বুক ডেটা অনুরোধ করতে চান, প্যারামিটারsymbolহচ্ছেঃ"BTC_USDT.BTC-240108-40000-C"(উদাহরণস্বরূপ Binance Option BTC-240108-40000-C) ফরম্যাটটি হলট্রেডিং জুটিFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত এবং এক্সচেঞ্জ দ্বারা সংজ্ঞায়িত নির্দিষ্ট বিকল্প চুক্তির কোড, অক্ষর . দ্বারা পৃথক। প্রতীক মিথ্যা স্ট্রিং প্যারামিটারperiodঅনুরোধ করা K-লাইন ডেটার সময় নির্দিষ্ট করে, উদাহরণস্বরূপঃ {@var/PERIOD/PERIOD_M1 PERIOD_M1}, {@var/PERIOD/PERIOD_M5 PERIOD_M5}, {@var/PERIOD/PERIOD_M15 PERIOD_M15} ইত্যাদি। পরামিতির মানperiodযদি এই প্যারামিটারটি পাস না করা হয়, তবে ডিফল্টরূপে অনুরোধ করা K-লাইন ডেটার সময়কাল বর্তমান কৌশল রিয়েল-টাইম / ব্যাকটেস্ট কনফিগারেশনের ডিফল্ট K-লাইন সময়কাল। সময়কাল মিথ্যা সংখ্যা প্যারামিটারlimitঅনুরোধ করা কে-লাইন ডেটার দৈর্ঘ্য নির্দিষ্ট করতে ব্যবহৃত হয়। যদি এই প্যারামিটারটি পাস না করা হয়, তবে ডিফল্ট অনুরোধ দৈর্ঘ্য এক্সচেঞ্জ কে-লাইন ইন্টারফেসের সময়ে অনুরোধ করা সর্বাধিক কে-লাইন বার। এই প্যারামিটারটি এক্সচেঞ্জ কে-লাইন ডেটা অনুসন্ধানের জন্য পেজিংয়ের কারণ হতে পারে এবং পেজিং অনুসন্ধানের সময় ফাংশন কলের সময় খরচ বৃদ্ধি পাবে। সীমা মিথ্যা সংখ্যা

function main() {
    // Print K-line data with a K-line period of 120 seconds (2 minutes)
    Log(exchange.GetRecords(60 * 2))         
    // Print K-line data with a K-line period of 5 minutes
    Log(exchange.GetRecords(PERIOD_M5))      
}
def main():
    Log(exchange.GetRecords(60 * 2))
    Log(exchange.GetRecords(PERIOD_M5))
void main() {
    Log(exchange.GetRecords(60 * 2)[0]);
    Log(exchange.GetRecords(PERIOD_M5)[0]);
}

একটি কাস্টম সময়ের জন্য কে-লাইন ডেটা পান।

function main() {
    var records = exchange.GetRecords(PERIOD_H1)
    /*
        The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
        At this point, records is null. When accessing records[0].Time, it will cause an error. Therefore, when testing this code, ensure that you can access the exchange interface.
    */
    Log("The first k-line data is Time:", records[0].Time, "Open:", records[0].Open, "High:", records[0].High)
    Log("The second k-line data is Time:", records[1].Time ,"Close:", records[1].Close)
    Log("Current K-line (latest)", records[records.length-1], "Previous K-line", records[records.length-2])
}
def main():
    records = exchange.GetRecords(PERIOD_H1)
    Log("The first k-line data is Time:", records[0]["Time"], "Open:", records[0]["Open"], "High:", records[0]["High"])
    Log("The second k-line data Time:", records[1]["Time"], "Close:", records[1]["Close"])
    Log("Current K-line (latest)", records[-1], "Previous K-line", records[-2])
void main() {
    auto records = exchange.GetRecords(PERIOD_H1);
    Log("The first k-line data is Time:", records[0].Time, "Open:", records[0].Open, "High:", records[0].High);
    Log("The second k-line data Time:", records[1].Time, "Close:", records[1].Close);
    Log("Current K-line (latest)", records[records.size() - 1], "Previous K-line", records[records.size() - 2]);
}

আউটপুট কে-লাইন বার ডেটাঃ

function main() {
    var records = exchange.GetRecords("BTC_USDT.swap", 60, 100)
    Log(records)
}
def main():
    records = exchange.GetRecords("BTC_USDT.swap", 60, 100)
    Log(records)
void main() {
    auto records = exchange.GetRecords("BTC_USDT.swap", 60, 100);
    Log(records);
}

যখন কনফিগার করাexchangeবস্তুর একটি ফিউচার বিনিময় বস্তুর, ব্যবহারsymbol, period, এবংlimitএকটি নির্দিষ্ট পণ্যের (ভবিষ্যতের পণ্য) কে-লাইন ডেটা অনুরোধ করার জন্য পরামিতি।

ডিফল্ট K-লাইন সময়কাল ব্যাকটেস্ট এবং বাস্তব ট্রেডিং পৃষ্ঠাগুলিতে সেট করা যেতে পারে. আপনি যদি একটি পরামিতি নির্দিষ্ট যখন কলexchange.GetRecords()ফাংশন, সেই প্যারামিটার সময়ের সাথে সম্পর্কিত কে-লাইন ডেটা প্রাপ্ত হবে। যদি ফাংশনটি কল করার সময় কোনও প্যারামিটার নির্দিষ্ট করা না হয় তবে ব্যাকটেস্ট এবং বাস্তব বাজারের প্যারামিটারে সেট করা কে-লাইন সময়ের সাথে সম্পর্কিত সম্পর্কিত কে-লাইন ডেটা ফেরত দেওয়া হবে। রিটার্ন মান একটি অ্যারেRecordকাঠামো, ফিরে K-লাইন তথ্য সময়ের সাথে সাথে জমা হবে, জমা K-লাইন বার উপরের সীমা দ্বারা প্রভাবিত হয়exchange.SetMaxBarLen()ফাংশন সেটিং। ডিফল্ট সীমা 5000 বার যখন এটি সেট করা হয় না। যখন কে-লাইন ডেটা কে-লাইন বার জমে থাকা সীমাতে পৌঁছে যায়, এটি একটি কে-লাইন বার যুক্ত করে এবং প্রাথমিক কে-লাইন বারটি মুছে ফেলার মাধ্যমে আপডেট করা হবে (যেমন কিউ ইন / আউট) । কিছু এক্সচেঞ্জ একটি কে-লাইন ইন্টারফেস সরবরাহ করে না, তাই ডকার বাজার লেনদেন রেকর্ড ডেটা সংগ্রহ করে (Tradeকাঠামোগত অ্যারে) রিয়েল টাইমে K-লাইন তৈরি করতে। যদি এক্সচেঞ্জের কে-লাইন ইন্টারফেস পেজিং ক্যোয়ারী সমর্থন করে, একাধিক এপিআই অনুরোধ করা হবে যখন কলexchange.SetMaxBarLen()একটি বৃহত্তর কে-লাইন দৈর্ঘ্য সেট করার জন্য ফাংশন। যখনexchange.GetRecords()ফাংশনটি প্রাথমিকভাবে কল করা হলে, ব্যাকটেস্টিং এবং বাস্তব ট্রেডিংয়ের মধ্যে প্রাপ্ত কে-লাইন বারগুলির সংখ্যা পৃথক হয়ঃ - ব্যাকটেস্টিং সিস্টেম ব্যাকটেস্টিং সময়সীমার শুরু হওয়ার আগে একটি নির্দিষ্ট সংখ্যক কে-লাইন বারগুলি প্রাপ্ত করবে (ডিফল্টটি 5000, ব্যাকটেস্টিং সিস্টেমের সেটিংস এবং ডেটা পরিমাণটি চূড়ান্ত সংখ্যাটি প্রভাবিত করবে), প্রাথমিক কে-লাইন ডেটা হিসাবে। - প্রকৃত ট্রেডিংয়ের সময় প্রাপ্ত কে-লাইন বারগুলির সংখ্যা এক্সচেঞ্জের কে-লাইন ইন্টারফেস থেকে প্রাপ্ত করা যেতে পারে এমন সর্বোচ্চ পরিমাণের উপর ভিত্তি করে। দ্যperiodপ্যারামিটার 5 সেট করা হয়, যা 5 সেকেন্ডের একটি সময়ের সাথে K- লাইন তথ্য পেতে একটি অনুরোধ।periodপ্যারামিটারটি 60 দ্বারা বিভাজ্য নয় (যেমন, প্রতিনিধিত্ব করা সময়টি মিনিটে বিভাজ্য নয়) ।exchange.GetTrades()লেনদেনের রেকর্ডের তথ্য সংগ্রহ এবং প্রয়োজনীয় কে-লাইন ডেটা সংকলন।periodপ্যারামিটারটি ৬০ দ্বারা বিভাজ্য হলে, প্রয়োজনীয় কে-লাইন ডেটা কমপক্ষে ১ মিনিটের কে-লাইন ডেটা ব্যবহার করে সংশ্লেষণ করা হয় (যদি সম্ভব হয়, প্রয়োজনীয় কে-লাইন ডেটা বৃহত্তর সময়কাল ব্যবহার করে সংশ্লেষণ করা হয়) । ব্যাকটেস্টিং সিস্টেমে সিমুলেটেড লেভেল ব্যাকটেস্টিংয়ের জন্য অন্তর্নিহিত কে-লাইন সময়ের সেটিং প্রয়োজন (যখন ব্যাকটেস্টিং সিস্টেম স্তরের ব্যাকটেস্টিং সিমুলেট করে, তখন সংশ্লিষ্ট কে-লাইন ডেটা সেট অন্তর্নিহিত কে-লাইন সময়ের অনুযায়ী টিক ডেটা তৈরি করতে ব্যবহৃত হয়) । এটি লক্ষ করা উচিত যে কৌশলটিতে প্রাপ্ত কে-লাইন ডেটার সময়কাল অন্তর্নিহিত কে-লাইন সময়ের চেয়ে ছোট হওয়া উচিত নয়। কারণ সিমুলেশন স্তরের ব্যাকটেস্টিংয়ে, ব্যাকটেস্টিং সিস্টেমের প্রতিটি সময়ের কে-লাইন ডেটা অন্তর্নিহিত কে-লাইন সময়ের কে-লাইন ডেটা থেকে সংশ্লেষিত হয়। দ্যC++যদি আপনার নিজের কে-লাইন ডেটা তৈরি করতে হয় তাহলে এই ভাষার নিম্নলিখিত কোড উদাহরণ রয়েছেঃ

#include <sstream>
void main() { 
    Records r;
    r.Valid = true;
    for (auto i = 0; i < 10; i++) {
        Record ele;
        ele.Time = i * 100000;
        ele.High = i * 10000;
        ele.Low = i * 1000;
        ele.Close = i * 100;
        ele.Open = i * 10;
        ele.Volume = i * 1;
        r.push_back(ele);
    }
    // Output display: Records[10]
    Log(r);                      
    auto ma = TA.MA(r,10);       
    // Output display: [nan,nan,nan,nan,nan,nan,nan,nan,nan,450]
    Log(ma);                     
}

এক্সচেঞ্জ যে সমর্থন করে নাexchange.GetRecords()ফাংশনঃ

ফাংশনের নাম সমর্থিত না হওয়া স্পট এক্সচেঞ্জ সমর্থিত নয় এমন ফিউচার এক্সচেঞ্জ
GetRecords Zaif / Coincheck / BitFlyer ফিউচার_এভো

{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.SetMaxBarLen exchange.SetMaxBarLen}

exchange.GetPeriod

এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মের ওয়েবসাইট পৃষ্ঠায় ব্যাকটেস্টিং এবং লাইভ ট্রেডিংয়ে কৌশলটি চালানোর সময় কে-লাইন সময়কাল সেট করুন, অর্থাৎ ডিফল্ট কে-লাইন সময়কাল কল করার সময় ব্যবহৃত হয়exchange.GetRecords()প্যারামিটার পাস না করে ফাংশন।

সেকেন্ডে কে-লাইন সময়কাল, সেকেন্ডে পূর্ণসংখ্যা মান। সংখ্যা

বিনিময়.GetPeriod ((()

function main() {
    // For example, the K-line period set on the website page of the FMZ Quant Trading platform during backtesting and live trading is 1 hour.
    var period = exchange.GetPeriod()
    Log("K-line period:", period / (60 * 60), "hours")
}
def main():
    period = exchange.GetPeriod()
    Log("K-line period:", period / (60 * 60), "hours")
void main() {
    auto period = exchange.GetPeriod();
    Log("K-line period:", period / (60 * 60.0), "hours");
}

{@fun/Market/exchange.GetRecords বিনিময়.GetRecords}

exchange.SetMaxBarLen

কে-লাইনের সর্বাধিক দৈর্ঘ্য সেট করুন।

বিনিময়.SetMaxBarLen ((n)

প্যারামিটারnসর্বাধিক কে-লাইন দৈর্ঘ্য নির্দিষ্ট করতে ব্যবহৃত হয়। n সত্য সংখ্যা

function main() {
    exchange.SetMaxBarLen(50)
    var records = exchange.GetRecords()
    Log(records.length, records)
}
def main():
    exchange.SetMaxBarLen(50)
    r = exchange.GetRecords()
    Log(len(r), r)
void main() {
    exchange.SetMaxBarLen(50);
    auto r = exchange.GetRecords();
    Log(r.size(), r[0]);
}

দ্যexchange.SetMaxBarLen()ফাংশন ক্রিপ্টোকারেন্সি কৌশল রানটাইমের জন্য দুটি দিককে প্রভাবিত করেঃ

  • প্রথম কলের সময় পাওয়া K-line bars (Bars) এর সংখ্যাকে প্রভাবিত করে।
  • এটি K-line bars (Bars) এর সর্বাধিক সংখ্যাকে প্রভাবিত করে।

{@fun/Market/exchange.GetRecords বিনিময়.GetRecords}

exchange.GetRawJSON

মূল বিষয়বস্তু শেষ পর্যন্ত ফিরিয়ে আনুনrestবর্তমান এক্সচেঞ্জ অবজেক্টের জন্য অনুরোধ ({@var/EXCHANGE exchange}, {@var/EXCHANGE/exchanges exchanges}) ।

এর জন্য প্রতিক্রিয়াrestঅনুরোধ। স্ট্রিং

exchange.GetRawJSON (()

function main(){
    exchange.GetAccount(); 
    var obj = JSON.parse(exchange.GetRawJSON());
    Log(obj);
}
import json
def main():
    exchange.GetAccount()
    obj = json.loads(exchange.GetRawJSON())
    Log(obj)
void main() {
    auto obj = exchange.GetAccount();
    // C++ does not support the GetRawJSON function
    Log(obj);
}

দ্যexchange.GetRawJSON()ফাংশন শুধুমাত্র বাস্তব ট্রেডিং জন্য সমর্থিত হয়।C++ language.

{@var/EXCHANGE বিনিময়}

exchange.GetRate

বিনিময় বস্তুর জন্য বর্তমানে সেট করা বিনিময় হার পান.

এক্সচেঞ্জ অবজেক্টের বিনিময় হারের বর্তমান মান। সংখ্যা

exchange.GetRate ((()

function main(){
    Log(exchange.GetTicker())
    // Set up exchange rate conversion
    exchange.SetRate(7)
    Log(exchange.GetTicker())
    Log("Current exchange rate:", exchange.GetRate())
}
def main():
    Log(exchange.GetTicker())
    exchange.SetRate(7)
    Log(exchange.GetTicker())
    Log("Current exchange rate:", exchange.GetRate())
void main() {
    Log(exchange.GetTicker());
    exchange.SetRate(7);
    Log(exchange.GetTicker());
    Log("Current exchange rate:", exchange.GetRate());
}

যদিexchange.SetRate()রূপান্তর হার নির্ধারণের জন্য ডাকা হয়নি,exchange.GetRate()ফাংশনটি 1 এর একটি ডিফল্ট হার মান প্রদান করে। অর্থাৎ, বর্তমানে প্রদর্শিত মুদ্রার (quoteCurrency) সাথে সম্পর্কিত ডেটা রূপান্তর করা হয়নি। যদি একটি বিনিময় হার মান ব্যবহার করে সেট করা হয়েছেexchange.SetRate()যেমন,exchange.SetRate(7). তারপর সমস্ত মূল্য তথ্য, যেমন উদ্ধৃতি, গভীরতা, এবং অর্ডার দাম মাধ্যমে প্রাপ্তexchangeবিনিময় বস্তুর রূপান্তর করা হবে নির্ধারিত বিনিময় হার দ্বারা গুণিত7. যদিexchangeডলার (USD) এর সাথে বিনিময় করা হয়।exchange.SetRate(7), লাইভ মার্কেটে সমস্ত দাম সিএনওয়াই-র কাছাকাছি একটি মূল্যে রূপান্তরিত হবে7এই সময়ে, বিনিময় হার মান ব্যবহার করে প্রাপ্তexchange.GetRate()হয়7.

{@fun/Trade/exchange.SetRate exchange.SetRate}

exchange.SetData

দ্যexchange.SetData()ফাংশনটি কৌশলটি চালানোর সময় লোড করা ডেটা সেট করতে ব্যবহৃত হয়।

প্যারামিটারের পরে স্ট্রিংয়ের দৈর্ঘ্যvalueJSON কোডিং। সংখ্যা

exchange.SetData ((কী, মান)

তথ্য সংগ্রহের নাম। চাবি সত্য স্ট্রিং তথ্য লোড করা হবেexchange.SetData()ফাংশন একটি অ্যারে একটি ডাটা স্ট্রাকচার আছে. ডাটা স্ট্রাকচার ডাটা ফরম্যাট দ্বারা অনুরোধ করা হয় একইexchange.GetData()বাহ্যিক তথ্য অনুরোধ করার সময় ফাংশন, যেমনঃ"schema": ["time", "data"]. মূল্য সত্য অ্যারে

/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
    var data = [
        [1579536000000, "abc"],
        [1579622400000, 123],
        [1579708800000, {"price": 123}],
        [1579795200000, ["abc", 123, {"price": 123}]]
    ]
    exchange.SetData("test", data)
    while(true) {
        Log(exchange.GetData("test"))
        Sleep(1000)
    }
}
'''backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''              

def main():
    data = [
        [1579536000000, "abc"],
        [1579622400000, 123],
        [1579708800000, {"price": 123}],
        [1579795200000, ["abc", 123, {"price": 123}]]
    ]
    exchange.SetData("test", data)
    while True:
        Log(exchange.GetData("test"))
        Sleep(1000)
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/              

void main() {
    json data = R"([
        [1579536000000, "abc"],
        [1579622400000, 123],
        [1579708800000, {"price": 123}],
        [1579795200000, ["abc", 123, {"price": 123}]]
    ])"_json;
    
    exchange.SetData("test", data);
    while(true) {
        Log(exchange.GetData("test"));
        Sleep(1000);
    }
}

এটা প্রয়োজন যে প্যারামিটার জন্য তথ্যvalueএকই ফরম্যাটে হতে হবেdataআপনি দেখতে পারেন যে টাইমস্ট্যাম্প1579622400000সময় অনুসারে2020-01-22 00:00:00, এবং যে যখন কৌশল প্রোগ্রাম এই সময় পরে চালানো হয়, কলexchange.GetData()পরবর্তী ডেটা টাইমস্ট্যাম্পের আগে তথ্য পেতে ফাংশন1579708800000, অর্থাৎ, সময়2020-01-23 00:00:00তুমি যা পাবে তা হল[1579622400000, 123]যে তথ্যের বিষয়বস্তু, প্রোগ্রাম চালানো অব্যাহত হিসাবে, সময় পরিবর্তন, এবং তাই আইটেম দ্বারা তথ্য আইটেম পেতে. নিম্নলিখিত উদাহরণে, রানটাইম (ব্যাক টেস্টিং বা লাইভ ট্রেডিং), বর্তমান মুহূর্ত সময় স্ট্যাম্প পৌঁছায় বা অতিক্রম করে1579795200000,exchange.GetData()ফাংশন কল করা হয় এবং রিটার্ন মান হলঃ{"Time":1579795200000,"Data":["abc", 123,{"price":123}]}. "Time":1579795200000এর সাথে মিলে যায়1579795200000তথ্য[1579795200000, ["abc", 123, {"price": 123}]]. "Data":["abc", 123, {"price": 123}]তথ্যের সাথে মিলে যায়["abc", 123, {"price": 123}]]মধ্যে[1579795200000, ["abc", 123, {"price": 123}]].

লোড করা ডেটা যেকোনো অর্থনৈতিক সূচক, শিল্পের তথ্য, প্রাসঙ্গিক সূচক ইত্যাদি হতে পারে, যা সমস্ত পরিমাপযোগ্য তথ্যের কৌশলগত পরিমাণগত মূল্যায়নের জন্য ব্যবহৃত হয়।

{@fun/Market/exchange.GetData exchange.GetData} {@fun/Market/exchange.GetData.exchange.GetData} {@fun/Market/exchange.GetData.exchange.GetData.} {@fun/Market/exchange.GetData.exchange.GetData.GetData.} {@market/exchange.getData.exchange.getData.exchange.getData.exchange.getData.} {@market/exchange.getData.exchange.getData.}

exchange.GetData

দ্যexchange.GetData()ফাংশনটি ডাটা লোড করার জন্য ব্যবহৃত হয়exchange.SetData()ফাংশন বা একটি বহিরাগত লিঙ্ক দ্বারা উপলব্ধ।

তথ্য সংগ্রহের রেকর্ড। বস্তু

বিনিময়.GetData ((কী) বিনিময়.GetData ((কী, টাইমআউট)

তথ্য সংগ্রহের নাম। চাবি সত্য স্ট্রিং ক্যাশে টাইমআউট মিলিসেকেন্ডে সেট করতে ব্যবহৃত হয়। লাইভ ট্রেডিংয়ের জন্য ডিফল্ট এক মিনিটের ক্যাশে টাইমআউট। টাইমআউট মিথ্যা সংখ্যা

/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
    exchange.SetData("test", [[1579536000000, _D(1579536000000)], [1579622400000, _D(1579622400000)], [1579708800000, _D(1579708800000)]])
    while(true) {
        Log(exchange.GetData("test"))
        Sleep(1000 * 60 * 60 * 24)
    }
}
'''backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''  
def main():
    exchange.SetData("test", [[1579536000000, _D(1579536000000/1000)], [1579622400000, _D(1579622400000/1000)], [1579708800000, _D(1579708800000/1000)]])
    while True:
        Log(exchange.GetData("test"))
        Sleep(1000 * 60 * 60 * 24)
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/    
void main() {
    json arr = R"([[1579536000000, ""], [1579622400000, ""], [1579708800000, ""]])"_json;
    arr[0][1] = _D(1579536000000);
    arr[1][1] = _D(1579622400000);
    arr[2][1] = _D(1579708800000);
    exchange.SetData("test", arr);
    while(true) {
        Log(exchange.GetData("test"));
        Sleep(1000 * 60 * 60 * 24);
    }
}

সরাসরি ডাটা লেখার জন্য কল।

/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
    while(true) {
        Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
        Sleep(1000)
    }
}
'''backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''              

def main():
    while True:
        Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
        Sleep(1000)
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/              

void main() {
    while(true) {
        Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"));
        Sleep(1000);
    }
}

এটি বহিরাগত লিঙ্কগুলির মাধ্যমে ডেটা অনুরোধ করার জন্য সমর্থন করে, অনুরোধ করা ডেটাগুলির বিন্যাসঃ

{
    "schema":["time","data"],
    "data":[
        [1579536000000, "abc"],
        [1579622400000, 123],
        [1579708800000, {"price": 123}],
        [1579795200000, ["abc", 123, {"price": 123}]]
    ]
}

কোথায়schemaলোড করা তথ্যের শরীরে প্রতিটি রেকর্ডের জন্য ডেটা ফর্ম্যাট, যা["time", "data"]যেটি এন্ট্রি-বাই-এন্ট্রি তথ্যের ফরম্যাটের সাথে মিলে যায়dataঅ্যাট্রিবিউট। কী কী সংরক্ষণ করা হয়dataঅ্যাট্রিবিউট হল ডেটার দেহ, প্রতিটি এন্ট্রিতে মিলিসেকেন্ড স্তরের টাইমস্ট্যাম্প এবং ডেটা সামগ্রী (যা যে কোনও JSON- এনকোডেবল ডেটা হতে পারে) থাকে। পরীক্ষার জন্য সার্ভিস প্রোগ্রাম, গোতে লেখাঃ

package main
import (
    "fmt"
    "net/http"
    "encoding/json"
)                

func Handle (w http.ResponseWriter, r *http.Request) {
    defer func() {
        fmt.Println("req:", *r)
        ret := map[string]interface{}{
            "schema": []string{"time","data"},
            "data": []interface{}{
                []interface{}{1579536000000, "abc"},
                []interface{}{1579622400000, 123},
                []interface{}{1579708800000, map[string]interface{}{"price":123}},
                []interface{}{1579795200000, []interface{}{"abc", 123, map[string]interface{}{"price":123}}},
            },
        }
        b, _ := json.Marshal(ret)
        w.Write(b)
    }()
}                

func main () {
    fmt.Println("listen http://localhost:9090")
    http.HandleFunc("/data", Handle)
    http.ListenAndServe(":9090", nil)
}

অনুরোধ প্রাপ্তির পর প্রোগ্রামের প্রতিক্রিয়া তথ্যঃ

{
    "schema":["time","data"],
    "data":[
        [1579536000000, "abc"],
        [1579622400000, 123],
        [1579708800000, {"price": 123}],
        [1579795200000, ["abc", 123, {"price": 123}]]
    ]
}

পরীক্ষার কৌশল কোডঃ

function main() {
    Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
    Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"))
}
def main():
    Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
    Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"))
void main() {
    Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"));
    Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"));
}

একটি বাহ্যিক লিঙ্কের তথ্য পাওয়ার জন্য কল পদ্ধতি।

function main() {
    Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data"))   // The xxx part of the link is the code of the query data, here xxx is an example.
}
def main():
    Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data"))
void main() {
    Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data"));
}

প্ল্যাটফর্মে তৈরি একটি ক্যোয়ারির জন্য তথ্য অনুরোধ করুনডেটা, অনুরোধ যে উত্তর তথ্য বিন্যাস হতে হবে (সময় থাকতে হবে, স্কিম বর্ণিত তথ্য ক্ষেত্র):

{
    "data": [],
    "schema": ["time", "data"]
}

data ক্ষেত্রটি প্রয়োজনীয় তথ্যের বিষয়বস্তু, এবং data ক্ষেত্রের তথ্যগুলি schema এ সম্মত হওয়া তথ্যগুলির সাথে একই হতে হবে।exchange.GetData()ফাংশন কল করা হয়, একটি JSON অবজেক্ট ফেরত দেওয়া হয়, উদাহরণস্বরূপঃ{"Time":1579795200000, "Data":"..."}.

ব্যাকটেস্টিং সিস্টেমে, অ্যাক্সেস ইন্টারফেস ব্যবহার করে তথ্য অনুরোধ করার সময়, ব্যাকটেস্টিং সিস্টেম স্বয়ংক্রিয়ভাবে যোগ করেfrom(সেকেন্ডে টাইমস্ট্যাম্প)to(সেকেন্ডে টাইমস্ট্যাম্প করা) অনুরোধ, প্যারামিটার যেমনঃperiod(অন্তর্নিহিত কে-লাইন সময়কাল, মিলিসেকেন্ডে টাইমস্ট্যাম্প করা) সময়সীমা নির্ধারণ করতে ব্যবহৃত হয় যার মধ্যে তথ্য সংগ্রহ করা হবে।

{@fun/Market/exchange.SetData exchange.SetData}

exchange.GetMarkets

দ্যexchange.GetMarkets()ফাংশনটি বিনিময় বাজারের তথ্য পেতে ব্যবহৃত হয়।

{@struct/Market Market} কাঠামো সহ অভিধান। বস্তু

এক্সচেঞ্জ.গেটমার্কেটস

function main() {
    var markets = exchange.GetMarkets()
    var currency = exchange.GetCurrency()

    // Get the current contract code can also use exchange.GetContractType() function
    var ct = "swap"

    var key = currency + "." + ct
    Log(key, ":", markets[key])
}
def main():
    markets = exchange.GetMarkets()
    currency = exchange.GetCurrency()
    ct = "swap"

    key = currency + "." + ct
    Log(key, ":", markets[key])
void main() {
    auto markets = exchange.GetMarkets();
    auto currency = exchange.GetCurrency();

    auto ct = "swap";
    auto key = currency + "." + ct;
    Log(key, ":", markets[key]);
}

একটি ফিউচার এক্সচেঞ্জ অবজেক্টের কলের উদাহরণঃ

/*backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

function main() {
    var arrSymbol = ["SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]

    var tbl1 = {
        type: "table",
        title: "markets1",
        cols: ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
        rows: []
    }

    var markets1 = exchange.GetMarkets()
    for (var key in markets1) {
        var market = markets1[key]
        tbl1.rows.push([key, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize, market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal])
    }

    for (var symbol of arrSymbol) {
        exchange.GetTicker(symbol)
    }

    var tbl2 = {
        type: "table",
        title: "markets2",
        cols: ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
        rows: []
    }

    var markets2 = exchange.GetMarkets()
    for (var key in markets2) {
        var market = markets2[key]
        tbl2.rows.push([key, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize, market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal])
    }

    LogStatus("`" + JSON.stringify([tbl1, tbl2]) + "`")
}
'''backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''

import json

def main():
    arrSymbol = ["SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]

    tbl1 = {
        "type": "table",
        "title": "markets1",
        "cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
        "rows": []
    }

    markets1 = exchange.GetMarkets()
    for key in markets1:
        market = markets1[key]
        tbl1["rows"].append([key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]])

    for symbol in arrSymbol:
        exchange.GetTicker(symbol)

    tbl2 = {
        "type": "table",
        "title": "markets2",
        "cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
        "rows": []
    }

    markets2 = exchange.GetMarkets()
    for key in markets2:
        market = markets2[key]
        tbl2["rows"].append([key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]])

    LogStatus("`" + json.dumps([tbl1, tbl2]) + "`")
/*backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

void main() {
    auto arrSymbol = {"SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"};

    json tbl1 = R"({
        "type": "table",
        "title": "markets1",
        "cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
        "rows": []
    })"_json;

    auto markets1 = exchange.GetMarkets();
    for (auto& [key, market] : markets1.items()) {
        json arrJson = {key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]};
        tbl1["rows"].push_back(arrJson);
    }

    for (const auto& symbol : arrSymbol) {
        exchange.GetTicker(symbol);
    }

    json tbl2 = R"({
        "type": "table",
        "title": "markets2",
        "cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
        "rows": []
    })"_json;

    auto markets2 = exchange.GetMarkets();
    for (auto& [key, market] : markets2.items()) {
        json arrJson = {key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]};
        tbl2["rows"].push_back(arrJson);
    }

    json tbls = R"([])"_json;
    tbls.push_back(tbl1);
    tbls.push_back(tbl2);
    LogStatus("`" + tbls.dump() + "`");
}

ফিউচার এক্সচেঞ্জ অবজেক্ট ব্যবহার করুন কল করতেexchange.GetMarkets()ব্যাকটেস্টিং সিস্টেমে ফাংশন। কোনও বাজার ফাংশন কল করার আগে, গেটমার্কেটস কেবল বর্তমান ডিফল্ট ট্রেডিং জোড়ার বাজার ডেটা ফেরত দেয়। বাজার ফাংশন কল করার পরে, এটি সমস্ত অনুরোধ করা জাতের বাজার ডেটা ফেরত দেয়। আপনি নিম্নলিখিত পরীক্ষার উদাহরণটি উল্লেখ করতে পারেনঃ

দ্যexchange.GetMarkets()ফাংশনটি একটি ট্রেডিং জাতের নামের একটি কী সহ একটি অভিধান প্রদান করে এবং ট্রেডিং জোড়া হিসাবে ফরম্যাট করা স্পট ফিক্সগুলির জন্য, উদাহরণস্বরূপঃ

{
    "BTC_USDT" : {...},  // The key value is the Market structure
    "LTC_USDT" : {...},  
    ...
}

ফিউচার কন্ট্রাক্ট এক্সচেঞ্জের জন্য, কারণ একই ধরণের একাধিক কন্ট্রাক্ট থাকতে পারে, যেমনঃBTC_USDTট্রেডিং জোড়া, সেখানে চিরস্থায়ী চুক্তি, ত্রৈমাসিক চুক্তি, ইত্যাদি।exchange.GetMarkets()ফাংশনটি একটি শব্দকোষকে ফেরত দেয় যা চুক্তির কোডের সাথে যুক্ত জোড়ার কী নাম সহ, উদাহরণস্বরূপঃ

{
    "BTC_USDT.swap" : {...},     // The key value is the Market structure
    "BTC_USDT.quarter" : {...}, 
    "LTC_USDT.swap" : {...},
    ...
}
  • দ্যexchange.GetMarkets()ফাংশন লাইভ ট্রেডিং, ব্যাকটেস্টিং সিস্টেম সমর্থন করে।
  • দ্যexchange.GetMarkets()এই ফাংশনটি কেবলমাত্র এক্সচেঞ্জে অনলাইনে ট্রেড করা জাতের জন্য বাজার তথ্য প্রদান করে।
  • দ্যexchange.GetMarkets()ফাংশন বিকল্প চুক্তি সমর্থন করে না.

এক্সচেঞ্জ যে সমর্থন করে নাexchange.GetMarkets()ফাংশনঃ

ফাংশনের নাম সমর্থিত না হওয়া স্পট এক্সচেঞ্জ সমর্থিত নয় এমন ফিউচার এক্সচেঞ্জ
GetMarkets কয়েনচেক / বিথাম্ব / বিটফ্লায়ার

{@struct/মার্কেট মার্কেট}

exchange.GetTickers

দ্যexchange.GetTickers()ফাংশনটি এক্সচেঞ্জ সমষ্টিগত টিকার ডেটা পেতে ব্যবহৃত হয় ({@struct/Ticker Ticker} কাঠামোর অ্যারে) ।exchangeযখন এটি একটি স্পট এক্সচেঞ্জ অবজেক্ট হয় তখন সমস্ত ট্রেডিং জোড়ার জন্য টিকার ডেটা ফেরত দেয়;exchangeফিউচার এক্সচেঞ্জ অবজেক্টের ক্ষেত্রে সমস্ত চুক্তির জন্য টিকার ডেটা প্রদান করে।

দ্যexchange.GetTickers()ফাংশনটি {@struct/Ticker Ticker} স্ট্রাকচারগুলির একটি অ্যারে ফেরত দেয় যখন এটি ডেটা অনুরোধে সফল হয় এবং ব্যর্থ হলে শূন্য হয়। {@struct/Ticker Ticker} অ্যারে, শূন্য মান

বিনিময়.GetTickers ((()

function main() {
    var tickers = exchange.GetTickers()
    if (tickers && tickers.length > 0) {
        Log("Number of tradable items on the exchange:", tickers.length)
    }
}
def main():
    tickers = exchange.GetTickers()
    if tickers and len(tickers) > 0:
        Log("Number of tradable items on the exchange:", len(tickers))
void main() {
    auto tickers = exchange.GetTickers();
    if (tickers.Valid && tickers.size() > 0) {
        Log("Number of tradable items on the exchange:", tickers.size());
    }
}

কল করুনexchange.GetTickers()সমষ্টিগত বাজার তথ্য পাওয়ার জন্য কাজ করে।

/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

function main() {
    var arrSymbol = ["ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"]
    
    // Before requesting other trading pair market data, call Get Tickers
    var tickers1 = exchange.GetTickers()
    var tbl1 = {type: "table", title: "tickers1", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
    for (var ticker of tickers1) {
        tbl1.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
    }
    
    // Request market data for other trading pairs
    for (var symbol of arrSymbol) {
        exchange.GetTicker(symbol)
    }

    // Call GetTickers again
    var tickers2 = exchange.GetTickers()
    var tbl2 = {type: "table", title: "tickers2", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
    for (var ticker of tickers2) {
        tbl2.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
    }

    LogStatus("`" + JSON.stringify([tbl1, tbl2]) +  "`")
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
'''

import json

def main():
    arrSymbol = ["ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"]
        
    tickers1 = exchange.GetTickers()
    tbl1 = {"type": "table", "title": "tickers1", "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], "rows": []}
    for ticker in tickers1:
        tbl1["rows"].append([ticker["Symbol"], ticker["High"], ticker["Open"], ticker["Low"], ticker["Last"], ticker["Buy"], ticker["Sell"], ticker["Time"], ticker["Volume"]])
    
    for symbol in arrSymbol:
        exchange.GetTicker(symbol)
    
    tickers2 = exchange.GetTickers()
    tbl2 = {"type": "table", "title": "tickers2", "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], "rows": []}
    for ticker in tickers2:
        tbl2["rows"].append([ticker["Symbol"], ticker["High"], ticker["Open"], ticker["Low"], ticker["Last"], ticker["Buy"], ticker["Sell"], ticker["Time"], ticker["Volume"]])
    
    LogStatus("`" + json.dumps([tbl1, tbl2]) +  "`")
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

json tickerToJson(const Ticker& ticker) {
    json arrJson;

    arrJson.push_back(ticker.Symbol);
    arrJson.push_back(ticker.High);
    arrJson.push_back(ticker.Open);
    arrJson.push_back(ticker.Low);
    arrJson.push_back(ticker.Last);
    arrJson.push_back(ticker.Buy);
    arrJson.push_back(ticker.Sell);
    arrJson.push_back(ticker.Time);
    arrJson.push_back(ticker.Volume);

    return arrJson;
}

void main() {
    std::string arrSymbol[] = {"ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"};
    
    auto tickers1 = exchange.GetTickers();
    json tbl1 = R"({
        "type": "table", 
        "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"],
        "rows": []
    })"_json;
    tbl1["title"] = "tickers1";
    
    for (const auto& ticker : tickers1) {
        json arrJson = tickerToJson(ticker);
        tbl1["rows"].push_back(arrJson);
    }
    
    for (const std::string& symbol : arrSymbol) {
        exchange.GetTicker(symbol);
    }
    
    auto tickers2 = exchange.GetTickers();
    json tbl2 = R"({
        "type": "table", 
        "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"],
        "rows": []
    })"_json;
    tbl2["title"] = "tickers2";
    
    for (const auto& ticker : tickers2) {
        json arrJson = tickerToJson(ticker);
        tbl2["rows"].push_back(arrJson);
    }
    
    json tbls = R"([])"_json;
    tbls.push_back(tbl1);
    tbls.push_back(tbl2);
    LogStatus("`" + tbls.dump() + "`");
}

স্পট এক্সচেঞ্জ বস্তু ব্যবহার করুন এবং কলexchange.GetTickers()ব্যাকটেস্ট সিস্টেমে ফাংশন। কোনও বাজার ফাংশন কল করার আগে, গেটটিকার্স কেবল বর্তমান ডিফল্ট ট্রেডিং জোড়ার টিকার ডেটা ফেরত দেয়। বাজার ফাংশন কল করার পরে, এটি সমস্ত অনুরোধ করা জাতের টিকার ডেটা ফেরত দেয়। আপনি নিম্নলিখিত পরীক্ষার উদাহরণটি উল্লেখ করতে পারেনঃ

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

এক্সচেঞ্জ যে সমর্থন করে নাexchange.GetTickers()ফাংশনঃ

ফাংশনের নাম সমর্থিত না হওয়া স্পট এক্সচেঞ্জ সমর্থিত নয় এমন ফিউচার এক্সচেঞ্জ
GetTickers জাইফ / উও / জেমিনি / কয়েনচেক / বিটফ্লায়ার / বিবক্স ফিউচারস_ডাব্লুওও / ফিউচারস_ডিওয়াইডিএক্স / ফিউচারস_ডেরিবিট / ফিউচারস_বিবক্স / ফিউচারস_এভো

{@struct/TickerTicker}, {@fun/Market/exchange.GetTicker বিনিময়.GetTicker}

লগ বাণিজ্য