{@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
যদি আপনি BTCsymbol
হচ্ছেঃ"BTC_USDT.swap"
, এবং ফরম্যাটটি হলট্রেডিং জুটিএবংচুক্তির কোডFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত, চিহ্ন exchange.GetTicker(symbol)
ফাংশন,exchange
আপনি যদি BTCsymbol
হচ্ছেঃ"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
বর্তমান সেট ট্রেডিং জোড়া, চুক্তি কোড, অর্থাৎ অর্ডার বুক ডেটার সাথে সামঞ্জস্যপূর্ণ স্পট বা চুক্তির {@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 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}
{@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 symbol
হচ্ছেঃ"BTC_USDT.swap"
, এবং ফরম্যাটটি হলট্রেডিং জুটিএবংচুক্তির কোডFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত, অক্ষর দ্বারা পৃথক exchange.GetTrades(symbol)
ফাংশন,exchange
যদি আপনি BTCsymbol
হচ্ছেঃ"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
একটি নির্দিষ্ট প্রতীকের জন্য বাজার লেনদেনের রেকর্ডের তথ্য অনুরোধ করার পরামিতি (ফ্যুচার প্রতীক) ।
The ```exchange.GetTrades()``` function returns an empty array when using **Simulate Tick** backtesting in the backtesting system. The data returned by the ```exchange.GetTrades()``` function when using **Real Tick** backtesting in the backtesting system is the order flow snapshot data, i.e. the {@struct/Trade Trade} structure array.
Exchanges that do not support the ```exchange.GetTrades()``` function:
| Function Name | Unsupported Spot Exchanges | Unsupported Futures Exchanges |
| - | - | - |
| GetTrades | -- | Futures_BitMart / Futures_Bibox |
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetRecords exchange.GetRecords}
### exchange.GetRecords
Get the {@struct/Record Record} structure array of the spot or contract corresponding to the currently set trading pair, contract code, i.e. K-line data.
The ```exchange.GetRecords()``` function returns an array of {@struct/Record Record} structures when the request for data succeeds, and it returns null values when the request for data fails.
{@struct/Record Record}arrays, null values
exchange.GetRecords()
exchange.GetRecords(symbol)
exchange.GetRecords(symbol, period)
exchange.GetRecords(symbol, period, limit)
exchange.GetRecords(period)
exchange.GetRecords(period, limit)
The parameter ```symbol``` is used to specify the specific trading pair and contract code corresponding to the requested {@struct/Record Record} array data. If this parameter is not passed, the K-line data of the currently set trading pair and contract code will be requested by default. When calling the ```exchange.GetRecords(symbol)``` function, ```exchange``` is the spot exchange object. If you need to request to obtain the data with the denominated currency as USDT and the transaction currency as BTC, the parameter ```symbol``` is: ```"BTC_USDT"```, and the format is the trading pair format defined by the FMZ platform. When calling the ```exchange.GetRecords(symbol)``` function, ```exchange``` is the futures exchange object. If you need to request the order book data of BTC's U-standard perpetual contract, the parameter ```symbol``` is: ```"BTC_USDT.swap"```, and the format is a combination of the **trading pair** and **contract code** defined by the FMZ platform, separated by the character ".". When calling the ```exchange.GetRecords(symbol)``` function, ```exchange``` is the futures exchange object. If you need to request the order book data of BTC's U-standard option contract, the parameter ```symbol``` is: ```"BTC_USDT.BTC-240108-40000-C"``` (taking Binance Option BTC-240108-40000-C as an example), the format is the combination of the **trading pair** defined by the FMZ platform and the specific option contract code defined by the exchange, separated by the character ".".
symbol
false
string
The parameter ```period``` specifies the period of the requested K-line data, for example: {@var/PERIOD/PERIOD_M1 PERIOD_M1}, {@var/PERIOD/PERIOD_M5 PERIOD_M5}, {@var/PERIOD/PERIOD_M15 PERIOD_M15}, etc. The value of parameter ```period``` can be passed not only the defined standard period, but also integer values in seconds. If this parameter is not passed, the period of the K-line data requested by default is the default K-line period of the current strategy real-time/backtest configuration.
period
false
number
The parameter ```limit``` is used to specify the length of the requested K-line data. If this parameter is not passed, the default request length is the maximum number of K-line bars requested at a time of the exchange K-line interface. This parameter may cause paging to query the exchange K-line data, and the time consumption of the function call will increase during paging query.
limit
false
number
```javascript
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.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}
কে-লাইনের সর্বাধিক দৈর্ঘ্য সেট করুন।
বিনিময়.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-লাইন বার (Bars) সংখ্যা প্রভাবিত করে।
- কে-লাইন বার (বার) এর সর্বাধিক সংখ্যাকে প্রভাবিত করে।
{@fun/Market/exchange.GetRecords বিনিময়.GetRecords}
মূল বিষয়বস্তু শেষ পর্যন্ত ফিরিয়ে আনুন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 ((()
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()
ফাংশনটি কৌশলটি চালানোর সময় লোড করা ডেটা সেট করতে ব্যবহৃত হয়।
প্যারামিটারের পরে স্ট্রিংয়ের দৈর্ঘ্যvalue
JSON কোডিং।
সংখ্যা
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.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"]
}
exchange.GetData()
ফাংশন কল করা হয়, একটি JSON অবজেক্ট ফেরত দেওয়া হয়, উদাহরণস্বরূপঃ{"Time":1579795200000, "Data":"..."}
.
ব্যাকটেস্টিং সিস্টেমে, অ্যাক্সেস ইন্টারফেস ব্যবহার করে তথ্য অনুরোধ করার সময়, ব্যাকটেস্টিং সিস্টেম স্বয়ংক্রিয়ভাবে যোগ করেfrom
(সেকেন্ডে টাইমস্ট্যাম্প)to
(সেকেন্ডে টাইমস্ট্যাম্প করা) অনুরোধ, প্যারামিটার যেমনঃperiod
(অন্তর্নিহিত কে-লাইন সময়কাল, মিলিসেকেন্ডে টাইমস্ট্যাম্প করা) সময়সীমা নির্ধারণ করতে ব্যবহৃত হয় যার মধ্যে তথ্য সংগ্রহ করা হবে।
{@fun/Market/exchange.SetData exchange.SetData}
দ্য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()
ফাংশনটি এক্সচেঞ্জ সমষ্টিগত টিকার ডেটা পেতে ব্যবহৃত হয় ({@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}
লগ বাণিজ্য