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

বিল্ট ইন ফাংশন

বিশ্বব্যাপী

সংস্করণ

সিস্টেমের বর্তমান সংস্করণ নম্বর প্রদান করে।

বর্তমান সিস্টেম সংস্করণ নম্বর, যেমনঃ3.6. স্ট্রিং

সংস্করণ

function main() {
    Log("version:", Version())
}
def main():
    Log("version:", Version())
void main() {
    Log("version:", Version());
}

সিস্টেম সংস্করণ নম্বর হ'ল ডকার প্রোগ্রামের সংস্করণ নম্বর।

ঘুম

ঘুমের ফাংশন, যা প্রোগ্রামকে কিছু সময়ের জন্য বিরতি দেয়।

ঘুম ((মিলেসেকেন্ড)

দ্যmillisecondঘুমের সময়কাল এবং মিলিসেকেন্ডের সংখ্যা সেট করতে এই প্যারামিটার ব্যবহার করা হয়। মিলিসেকেন্ড সত্য সংখ্যা

function main() {
    Sleep(1000 * 10)   // Wait for 10 seconds
    Log("Waited for 10 seconds")
}
def main():
    Sleep(1000 * 10)
    Log("Waited for 10 seconds")
void main() {
    Sleep(1000 * 10);
    Log("Waited for 10 seconds");
}

উদাহরণস্বরূপ,Sleep(1000)এটি 1 মিলিসেকেন্ডের কম ঘুমের সময় অপারেশন সমর্থন করে, উদাহরণস্বরূপ সেটিংSleep(0.1). এটি একটি সর্বনিম্ন প্যারামিটার সমর্থন করে0.000001, অর্থাৎ ন্যানোসেকেন্ড হাইবারনেশন, যেখানে 1 ন্যানোসেকেন্ড সমান1e-6মিলিসেকেন্ড। যখন কৌশল লিখতেPythonভাষা,Sleep(millisecond)ভোটদানের সময়সীমা, সময়-থেকে-অপেক্ষা অপারেশনগুলির জন্য এই ফাংশনটি ব্যবহার করা উচিত নয়।time.sleep(second)ফাংশনPythonএরtimeগ্রন্থাগার. এটি কারণ ব্যবহারtime.sleep(second)একটি কৌশল মধ্যে ফাংশন কৌশল প্রোগ্রাম একটি নির্দিষ্ট সময়ের জন্য অপেক্ষা করতে actually যখন backtesting (backtesting সিস্টেমের সময় সিরিজ এড়িয়ে না), তাই এটি কৌশল backtest খুব ধীরে ধীরে কারণ.

IsVirtual

কৌশলটির চলমান পরিবেশ একটি ব্যাকটেস্টিং সিস্টেম কিনা তা নির্ধারণ করুন।

কৌশল একটি সত্য মান ফেরত, উদাহরণস্বরূপঃtrueযখন ব্যাকটেস্টিং সিস্টেম পরিবেশে চালানো হয়। কৌশলটি একটি মিথ্যা মান ফেরত দেয়, উদাহরণস্বরূপঃfalseযখন একটি লাইভ ট্রেডিং পরিবেশে চালানো হয়। বুল

এটা ভার্চুয়াল ((()

function main() {
    if (IsVirtual()) {
        Log("The current backtest system environment.")
    } else {
        Log("The current live trading environment.")
    }
}
def main():
    if IsVirtual():
        Log("The current backtest system environment.")
    else:
        Log("The current live trading environment.")
void main() {
    if (IsVirtual()) {
        Log("The current backtest system environment.");
    } else {
        Log("The current live trading environment.");
    }
}

বর্তমান চলমান পরিবেশটি ব্যাকটেস্টিং সিস্টেম কিনা তা নির্ধারণ করুন, যা ব্যাকটেস্টিং এবং লাইভ ট্রেডিংয়ের মধ্যে পার্থক্যের সাথে সামঞ্জস্যপূর্ণ হতে ব্যবহৃত হয়।

মেইল

একটা ইমেইল পাঠাও।

একটি সফল ইমেইল ডেলিভারি একটি সত্য মান ফেরত দেয়, উদাহরণস্বরূপ,true, এবং একটি ব্যর্থ ডেলিভারি একটি মিথ্যা মান ফেরত দেয়, উদাহরণস্বরূপ,false. বুল

মেইল ((smtp সার্ভার, smtp ইউজারনেম, smtp পাসওয়ার্ড, mailTo, শিরোনাম, শরীর)

এটি নির্দিষ্ট করতে ব্যবহৃত হয়SMTPইমেইল প্রেরকের সার্ভিস ঠিকানা। smtpServer সত্য স্ট্রিং ইমেইল প্রেরকের ইমেইল ঠিকানা নির্দিষ্ট করতে ব্যবহৃত হয়। smtpUsername সত্য স্ট্রিং দ্যSMTPইমেইল প্রেরকের মেইলবক্সের পাসওয়ার্ড। smtp পাসওয়ার্ড সত্য স্ট্রিং ইমেইল প্রাপকের ইমেইল ঠিকানা নির্দিষ্ট করতে ব্যবহৃত হয়। mailTo সত্য স্ট্রিং ই-মেইল ঠিকানা। নাম সত্য স্ট্রিং ইমেইল শরীর. শরীর সত্য স্ট্রিং

function main(){
    Mail("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")
}
def main():
    Mail("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")
void main() {
    Mail("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body");
}

দ্যsmtpPasswordপ্যারামিটার পাসওয়ার্ড সেট করেSMTPসার্ভিস, মেইলবক্সের পাসওয়ার্ড নয়। সেটিং করার সময়smtpServerপ্যারামিটার, যদি আপনি পোর্ট পরিবর্তন করতে হবে, আপনি সরাসরি প্যারামিটারে পোর্ট নম্বর যোগ করতে পারেনsmtpServerউদাহরণস্বরূপঃ QQ মেইলsmtp.qq.com:587, যা পরীক্ষার জন্য উপলব্ধ। যদি কোনো ত্রুটি রিপোর্ট করা হয়ঃunencryped connection, আপনি পরিবর্তন করতে হবেsmtpServerএরMailফাংশন। প্যারামিটার বিন্যাস হলঃssl://xxx.com:xxxউদাহরণস্বরূপsslপদ্ধতিSMTPQQ মেইলের জন্যঃssl://smtp.qq.com:465অথবাsmtp://xxx.com:xxx. এটা ব্যাকটেস্টিং সিস্টেমে কাজ করে না।

{@ফান/গ্লোবাল/মেইল_গো মেইল_গো}

মেইল_গো

অ্যাসিনক্রোন সংস্করণMail function.

দ্যMail_Goফাংশন অবিলম্বে একটি সমান্তরাল বস্তু ফেরত, এবং আপনি ব্যবহার করতে পারেনwaitএকটি সফল মেইল ডেলিভারি একটি সত্য মান ফেরত দেয়, উদাহরণস্বরূপ,true, এবং একটি ব্যর্থ ডেলিভারি একটি মিথ্যা মান ফেরত দেয়, উদাহরণস্বরূপ,false. বস্তু

মেইল_গো ((smtp সার্ভার, smtpUsername, smtpPassword, mailTo, শিরোনাম, শরীর)

এটি নির্দিষ্ট করতে ব্যবহৃত হয়SMTPইমেইল প্রেরকের সার্ভিস ঠিকানা। smtpServer সত্য স্ট্রিং এটি ইমেইল প্রেরকের ইমেইল ঠিকানা নির্দিষ্ট করতে ব্যবহৃত হয়। smtpUsername সত্য স্ট্রিং দ্যSMTPইমেইল প্রেরকের মেইলবক্সের পাসওয়ার্ড। smtp পাসওয়ার্ড সত্য স্ট্রিং এটি ইমেল প্রাপকের ইমেইল ঠিকানা নির্দিষ্ট করতে ব্যবহৃত হয়। mailTo সত্য স্ট্রিং ই-মেইল ঠিকানা। নাম্বার সত্য স্ট্রিং ইমেইল শরীর. শরীর সত্য স্ট্রিং

function main() {
    var r1 = Mail_Go("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")
    var r2 = Mail_Go("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")
    
    var ret1 = r1.wait()
    var ret2 = r2.wait()
    
    Log("ret1:", ret1)
    Log("ret2:", ret2)
}
# Not supported.
// Not supported.

এটা ব্যাকটেস্টিং সিস্টেমে কাজ করে না।

{@fun/Global/Mail Mail}

সেটErrorFilter

ফিল্টার ত্রুটি লগ।

সেটErrorFilter ((ফিল্টার)

নিয়মিত এক্সপ্রেশন স্ট্রিং। ফিল্টার সত্য স্ট্রিং

function main() {
    SetErrorFilter("502:|503:|tcp|character|unexpected|network|timeout|WSARecv|Connect|GetAddr|no such|reset|http|received|EOF|reused")
}
def main():
    SetErrorFilter("502:|503:|tcp|character|unexpected|network|timeout|WSARecv|Connect|GetAddr|no such|reset|http|received|EOF|reused")
void main() {
    SetErrorFilter("502:|503:|tcp|character|unexpected|network|timeout|WSARecv|Connect|GetAddr|no such|reset|http|received|EOF|reused");
}

সাধারণ ভুল ফিল্টার করা।

function main() {
    // A random query for a non-existent order with an id of 123, allowing the interface to report an error deliberately
    var order = exchange.GetOrder("123")
    Log(order)
    // Filter http502 errors, GetOrder interface errors, after setting the error filter, the second call to GetOrder will no longer report errors
    SetErrorFilter("502:|GetOrder")
    order = exchange.GetOrder("123")
    Log(order)
}
def main():
    order = exchange.GetOrder("123")
    Log(order)
    SetErrorFilter("502:|GetOrder")
    order = exchange.GetOrder("123")
    Log(order)
void main() {
    TId orderId;
    Order order = exchange.GetOrder(orderId);
    Log(order);
    SetErrorFilter("502:|GetOrder");
    order = exchange.GetOrder(orderId);
    Log(order);
}

ইন্টারফেস ত্রুটি বার্তা ফিল্টার করুন।

এই নিয়মিত অভিব্যক্তি দ্বারা মেলে এমন ত্রুটি লগগুলি লগ সিস্টেমে আপলোড করা হবে না। একাধিক ফিল্টার শর্ত সেট করতে আপনি এটি একাধিকবার কল করতে পারেন (বারের সংখ্যার কোনও সীমা নেই) । একাধিকবার সেট করা নিয়মিত অভিব্যক্তিগুলি একত্রিত হবে এবং একই সময়ে কার্যকর হবে। আপনি ত্রুটি লগগুলি ফিল্টার করতে ব্যবহৃত নিয়মিত অভিব্যক্তিটি পুনরায় সেট করতে একটি খালি স্ট্রিং সেট করতে পারেনঃSetErrorFilter(""). ফিল্টার করা লগগুলি ডাটাবেস ফাইলটি ফুটে উঠতে বাধা দেওয়ার জন্য ডকার ডিরেক্টরিতে লাইভ ট্রেডিং আইডির সাথে সম্পর্কিত ডাটাবেস ফাইলটিতে আর লেখা হয় না।

GetPid

লাইভ ট্রেডিং প্রক্রিয়া আইডি পান.

লাইভ ট্রেডিং প্রসেস আইডি ফেরত দিন। স্ট্রিং

GetPid ((()

function main(){
    var id = GetPid()
    Log(id)
}
def main():
    id = GetPid()
    Log(id)
void main() {
    auto id = GetPid();
    Log(id);
}

GetLastError

সর্বশেষ ত্রুটি বার্তা পেয়েছি।

শেষ ত্রুটি বার্তা। স্ট্রিং

GetLastError ((()

function main(){
    // Because the order number 123 does not exist, so there will be an error.
    exchange.GetOrder("123")
    var error = GetLastError()
    Log(error)
}
def main():
    exchange.GetOrder("123")
    error = GetLastError()
    Log(error)
void main() {
    // Order ID type: TId, so you can't pass in a string, we place an order that doesn't meet the exchange specification to trigger
    exchange.GetOrder(exchange.Buy(1, 1));
    auto error = GetLastError();
    Log(error);
}

এটা ব্যাকটেস্টিং সিস্টেমে কাজ করে না।

কমান্ড পান

স্ট্র্যাটেজি ইন্টারঅ্যাকশন কমান্ড পায়।

ফিরে আসা কমান্ডের বিন্যাস হলControlName:Data. ControlNameকন্ট্রোলের নাম, এবংDataযদি ইন্টারেক্টিভ কন্ট্রোলের ইনপুট বক্স, ড্রপ-ডাউন বক্স এবং অন্যান্য উপাদান না থাকে (উদাহরণস্বরূপ, ইনপুট বক্স ছাড়াই একটি বোতাম কন্ট্রোল) তবে ফিরে আসা কমান্ড ফর্ম্যাটটিControlName, যা শুধুমাত্র কন্ট্রোল নাম ফেরত দেয়। স্ট্রিং

GetCommand ((()

function main(){
    while(true) { 
        var cmd = GetCommand()
        if (cmd) { 
            Log(cmd)
        }
        Sleep(1000) 
    }
}
def main():
    while True:
        cmd = GetCommand()
        if cmd:
            Log(cmd)
        Sleep(1000)
void main() {
    while(true) {
        auto cmd = GetCommand();
        if(cmd != "") {
            Log(cmd);
        }
        Sleep(1000);
    }
}

ইন্টারঅ্যাকশন কমান্ড সনাক্ত করে এবংLogযখন এটি সনাক্ত করা হয় তখন ইন্টারঅ্যাকশন কমান্ডটি আউটপুট করার জন্য ফাংশন।

function main() {
    while (true) {
        LogStatus(_D())
        var cmd = GetCommand()
        if (cmd) {
            Log("cmd:", cmd)    
            var arr = cmd.split(":")
            if (arr[0] == "buy") {
                Log("Buy, the control without number")
            } else if (arr[0] == "sell") {
                Log("Sell, the control with the number of:", arr[1])
            } else {
                Log("Other controls trigger:", arr)
            }
        }
        Sleep(1000)
    } 
}
def main():
    while True:
        LogStatus(_D())
        cmd = GetCommand()
        if cmd:
            Log("cmd:", cmd)
            arr = cmd.split(":")
            if arr[0] == "buy":
                Log("Buy, the control without number")
            elif arr[0] == "sell":
                Log("Sell, the control with the number of:", arr[1])
            else:
                Log("Other controls trigger:", arr)
        Sleep(1000)
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
void split(const string& s,vector<string>& sv,const char flag = ' ') {
    sv.clear();
    istringstream iss(s);
    string temp;            

    while (getline(iss, temp, flag)) {
        sv.push_back(temp);
    }
    return;
}            

void main() {
    while(true) {
        LogStatus(_D());
        auto cmd = GetCommand();
        if (cmd != "") {
            vector<string> arr;
            split(cmd, arr, ':');
            if(arr[0] == "buy") {
                Log("Buy, the control without number");
            } else if (arr[0] == "sell") {
                Log("Sell, the control with the number of:", arr[1]);
            } else {
                Log("Other controls trigger:", arr);
            }
        }
        Sleep(1000);
    }
}

উদাহরণস্বরূপ, কৌশল ইন্টারেক্টিভ কন্ট্রোল একটি ইনপুট বক্স ছাড়া একটি কন্ট্রোল যোগ করে, ইন্টারেক্টিভ কন্ট্রোল নামকরণ করা হয়ঃbuy, কন্ট্রোল বর্ণনার তথ্য হলঃbuy, যা একটি বোতাম কন্ট্রোল। একটি ইনপুট বক্স সহ একটি কন্ট্রোল যুক্ত করে চালিয়ে যান। ইন্টারেক্টিভ কন্ট্রোলটির নামঃsellএবং কন্ট্রোল বর্ণনা বার্তা হলঃsell, যা একটি ইন্টারেক্টিভ কন্ট্রোল যা একটি বোতাম এবং একটি ইনপুট বক্সের সমন্বয়। ইন্টারঅ্যাকশন কোডটি বিভিন্ন ইন্টারঅ্যাকশন কন্ট্রোলের প্রতিক্রিয়া জানাতে কৌশলটিতে ডিজাইন করা হয়েছেঃ

এটা ব্যাকটেস্টিং সিস্টেমে কাজ করে না।

GetMeta

কৌশল রেজিস্ট্রেশন কোড তৈরি করার সময় মেটা এর মান লিখুন।

Metaতথ্য। স্ট্রিং

GetMeta ((()

function main() {
    // The maximum asset value of the denominated currency allowed by the strategy.
    var maxBaseCurrency = null
    
    // Get the metadata when creating the registration code.
    var level = GetMeta()
    
    // Detecting the conditions corresponding to Meta.
    if (level == "level1") {
        // -1 for unrestricted
        maxBaseCurrency = -1       
    } else if (level == "level2") {
        maxBaseCurrency = 10     
    } else if (level == "level3") {
        maxBaseCurrency = 1
    } else {
        maxBaseCurrency = 0.5
    }
    
    while(1) {
        Sleep(1000)
        var ticker = exchange.GetTicker()
        
        // Detect asset values
        var acc = exchange.GetAccount()
        if (maxBaseCurrency != -1 && maxBaseCurrency < acc.Stocks + acc.FrozenStocks) {
            // Stop executing strategy trading logic
            LogStatus(_D(), "level:", level, "Positions exceeding the usage limit of the registration code will no longer execute the strategy trading logic!")
            continue
        }
        
        // Other trading logic
        
        // Normal output of status bar information
        LogStatus(_D(), "level:", level, "The strategy is working properly! ticker data: \n", ticker)
    }
}
def main():
    maxBaseCurrency = null
    level = GetMeta()
    
    if level == "level1":
        maxBaseCurrency = -1       
    elif level == "level2":
        maxBaseCurrency = 10     
    elif level == "level3":
        maxBaseCurrency = 1
    else:
        maxBaseCurrency = 0.5
    
    while True:
        Sleep(1000)
        ticker = exchange.GetTicker()        
        acc = exchange.GetAccount()
        if maxBaseCurrency != -1 and maxBaseCurrency < acc["Stocks"] + acc["FrozenStocks"]:
            LogStatus(_D(), "level:", level, "Positions exceeding the usage limit of the registration code will no longer execute the strategy trading logic!")
            continue        
        
        # Other trading logic
        
        # Normal output of status bar information
        LogStatus(_D(), "level:", level, "The strategy is working properly! ticker data: \n", ticker)
void main() {
    auto maxBaseCurrency = 0.0;
    auto level = GetMeta();
    
    if (level == "level1") {
        maxBaseCurrency = -1;  
    } else if (level == "level2") {
        maxBaseCurrency = 10;
    } else if (level == "level3") {
        maxBaseCurrency = 1;
    } else {
        maxBaseCurrency = 0.5;
    }
    
    while(1) {
        Sleep(1000);
        auto ticker = exchange.GetTicker();  
        auto acc = exchange.GetAccount();
        if (maxBaseCurrency != -1 && maxBaseCurrency < acc.Stocks + acc.FrozenStocks) {
            // Stop execution strategy trading logic.
            LogStatus(_D(), "level:", level, "Positions exceeding the usage limit of the registration code will no longer execute the strategy trading logic!");
            continue;
        }
        
        // Other trading logic
        
        // Normal output of status bar information
        LogStatus(_D(), "level:", level, "The strategy is working properly! ticker data: \n", ticker);
    }
}

উদাহরণ প্রয়োগের দৃশ্যকল্পঃ ব্যবহারMetaকৌশল দ্বারা পরিচালিত সম্পদের পরিমাণ সীমাবদ্ধ করা।

অ্যাপ্লিকেশন দৃশ্যকল্পঃ বিভিন্ন কৌশল ভাড়াটেদের জন্য মূলধন সীমা করতে হবে।Metaরেজিস্ট্রেশন কোড তৈরি করার সময় সেট করা মান 190 অক্ষর অতিক্রম করতে পারে না এবংGetMeta()এই ফাংশনটি শুধুমাত্র লাইভ ট্রেডিং সমর্থন করে।Meta) একটি কৌশল নিবন্ধন কোড তৈরি করার সময় সেট করা হয়,GetMeta()ফাংশন null ফেরত দেয়। এটি ব্যাকটেস্টিং সিস্টেমে কাজ করে না।

ডায়াল

আদিম জন্যSocketঅ্যাক্সেস, সমর্থনtcp, udp, tls, unixচারটি জনপ্রিয় যোগাযোগ প্রোটোকল সমর্থন করেঃmqtt, nats, amqp, kafka. ডাটাবেসের সাথে সংযোগের জন্য সমর্থনঃsqlite3, mysql, postgres, clickhouse.

দ্যDial()ফাংশনটি যদি এটি টাইম আউট করে তবে শূন্য ফেরত দেয়। একটি সাধারণ কল একটি সংযোগ অবজেক্ট ফেরত দেয় যার তিনটি পদ্ধতি রয়েছেঃread, writeএবংclose.readপদ্ধতিটি ডেটা পড়তে ব্যবহৃত হয়,writeতথ্য পাঠানোর জন্য ব্যবহৃত হয় এবংcloseসংযোগ বন্ধ করতে এই পদ্ধতি ব্যবহার করা হয়। দ্যreadপদ্ধতি নিম্নলিখিত পরামিতি সমর্থন করেঃ

  • যখন কোন প্যারামিটার পাস করা হয় না, এটি একটি বার্তা পাওয়া যায় এবং ফেরত পর্যন্ত ব্লক, যেমনws.read().
  • যখন একটি পরামিতি হিসাবে পাস করা হয়, তখন ইউনিটটি মিলিসেকেন্ড হয়, বার্তার অপেক্ষা টাইমআউট সময় নির্দিষ্ট করে। উদাহরণস্বরূপঃws.read(2000)দুই সেকেন্ডের টাইমআউট (২০০০ মিলিসেকেন্ড) নির্দিষ্ট করে।
  • নিম্নলিখিত দুটি পরামিতি শুধুমাত্র WebSocket এর জন্য বৈধঃ প্যারামিটার পাস করা হচ্ছে-1মানে ফাংশনটি অবিলম্বে বার্তাগুলির উপস্থিতি বা অনুপস্থিতি নির্বিশেষে ফেরত দেয়, উদাহরণস্বরূপঃws.read(-1). প্যারামিটার পাস করা হচ্ছে-2এর মানে হল যে ফাংশনটি অবিলম্বে একটি বার্তা সহ বা ছাড়াই ফিরে আসে, তবে কেবলমাত্র সর্বশেষ বার্তাটি ফিরে আসে এবং বাফারযুক্ত বার্তাটি বাদ দেওয়া হয়। উদাহরণস্বরূপ,ws.read(-2).

read()ফাংশন বাফারের বর্ণনাঃ ওয়েবসকেট প্রোটোকলের দ্বারা প্রেরিত ইনকামিং ডেটা যদি কৌশলটির মধ্যে সময়ের ব্যবধানread()ফাংশন কলগুলি খুব দীর্ঘ। এই ডেটাগুলি বাফারে সংরক্ষণ করা হয়, যার সর্বাধিক 2000 এর সাথে একটি সারি ডেটা কাঠামো রয়েছে। 2000 অতিক্রম করার পরে, সর্বশেষতম ডেটা বাফারে প্রবেশ করে এবং প্রাচীনতম ডেটা মুছে ফেলা হয়।

দৃশ্যকল্প কোন প্যারামিটার নেই প্যারামিটারঃ -1 প্যারামিটার: -২ প্যারামিটারঃ 2000 মিলিসেকেন্ডে
ডেটা ইতিমধ্যে বাফারে রয়েছে অবিলম্বে পুরোনো তথ্য ফেরত দিন অবিলম্বে পুরোনো তথ্য ফেরত দিন অবিলম্বে সর্বশেষ তথ্য ফেরত দিন অবিলম্বে পুরোনো তথ্য ফেরত দিন
বাফারে কোন তথ্য নেই ডাটা ব্লক করা হলে পুনরুদ্ধার করুন অবিলম্বে null ফেরত দিন অবিলম্বে null ফেরত দিন অপেক্ষা করুন 2000 এমএস, যদি কোন তথ্য না থাকে তাহলে null ফেরত দিন, যদি তথ্য থাকে তাহলে null ফেরত দিন
WebSocket সংযোগ সংযোগ বিচ্ছিন্ন বা পুনরায় সংযোগ করা হয় read() ফাংশন খালি স্ট্রিং ফেরত দেয়, যেমনঃ , এবং write() ফাংশন 0 ফেরত দেয়। পরিস্থিতি সনাক্ত করা হয়। আপনি close() ফাংশন ব্যবহার করে সংযোগ বন্ধ করতে পারেন, অথবা যদি আপনি স্বয়ংক্রিয় পুনরায় সংযোগ সেট আপ করেছেন, তাহলে আপনাকে এটি বন্ধ করার প্রয়োজন নেই, অন্তর্নিহিত সিস্টেম এটি স্বয়ংক্রিয়ভাবে পুনরায় সংযোগ করবে।

বস্তু

ডায়াল করুন (অ্যাড্রেস) ডায়াল (অ্যাড্রেস, টাইমআউট)

ঠিকানা চাই। ঠিকানা সত্য স্ট্রিং টাইমআউট সেকেন্ড, টাইমআউট মিথ্যা সংখ্যা

function main(){
    // Dial supports tcp://,udp://,tls://,unix://protocol, you can add a parameter to specify the number of seconds for the timeout
    var client = Dial("tls://www.baidu.com:443")  
    if (client) {
        // write can be followed by a numeric parameter to specify the timeout, write returns the number of bytes successfully sent
        client.write("GET / HTTP/1.1\nConnection: Closed\n\n")
        while (true) {
            // read can be followed by a numeric parameter specifying the timeout in milliseconds. Returning null indicates an error or timeout or that the socket has been closed
            var buf = client.read()
            if (!buf) {
                 break
            }
            Log(buf)
        }
        client.close()
    }
}
def main():
    client = Dial("tls://www.baidu.com:443")
    if client:
        client.write("GET / HTTP/1.1\nConnection: Closed\n\n")
        while True:
            buf = client.read()
            if not buf:
                break
            Log(buf)
        client.close()
void main() {
    auto client = Dial("tls://www.baidu.com:443");
    if(client.Valid) {
        client.write("GET / HTTP/1.1\nConnection: Closed\n\n");
        while(true) {
            auto buf = client.read();
            if(buf == "") {
                break;
            }
            Log(buf);
        }
        client.close();
    }
}

ডায়াল ফাংশন কলের উদাহরণঃ

function main() {
    LogStatus("Connecting...")
    // Accessing WebSocket interface of Binance
    var client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr")
    if (!client) {
        Log("Connection failed, program exited")
        return
    }
    
    while (true) {
        // read returns only the data retrieved after the read call
        var buf = client.read()      
        if (!buf) {
            break
        }
        var table = {
            type: 'table',
            title: 'Ticker Chart',
            cols: ['Currency', 'Highest', 'Lowest', 'Buy 1', 'Sell 1', 'Last traded price', 'Volume', 'Update time'],
            rows: []
        }
        var obj = JSON.parse(buf)
        _.each(obj, function(ticker) {
            table.rows.push([ticker.s, ticker.h, ticker.l, ticker.b, ticker.a, ticker.c, ticker.q, _D(ticker.E)])
        })
        LogStatus('`' + JSON.stringify(table) + '`')
    }
    client.close()
}
import json
def main():
    LogStatus("Connecting...")
    client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr")
    if not client:
        Log("Connection failed, program exited")
        return 
    
    while True:
        buf = client.read()
        if not buf:
            break
        table = {
            "type" : "table", 
            "title" : "Ticker Chart", 
            "cols" : ['Currency', 'Highest', 'Lowest', 'Buy 1', 'Sell 1', 'Last traded price', 'Volume', 'Update time'], 
            "rows" : [] 
        }
        obj = json.loads(buf)
        for i in range(len(obj)):
            table["rows"].append([obj[i]["s"], obj[i]["h"], obj[i]["l"], obj[i]["b"], obj[i]["a"], obj[i]["c"], obj[i]["q"], _D(int(obj[i]["E"]))])
        LogStatus('`' + json.dumps(table) + '`')
    client.close()
void main() {
    LogStatus("Connecting...");
    auto client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr");
    if(!client.Valid) {
        Log("Connection failed, program exited");
        return;
    }
    
    while(true) {
        auto buf = client.read();
        if(buf == "") {
            break;
        }
        json table = R"({
            "type" : "table", 
            "title" : "Ticker Chart", 
            "cols" : ["Currency", "Highest", "Lowest", "Buy 1", "Sell 1", "Last traded price", "Volume", "Update time"], 
            "rows" : []
        })"_json;
        json obj = json::parse(buf);
        for(auto& ele : obj.items()) {
            table["rows"].push_back({ele.value()["s"], ele.value()["h"], ele.value()["l"], ele.value()["b"], ele.value()["a"], ele.value()["c"], 
                ele.value()["q"], _D(ele.value()["E"])});
        }
        LogStatus("`" + table.dump() + "`");
    }
    client.close();
}

বিন্যান্সের ওয়েবসকেট টিকার ইন্টারফেসে অ্যাক্সেস করতেঃ

var ws = null 
function main(){
    var param = {
        "op": "subscribe",
        "args": [{
            "channel": "tickers",
            "instId": "BTC-USDT"
        }]
    }
    // When calling Dial function, specify reconnect=true to set reconnection mode and payload to be the message sent when reconnecting. When the WebSocket connection is disconnected, it will reconnect and send messages automatically.
    ws = Dial("wss://ws.okx.com:8443/ws/v5/public|compress=gzip_raw&mode=recv&reconnect=true&payload="+ JSON.stringify(param))
    if(ws){
        var pingCyc = 1000 * 20
        var lastPingTime = new Date().getTime()
        while(true){
            var nowTime = new Date().getTime()
            var ret = ws.read()
            Log("ret:", ret)
            if(nowTime - lastPingTime > pingCyc){
                var retPing = ws.write("ping")
                lastPingTime = nowTime
                Log("Send : ping", "#FF0000")
            }
            LogStatus("Current time:", _D())
            Sleep(1000)
        }
    }
}              

function onexit() {
    ws.close() 
    Log("exit")
}
import json
import time              

ws = None
def main():
    global ws 
    param = {
        "op": "subscribe",
        "args": [{
            "channel": "tickers",
            "instId": "BTC-USDT"
        }]
    }
    ws = Dial("wss://ws.okx.com:8443/ws/v5/public|compress=gzip_raw&mode=recv&reconnect=true&payload=" + json.dumps(param))
    if ws:
        pingCyc = 1000 * 20
        lastPingTime = time.time() * 1000
        while True:
            nowTime = time.time() * 1000
            ret = ws.read()
            Log("ret:", ret)
            if nowTime - lastPingTime > pingCyc:
                retPing = ws.write("ping")
                lastPingTime = nowTime
                Log("Send: ping", "#FF0000")
            LogStatus("Current time:", _D())
            Sleep(1000)              

def onexit():
    ws.close()
    Log("exit")
auto objWS = Dial("wss://ws.okx.com:8443/ws/v5/public|compress=gzip_raw&mode=recv&reconnect=true");              

void main() {
    json param = R"({
        "op": "subscribe",
        "args": [{
            "channel": "tickers",
            "instId": "BTC-USDT"
        }]
    })"_json;
    
    objWS.write(param.dump());
    if(objWS.Valid) {
        uint64_t pingCyc = 1000 * 20;
        uint64_t lastPingTime = Unix() * 1000;
        while(true) {
            uint64_t nowTime = Unix() * 1000;
            auto ret = objWS.read();
            Log("ret:", ret);
            if(nowTime - lastPingTime > pingCyc) {
                auto retPing = objWS.write("ping");
                lastPingTime = nowTime;
                Log("Send: ping", "#FF0000");
            }
            LogStatus("Current time:", _D());
            Sleep(1000);
        }
    }
}              

void onexit() {
    objWS.close();
    Log("exit");
}

OKX এর ওয়েবসকেট টিকার ইন্টারফেসে অ্যাক্সেসঃ

var ws = null               

function main(){
    var param = {"sub": "market.btcusdt.detail", "id": "id1"}
    ws = Dial("wss://api.huobi.pro/ws|compress=gzip&mode=recv&reconnect=true&payload="+ JSON.stringify(param))
    if(ws){
        while(1){
            var ret = ws.read()
            Log("ret:", ret)
            // Respond to heartbeat packet operations
            try {
                var jsonRet = JSON.parse(ret)
                if(typeof(jsonRet.ping) == "number") {
                    var strPong = JSON.stringify({"pong" : jsonRet.ping})
                    ws.write(strPong)
                    Log("Respond to ping, send pong:", strPong, "#FF0000")
                }
            } catch(e) {
                Log("e.name:", e.name, "e.stack:", e.stack, "e.message:", e.message)
            }
            
            LogStatus("Current time:", _D())
            Sleep(1000)
        }
    }
}              

function onexit() {
    ws.close() 
    Log("Execute the ws.close() function")
}
import json
ws = None              

def main():
    global ws
    param = {"sub" : "market.btcusdt.detail", "id" : "id1"}
    ws = Dial("wss://api.huobi.pro/ws|compress=gzip&mode=recv&reconnect=true&payload=" + json.dumps(param))
    if ws:
        while True:
            ret = ws.read()
            Log("ret:", ret)              
            # Respond to heartbeat packet operations
            try:
                jsonRet = json.loads(ret)
                if "ping" in jsonRet and type(jsonRet["ping"]) == int:
                    strPong = json.dumps({"pong" : jsonRet["ping"]})
                    ws.write(strPong)
                    Log("Respond to ping, send pong:", strPong, "#FF0000")
            except Exception as e:
                Log("e:", e)
                
            LogStatus("Current time:", _D())
            Sleep(1000)
    
def onexit():
    ws.close()
    Log("Execute the ws.close() function")  
using namespace std;
void main() {
    json param = R"({"sub" : "market.btcusdt.detail", "id" : "id1"})"_json;
    auto ws = Dial("wss://api.huobi.pro/ws|compress=gzip&mode=recv&reconnect=true&payload=" + param.dump());
    if(ws.Valid) {
        while(true) {
            auto ret = ws.read();
            Log("ret:", ret);              
            // Respond to heartbeat packet operations
            try 
            {
                auto jsonRet = json::parse(ret);
                if(jsonRet["ping"].is_number()) {
                    json pong = R"({"pong" : 0})"_json;
                    pong["pong"] = jsonRet["ping"];
                    auto strPong = pong.dump();
                    ws.write(strPong);
                    Log("Respond to ping, send pong:", strPong, "#FF0000");
                }
            } catch(exception &e) 
            {
                Log("e:", e.what());
            }
            
            LogStatus("Current time:", _D());
            Sleep(1000);
        }
    }
}              

void onexit() {
    // ws.close();
    Log("Execute the ws.close() function");
}

Huobi এর ওয়েবসকেট টিকার ইন্টারফেসে অ্যাক্সেসঃ

function getLogin(pAccessKey, pSecretKey, pPassphrase) {
    // Signature function for login
    var ts = (new Date().getTime() / 1000).toString()
    var login = {
        "op": "login",
        "args":[{
            "apiKey"    : pAccessKey,
            "passphrase" : pPassphrase,
            "timestamp" : ts,
            "sign" : exchange.HMAC("sha256", "base64", ts + "GET" + "/users/self/verify", pSecretKey)   // exchange.HMAC has been deprecated and is temporarily supported. Please use the latest exchange.Encode function instead.
        }]
    }    
    return login
}                

var client_private = null 
function main() {
    // Because the read function uses a timeout setting, filtering the timeout reports errors that would otherwise be output with redundant errors
    SetErrorFilter("timeout")
    
    // Position channel subscription information
    var posSubscribe = {
        "op": "subscribe",
        "args": [{
            "channel": "positions",
            "instType": "ANY"
        }]
    }                

    var accessKey = "xxx"
    var secretKey = "xxx"
    var passphrase = "xxx"            

    client_private = Dial("wss://ws.okx.com:8443/ws/v5/private")
    client_private.write(JSON.stringify(getLogin(accessKey, secretKey, passphrase)))
    Sleep(3000)  // When logging in, you cannot subscribe to private channels immediately, you need to wait for server response
    client_private.write(JSON.stringify(posSubscribe))
    if (client_private) {
        var lastPingTS = new Date().getTime()
        while (true) {
            var buf = client_private.read(-1)
            if (buf) {
                Log(buf)
            }
            
            // Detect disconnection, reconnect
            if (buf == "" && client_private.write(JSON.stringify(posSubscribe)) == 0) {
                Log("Disconnection detected, close connection, reconnect")
                client_private.close()
                client_private = Dial("wss://ws.okx.com:8443/ws/v5/private")
                client_private.write(JSON.stringify(getLogin(accessKey, secretKey, passphrase)))
                Sleep(3000)
                client_private.write(JSON.stringify(posSubscribe))
            }
            
            // Send heartbeat packets
            var nowPingTS = new Date().getTime()
            if (nowPingTS - lastPingTS > 10 * 1000) {
                client_private.write("ping")
                lastPingTS = nowPingTS
            }            
        }        
    }
}                

function onexit() {    
    var ret = client_private.close()
    Log("Close the connection!", ret)
}
import json
import time
  
def getLogin(pAccessKey, pSecretKey, pPassphrase):
    ts = str(time.time())
    login = {
        "op": "login",
        "args":[{
            "apiKey"    : pAccessKey,
            "passphrase" : pPassphrase,
            "timestamp" : ts,
            "sign" : exchange.HMAC("sha256", "base64", ts + "GET" + "/users/self/verify", pSecretKey)
        }]
    }
    return login                 

client_private = None 
def main():
    global client_private
    SetErrorFilter("timeout")
    
    posSubscribe = {
        "op": "subscribe",
        "args": [{
            "channel": "positions",
            "instType": "ANY"
        }]
    }                  

    accessKey = "xxx"
    secretKey = "xxx"
    passphrase = "xxx"
    
    client_private = Dial("wss://ws.okx.com:8443/ws/v5/private")
    client_private.write(json.dumps(getLogin(accessKey, secretKey, passphrase)))
    Sleep(3000)
    client_private.write(json.dumps(posSubscribe))
    if client_private:
        lastPingTS = time.time() * 1000
        while True:
            buf = client_private.read(-1)
            if buf:
                Log(buf)
            
            if buf == "" and client_private.write(json.dumps(posSubscribe)) == 0:
                Log("Disconnection detected, close connection, reconnect")
                ret = client_private.close()
                client_private = Dial("wss://ws.okx.com:8443/ws/v5/private")
                client_private.write(json.dumps(getLogin(accessKey, secretKey, passphrase)))
                Sleep(3000)
                client_private.write(json.dumps(posSubscribe))
            
            nowPingTS = time.time() * 1000
            if nowPingTS - lastPingTS > 10 * 1000:
                client_private.write("ping")
                lastPingTS = nowPingTS                

def onexit():
    ret = client_private.close()
    Log("Close the connection!", ret)
auto client_private = Dial("wss://ws.okx.com:8443/ws/v5/private");                  

json getLogin(string pAccessKey, string pSecretKey, string pPassphrase) {
    auto ts = std::to_string(Unix());
    json login = R"({
        "op": "login",
        "args": [{
            "apiKey": "",
            "passphrase": "",
            "timestamp": "",
            "sign": ""
        }]
    })"_json;
    login["args"][0]["apiKey"] = pAccessKey;
    login["args"][0]["passphrase"] = pPassphrase;
    login["args"][0]["timestamp"] = ts;
    login["args"][0]["sign"] = exchange.HMAC("sha256", "base64", ts + "GET" + "/users/self/verify", pSecretKey);
    return login;
}                  

void main() {
    SetErrorFilter("timeout");
    json posSubscribe = R"({
        "op": "subscribe",
        "args": [{
            "channel": "positions",
            "instType": "ANY"
        }]
    })"_json;
    
    auto accessKey = "xxx";
    auto secretKey = "xxx";
    auto passphrase = "xxx";
    
    client_private.write(getLogin(accessKey, secretKey, passphrase).dump());
    Sleep(3000);
    client_private.write(posSubscribe.dump());                

    if (client_private.Valid) {
        uint64_t lastPingTS = Unix() * 1000;                  

        while (true) {
            auto buf = client_private.read(-1);
            if (buf != "") {
                Log(buf);
            }
            if (buf == "") {
                if (client_private.write(posSubscribe.dump()) == 0) {
                    Log("Disconnection detected, close connection, reconnect");
                    client_private.close();
                    client_private = Dial("wss://ws.okx.com:8443/ws/v5/private");
                    client_private.write(getLogin(accessKey, secretKey, passphrase).dump());
                    Sleep(3000);
                    client_private.write(posSubscribe.dump());
                }
            }
            
            uint64_t nowPingTS = Unix() * 1000;
            if (nowPingTS - lastPingTS > 10 * 1000) {
                client_private.write("ping");
                lastPingTS = nowPingTS;
            }
        }
    }
}                  

void onexit() {
    client_private.close();
    Log("exit");
}

OKX এর ওয়েবসকেট প্রমাণীকরণ ইন্টারফেস অ্যাক্সেস করতেঃ

var client = null 
function main() {
    // client = Dial("sqlite3://:memory:")   // Using an in-memory database
    client = Dial("sqlite3://test1.db")      // Open/connect to the database file in the docker's directory
    
    // record handle
    var sqlite3Handle = client.fd()
    Log("sqlite3Handle:", sqlite3Handle)
    
    // Querying tables in the database
    var ret = client.exec("SELECT name FROM sqlite_master WHERE type='table'")
    Log(ret)
}

function onexit() {
    Log("Execute client.close()")
    client.close()
}
// Not supported
// Not supported

একটি ডাটাবেসের সাথে সংযোগ করার সময় ডায়াল ফাংশন দ্বারা ফেরত দেওয়া সংযোগ অবজেক্টের দুটি পদ্ধতি ফাংশন রয়েছে যা এটির জন্য অনন্যঃ

  • exec(sqlString): এসকিউএল স্ট্র্যাটেজ এক্সিকিউট করার জন্য ব্যবহৃত হয়DBExec() function.
  • fd():fd()ফাংশন একটি হ্যান্ডেল ফেরত দেয় (উদাহরণস্বরূপ, হ্যান্ডেল ভেরিয়েবলটি হ্যান্ডেল) যা অন্য থ্রেডগুলি পুনরায় সংযোগ করতে ব্যবহার করবে (এমনকি যদি ডায়াল দ্বারা তৈরি বস্তুটি ইতিমধ্যে এক্সিকিউশন দ্বারা বন্ধ করা হয়েছেclose()সংযোগ বন্ধ করার জন্য ফাংশন) হ্যান্ডেলটিDial()উদাহরণস্বরূপ,Dial(handle)পুনরায় ব্যবহার সংযোগ. নিম্নলিখিত একটি ডায়াল ফাংশন সংযোগ একটি উদাহরণsqlite3 database.

বিস্তারিতaddressপ্যারামিটার, দ্বারা পৃথক|সাধারণ ঠিকানার পরে চিহ্নঃwss://ws.okx.com:8443/ws/v5/publicযদি থাকে।|পরামিতি স্ট্রিং অক্ষর, তারপর||বিভাজক চিহ্ন হিসাবে ব্যবহার করা হয়. যে পরে অংশ কিছু ফাংশন পরামিতি সেটিংস, এবং প্রতিটি পরামিতি সঙ্গে সংযুক্ত করা হয়&উদাহরণস্বরূপ,ss5প্রক্সি এবং কম্প্রেশন পরামিতিগুলি একসাথে নিম্নরূপ সেট করা যেতে পারেঃDial("wss://ws.okx.com:8443/ws/v5/public|proxy=socks5://xxx:9999&compress=gzip_raw&mode=recv")

ডায়াল ফাংশনের ঠিকানা পরামিতি দ্বারা সমর্থিত ফাংশন প্যারামিটার বর্ণনা
ওয়েবসকেট প্রোটোকলের ডেটা সংকোচনের সাথে সম্পর্কিত পরামিতিঃ কম্প্রেস=প্যারামিটার মান compress হল কম্প্রেশন পদ্ধতি, কম্প্রেস প্যারামিটার অপশন হল: gzip_raw, gzip, ইত্যাদি. যদি gzip পদ্ধতিটি স্ট্যান্ডার্ড gzip না হয়, আপনি বর্ধিত পদ্ধতি ব্যবহার করতে পারেনঃ gzip_raw
ওয়েবসকেট প্রোটোকলের ডেটা সংকোচনের সাথে সম্পর্কিত পরামিতিঃ mode=parameter value মোড হল কম্প্রেশন মোড, মোড প্যারামিটারটি দ্বৈত হতে পারে, পাঠান, recv. দ্বৈত হল দ্বি-মুখী কম্প্রেশন, সংকুচিত ডেটা প্রেরণ করুন, সংকুচিত ডেটা গ্রহণ করুন। প্রেরণ হল সংকুচিত ডেটা প্রেরণ করুন। recv হল সংকুচিত ডেটা গ্রহণ করুন, স্থানীয় ডিকম্প্রেশন।
ওয়েবসকেট প্রোটোকল অন্তর্নিহিত স্বয়ংক্রিয় পুনরায় সংযোগ সম্পর্কিত পরামিতি সেট করেঃ পুনরায় সংযোগ = পরামিতি মান reconnect হল reconnect সেট করতে হবে কিনা, reconnect=true হল reconnect সক্ষম করতে হবে। এই প্যারামিটারটি সেট না হলে ডিফল্ট কোন reconnect হয় না।
ওয়েবসকেট প্রোটোকল অন্তর্নিহিত স্বয়ংক্রিয় পুনরায় সংযোগ সম্পর্কিত পরামিতি সেট করেঃ interval=parameter value interval হল পুনরায় চেষ্টা করার সময়সীমা, মিলিসেকেন্ডে, interval=10000 হল 10 সেকেন্ডের পুনরায় চেষ্টা করার সময়সীমা, ডিফল্টটি 1 সেকেন্ড যখন এটি সেট করা হয় না, অর্থাৎ interval=1000.
ওয়েবসকেট প্রোটোকল অন্তর্নিহিত স্বয়ংক্রিয় পুনরায় সংযোগ সম্পর্কিত পরামিতি সেট করেঃ payload=parameter value payload হল সাবস্ক্রিপশন বার্তা যা WebSocket পুনরায় সংযুক্ত হলে পাঠানো প্রয়োজন, উদাহরণস্বরূপঃ payload=okokok।
Socks5 proxy এর সাথে সম্পর্কিত পরামিতিঃ proxy=প্যারামিটার মান প্রক্সি হল ss5 প্রক্সি সেটিং, প্যারামিটার মান বিন্যাসঃ socks5://name:pwd@192.168.0.1:1080, নাম হচ্ছে এসএস৫ সার্ভারের ইউজার নেম, পিডব্লিউডি হচ্ছে এসএস৫ সার্ভারের লগইন পাসওয়ার্ড, ১০৮০ হচ্ছে এসএস৫ সার্ভিস পোর্ট।

দ্যDial()এই ফাংশনটি শুধুমাত্র লাইভ ট্রেডিং এর জন্য সমর্থিত। ডায়াল ফাংশন ব্যবহার করে একটি ডাটাবেসের সাথে সংযোগ করার সময়, সংযোগ স্ট্রিং প্রতিটি ডাটাবেসের জন্য go ভাষা ড্রাইভার প্রকল্পের উল্লেখ করে লেখা হয়।

সমর্থিত ডাটাবেস চালিকাশক্তি প্রকল্প সংযোগ স্ট্রিং মন্তব্যসমূহ
স্কিলেট3 github.com/mattn/go-sqlite3 sqlite3://file:test.db?cache=shared&mode=memory দ্যsqlite3://প্রিফিক্স নির্দেশ করে যে sqlite3 ডাটাবেস ব্যবহার করা হচ্ছে, উদাহরণ কলঃDial("sqlite3://test1.db")
মাইএসকিউএল github.com/go-sql-driver/mysql mysql://username:yourpassword@tcp(localhost:3306)/আপনার ডাটাবেজ?
পশুপালন github.com/lib/pq postgres://user=postgres dbname=yourdatabase sslmode=disable password=yourpassword হোস্ট=স্থানীয় হোস্ট পোর্ট=5432
ক্লিকহাউস github.com/ClickHouse/clickhouse-go clickhouse://tcp://host:9000?username=username&password=yourpassword&database=youdatabase ব্যবহারকারীর নাম এবং পাসওয়ার্ড

দয়া করে মনে রাখবেন যে যখনpayloadবিষয়বস্তু সেটaddressপ্যারামিটারে অক্ষর রয়েছে=অথবা অন্যান্য বিশেষ অক্ষর, এটা প্যারসিং প্রভাবিত করতে পারেaddressপ্যারামিটারDialফাংশন, যেমন নিম্নলিখিত উদাহরণ।

ব্যাকপ্যাক এক্সচেঞ্জ ওয়েবসকেট ব্যক্তিগত ইন্টারফেস কল উদাহরণঃ

var client = null

function main() {
    // Base64-encoded public key of the key pair, i.e. the access key configured on FMZ
    var base64ApiKey = "xxx"

    var ts = String(new Date().getTime())
    var data = "instruction=subscribe&timestamp=" + ts + "&window=5000"

    // Since signEd25519 returns a base64 encoding, it contains the character "="
    var signature = signEd25519(data)
    
    // The payload may contain the character "=" after being encoded by JSON
    payload = {
        "method": "SUBSCRIBE",
        "params": ["account.orderUpdate"],
        "signature": [base64ApiKey, signature, ts, "5000"]
    }

    client = Dial("wss://ws.backpack.exchange")
    client.write(JSON.stringify(payload))
    if (!client) {
        Log("Connection failed, program exited")
        return
    }
    
    while (true) {
        var buf = client.read()      
        Log(buf)
    }    
}

function onexit() {
    client.close()
}

function signEd25519(data) {
    return exchange.Encode("ed25519.seed", "raw", "base64", data, "base64", "{{secretkey}}")
}

কোডের নিম্নলিখিত কল ঠিকমত কাজ করেঃ

client = Dial("wss://ws.backpack.exchange")
client.write(JSON.stringify(payload))

যদি আপনি এটা সরাসরি লিখেনpayload, এটি সঠিকভাবে কাজ করবে না, উদাহরণস্বরূপঃ

client = Dial("wss://ws.backpack.exchange|payload=" + JSON.stringify(payload))

বর্তমানে, শুধুমাত্র জাভাস্ক্রিপ্ট ব্যবহার সমর্থন করেmqtt, nats, amqp, এবংkafkaডায়াল ফাংশনে যোগাযোগ প্রোটোকল। চারটি প্রোটোকলের ব্যবহার দেখানোর জন্য জাভাস্ক্রিপ্ট ভাষা কৌশল কোড একটি উদাহরণ হিসাবে ব্যবহৃত হয়ঃmqtt, nats, amqp, এবংkafka:

// We need to configure and deploy proxy servers for each protocol first.
// For the sake of demonstration, the subscription (read operation) and publishing (write operation) of the topic test_topic are all performed in the current strategy.
var arrConn = []
var arrName = []

function main() {
    LogReset(1)
    conn_nats = Dial("nats://admin@127.0.0.1:4222?topic=test_topic")
    conn_mqtt = Dial("mqtt://127.0.0.1:1883?topic=test_topic")
    conn_amqp = Dial("amqp://q:admin@127.0.0.1:5672/?queue=test_Queue")
    conn_kafka = Dial("kafka://localhost:9092/test_topic")
    arrConn = [conn_nats, conn_amqp, conn_mqtt, conn_kafka]
    arrName = ["nats", "amqp", "mqtt", "kafka"]

    while (true) {
        for (var i in arrConn) {
            var conn = arrConn[i]
            var name = arrName[i]

            // Write data
            conn.write(name + ", time: " + _D() + ", test msg.")
            
            // Read data
            var readMsg = conn.read(1000)
            Log(name + " readMsg: ", readMsg, "#FF0000")
        }

        Sleep(1000)
    }
}

function onexit() {
    for (var i in arrConn) {
        arrConn[i].close()
        Log("close", arrName[i], "connect")
    }
}

বিস্তারিত ডকুমেন্টেশন রেফারেন্সঃএফএমজেড এক্সপ্লোরিংঃ লাইভ ট্রেডিং কৌশলগুলির মধ্যে যোগাযোগ প্রোটোকলের অনুশীলন

HttpQuery

এইচটিটিপি অনুরোধ পাঠান।

অনুরোধের প্রতিক্রিয়া তথ্য ফেরত দেয়। যদি ফেরত মান একটিJSONস্ট্রিং, এটা দ্বারা বিশ্লেষণ করা যেতে পারেJSON.parse()কর্মক্ষমতাJavaScriptভাষা কৌশল, এবংjson::parse()কর্মক্ষমতাC++যদি ডিবাগটি বিকল্প কাঠামোতে সত্য হিসাবে সেট করা থাকে, তবে রিটার্ন মানটি একটি অবজেক্ট (জেএসওএন); যদি ডিবাগটি মিথ্যাতে সেট করা থাকে, তবে রিটার্ন মানটি একটি স্ট্রিং। স্ট্রিং, বস্তু

HttpQuery ((url) HttpQuery ((URL, অপশন)

এইচটিটিপি অনুরোধ ইউআরএল। ইউআরএল সত্য স্ট্রিং এইচটিপি অনুরোধ সম্পর্কিত সেটিংস, উদাহরণস্বরূপ, নিম্নরূপ কাঠামোগত করা যেতে পারেঃ

{
    method: "POST",
    body: "a=10&b=20&c=30",
    charset: "UTF-8",
    cookie: "session_id=12345; lang=en",
    profile: "chrome_103",
    debug: false,
    headers: {"TEST-HTTP-QUERY": "123"},
    timeout: 1000
}
  • প্রোফাইলঃ ব্রাউজার সিমুলেট করতে ব্যবহৃত হয়tlsআঙুলের ছাপ। সমর্থিত সেটিংস নিম্নলিখিত বিকল্পগুলি অন্তর্ভুক্ত করেঃ chrome_:"chrome_103", "chrome_104", "chrome_105", "chrome_106", "chrome_107", "chrome_108", "chrome_109", "chrome_110", "chrome_111", "chrome_112", "chrome_117", সাফারিঃ"safari_15_6_1", "safari_16_0", "safari_ipad_15_6", "safari_ios_15_5", "safari_ios_15_6", "safari_ios_16_0", ফায়ারফক্সঃ"firefox_102", "firefox_104", "firefox_105", "firefox_106", "firefox_108", "firefox_110", "firefox_117", অপেরা_:"opera_89", "opera_90", "opera_91", জালান্দোঃ"zalando_android_mobile", "zalando_ios_mobile", নাইকিঃ"nike_ios_mobile", "nike_android_mobile", মেঘঘঘাট্টা:"cloudscraper", এমএমএস_:"mms_ios", mesh_:"mesh_ios", "mesh_ios_1", "mesh_ios_2", "mesh_android", "mesh_android_1", "mesh_android_2", নিশ্চিত_:"confirmed_ios", "confirmed_android", ঠিক আছে."okhttp4_android_7", "okhttp4_android_8", "okhttp4_android_9", "okhttp4_android_10", "okhttp4_android_11", "okhttp4_android_12", "okhttp4_android_13",
  • ডিবাগঃ যখন এটি সেট করা থাকেtrue,HttpQueryফাংশন কল পূর্ণ উত্তর বার্তা ফেরত দেয়.false, শুধুমাত্র তথ্যBodyউত্তর বার্তা ফেরত দেওয়া হয়.
  • টাইমআউটঃ টাইমআউট সেটিং, সেট 1000 মানে 1 সেকেন্ড টাইমআউট।
  • charset: এটি GB18030 এর মতো অনুরোধ করা প্রতিক্রিয়া ডেটার ট্রান্সকোডিং সমর্থন করে। এটি সাধারণ কোডিং সমর্থন করে। এই কাঠামোর সমস্ত ক্ষেত্র ঐচ্ছিক, উদাহরণস্বরূপ,profileক্ষেত্র বাদ দেওয়া যেতে পারে.

বিকল্প মিথ্যা বস্তু

function main(){
    // An example of GET access without parameters
    var info = JSON.parse(HttpQuery("https://www.okx.com/api/v5/public/time"))
    Log(info)
    // An example of GET access with parameters
    var ticker = JSON.parse(HttpQuery("https://www.okx.com/api/v5/market/books?instId=BTC-USDT"))
    Log(ticker)
}
import json
import urllib.request
def main():
    # HttpQuery does not support Python, you can use the urllib/urllib2 library instead
    info = json.loads(urllib.request.urlopen("https://www.okx.com/api/v5/public/time").read().decode('utf-8'))
    Log(info)
    ticker = json.loads(urllib.request.urlopen("https://www.okx.com/api/v5/market/books?instId=BTC-USDT").read().decode('utf-8'))
    Log(ticker)
void main() {
    auto info = json::parse(HttpQuery("https://www.okx.com/api/v5/public/time"));
    Log(info);
    auto ticker = json::parse(HttpQuery("https://www.okx.com/api/v5/market/books?instId=BTC-USDT"));
    Log(ticker);
}

OKX পাবলিক টিকার API ইন্টারফেস অ্যাক্সেস করার একটি উদাহরণ।

function main() {
    // Setting proxy and sending an http request for this time, no username, no password, this http request will be sent through the proxy
    HttpQuery("socks5://127.0.0.1:8889/http://www.baidu.com/")            

    // Setting proxy and sending an http request for this time, enter the user name and password, only the current call to HttpQuery takes effect, and then call HttpQuery again ("http://www.baidu.com") so that the proxy will not be used.
    HttpQuery("socks5://username:password@127.0.0.1:8889/http://www.baidu.com/")
}
# HttpQuery does not support Python, you can use the urllib/urllib2 library instead
void main() {
    HttpQuery("socks5://127.0.0.1:8889/http://www.baidu.com/");
    HttpQuery("socks5://username:password@127.0.0.1:8889/http://www.baidu.com/");
}

HttpQuery ফাংশন প্রক্সি সেটিংস ব্যবহার করে।

দ্যHttpQuery()ফাংশন শুধুমাত্র সমর্থন করেJavaScript, C++ভাষা,Pythonভাষা ব্যবহার করতে পারেনurllibএইচটিটিপি অনুরোধ সরাসরি পাঠাতে লাইব্রেরি.HttpQuery()মূলত এক্সচেঞ্জের ইন্টারফেসগুলিতে অ্যাক্সেস করতে ব্যবহৃত হয় যা স্বাক্ষরের প্রয়োজন হয় না, যেমন টিকার তথ্যের মতো পাবলিক ইন্টারফেসগুলি।HttpQuery()ব্যাকটেস্টিং সিস্টেমে অনুরোধ পাঠাতে ব্যবহার করা যেতে পারে (শুধুমাত্রGETব্যাকটেস্টিং 20 টি সফর ব্যবহারের সাথে সীমাবদ্ধ।URLs, এবংHttpQuery()ভিজিট ডাটা ক্যাশে হবে. যখন একইURLদ্বিতীয়বার অ্যাক্সেস করা হয়,HttpQuery()ফাংশন ক্যাশে করা ডেটা ফেরত দেয় এবং আর কোন প্রকৃত নেটওয়ার্ক অনুরোধ ঘটে না।

{@fun/Global/HttpQuery_Go HttpQuery_Go}

HttpQuery_Go

একটি HTTP অনুরোধ পাঠায়, একটি অ্যাসিনক্রোন সংস্করণHttpQuery function.

দ্যHttpQuery_Go()ফাংশন অবিলম্বে একটি সমান্তরাল বস্তু ফেরত দেয় যা Http অনুরোধের ফলাফল পেতে ব্যবহার করা যেতে পারেwaitপদ্ধতিJSON.parse()ফাংশন ব্যবহার করা যেতে পারেJSON.parse()কর্মক্ষমতাJavaScriptভাষার কৌশল।
বস্তু

HttpQuery_Go ((url) HttpQuery_Go ((URL, অপশন)

এইচটিটিপি অনুরোধ ইউআরএল। ইউআরএল সত্য স্ট্রিং এইচটিপি অনুরোধ সম্পর্কিত সেটিংস, উদাহরণস্বরূপ, নিম্নরূপ কাঠামোগত করা যেতে পারেঃ

{
    method: "POST",
    body: "a=10&b=20&c=30",
    charset: "UTF-8",
    cookie: "session_id=12345; lang=en",
    // profile: "",
    debug: false,
    headers: {"TEST-HTTP-QUERY": "123"},
    timeout: 1000
}
  • প্রোফাইলঃ ব্রাউজার সিমুলেট করতে ব্যবহৃত হয়tls fingerprints.
  • ডিবাগঃ যখন এটি সেট করা থাকেtrueএইHttpQuery_Goফাংশন কল পূর্ণ উত্তর বার্তা ফেরত দেয়.false, শুধুমাত্র তথ্যBodyউত্তর বার্তা ফেরত দেওয়া হয়.
  • টাইমআউটঃ টাইমআউট সেটিং, সেট 1000 মানে 1 সেকেন্ড টাইমআউট। এই কাঠামোর সমস্ত ক্ষেত্র ঐচ্ছিক, উদাহরণস্বরূপ,profileক্ষেত্র বাদ দেওয়া যেতে পারে.

বিকল্প মিথ্যা বস্তু

function main() {
    // Create the first asynchronous thread
    var r1 = HttpQuery_Go("https://www.okx.com/api/v5/market/tickers?instType=SPOT")
    // Create the second asynchronous thread
    var r2 = HttpQuery_Go("https://api.huobi.pro/market/tickers")
    
    // Get the return value of the first asynchronous thread call
    var tickers1 = r1.wait()
    // Get the return value of the second asynchronous thread call
    var tickers2 = r2.wait()
    
    // Print results
    Log("tickers1:", tickers1)
    Log("tickers2:", tickers2)
}
# Not supported
// Not supported

সমষ্টিগত টিকার তথ্যের জন্য এক্সচেঞ্জের পাবলিক ইন্টারফেসে অ্যাসিনক্রোন অ্যাক্সেস।

দ্যHttpQuery_Go()ফাংশন শুধুমাত্র সমর্থন করেJavaScript,Pythonভাষা ব্যবহার করা যেতে পারেurllibএইচটিটিপি অনুরোধ সরাসরি পাঠাতে লাইব্রেরি.HttpQuery_Go()মূলত ইন্টারফেস অ্যাক্সেস করতে ব্যবহৃত হয় যা এক্সচেঞ্জে স্বাক্ষরের প্রয়োজন হয় না, যেমন টিকার তথ্যের মতো পাবলিক ইন্টারফেস।HttpQuery_Goফাংশনটি ব্যাকটেস্টিং সিস্টেমে সমর্থিত নয়।

{@fun/Global/HttpQuery HttpQuery}

এনকোডিং

এই ফাংশনটি পাস করা পরামিতি অনুযায়ী ডেটা কোড করে।

দ্যEncodeফাংশন এনকোডিং এবং এনক্রিপশন পরে তথ্য ফেরত দেয়। স্ট্রিং

এনকোড ((algo, inputFormat, outputFormat, data) এনকোড ((algo, ইনপুটফর্ম্যাট, আউটপুটফর্ম্যাট, ডেটা, কীফর্ম্যাট, কী)

প্যারামিটারalgoএনকোডিং গণনায় ব্যবহৃত অ্যালগরিদম। সমর্থন সেটিং হলঃraw(কোনও অ্যালগরিদম ব্যবহার করা হয় না), "সাইন", signTx, md4, md5, sha256, sha512, sha1, keccak256, sha3.224, sha3.256, sha3.384, sha3.512, sha3.keccak256, sha3.keccak512, sha512.384, sha512.256, sha512.224, ripemd160, blake2b.256, 2b.512, blake2s.128, blake2s.256 প্যারামিটার।algoএছাড়াও সমর্থন করেঃ text.encoder.utf8, text.decoder.utf8, text.encoder.gbk, text.decoder.gbk, এনকোড এবং ডিকোড স্ট্রিং।algoএছাড়াও সমর্থন করেঃ ed25519 অ্যালগরিদম। বিভিন্ন হ্যাশ অ্যালগরিদম ব্যবহার সমর্থন করে, উদাহরণস্বরূপ, প্যারামিটারalgoed25519.md5, ed25519.sha512 ইত্যাদি হিসাবে লেখা যেতে পারে। এটি সমর্থন করেed25519.seedগণনা। কিছু সত্য স্ট্রিং তথ্য বিন্যাস নির্দিষ্ট করতে ব্যবহৃত হয়dataপ্যারামিটার।inputFormatপরামিতি নিম্নলিখিত একটি হিসাবে সেট করা যেতে পারেঃraw, hex, base64, string. raw মানে ডাটা কাঁচা ডাটা, hex মানে ডাটাhexকোড করা, base64 মানে তথ্যbase64এনকোড করা হয়, এবং string মানে ডাটা একটি স্ট্রিং। ইনপুটফরম্যাট সত্য স্ট্রিং আউটপুট এর ডেটা ফরম্যাট নির্দিষ্ট করতে ব্যবহৃত হয়।outputFormatপরামিতি নিম্নলিখিত একটি হিসাবে সেট করা যেতে পারেঃraw, hex, base64, string. raw মানে ডাটা কাঁচা ডাটা, hex মানে ডাটাhexকোড করা, base64 মানে তথ্যbase64এনকোড করা হয়, এবং string মানে ডাটা একটি স্ট্রিং। আউটপুটফর্ম্যাট সত্য স্ট্রিং প্যারামিটারdataযে তথ্যগুলো প্রক্রিয়া করা হবে। তথ্য সত্য স্ট্রিং তথ্য বিন্যাস নির্দিষ্ট করতে ব্যবহৃত হয়keyপ্যারামিটার।keyপরামিতি নিম্নলিখিত একটি হিসাবে সেট করা যেতে পারেঃraw, hex, base64, string. raw মানে ডাটা কাঁচা ডাটা, hex মানে ডাটাhexকোড করা, base64 মানে তথ্যbase64এনকোড করা হয়, এবং string মানে ডাটা একটি স্ট্রিং। keyফরম্যাট মিথ্যা স্ট্রিং প্যারামিটারkeyএর জন্য ব্যবহৃত সিক্রেট কীHMACএনক্রিপশন. প্যারামিটারkeyপ্রয়োজন হয় যখন প্যারামিটারalgoসেট করা আছেsignঅথবাsignTx.keyপ্যারামিটার ব্যবহার করা হয় নাHMACএনক্রিপশনalgoপ্যারামিটার raw এ সেট করা আছে (কারণ HMAC এনক্রিপশনের জন্য অ্যালগরিদম নির্দিষ্ট করতে হবে) । চাবি মিথ্যা স্ট্রিং

function main() {
    Log(Encode("raw", "raw", "hex", "example", "raw", "123"))            // 6578616d706c65
    Log(Encode("raw", "raw", "hex", "example"))                          // 6578616d706c65
    Log(Encode("sha256", "raw", "hex", "example", "raw", "123"))         // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
    Log(Encode("sha256", "raw", "hex", "example", "", "123"))            // 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c
    Log(Encode("sha256", "raw", "hex", "example", null, "123"))          // 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c
    Log(Encode("sha256", "raw", "hex", "example", "string", "123"))      // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
    
    Log(Encode("raw", "raw", "hex", "123"))           // 313233
    Log(Encode("raw", "raw", "base64", "123"))        // MTIz
    
    Log(Encode("sha256", "raw", "hex", "example", "hex", "313233"))      // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
    Log(Encode("sha256", "raw", "hex", "example", "base64", "MTIz"))     // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
}
def main():
    Log(Encode("raw", "raw", "hex", "example", "raw", "123"))            # 6578616d706c65
    Log(Encode("raw", "raw", "hex", "example", "", ""))                  # 6578616d706c65
    Log(Encode("sha256", "raw", "hex", "example", "raw", "123"))         # 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
    Log(Encode("sha256", "raw", "hex", "example", "", "123"))            # 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c            

    Log(Encode("sha256", "raw", "hex", "example", "string", "123"))      # 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
    
    Log(Encode("raw", "raw", "hex", "123", "", ""))           # 313233
    Log(Encode("raw", "raw", "base64", "123", "", ""))        # MTIz
    
    Log(Encode("sha256", "raw", "hex", "example", "hex", "313233"))      # 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
    Log(Encode("sha256", "raw", "hex", "example", "base64", "MTIz"))     # 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
void main() {
    Log(Encode("raw", "raw", "hex", "example", "raw", "123"));            // 6578616d706c65
    Log(Encode("raw", "raw", "hex", "example"));                          // 6578616d706c65
    Log(Encode("sha256", "raw", "hex", "example", "raw", "123"));         // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
    Log(Encode("sha256", "raw", "hex", "example", "", "123"));            // 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c            

    Log(Encode("sha256", "raw", "hex", "example", "string", "123"));      // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
                
    Log(Encode("raw", "raw", "hex", "123"));           // 313233
    Log(Encode("raw", "raw", "base64", "123"));        // MTIz
                
    Log(Encode("sha256", "raw", "hex", "example", "hex", "313233"));      // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
    Log(Encode("sha256", "raw", "hex", "example", "base64", "MTIz"));     // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
}

এনকোড ফাংশন কলের উদাহরণ।

function main(){
    var ret1 = Encode("text.encoder.utf8", "raw", "hex", "hello")     // e4bda0e5a5bd
    Log(ret1)    
    var ret2 = Encode("text.decoder.utf8", "hex", "string", ret1)   
    Log(ret2)            

    var ret3 = Encode("text.encoder.gbk", "raw", "hex", "hello")      // c4e3bac3
    Log(ret3)
    var ret4 = Encode("text.decoder.gbk", "hex", "string", ret3)
    Log(ret4)
}
def main():
    ret1 = Encode("text.encoder.utf8", "raw", "hex", "hello", "", "")     # e4bda0e5a5bd
    Log(ret1)    
    ret2 = Encode("text.decoder.utf8", "hex", "string", ret1, "", "")   
    Log(ret2)            

    ret3 = Encode("text.encoder.gbk", "raw", "hex", "hello", "", "")      # c4e3bac3
    Log(ret3)
    ret4 = Encode("text.decoder.gbk", "hex", "string", ret3, "", "")
    Log(ret4)
void main(){
    auto ret1 = Encode("text.encoder.utf8", "raw", "hex", "hello");     // e4bda0e5a5bd
    Log(ret1);    
    auto ret2 = Encode("text.decoder.utf8", "hex", "string", ret1);   
    Log(ret2);            

    auto ret3 = Encode("text.encoder.gbk", "raw", "hex", "hello");      // c4e3bac3
    Log(ret3);
    auto ret4 = Encode("text.decoder.gbk", "hex", "string", ret3);
    Log(ret4);
}

প্যারামিটারalgoএছাড়াও সমর্থন করেঃ text.encoder.utf8, text.decoder.utf8, text.encoder.gbk, text.decoder.gbk স্ট্রিং কোড এবং ডিকোড করার জন্য।

দ্যEncode()ফাংশন শুধুমাত্র লাইভ ট্রেডিং জন্য সমর্থিত হয়.keyএবংkeyFormatপরামিতি পাস করা হয় না, তারপরkeyএনক্রিপশন ব্যবহার করা হয় না।

ইউনিক্স ন্যানো

বর্তমান মুহুর্তের ন্যানো সেকেন্ডের টাইমস্ট্যাম্প পান।

দ্যUnixNano()ফাংশন ন্যানোসেকেন্ড টাইমস্ট্যাম্প ফেরত দেয়। সংখ্যা

ইউনিক্স ন্যানো ((()

function main() {
    var time = UnixNano() / 1000000
    Log(_N(time, 0))
}
def main():
    time = UnixNano()
    Log(time)
void main() {
    auto time = UnixNano();
    Log(time);
}

যদি আপনার মিলিসেকেন্ডের টাইমস্ট্যাম্প পেতে হয়, তাহলে আপনি নিম্নলিখিত কোডটি ব্যবহার করতে পারেন:

{@fun/Global/Unix Unix}

ইউনিক্স

দ্বিতীয় স্তরের বর্তমান মুহুর্তের টাইমস্ট্যাম্প পান।

দ্বিতীয় স্তরের টাইমস্ট্যাম্প রিটার্ন করে। সংখ্যা

ইউনিক্স ((()

function main() {
    var t = Unix()
    Log(t)
}
def main():
    t = Unix()
    Log(t)
void main() {
    auto t = Unix();
    Log(t);
}

{@fun/Global/UnixNano ইউনিক্স ন্যানো}

গেটওএস

ডকার অবস্থিত ডিভাইসের সিস্টেম তথ্য পান।

সিস্টেম তথ্য। স্ট্রিং

GetOS ((()

function main() {
    Log("GetOS:", GetOS())
}
def main():
    Log("GetOS:", GetOS())
void main() {
    Log("GetOS:", GetOS());
}

উদাহরণস্বরূপ,GetOS()একটি ডকারের জন্য ফাংশনম্যাক ওএসঅপারেটিং সিস্টেম ফিরে আসতে পারেঃdarwin/amd64কারণ অ্যাপলের কম্পিউটারে একাধিক হার্ডওয়্যার আর্কিটেকচার রয়েছে।darwinনাম হলম্যাক ওএস system.

এমডি৫

প্যারামিটারের MD5 হ্যাশ গণনা করেdata.

এমডি৫ হ্যাশ মান। স্ট্রিং

MD5 (ডেটা)

MD5 গণনা প্রয়োজন যে তথ্য. তথ্য সত্য স্ট্রিং

function main() {
    Log("MD5", MD5("hello world"))
}
def main():
    Log("MD5", MD5("hello world"))
void main() {
    Log("MD5", MD5("hello world"));
}

কলিংMD5("hello world")ফাংশন, রিটার্ন মান হলঃ5eb63bbbe01eeed093cb22bb8f5acdc3.

{@ফান/গ্লোবাল/এনকোড এনকোড}

DBExec

ডাটাবেজ ইন্টারফেস ফাংশন।

একটি বস্তু যা একটি কার্য সম্পাদনের ফলাফল ধারণ করেsqlবিবৃতি, উদাহরণস্বরূপঃ


{"columns":["TS","HIGH","OPEN","LOW","CLOSE","VOLUME"],"values":[[1518970320000,100,99.1,90,100,12345.6]]}

বস্তু

DBExec ((sql)

sqlবিবৃতি স্ট্রিং. sql সত্য স্ট্রিং

function main() {
    var strSql = [
        ":CREATE TABLE TEST_TABLE(", 
        "TS INT PRIMARY KEY NOT NULL,",
        "HIGH REAL NOT NULL,", 
        "OPEN REAL NOT NULL,", 
        "LOW REAL NOT NULL,", 
        "CLOSE REAL NOT NULL,", 
        "VOLUME REAL NOT NULL)"
    ].join("")
    var ret = DBExec(strSql)
    Log(ret)
    
    // Add a piece of data
    Log(DBExec(":INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"))
    
    // Query data
    Log(DBExec(":SELECT * FROM TEST_TABLE;"))
}
def main():
    arr = [
        ":CREATE TABLE TEST_TABLE(", 
        "TS INT PRIMARY KEY NOT NULL,",
        "HIGH REAL NOT NULL,", 
        "OPEN REAL NOT NULL,", 
        "LOW REAL NOT NULL,", 
        "CLOSE REAL NOT NULL,", 
        "VOLUME REAL NOT NULL)"
    ]
    strSql = ""
    for i in range(len(arr)):
        strSql += arr[i]
    ret = DBExec(strSql)
    Log(ret)
    
    # Add a piece of data
    Log(DBExec(":INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"))
    
    # Query data
    Log(DBExec(":SELECT * FROM TEST_TABLE;"))
void main() {
    string strSql = ":CREATE TABLE TEST_TABLE(\
        TS INT PRIMARY KEY NOT NULL,\
        HIGH REAL NOT NULL,\
        OPEN REAL NOT NULL,\
        LOW REAL NOT NULL,\
        CLOSE REAL NOT NULL,\
        VOLUME REAL NOT NULL)";
    auto ret = DBExec(strSql);
    Log(ret);
    
    // Add a piece of data
    Log(DBExec(":INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"));
    
    // Query data
    Log(DBExec(":SELECT * FROM TEST_TABLE;"));
}

ইন-মেমরি ডাটাবেস সমর্থন,DBExecফাংশন পরামিতি, যদিsqlবিবৃতি দিয়ে শুরু হয়:এটি এমন ডাটাবেস অপারেশনের জন্য উপযুক্ত যা ধ্রুবক সংরক্ষণের প্রয়োজন হয় না, উদাহরণস্বরূপঃ

function main() {
    var strSql = [
        "CREATE TABLE TEST_TABLE(", 
        "TS INT PRIMARY KEY NOT NULL,",
        "HIGH REAL NOT NULL,", 
        "OPEN REAL NOT NULL,", 
        "LOW REAL NOT NULL,", 
        "CLOSE REAL NOT NULL,", 
        "VOLUME REAL NOT NULL)"
    ].join("")
    var ret = DBExec(strSql)
    Log(ret)
}
def main():
    arr = [
        "CREATE TABLE TEST_TABLE(", 
        "TS INT PRIMARY KEY NOT NULL,",
        "HIGH REAL NOT NULL,", 
        "OPEN REAL NOT NULL,", 
        "LOW REAL NOT NULL,", 
        "CLOSE REAL NOT NULL,", 
        "VOLUME REAL NOT NULL)"
    ]
    strSql = ""
    for i in range(len(arr)):
        strSql += arr[i]
    ret = DBExec(strSql)
    Log(ret)
void main() {
    string strSql = "CREATE TABLE TEST_TABLE(\
        TS INT PRIMARY KEY NOT NULL,\
        HIGH REAL NOT NULL,\
        OPEN REAL NOT NULL,\
        LOW REAL NOT NULL,\
        CLOSE REAL NOT NULL,\
        VOLUME REAL NOT NULL)";
    auto ret = DBExec(strSql);
    Log(ret);
}

একটা টেবিল বানাও।

function main() {
    var strSql = [
        "CREATE TABLE TEST_TABLE(", 
        "TS INT PRIMARY KEY NOT NULL,",
        "HIGH REAL NOT NULL,", 
        "OPEN REAL NOT NULL,", 
        "LOW REAL NOT NULL,", 
        "CLOSE REAL NOT NULL,", 
        "VOLUME REAL NOT NULL)"
    ].join("")
    Log(DBExec(strSql))
    
    // Add a piece of data
    Log(DBExec("INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"))
    
    // Query data
    Log(DBExec("SELECT * FROM TEST_TABLE;"))
    
    // Modify data
    Log(DBExec("UPDATE TEST_TABLE SET HIGH=? WHERE TS=?", 110, 1518970320000))    
    
    // Delete data
    Log(DBExec("DELETE FROM TEST_TABLE WHERE HIGH=?", 110))
}
def main():
    arr = [
        "CREATE TABLE TEST_TABLE(", 
        "TS INT PRIMARY KEY NOT NULL,",
        "HIGH REAL NOT NULL,", 
        "OPEN REAL NOT NULL,", 
        "LOW REAL NOT NULL,", 
        "CLOSE REAL NOT NULL,", 
        "VOLUME REAL NOT NULL)"
    ]
    strSql = ""
    for i in range(len(arr)):
        strSql += arr[i]
    Log(DBExec(strSql))
    
    # Add a piece of data
    Log(DBExec("INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"))
    
    # Query data
    Log(DBExec("SELECT * FROM TEST_TABLE;"))
    
    # Modify data
    Log(DBExec("UPDATE TEST_TABLE SET HIGH=? WHERE TS=?", 110, 1518970320000))
    
    # Delete data
    Log(DBExec("DELETE FROM TEST_TABLE WHERE HIGH=?", 110))
void main() {
    string strSql = "CREATE TABLE TEST_TABLE(\
        TS INT PRIMARY KEY NOT NULL,\
        HIGH REAL NOT NULL,\
        OPEN REAL NOT NULL,\
        LOW REAL NOT NULL,\
        CLOSE REAL NOT NULL,\
        VOLUME REAL NOT NULL)";
    Log(DBExec(strSql));            

    // Add a piece of data
    Log(DBExec("INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"));
    
    // Query data
    Log(DBExec("SELECT * FROM TEST_TABLE;"));
    
    // Modify data
    Log(DBExec("UPDATE TEST_TABLE SET HIGH=? WHERE TS=?", 110, 1518970320000));
    
    // Delete data
    Log(DBExec("DELETE FROM TEST_TABLE WHERE HIGH=?", 110));
}

টেবিলের রেকর্ড যোগ করুন, মুছে ফেলুন, চেক করুন এবং পরিবর্তন করুন।

ফাংশনDBExec()লাইভ ট্রেডিং ডাটাবেস (এসকিউএলাইট ডাটাবেস) পরিচালনা করতে পারে প্যারামিটারগুলি পাস করে। লাইভ ট্রেডিং ডাটাবেসে ডেটা যুক্ত, মুছে ফেলা, পরীক্ষা এবং পরিবর্তন করার অপারেশনটি উপলব্ধি করুন,এসকিউএলাইটলাইভ ট্রেডিং ডাটাবেসের সিস্টেম সংরক্ষিত টেবিলঃkvdb, cfg, log, profit, chartএই টেবিলে কাজ করবেন না।লেনদেনএই ধরনের অপারেশনগুলি সমর্থিত নয় এবং সিস্টেমে দ্বন্দ্ব সৃষ্টি করতে পারে এমন অপারেশনগুলি সম্পাদন করার পরামর্শ দেওয়া হয় না।DBExec()এই ফাংশনটি শুধুমাত্র লাইভ ট্রেডিং এর জন্য সমর্থিত।

{@ফান/গ্লোবাল/_জি _জি}

UUID

একটি UUID তৈরি করুন।

৩২-বিট ইউইউআইডি। স্ট্রিং

UUID (()

function main() {
    var uuid1 = UUID()
    var uuid2 = UUID()
    Log(uuid1, uuid2)
}
def main():
    uuid1 = UUID()
    uuid2 = UUID()
    Log(uuid1, uuid2)
void main() {
    auto uuid1 = UUID();
    auto uuid2 = UUID();
    Log(uuid1, uuid2);
}

দ্যUUID()ফাংশন শুধুমাত্র লাইভ ট্রেডিং সমর্থন করে।

ইভেন্টলুপ

ঘটনা শুনুন, এটা ফিরে আসে যখন কোন আছেWebSocketপাঠযোগ্য তথ্য বা সমান্তরাল কাজ যেমনঃexchange.Go(), HttpQuery_Go(), ইত্যাদি সম্পন্ন হয়।

যদি ফেরত বস্তু শূন্য মান নয়,Eventরিটার্ন কন্টেন্টের মধ্যে থাকা ইভেন্ট ট্রিগার টাইপ। উদাহরণস্বরূপ নিম্নলিখিত রিটার্ন মান কাঠামোঃ

{"Seq":1,"Event":"Exchange_GetTrades","ThreadId":0,"Index":3,"Nano":1682068771309583400}

বস্তু

ইভেন্টলুপ ((() ইভেন্টলুপ (টাইমআউট)

প্যারামিটারtimeoutহল টাইমআউট সেটিং, মিলিসেকেন্ডে।timeoutযদি এটি 0 এ সেট করা থাকে তবে এটি 0 এর চেয়ে বড় হয় তবে এটি একটি ইভেন্টের জন্য অপেক্ষা করে এবং যদি এটি 0 এর চেয়ে কম হয় তবে অবিলম্বে সর্বশেষতম ইভেন্টটি ফেরত দেয়। টাইমআউট মিথ্যা সংখ্যা

function main() {
    var routine_getTicker = exchange.Go("GetTicker")
    var routine_getDepth = exchange.Go("GetDepth")
    var routine_getTrades = exchange.Go("GetTrades")
    
    // Sleep(2000), if the Sleep statement is used here, it will cause the subsequent EventLoop function to miss the previous events, because after waiting for 2 seconds, the concurrent function has received the data, and the subsequent EventLoop listening mechanism started, it misses these events.
    // These events will not be missed unless EventLoop(-1) is called at the beginning of the first line of code to first initialize the EventLoop's listening mechanism.            

    // Log("GetDepth:", routine_getDepth.wait()) If the wait function is called in advance to retrieve the result of a concurrent call to the GetDepth function, the event that the GetDepth function receives the result of the request will not be returned in the EventLoop function.
    var ts1 = new Date().getTime()
    var ret1 = EventLoop(0)
    
    var ts2 = new Date().getTime()
    var ret2 = EventLoop(0)
    
    var ts3 = new Date().getTime()
    var ret3 = EventLoop(0)
    
    Log("The first concurrent task completed was:", _D(ts1), ret1)
    Log("The second concurrent task completed was:", _D(ts2), ret2)
    Log("The third concurrent task completed was:", _D(ts3), ret3)
    
    Log("GetTicker:", routine_getTicker.wait())
    Log("GetDepth:", routine_getDepth.wait())
    Log("GetTrades:", routine_getTrades.wait())
}
import time
def main():
    routine_getTicker = exchange.Go("GetTicker")
    routine_getDepth = exchange.Go("GetDepth")
    routine_getTrades = exchange.Go("GetTrades")
    
    ts1 = time.time()
    ret1 = EventLoop(0)
    
    ts2 = time.time()
    ret2 = EventLoop(0)
    
    ts3 = time.time()
    ret3 = EventLoop(0)
    
    Log("The first concurrent task completed was:", _D(ts1), ret1)
    Log("The second concurrent task completed was:", _D(ts2), ret2)
    Log("The third concurrent task completed was:", _D(ts3), ret3)
    
    Log("GetTicker:", routine_getTicker.wait())
    Log("GetDepth:", routine_getDepth.wait())
    Log("GetTrades:", routine_getTrades.wait())
void main() {
    auto routine_getTicker = exchange.Go("GetTicker");
    auto routine_getDepth = exchange.Go("GetDepth");
    auto routine_getTrades = exchange.Go("GetTrades");
    
    auto ts1 = Unix() * 1000;
    auto ret1 = EventLoop(0);
    
    auto ts2 = Unix() * 1000;
    auto ret2 = EventLoop(0);
    
    auto ts3 = Unix() * 1000;
    auto ret3 = EventLoop(0);
    
    Log("The first concurrent task completed was:", _D(ts1), ret1);
    Log("The second concurrent task completed was:", _D(ts2), ret2);
    Log("The third concurrent task completed was:", _D(ts3), ret3);
    
    Ticker ticker;
    Depth depth;
    Trades trades;
    routine_getTicker.wait(ticker);
    routine_getDepth.wait(depth);
    routine_getTrades.wait(trades);
    
    Log("GetTicker:", ticker);
    Log("GetDepth:", depth);
    Log("GetTrades:", trades);
}

প্রথম কলEventLoop()কোডের ফাংশনটি সেই শোনা ইভেন্টের জন্য প্রক্রিয়াটি শুরু করে এবং যদি প্রথমটিEventLoop()কলটি ইভেন্ট কলব্যাকের পরে শুরু হয়, এটি পূর্ববর্তী ইভেন্টগুলি মিস করবে। অন্তর্নিহিত সিস্টেম একটি সারি কাঠামো আবৃত করে যা সর্বাধিক 500 ইভেন্ট কলব্যাক ক্যাশে করে। যদিEventLoop()ফাংশনটি প্রোগ্রাম এক্সিকিউশন চলাকালীন তাদের বের করার সময় কল করা হয় না, 500 ক্যাশে বাইরে পরবর্তী ইভেন্ট কলব্যাক হারিয়ে যাবে।EventLoop()ফাংশন অন্তর্নিহিত সিস্টেম WebSocket এর ক্যাশে সারি বা যেমন সমান্তরাল ফাংশন ক্যাশে প্রভাবিত করে নাexchange.Go(). এই ক্যাশেগুলির জন্য, ডেটা পুনরুদ্ধার করার জন্য সংশ্লিষ্ট পদ্ধতিগুলি ব্যবহার করা এখনও প্রয়োজনীয়।EventLoop()ফাংশন ডেটা জন্য যে আগে উদ্ধার করা হয়েছেEventLoop()ফাংশন রিটার্ন.EventLoop()কৌশল স্তরকে জানানো যে নতুন নেটওয়ার্ক ডেটা অন্তর্নিহিত সিস্টেমে প্রাপ্ত হয়েছে। পুরো কৌশলটি ইভেন্ট দ্বারা চালিত হয়। যখন কৌশল স্তরEventLoop()ফাংশন একটি ইভেন্ট ফেরত দেয়, শুধু সব তথ্য উত্স অতিক্রম করে. উদাহরণস্বরূপ, ওয়েবসকেট সংযোগ, বস্তু দ্বারা তৈরিexchange.Go()তথ্য সংগ্রহ করার চেষ্টা করুন।EventLoop()ফাংশন শুধুমাত্র লাইভ ট্রেডিং সমর্থন করে। প্রধান ফাংশন থেকে কল করার সময় প্রধান থ্রেডে ইভেন্টগুলির জন্য শুনুনmain().JavaScriptভাষা,threading.Thread()ফাংশন একটি থ্রেড তৈরি করে, যা বর্তমান থ্রেডের ইভেন্টগুলির জন্য শুনতে থ্রেড এর এক্সিকিউশন ফাংশনেও কল করা যেতে পারে।

{@fun/Global/Dial Dial}, {@fun/Trade/exchange.Go exchange.Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}

__ সার্ভ করুন

দ্য__Serveএইচটিটিপি পরিষেবা, টিসিপি পরিষেবা এবং ওয়েবসকেট পরিষেবা (এইচটিটিপি প্রোটোকলের উপর ভিত্তি করে) তৈরি করতে ফাংশন ব্যবহার করা হয়।

একটি স্ট্রিং ফেরত দেয় যা তৈরি পরিষেবার আইপি ঠিকানা এবং পোর্ট রেকর্ড করে। উদাহরণস্বরূপঃ127.0.0.1:8088, [::]:8089.

স্ট্রিং

__Serve ((serveURI, হ্যান্ডলার) __Serve ((serveURI, হ্যান্ডলার,...args)

দ্যserveURIপ্যারামিটারটি প্রোটোকল, আইপি ঠিকানা, পোর্ট এবং পরিষেবা বাঁধার অন্যান্য সেটিংস যেমনhttp://0.0.0.0:8088?gzip=trueঅর্থাৎ,http://:8088?gzip=true.

  • টিসিপি প্রোটোকলserveURIপ্যারামিটার সেটিং, যেমনঃtcp://127.0.0.1:6666?tls=true; আপনি সার্টিফিকেট এবং ব্যক্তিগত কী যোগ করতে পারেন, যেমনtls=true&cert_pem=xxxx&cert_key_pem=xxxx.
  • এইচটিটিপি প্রোটোকলserveURIপ্যারামিটার সেটিংস, যেমনঃhttp://127.0.0.1:6666?gzip=true; আপনি কম্প্রেশন সেটিংস সেট করতে পারেনঃgzip=true. দ্যserveURIএইচটিটিপিএস এর জন্য এই প্যারামিটার ব্যবহার করা হয়, যেমনhttps://127.0.0.1:6666?tls=true&gzip=true; আপনি যোগ করতে পারেনcert_pemএবংcert_key_pemসার্টিফিকেট লোড করার পরামিতি।

serveURI সত্য স্ট্রিং দ্যhandlerপ্যারামিটারটি রাউটিং প্রসেসিং ফাংশন (এইচটিটিপি প্রোটোকল), বার্তা প্রসেসিং ফাংশন (টিসিপি প্রোটোকল) এবং স্ট্রিম প্রসেসিং ফাংশন (ওয়েবসকেট) এ পাস করতে ব্যবহৃত হয়। প্যারামিটার দ্বারা পাস করা কলব্যাক ফাংশনhandlerএকাধিক প্যারামিটার সংজ্ঞায়িত করতে পারেন, প্রথম প্যারামিটারটি হল ctx বস্তু (context object) ।

হ্যান্ডলার সত্য ফাংশন কলব্যাক ফাংশনের প্রকৃত প্যারামিটার প্যারামিটার হিসাবে পাসhandler. একাধিক পরামিতি থাকতে পারেargউদাহরণস্বরূপঃ

__Serve("http://:8088", function(ctx, a, b, c) {
    Log(`ctx.host():`, ctx.host(), ", a=", a, ", b=", b, ", c=", c)
}, 1, 2, 3)

পরামিতি1, 2, 3কল করার সময় পাস__Serve()ফাংশন পরামিতিগুলির সাথে মিলে যায়a, b, cকলব্যাক ফাংশনে পাস।

আরজি মিথ্যা string, number, bool, object, array, function, null value এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য প্রকার

function main() {
    let httpServer = __Serve("http://:8088?gzip=true", function (ctx) {
        Log("http connect from: ", ctx.remoteAddr(), "->", ctx.localAddr())
        let path = ctx.path()
        if (path == "/") {
            ctx.write(JSON.stringify({
                path: ctx.path(),
                method: ctx.method(),
                headers: ctx.headers(),
                cookie: ctx.header("Cookie"),
                remote: ctx.remoteAddr(),
                query: ctx.rawQuery()
            }))
        } else if (path == "/tickers") {
            let ret = exchange.GetTickers()
            if (!ret) {
                ctx.setStatus(500)
                ctx.write(GetLastError())
            } else {
                ctx.write(JSON.stringify(ret))
            }
        } else if (path == "/wss") {
            if (ctx.upgrade("websocket")) { // upgrade to websocket
                while (true) {
                    let r = ctx.read(10)
                    if (r == "") {
                        break
                    } else if (r) {
                        if (r == "ticker") {
                            ctx.write(JSON.stringify(exchange.GetTicker()))
                        } else {
                            ctx.write("not support")
                        }
                    }
                }
                Log("websocket closed", ctx.remoteAddr())
            }
        } else {
            ctx.setStatus(404)
        }
    })
    let echoServer = __Serve("tcp://:8089", function (ctx) {
        Log("tcp connect from: ", ctx.remoteAddr(), "->", ctx.localAddr())
        while (true) {
            let d = ctx.read()
            if (!d) {
                break
            }
            ctx.write(d)
        }
        Log("connect closed")
    })
    Log("http serve on", httpServer, "tcp serve on", echoServer)
    
    for (var i = 0; i < 5; i++) {
        if (i == 2) {
            // test Http
            var retHttp = HttpQuery("http://127.0.0.1:8088?num=123&limit=100", {"debug": true})
            Log("retHttp:", retHttp)
        } else if (i == 3) {
            // test TCP
            var tcpConn = Dial("tcp://127.0.0.1:8089")
            tcpConn.write("Hello TCP Server")
            var retTCP = tcpConn.read()
            Log("retTCP:", retTCP)
        } else if (i == 4) {
            // test Websocket
            var wsConn = Dial("ws://127.0.0.1:8088/wss|compress=gzip")
            wsConn.write("ticker")
            var retWS = wsConn.read(1000)
            Log("retWS:", retWS)
            // no depth
            wsConn.write("depth")
            retWS = wsConn.read(1000)
            Log("retWS:", retWS)
        }
        Sleep(1000)
    }
}
# Unsupported
// Unsupported
  • এই ফাংশনটি শুধুমাত্র জাভাস্ক্রিপ্ট ভাষা কৌশল সমর্থন করে।
  • সার্ভিস থ্রেডটি গ্লোবাল স্কোপ থেকে বিচ্ছিন্ন, তাই এটি বন্ধ বা বাহ্যিক ভেরিয়েবল, কাস্টম ফাংশন ইত্যাদির উল্লেখ সমর্থন করে না; তবে এটি সমস্ত প্ল্যাটফর্ম এপিআই ফাংশন কল করতে পারে।
  • দ্যWebsocketএইচটিটিপি প্রোটোকলের উপর ভিত্তি করে পরিষেবাটি বাস্তবায়িত হয়। আপনি পাথে একটি রাউটিং শাখা সেট করতে পারেন এবং এর জন্য বাস্তবায়ন কোড ডিজাইন করতে পারেনWebsocketআপনি এই বিভাগে নমুনা কোডটি দেখতে পারেন।

প্যারামিটার দ্বারা পাস করা কলব্যাক ফাংশনhandlerএকটি পায়ctxপ্যারামিটার।ctxপ্যারামিটার হল একটি কনটেক্সট অবজেক্ট যা নিম্নলিখিত পদ্ধতির সাথে ডেটা পেতে এবং লিখতে ব্যবহৃত হয়ঃ

  • ctx.proto (() Http/TCP প্রোটোকলে প্রয়োগ করা হয়, কল করার সময় প্রোটোকলের নাম ফেরত দেয়। উদাহরণস্বরূপঃHTTP/1.1, tcp.
  • ctx.host() এইচটিটিপি প্রোটোকলে প্রয়োগ করা হলে, এটি আইপি ঠিকানা এবং পোর্ট কল করার সময় হোস্ট তথ্য ফেরত দেয়।
  • ctx.path (() এইচটিটিপি প্রোটোকলে প্রয়োগ করা হয়, যখন কল করা হয় তখন অনুরোধ পথটি ফেরত দেয়।
  • ctx.query ((key) এইচটিটিপি প্রোটোকলে প্রয়োগ করা হয়, যখন অনুরোধ করা হয় তখন অনুরোধে ক্যোয়ারিতে কীটির সাথে সম্পর্কিত মান প্রদান করে। উদাহরণস্বরূপ, পাঠানো অনুরোধটি হলঃhttp://127.0.0.1:8088?num=123, এবং কলব্যাক প্রসেসিং ফাংশন প্যারামিটার দ্বারা পাসhandlerরিটার্ন"123"কখনctx.query("num")বলা হয়।
  • ctx.rawQuery (() এইচটিটিপি প্রোটোকলে প্রয়োগ করা হয়, যখন কল করা হয়, তখন অনুরোধে মূল ক্যোয়ারী (এইচটিটিপি অনুরোধের ক্যোয়ারী) ফিরিয়ে দেয়।
  • ctx.headers ((() এইচটিটিপি প্রোটোকলে প্রয়োগ করা হয়, এবং যখন কল করা হয় তখন অনুরোধে অনুরোধ শিরোনামের তথ্য ফেরত দেয়।
  • ctx.header ((key)) এইচটিটিপি প্রোটোকলে প্রয়োগ করা হয়, এটি কল করার সময় নির্দিষ্ট অনুরোধ শিরোনামে একটি কী মান ফেরত দেয়। উদাহরণস্বরূপ,User-Agentবর্তমান আবেদনের শিরোনামেঃctx.header("User-Agent").
  • ctx.method (() এইচটিটিপি প্রোটোকলে প্রয়োগ করা হয়, কল করার সময় অনুরোধ পদ্ধতি ফেরত দেয়, যেমনGET, POSTইত্যাদি।
  • ctx.body ((() Http প্রোটোকলের POST অনুরোধে প্রয়োগ করা হয়, এবং যখন কল করা হয় তখন অনুরোধের দেহটি ফেরত দেয়।
  • ctx.setHeader ((কী, মান) উত্তর বার্তার অনুরোধ শিরোনাম তথ্য সেট করতে HTTP প্রোটোকলে প্রয়োগ করা হয়।
  • ctx.setStatus ((কোড) এইচটিটিপি প্রোটোকলে প্রয়োগ করা হয়, এইচটিটিপি বার্তার স্থিতি কোড সেট করুন। সাধারণত, এইচটিটিপি স্থিতি কোডটি রাউটিং শাখার শেষে সেট করা হয়। ডিফল্ট মানটি 200।
  • ctx.remoteAddr ((() Http/TCP প্রোটোকলে প্রয়োগ করা হয়, যখন কল করা হয় তখন রিমোট ক্লায়েন্টের ঠিকানা এবং অনুরোধে পোর্ট ফেরত দেয়।
  • ctx.localAddr() এইচটিটিপি/টিসিপি প্রোটোকলে প্রয়োগ করা হয়, যখন কল করা হয় তখন স্থানীয় ঠিকানা এবং পরিষেবাটির পোর্ট ফেরত দেয়।
  • ctx.upgrade ((websocket) Http প্রোটোকলের উপর ভিত্তি করে ওয়েবসকেট প্রোটোকল বাস্তবায়নে প্রয়োগ করা হয়,ctxওয়েবসকেট প্রোটোকলের জন্য কনটেক্সট অবজেক্ট; যদি সুইচ সফল হয় তবে একটি বুলিয়ান মান (সত্য) এবং ব্যর্থ হলে একটি বুলিয়ান মান (মিথ্যা) ফেরত দেয়।
  • ctx.read ((timeout_ms) HTTP প্রোটোকলের উপর ভিত্তি করে ওয়েবসকেট প্রোটোকল বাস্তবায়ন / TCP প্রোটোকল প্রয়োগ করা হয়, ওয়েবসকেট সংযোগ এবং TCP সংযোগের তথ্য পড়ে।readপদ্ধতি সাধারণ HTTP প্রোটোকলে সমর্থিত নয়. আপনি টাইমআউট প্যারামিটার নির্দিষ্ট করতে পারেনtimeout_msমিলিসেকেন্ডে।
  • ctx.write ((s) HTTP/TCP প্রোটোকলে প্রয়োগ করা হয়, স্ট্রিং ডেটা লেখার জন্য ব্যবহৃত হয়। আপনি ব্যবহার করতে পারেনJSON.stringify()একটি স্ট্রিং মধ্যে JSON বস্তুর এনকোড এবং তারপর এটি লিখুন.WebSocketপ্রোটোকল, আপনি এই পদ্ধতি ব্যবহার করতে পারেন ক্লায়েন্টের কাছে এনকোডেড স্ট্রিং পাস করতে।

{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go}

_ জি

ধারাবাহিকভাবে ডেটা সংরক্ষণ করুন, ফাংশনটি একটি বিশ্বব্যাপী অভিধান ফাংশন বাস্তবায়ন করে যা সংরক্ষণ করা যেতে পারে। ডেটা কাঠামো একটি কেভি টেবিল যা স্থায়ীভাবে ডকারের স্থানীয় ডাটাবেস ফাইলটিতে সংরক্ষণ করা হয়।

ক্রমাগত সংরক্ষিত কী-মানের তথ্যk-vকী-ভ্যালু জোড়া। string, number, bool, object, array, null মান

_G() _G(k) _G(k, v)

প্যারামিটারkসংরক্ষিত কী-মান জোড়ায় কীটির নাম, এবং এটি বড় এবং ছোট আকারের সংবেদনশীল নয়। ক মিথ্যা স্ট্রিং, null মান প্যারামিটারvসংরক্ষিত কী-মান জোড়া মধ্যে কী মান, যা যে কোন তথ্য হতে পারেJSONসিরিয়ালাইজড। v মিথ্যা string, number, bool, object, array, null মান

function main(){
    // Set a global variable num with a value of 1
    _G("num", 1)     
    // Change a global variable num to the value of the string ok
    _G("num", "ok")    
    // Delete the global variable num
    _G("num", null)
    // Returns the value of the global variable num
    Log(_G("num"))
    // Delete all global variables
    _G(null)
    // Return to live trading ID
    var robotId = _G()
}
def main():
    _G("num", 1)     
    _G("num", "ok")    
    _G("num", None)
    Log(_G("num"))
    _G(None)
    robotId = _G()
void main() {
    _G("num", 1);
    _G("num", "ok");
    _G("num", NULL);
    Log(_G("num"));
    _G(NULL);
    // Not support auto robotId = _G();
}

প্রতিটি লাইভ ট্রেডিংয়ের জন্য একটি পৃথক ডাটাবেস,_G()ফাংশন সবসময় সেখানে থাকবে যদি কৌশল পুনরায় চালু করা হয় বা ডকার চলমান বন্ধ করে দেয়। যদি ব্যাকটেস্টিং শেষ হয়, ব্যাকটেস্টিং সিস্টেমে সংরক্ষিত তথ্য_G()ফাংশন পরিষ্কার করা হবে._G()সংরক্ষিত ডেটা ধরে রাখার জন্য, এটি হার্ডওয়্যার ডিভাইসের মেমরি এবং হার্ড ডিস্ক স্পেস অনুযায়ী যুক্তিসঙ্গতভাবে ব্যবহার করা উচিত এবং অপব্যবহার করা উচিত নয়। কল করার সময়_G()একটি লাইভ ট্রেডিং ফাংশন এবং কোন পরামিতি পাস করা হয়,_G()ফাংশন রিটার্ন করেIdবর্তমান লাইভ ট্রেডিং._G()ফাংশন, প্যারামিটারvএটি শূন্য হিসাবে পাস করা হয় যা মুছে ফেলার নির্দেশ করেk-vকী-মান জোড়া. যখন কল_G()ফাংশন, শুধুমাত্র পরামিতিkস্ট্রিং মধ্যে পাস করা হয়, এবং_G()ফাংশন সংরক্ষিত পরামিতির সাথে মিলে যাওয়া কী মান প্রদান করেk. যখন কল_G()ফাংশন, শুধুমাত্র পরামিতিkএকটি শূন্য মান পাস করা হয়, যা নির্দেশ করে যে সব রেকর্ডk-vকী-মান জোড়া মুছে ফেলা হয়.k-vকী-মানের জোড়া ধারাবাহিকভাবে সংরক্ষিত হয়েছে,_G()ফাংশন আবার কল করা হয়, নামের মধ্যে পাস কী যে পরামিতি হিসাবে ধারাবাহিকভাবে সংরক্ষিত হয়েছেk. নতুন কী মান প্যারামিটার হিসাবে পাস করা হচ্ছেvএটি আপডেট করবেk-vকী-ভ্যালু জোড়া।

{@fun/Global/DBExec DBExec}

_D

মিলিসেকেন্ড টাইমস্ট্যাম্প বাDateটাইম স্ট্রিং এর অবজেক্ট।

টাইম স্ট্রিং. স্ট্রিং

_D() _D (সময় স্ট্যাম্প) _D ((সময় স্ট্যাম্প, fmt)

মিলিসেকেন্ড টাইমস্ট্যাম্প অথবাDateবস্তু। সময়সীমা মিথ্যা সংখ্যা, উদ্দেশ্য ফরম্যাট স্ট্রিং,JavaScriptভাষা ডিফল্ট বিন্যাসঃyyyy-MM-dd hh:mm:ss; Pythonভাষা ডিফল্ট বিন্যাসঃ%Y-%m-%d %H:%M:%S; C++ভাষা ডিফল্ট বিন্যাসঃ%Y-%m-%d %H:%M:%S. এফএমটি মিথ্যা স্ট্রিং

function main(){
    var time = _D()
    Log(time)
}
def main():
    strTime = _D()
    Log(strTime)
void main() {
    auto strTime = _D();
    Log(strTime);
}

বর্তমান টাইম স্ট্রিং পেতে এবং মুদ্রণ করুনঃ

function main() {
    Log(_D(1574993606000))
}
def main():
    # Running this code on a server in Beijing time: 2019-11-29 10:13:26 , a docker on another server in another region results in: 2019-11-29 02:13:26
    Log(_D(1574993606))
void main() {
    Log(_D(1574993606000));
}

সময় স্ট্যাম্প হল 1574993606000, কোড রূপান্তর ব্যবহার করেঃ

function main() {
    Log(_D(1574993606000, "yyyy--MM--dd hh--mm--ss"))   // 2019--11--29 10--13--26
}
def main():
    # 1574993606 is timestamped in seconds.
    Log(_D(1574993606, "%Y--%m--%d %H--%M--%S"))        #  2019--11--29 10--13--26
void main() {
    Log(_D(1574993606000, "%Y--%m--%d %H--%M--%S"));    // 2019--11--29 10--13--26
}

প্যারামিটার দিয়ে বিন্যাস করাfmtএর জন্য ভিন্নJavaScript, Python, এবংC++নিম্নলিখিত উদাহরণে দেখানো ভাষাগুলিঃ

কোন পরামিতি পাস না করে বর্তমান সময় স্ট্রিং ফেরত দেয়._D()কর্মক্ষমতাPythonকৌশল, আপনি পাস পরামিতি দ্বিতীয় স্তরের টাইমস্ট্যাম্প (জাভাস্ক্রিপ্ট এবং সি ++ কৌশলগুলিতে মিলিসেকেন্ড-স্তরের টাইমস্ট্যাম্প, যেখানে 1 সেকেন্ড 1000 মিলিসেকেন্ডের সমান) সচেতন হতে হবে।_D()লাইভ ট্রেডিং একটি পাঠযোগ্য টাইমস্ট্যাম্প সঙ্গে একটি সময় স্ট্রিং বিশ্লেষণ করার জন্য, আপনি সময় অঞ্চল এবং সময় সেটিং অপারেটিং সিস্টেম যেখানে ডকার প্রোগ্রাম অবস্থিত মনোযোগ দিতে হবে._D()ফাংশনটি ডকার সিস্টেমের সময় অনুযায়ী একটি টাইমস্ট্যাম্পকে একটি পাঠযোগ্য টাইম স্ট্রিংয়ে বিশ্লেষণ করে।

{@fun/Global/UnixNano UnixNano}, {@fun/Global/Unix Unix}

_N

একটি ভাসমান বিন্দু নম্বর ফরম্যাট করুন।

নির্ভুলতা সেটিং অনুযায়ী ফরম্যাট করা ভ্লাইভিং কমা নম্বর। সংখ্যা

_N() _N ((num) _N (num, precision)

ফরম্যাট করা প্রয়োজন যে উদ্ভিজ্জ বিন্দু সংখ্যা. নং সত্য সংখ্যা ফরম্যাটিংয়ের জন্য নির্ভুলতা সেটিং, প্যারামিটারprecisionএকটি পূর্ণসংখ্যা, এবং পরামিতিprecisionডিফল্টরূপে ৪। নির্ভুলতা মিথ্যা সংখ্যা

function main(){
    var i = 3.1415
    Log(i)
    var ii = _N(i, 2)
    Log(ii)
}
def main():
    i = 3.1415
    Log(i)
    ii = _N(i, 2)
    Log(ii)
void main() {
    auto i = 3.1415;
    Log(i);
    auto ii = _N(i, 2);
    Log(ii);
}

উদাহরণস্বরূপ_N(3.1415, 2)এর পরে মান মুছে ফেলবে3.1415দুই দশমিক স্থান এবং ফাংশন ফেরৎ3.14.

function main(){
    var i = 1300
    Log(i)
    var ii = _N(i, -3)
    // Check the logs and see that it is 1000
    Log(ii)
}
def main():
    i = 1300
    Log(i)
    ii = _N(i, -3)
    Log(ii)
void main() {
    auto i = 1300;
    Log(i);
    auto ii = _N(i, -3);
    Log(ii);
}

যদি আপনি দশমিক বাম দিকে সমস্ত N অঙ্ক 0 এ পরিবর্তন করতে চান, আপনি এটি এভাবে লিখতে পারেনঃ

প্যারামিটারprecisionএকটি ধনাত্মক পূর্ণসংখ্যা, একটি ঋণাত্মক পূর্ণসংখ্যা হতে পারে।

{@fun/Trade/exchange.SetPrecision বিনিময়.SetPrecision}

_C

ইন্টারফেস ত্রুটি সহনশীলতার জন্য ফাংশন পুনরায় চেষ্টা করুন।

কলব্যাক ফাংশনের রিটার্ন মান যখন এটি কার্যকর করা হয়। সিস্টেম সব ধরনের ব্যতীত সমর্থন করেযৌক্তিক মিথ্যা মানএবংশূন্য মান.

_C(pfn) _C ((pfn,...args)

প্যারামিটারpfnএকটি ফাংশন রেফারেন্স, যা একটিকলব্যাক ফাংশন. পিএফএন সত্য ফাংশন প্যারামিটারকলব্যাক ফাংশন, একের বেশি প্যারামিটার থাকতে পারেarg. প্যারামিটারের ধরন এবং সংখ্যাargপ্যারামিটার উপর নির্ভর করেকলব্যাক ফাংশন. আরজি মিথ্যা string, number, bool, object, array, function, সমস্ত ধরনের সিস্টেম দ্বারা সমর্থিত, যেমন null values

function main(){
    var ticker = _C(exchange.GetTicker)
    // Adjust _C() function retry interval to 2 seconds
    _CDelay(2000)
    var depth = _C(exchange.GetDepth)
    Log(ticker)
    Log(depth)
}
def main():
    ticker = _C(exchange.GetTicker)
    _CDelay(2000)
    depth = _C(exchange.GetDepth)
    Log(ticker)
    Log(depth)
void main() {
    auto ticker = _C(exchange.GetTicker);
    _CDelay(2000);
    auto depth = _C(exchange.GetDepth);
    Log(ticker);
    Log(depth);
}

প্যারামিটার ছাড়াই ত্রুটি-সমর্থন ফাংশনগুলির জন্যঃ

function main(){
    var records = _C(exchange.GetRecords, PERIOD_D1)
    Log(records)
}
def main():
    records = _C(exchange.GetRecords, PERIOD_D1)
    Log(records)
void main() {
    auto records = _C(exchange.GetRecords, PERIOD_D1);
    Log(records);
}

প্যারামিটারগুলির জন্য যা ত্রুটি সহনশীলঃ

var test = function(a, b){
    var time = new Date().getTime() / 1000
    if(time % b == 3){
        Log("Eligible!", "#FF0000")
        return true
    }
    Log("Retry!", "#FF0000")
    return false
}            

function main(){
    var ret = _C(test, 1, 5)
    Log(ret)
}
import time
def test(a, b):
    ts = time.time()
    if ts % b == 3:
        Log("Eligible!", "#FF0000")
        return True
    Log("Retry!", "#FF0000")
    return False            

def main():
    ret = _C(test, 1, 5)
    Log(ret)
// C++ does not support fault tolerance for custom functions in this way

এটি কাস্টম ফাংশনের ত্রুটি সহনশীলতার জন্যও ব্যবহার করা যেতে পারেঃ

দ্য_C()function নির্দিষ্ট ফাংশন কল করা চালিয়ে যাবে যতক্ষণ না এটি সফলভাবে ফিরে আসে (প্যারামিটার দ্বারা উল্লেখিত ফাংশনpfnরিটার্নশূন্যঅথবামিথ্যাযখন কল করা হবে আবার কল করার চেষ্টা করবেpfn) উদাহরণস্বরূপ_C(exchange.GetTicker). ডিফল্ট পুনরায় চেষ্টা ব্যবধান 3 সেকেন্ড, আপনি কল করতে পারেন_CDelay()ফাংশন পুনরায় চেষ্টা ব্যবধান সেট করতে. উদাহরণস্বরূপ,_CDelay(1000)পুনরায় চেষ্টা করার সময়সীমা পরিবর্তন করার উপায়_C()১ সেকেন্ডে ফাংশন। নিম্নলিখিত ফাংশনগুলির জন্য ত্রুটি সহনশীলতা করা যেতে পারে, তবে সীমাবদ্ধ নয়ঃ

  • exchange.GetTicker()
  • exchange.GetDepth()
  • exchange.GetTrades()
  • exchange.GetRecords()
  • exchange.GetAccount()
  • exchange.GetOrders()
  • exchange.GetOrder()
  • exchange.GetPositions()সকলকে ডাকা যাবে_C()ত্রুটি সহনশীলতা জন্য ফাংশন।_C()ফাংশন উপরে তালিকাভুক্ত ফাংশন ত্রুটি সহনশীলতা সীমাবদ্ধ নয়, পরামিতিpfnএকটি ফাংশন কলের পরিবর্তে একটি ফাংশন রেফারেন্স। লক্ষ্য করুন যে এটি_C(exchange.GetTicker), না_C(exchange.GetTicker()).

_ ক্রস

অ্যারের ছেদ সময়ের সংখ্যা প্রদান করেarr1এবং অ্যারেarr2.

অ্যারের ক্রস পিরিয়ডের সংখ্যাarr1এবং অ্যারেarr2. সংখ্যা

_ক্রস ((arr1, arr2)

এলিমেন্টগুলি হল টাইপের অ্যারেnumber. arr1 সত্য অ্যারে এলিমেন্টগুলি হল টাইপের অ্যারেnumber. arr2 সত্য অ্যারে

// Fast line indicator
var arr1 = [1,2,3,4,5,6,8,8,9]
// Slow line indicator
var arr2 = [2,3,4,5,6,7,7,7,7]
function main(){
    Log("_Cross(arr1, arr2) : ", _Cross(arr1, arr2))
    Log("_Cross(arr2, arr1) : ", _Cross(arr2, arr1))
}
arr1 = [1,2,3,4,5,6,8,8,9]     
arr2 = [2,3,4,5,6,7,7,7,7]
def main():
    Log("_Cross(arr1, arr2) : ", _Cross(arr1, arr2))
    Log("_Cross(arr2, arr1) : ", _Cross(arr2, arr1))
void main() {
    vector<double> arr1 = {1,2,3,4,5,6,8,8,9};
    vector<double> arr2 = {2,3,4,5,6,7,7,7,7};
    Log("_Cross(arr1, arr2) : ", _Cross(arr1, arr2));
    Log("_Cross(arr2, arr1) : ", _Cross(arr2, arr1));
}

_Cross ((Arr1, Arr2) ফাংশন পরীক্ষা করার জন্য একটি ডেটা সেট সিমুলেট করা যেতে পারেঃ

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

JSONParse

ফাংশনJSONParse()বিশ্লেষণ করতে ব্যবহৃত হয়JSON strings.

JSONবস্তু। বস্তু

JSONParse (গুলি)

JSONস্ট্রিং. s সত্য স্ট্রিং

function main() {
    let s1 = '{"num": 8754613216564987646512354656874651651358}'
    Log("JSON.parse:", JSON.parse(s1))    // JSON.parse: {"num":8.754613216564988e+39}
    Log("JSONParse:", JSONParse(s1))      // JSONParse:  {"num":"8754613216564987646512354656874651651358"}
    
    let s2 = '{"num": 123}'
    Log("JSON.parse:", JSON.parse(s2))    // JSON.parse: {"num":123}
    Log("JSONParse:", JSONParse(s2))      // JSONParse:  {"num":123}
}
import json

def main():
    s1 = '{"num": 8754613216564987646512354656874651651358}'
    Log("json.loads:", json.loads(s1))    # json.loads: map[num:8.754613216564987e+39]
    Log("JSONParse:", JSONParse(s1))      # JSONParse:  map[num:8754613216564987646512354656874651651358]
    
    s2 = '{"num": 123}'
    Log("json.loads:", json.loads(s2))    # json.loads: map[num:123]
    Log("JSONParse:", JSONParse(s2))      # JSONParse:  map[num:123]
void main() {
    auto s1 = "{\"num\":8754613216564987646512354656874651651358}";
    Log("json::parse:", json::parse(s1));
    // Log("JSONParse:", JSONParse(s1));   // The function is not supported.
    
    auto s2 = "{\"num\":123}";
    Log("json::parse:", json::parse(s2));
    // Log("JSONParse:", JSONParse(s2));   // The function is not supported.
}

বড় মানের JSON স্ট্রিং সঠিকভাবে বিশ্লেষণ করা যেতে পারে, এবং এটি স্ট্রিং টাইপ হিসাবে বড় মান বিশ্লেষণ করবে.JSONParse()ব্যাকটেস্ট সিস্টেমে এই ফাংশনটি সমর্থিত নয়।

লগ

লগ

আউটপুট লগ।

লগ ((...msgs)

প্যারামিটারmsgআউটপুট এর বিষয়বস্তু, এবং পরামিতিmsgএকের বেশি পাস হতে পারে। মেসেজ মিথ্যা string, number, bool, object, array, যে কোন টাইপ যা সিস্টেম সমর্থন করে যেমন null।

function main() {
    Log("msg1", "msg2", "msg3")
}
def main():
    Log("msg1", "msg2", "msg3")
void main() {
    Log("msg1", "msg2", "msg3");
}

একাধিকmsgপ্যারামিটারগুলি পাস করা যেতে পারেঃ

function main() {
    Log("Hello, FMZ Quant!@")
    Sleep(1000 * 5)
    // Add #ff0000 to the string to print the log in red and push the message
    Log("Hello, #ff0000@")
}
def main():
    Log("Hello, FMZ Quant!@")
    Sleep(1000 * 5)
    Log("Hello, #ff0000@")
void main() {
    Log("Hello, FMZ Quant!@");
    Sleep(1000 * 5);
    Log("Hello, #ff0000@");
}

এটা আউটপুট বার্তা রঙ সেটিং সমর্থন করে, যদি আমরা একই সময়ে রঙ সেটিং এবং ধাক্কা ব্যবহার, আমরা প্রথম রঙ সেট করতে হবে এবং ব্যবহার@চরিত্র শেষ চাপ সেট করতে.

function main() {
    Log("`data:image/png;base64,AAAA`")
}
def main():
    Log("`data:image/png;base64,AAAA`")
void main() {
    Log("`data:image/png;base64,AAAA`");
}

দ্যLog()ফাংশন মুদ্রণ সমর্থনbase64কোডেড ছবি, দিয়ে শুরু`এবং এর সাথে শেষ`উদাহরণস্বরূপঃ

import matplotlib.pyplot as plt 
def main(): 
    plt.plot([3,6,2,4,7,1]) 
    Log(plt)

দ্যLog()ফাংশন সরাসরি মুদ্রণ সমর্থন করেPythonএরmatplotlib.pyplotঅবজেক্ট. যতক্ষণ অবজেক্টের মধ্যেsavefigপদ্ধতি, এটি সরাসরি মুদ্রণ করা যেতে পারেLogফাংশন, যেমনঃ

function main() {
    Log("[trans]中文|abc[/trans]")
}
def main():
    Log("[trans]中文|abc[/trans]")
void main() {
    Log("[trans]中文|abc[/trans]");
}

দ্যLog()ভাষা স্যুইচিং সমর্থন করে।Log()ফাংশনটি টেক্সট আউটপুট করে যা প্ল্যাটফর্ম পৃষ্ঠার ভাষা সেটিংসের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে সংশ্লিষ্ট ভাষায় স্যুইচ করবে, উদাহরণস্বরূপঃ

দ্যLog()ফাংশনটি লাইভ ট্রেডিং বা ব্যাকটেস্টিং সিস্টেমের লগ এলাকায় একটি লগ বার্তা আউটপুট করে এবং লাইভ ট্রেডিং চলার সময় লগটি লাইভ ট্রেডিং ডাটাবেসে সংরক্ষণ করা হয়।Log()ফাংশনটি একটি লগ বার্তা দিয়ে শেষ হয়@অক্ষর, তারপর এই লগ বার্তা ধাক্কা সারি প্রবেশ করবে. ইমেইল ঠিকানা, WebHook ঠিকানা, ইত্যাদি কনফিগার করাসেটিংস চাপুনবর্তমান FMZ Quant Trading Platform অ্যাকাউন্টেরডিবাগিং সরঞ্জাম, ব্যাকটেস্টিং সিস্টেম। বার্তা ধাক্কা জন্য একটি ফ্রিকোয়েন্সি সীমা আছে। নির্দিষ্ট সীমাবদ্ধতা নিয়ম নিম্নরূপঃ একটি লাইভ ট্রেডিং এর 20 সেকেন্ডের চক্রের মধ্যে, শুধুমাত্র শেষ ধাক্কা বার্তা ধরে রাখা হবে এবং ধাক্কা, এবং অন্যান্য বার্তা ফিল্টার করা হবে এবং ধাক্কা না (লগ ফাংশন দ্বারা ধাক্কা লগ আউটপুট মুদ্রিত এবং লগ এলাকায় স্বাভাবিকভাবে প্রদর্শিত হবে) । জন্যWebHookধাক্কা, আপনি দ্বারা লিখিত সেবা প্রোগ্রাম ব্যবহার করতে পারেনGolang:

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

func Handle (w http.ResponseWriter, r *http.Request) {
    defer func() {
        fmt.Println("req:", *r)
    }()
}            

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

সেটWebHookমধ্যেসেটিংস চাপুন: http://XXX.XX.XXX.XX:9090/data?data=Hello_FMZ. লিখিত চালানোর পরGolangসেবা প্রোগ্রাম, আমরা কৌশল চলমান শুরু লাইভ ট্রেডিং, নিম্নলিখিত কৌশল লিখিত হয়JavaScriptভাষা, কৌশল বাস্তবায়ন দ্বারা চালানো হয়Log()ফাংশন এবং বার্তা ধাক্কাঃ

function main() {
    Log("msg", "@")
}

একটি সেবা প্রোগ্রাম লিখিতGolangভাষা ধাক্কা পায় এবং সার্ভিস প্রোগ্রাম বার্তাটি মুদ্রণ করেঃ

listen http://localhost:9090
req: {GET /data?data=Hello_FMZ HTTP/1.1 1 1 map[User-Agent:[Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.x.xxxx.xxx Safari/537.36] Accept-Encoding:[gzip]] {} <nil> 0 [] false 1XX.XX.X.XX:9090 map[] map[] <nil> map[] XXX.XX.XXX.XX:4xxx2 /data?data=Hello_FMZ <nil> <nil> <nil> 0xc420056300

{@ফান/লগ/লগ রিসেট লগ রিসেট}, {@ফান/লগ/লগ ভ্যাকুয়াম লগ ভ্যাকুয়াম}

লোগপ্রফিট

P&L মান রেকর্ড করুন, P&L মান মুদ্রণ করুন এবং P&L মানের উপর ভিত্তি করে রিটার্ন কার্ভ গ্রাফ করুন।

লোগপ্রফট (লাভ) LogProfit ((লাভ,...args)

প্যারামিটারprofitএটি হল আয়ের তথ্য, যা কৌশলটির নকশা অ্যালগরিদম এবং হিসাব দ্বারা দেওয়া হয়। মুনাফা সত্য সংখ্যা আয়ের লগ থেকে আনুষ্ঠানিক তথ্য আউটপুট করার জন্য বর্ধিত প্যারামিটার,argপ্যারামিটার একের বেশি পাস করা যেতে পারে। আরজি মিথ্যা string, number, bool, object, array, যে কোন টাইপ যা সিস্টেম সমর্থন করে যেমন null।

function main() {
    // Print 30 points on the earnings chart
    for(var i = 0; i < 30; i++) {
        LogProfit(i, '&')
        Sleep(500)
    }
}
def main():
    for i in range(30):
        LogProfit(i, '&')
        Sleep(500)
void main() {
    for(int i = 0; i < 30; i++) {
        LogProfit(i, '&');
        Sleep(500);
    }
}

দ্যLogProfitফাংশন, যদি এটি অক্ষর দিয়ে শেষ হয়&উদাহরণস্বরূপঃ

{@fun/Log/LogProfitReset LogProfitReset}

লগপ্রফিট রিসেট করুন

সব রাজস্ব লগ, রাজস্ব চার্ট মুছে ফেলুন।

LogProfitReset (() LogProfitReset ((অবশিষ্ট)

দ্যremainপ্যারামিটার ব্যবহার করা হয় লগ এন্ট্রি সংখ্যা নির্দিষ্ট করার জন্য (পূর্ণসংখ্যা মান) রাখা। থাকুন মিথ্যা সংখ্যা

function main() {
    // Print 30 points on the revenue chart, then reset and keep only the last 10 points
    for(var i = 0; i < 30; i++) {
        LogProfit(i)
        Sleep(500)
    }
    LogProfitReset(10)
}
def main():
    for i in range(30):
        LogProfit(i)
        Sleep(500)
    LogProfitReset(10)
void main() {
    for(int i = 0; i < 30; i++) {
        LogProfit(i);
        Sleep(500);
    }
    LogProfitReset(10);
}

{@fun/Log/LogProfit LogProfit}

লগ স্ট্যাটাস

ব্যাকটেস্টিং সিস্টেম বা লাইভ ট্রেডিং পৃষ্ঠার স্ট্যাটাস বারে আউটপুট তথ্য।

LogStatus ((...msgs)

প্যারামিটারmsgআউটপুট এর বিষয়বস্তু, এবং পরামিতিmsgএকের বেশি পাস হতে পারে। মেসেজ মিথ্যা string, number, bool, object, array, যে কোন টাইপ যা সিস্টেম সমর্থন করে যেমন null।

function main() {
    LogStatus('This is a general status alert')
    LogStatus('This is a status alert in red font #ff0000')
    LogStatus('This is a multi-line status message \n I am the second line')
}
def main():
    LogStatus('This is a general status alert')
    LogStatus('This is a status alert in red font #ff0000')
    LogStatus('This is a multi-line status message \n I am the second line')
void main() {
    LogStatus("This is a general status alert");
    LogStatus("This is a status alert in red font #ff0000");
    LogStatus("This is a multi-line status message \n I am the second line");
}

এটি আউটপুট বিষয়বস্তুর রঙ নির্ধারণ সমর্থন করেঃ

function main() {
    var table = {type: 'table', title: 'Position information', cols: ['Column 1', 'Column 2'], rows: [ ['abc', 'def'], ['ABC', 'support color #ff0000']]}
    // JSON serialization with the ` character on both sides, as a complex message format (support tables currently)
    LogStatus('`' + JSON.stringify(table) + '`')                    
    // Table information can also appear in multiple rows
    LogStatus('First line of message\n`' + JSON.stringify(table) + '`\n third line of message')
    // It supports multiple tables at the same time, will be displayed in a group with TAB
    LogStatus('`' + JSON.stringify([table, table]) + '`')
    
    // You can also construct a button in the form, and use the GetCommand strategy to receive the contents of the cmd attribute                                
    var table = { 
        type: 'table', 
        title: 'Position operations', 
        cols: ['Column 1', 'Column 2', 'Action'], 
        rows: [ 
            ['abc', 'def', {'type':'button', 'cmd': 'coverAll', 'name': 'Close out positions'}]
        ]
    }
    LogStatus('`' + JSON.stringify(table) + '`') 
    // Or construct a separate button
    LogStatus('`' + JSON.stringify({'type':'button', 'cmd': 'coverAll', 'name': 'Close out positions'}) + '`') 
    // Customizable button style (bootstrap's button attribute)
    LogStatus('`' + JSON.stringify({'type':'button', 'class': 'btn btn-xs btn-danger', 'cmd': 'coverAll', 'name': 'Close out positions'}) + '`')
}
import json
def main():
    table = {"type": "table", "title": "Position information", "cols": ["Column 1", "Column 2"], "rows": [["abc", "def"], ["ABC", "support color #ff0000"]]}
    LogStatus('`' + json.dumps(table) + '`')
    LogStatus('First line of message\n`' + json.dumps(table) + '`\n third line of message')
    LogStatus('`' + json.dumps([table, table]) + '`')            

    table = {
        "type" : "table", 
        "title" : "Position operations", 
        "cols" : ["Column 1", "Column 2", "Action"], 
        "rows" : [
            ["abc", "def", {"type": "button", "cmd": "coverAll", "name": "Close out positions"}]
        ] 
    }
    LogStatus('`' + json.dumps(table) + '`')
    LogStatus('`' + json.dumps({"type": "button", "cmd": "coverAll", "name": "Close out positions"}) + '`')
    LogStatus('`' + json.dumps({"type": "button", "class": "btn btn-xs btn-danger", "cmd": "coverAll", "name": "Close out positions"}) + '`')
void main() {
    json table = R"({"type": "table", "title": "Position information", "cols": ["Column 1", "Column 2"], "rows": [["abc", "def"], ["ABC", "support color #ff0000"]]})"_json;
    LogStatus("`" + table.dump() + "`");
    LogStatus("First line of message\n`" + table.dump() + "`\n third line of message");
    json arr = R"([])"_json;
    arr.push_back(table);
    arr.push_back(table);
    LogStatus("`" + arr.dump() + "`");            

    table = R"({
        "type" : "table", 
        "title" : "Position operations", 
        "cols" : ["Column 1", "Column 2", "Action"], 
        "rows" : [
            ["abc", "def", {"type": "button", "cmd": "coverAll", "name": "Close out positions"}]
        ] 
    })"_json;
    LogStatus("`" + table.dump() + "`");
    LogStatus("`" + R"({"type": "button", "cmd": "coverAll", "name": "Close out positions"})"_json.dump() + "`");
    LogStatus("`" + R"({"type": "button", "class": "btn btn-xs btn-danger", "cmd": "coverAll", "name": "Close out positions"})"_json.dump() + "`");
}

স্ট্যাটাস বারে ডেটা আউটপুটের উদাহরণঃ

function main() {
    var table = {
        type: "table",
        title: "status bar button style",
        cols: ["default", "original", "success", "info", "warning", "danger"], 
        rows: [
            [
                {"type":"button", "class": "btn btn-xs btn-default", "name": "default"},
                {"type":"button", "class": "btn btn-xs btn-primary", "name": "original"},
                {"type":"button", "class": "btn btn-xs btn-success", "name": "success"},
                {"type":"button", "class": "btn btn-xs btn-info", "name": "info"},
                {"type":"button", "class": "btn btn-xs btn-warning", "name": "warning"},
                {"type":"button", "class": "btn btn-xs btn-danger", "name": "danger"}
            ]
        ]
    }
    LogStatus("`" + JSON.stringify(table) + "`")
}
import json
def main():
    table = {
        "type": "table",
        "title": "status bar button style",
        "cols": ["default", "original", "success", "info", "warning", "danger"], 
        "rows": [
            [
                {"type":"button", "class": "btn btn-xs btn-default", "name": "default"},
                {"type":"button", "class": "btn btn-xs btn-primary", "name": "original"},
                {"type":"button", "class": "btn btn-xs btn-success", "name": "success"},
                {"type":"button", "class": "btn btn-xs btn-info", "name": "info"},
                {"type":"button", "class": "btn btn-xs btn-warning", "name": "warning"},
                {"type":"button", "class": "btn btn-xs btn-danger", "name": "danger"}
            ]
        ]
    }
    LogStatus("`" + json.dumps(table) + "`")
void main() {
    json table = R"({
        "type": "table",
        "title": "status bar button style",
        "cols": ["default", "original", "success", "info", "warning", "danger"], 
        "rows": [
            [
                {"type":"button", "class": "btn btn-xs btn-default", "name": "default"},
                {"type":"button", "class": "btn btn-xs btn-primary", "name": "original"},
                {"type":"button", "class": "btn btn-xs btn-success", "name": "success"},
                {"type":"button", "class": "btn btn-xs btn-info", "name": "info"},
                {"type":"button", "class": "btn btn-xs btn-warning", "name": "warning"},
                {"type":"button", "class": "btn btn-xs btn-danger", "name": "danger"}
            ]
        ]
    })"_json;
    LogStatus("`" + table.dump() + "`");
}

এটি স্ট্যাটাস বারে বোতাম নিয়ন্ত্রণগুলি ডিজাইন করার জন্য সমর্থন করে (পুরানো বোতাম কাঠামো):

function main() {
    var table = {
        type: "table",
        title: "Status bar button disable, description function test",
        cols: ["Column 1", "Column 2", "Column 3"], 
        rows: []
    }
    var button1 = {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button"}
    var button2 = {"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button, set to disabled", "disabled": true}
    var button3 = {"type": "button", "name": "button3", "cmd": "button3", "description": "This is the third button, set to enable", "disabled": false}
    table.rows.push([button1, button2, button3])
    LogStatus("`" + JSON.stringify(table) + "`")
}
import json
def main():
    table = {
        "type": "table",
        "title": "Status bar button disable, description function test",
        "cols": ["Column 1", "Column 2", "Column 3"], 
        "rows": []
    }
    button1 = {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button"}
    button2 = {"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button, set to disabled", "disabled": True}
    button3 = {"type": "button", "name": "button3", "cmd": "button3", "description": "This is the third button, set to enable", "disabled": False}
    table["rows"].append([button1, button2, button3])
    LogStatus("`" + json.dumps(table) + "`")
void main() {
    json table = R"({
        "type": "table",
        "title": "Status bar button disable, description function test",
        "cols": ["Column 1", "Column 2", "Column 3"], 
        "rows": []
    })"_json;
    json button1 = R"({"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button"})"_json;
    json button2 = R"({"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button, set to disabled", "disabled": true})"_json;
    json button3 = R"({"type": "button", "name": "button3", "cmd": "button3", "description": "This is the third button, set to enable", "disabled": false})"_json;
    json arr = R"([])"_json;
    arr.push_back(button1);
    arr.push_back(button2);
    arr.push_back(button3);
    table["rows"].push_back(arr);
    LogStatus("`" + table.dump() + "`");
}

স্ট্যাটাস বার বোতামের অক্ষম, বর্ণনা ফাংশন সেট করুন (পুরানো বোতাম কাঠামো):

function test1() {
    Log("Calling custom functions")
}            

function main() {
    while (true) {
        var table = {
            type: 'table',
            title: 'operation',
            cols: ['column1', 'column2', 'Action'],
            rows: [
                ['a', '1', {
                    'type': 'button',                       
                    'cmd': "CoverAll",                      
                    'name': 'Close out positions'                           
                }],
                ['b', '1', {
                    'type': 'button',
                    'cmd': 10,                              
                    'name': 'Send values'
                }],
                ['c', '1', {
                    'type': 'button',
                    'cmd': _D(),                          
                    'name': 'Calling functions'
                }],
                ['d', '1', {
                    'type': 'button',
                    'cmd': 'test1',       
                    'name': 'Calling custom functions'
                }]
            ]
        }
        LogStatus(_D(), "\n", '`' + JSON.stringify(table) + '`')            

        var str_cmd = GetCommand()
        if (str_cmd) {
            Log("Received interaction data str_cmd:", "type:", typeof(str_cmd), "value:", str_cmd)
            if(str_cmd == "test1") {
                test1()
            }
        }            

        Sleep(500)
    }
}
import json
def test1():
    Log("Calling custom functions")            

def main():
    while True:
        table = {
            "type": "table", 
            "title": "operation", 
            "cols": ["column1", "column2", "Action"],
            "rows": [
                ["a", "1", {
                    "type": "button", 
                    "cmd": "CoverAll",
                    "name": "Close out positions"
                }],
                ["b", "1", {
                    "type": "button",
                    "cmd": 10,
                    "name": "Send values" 
                }], 
                ["c", "1", {
                    "type": "button",
                    "cmd": _D(),
                    "name": "Calling functions" 
                }],
                ["d", "1", {
                    "type": "button",
                    "cmd": "test1",
                    "name": "Calling custom functions" 
                }]
            ]
        }            

        LogStatus(_D(), "\n", "`" + json.dumps(table) + "`")
        str_cmd = GetCommand()
        if str_cmd:
            Log("Received interaction data str_cmd:", "type:", typeof(str_cmd), "value:", str_cmd)
            if str_cmd == "test1":
                test1()
        Sleep(500)
void test1() {
    Log("Calling custom functions");
}            

void main() {
    while(true) {
        json table = R"({
            "type": "table", 
            "title": "operation", 
            "cols": ["column1", "column2", "Action"],
            "rows": [
                ["a", "1", {
                    "type": "button", 
                    "cmd": "CoverAll",
                    "name": "Close out positions"
                }],
                ["b", "1", {
                    "type": "button",
                    "cmd": 10,
                    "name": "Send values" 
                }], 
                ["c", "1", {
                    "type": "button",
                    "cmd": "",
                    "name": "Calling functions" 
                }],
                ["d", "1", {
                    "type": "button",
                    "cmd": "test1",
                    "name": "Calling custom functions" 
                }]
            ]
        })"_json;
        table["rows"][2][2]["cmd"] = _D();
        LogStatus(_D(), "\n", "`" + table.dump() + "`");
        auto str_cmd = GetCommand();
        if(str_cmd != "") {
            Log("Received interaction data str_cmd:", "type:", typeof(str_cmd), "value:", str_cmd);
            if(str_cmd == "test1") {
                test1();
            }
        }
        Sleep(500);
    }
}

এর সাথেGetCommand()ফাংশন, স্ট্যাটাস বার বোতাম ইন্টারঅ্যাকশন ফাংশন নির্মাণ (পুরানো বোতাম গঠন):

function main() {
    var tbl = {
        type: "table",
        title: "operation",
        cols: ["column1", "column2"],
        rows: [
            ["Open position operation", {"type": "button", "cmd": "open", "name": "open position", "input": {"name": "number of open positions", "type": "number", "defValue": 1}}],
            ["Close position operation", {"type": "button", "cmd": "coverAll", "name": "close all positions"}]
        ] 
    }            

    LogStatus(_D(), "\n", "`" + JSON.stringify(tbl) + "`")
    while (true) {
        var cmd = GetCommand()
        if (cmd) {
            Log("cmd:", cmd)
        }
        Sleep(1000)
    }
}
import json            

def main():
    tbl = {
        "type": "table", 
        "title": "operation", 
        "cols": ["column1", "column2"],
        "rows": [
            ["Open position operation", {"type": "button", "cmd": "open", "name": "open position", "input": {"name": "number of open positions", "type": "number", "defValue": 1}}],
            ["Close position operation", {"type": "button", "cmd": "coverAll", "name": "close all positions"}]
        ]
    }            

    LogStatus(_D(), "\n", "`" + json.dumps(tbl) + "`")
    while True:
        cmd = GetCommand()
        if cmd:
            Log("cmd:", cmd)
        Sleep(1000)
void main() {
    json tbl = R"({
        "type": "table", 
        "title": "operation", 
        "cols": ["column1", "column2"],
        "rows": [
            ["Open position operation", {"type": "button", "cmd": "open", "name": "open position", "input": {"name": "number of open positions", "type": "number", "defValue": 1}}],
            ["Close position operation", {"type": "button", "cmd": "coverAll", "name": "close all positions"}]
        ]
    })"_json;            

    LogStatus(_D(), "\n", "`" + tbl.dump() + "`");
    while(true) {
        auto cmd = GetCommand();
        if(cmd != "") {
            Log("cmd:", cmd);
        }
        Sleep(1000);
    }
}

ইন্টারঅ্যাকশনের জন্য স্ট্যাটাস বার বোতাম তৈরি করার সময় ইনপুট ডেটাও সমর্থিত হয় এবং ইন্টারঅ্যাকশন কমান্ডগুলিGetCommand()ফাংশন শেষ পর্যন্ত. যোগinputitems (old button structure) to the data structure of the button control in the status bar, for example, adding: স্ট্যাটাস বারে বোতাম নিয়ন্ত্রণের ডাটা স্ট্রাকচারে আইটেম (পুরানো বোতাম কাঠামো) যোগ করা, উদাহরণস্বরূপ,"input": {"name": "number of open positions", "type": "number", "defValue": 1}থেকে{"type": "button", "cmd": "open", "name": "open position"}ইনপুট বক্স কন্ট্রোলের সাথে একটি পপআপ প্রদর্শিত হবে যখন বোতামটি ক্লিক করা হয় (ইনপুট বক্সের ডিফল্ট মান হল 1, যা দ্বারা সেট করা তথ্যdefValue) আপনি বোতাম কমান্ডের সাথে পাঠানোর জন্য একটি ডেটা প্রবেশ করতে পারেন। উদাহরণস্বরূপ, যখন নিম্নলিখিত পরীক্ষার কোডটি চালানো হয়, "খোলা অবস্থান বোতামটি ক্লিক করার পরে, একটি ইনপুট বাক্স সহ একটি পপআপ উইন্ডো পপ আপ হয়। ইনপুট বাক্সে 111 লিখুন এবং OK ক্লিক করুন।GetCommand()ফাংশন তারপর বার্তাটি ক্যাপচার করবেঃopen:111.

function main() {
    var tbl = {
        type: "table",
        title: "Demonstrate grouping button control",
        cols: ["operation"],
        rows: []
    }

    // Creating a grouping button control structure
    var groupBtn = {
        type: "button",
        cmd: "open",
        name: "open positions",
        group: [
            {"name": "orderType", "description": "下单方式|order type", "type": "selected", "defValue": "market order|pending order"},
            {"name": "tradePrice@orderType==1", "description": "交易价格|trade price", "type": "number", "defValue": 100},
            {"name": "orderAmount", "description": "委托数量|order amount", "type": "string", "defValue": 100},
            {"name": "boolean", "description": "yes/no|boolean", "type": "boolean", "defValue": true}
        ]
    }

    // test button 1
    var testBtn1 = {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button."}
    var testBtn2 = {"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button.", "input": {"name": "number of positions opened", "type": "number", "defValue": 1}}

    // Add groupBtn to tbl
    tbl.rows.push([groupBtn])
    // It supports multiple buttons in a cell of a status bar table, i.e. the data in a cell is an array of button structures: [testBtn1, testBtn2].
    tbl.rows.push([[testBtn1, testBtn2]])

    while (true) {
        LogStatus("`" + JSON.stringify(tbl) + "`", "\n", "The grouping button control can also be set directly on the status bar in addition to being set on the status bar form:", "`" + JSON.stringify(groupBtn) + "`")
        var cmd = GetCommand()
        if (cmd) {
            Log("cmd:", cmd)
        }
        Sleep(5000)
    }
}
import json

def main():
    tbl = {
        "type": "table",
        "title": "Demonstrate grouping button control",
        "cols": ["operation"],
        "rows": []
    }

    groupBtn = {
        "type": "button",
        "cmd": "open",
        "name": "open positions",
        "group": [
            {"name": "orderType", "description": "下单方式|order type", "type": "selected", "defValue": "market order|pending order"},
            {"name": "tradePrice@orderType==1", "description": "交易价格|trade price", "type": "number", "defValue": 100},
            {"name": "orderAmount", "description": "委托数量|order amount", "type": "string", "defValue": 100},
            {"name": "boolean", "description": "yes/no|boolean", "type": "boolean", "defValue": True}
        ]
    }

    testBtn1 = {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button."}
    testBtn2 = {"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button.", "input": {"name": "number of positions opened", "type": "number", "defValue": 1}}

    tbl["rows"].append([groupBtn])
    tbl["rows"].append([[testBtn1, testBtn2]])

    while True:
        LogStatus("`" + json.dumps(tbl) + "`", "\n", "The grouping button control can also be set directly on the status bar in addition to being set on the status bar form:", "`" + json.dumps(groupBtn) + "`")
        cmd = GetCommand()
        if cmd:
            Log("cmd:", cmd)
        Sleep(5000)
void main() {
    json tbl = R"({
        "type": "table", 
        "title": "Demonstrate grouping button control", 
        "cols": ["operation"],
        "rows": []
    })"_json;

    json groupBtn = R"({
        "type": "button", 
        "name": "open positions", 
        "cmd": "open", 
        "group": [
            {"name": "orderType", "description": "下单方式|order type", "type": "selected", "defValue": "market order|pending order"},
            {"name": "tradePrice@orderType==1", "description": "交易价格|trade price", "type": "number", "defValue": 100},
            {"name": "orderAmount", "description": "委托数量|order amount", "type": "string", "defValue": 100},
            {"name": "boolean", "description": "yes/no|boolean", "type": "boolean", "defValue": true}
    ]})"_json;

    json testBtn1 = R"({"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button."})"_json;
    json testBtn2 = R"({"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button.", "input": {"name": "number of positions opened", "type": "number", "defValue": 1}})"_json;
    
    tbl["rows"].push_back({groupBtn});
    tbl["rows"].push_back({{testBtn1, testBtn2}});
    
    while(true) {
        LogStatus("`" + tbl.dump() + "`", "\n", "The grouping button control can also be set directly on the status bar in addition to being set on the status bar form:", "`" + groupBtn.dump() + "`");
        auto cmd = GetCommand();
        if(cmd != "") {
            Log("cmd:", cmd);
        }
        Sleep(5000);
    }
}

এটি গ্রুপযুক্ত বোতাম নিয়ন্ত্রণের জন্য সমর্থন করে (পুরানো বোতাম কাঠামো), কার্যকরীভাবেস্ট্যাটাস বার বোতাম যা ডাটা এন্ট্রি সমর্থন করেইন্টারেক্টিভ কমান্ডগুলি শেষ পর্যন্ত ডিভাইস দ্বারা ক্যাপচার করা হয়GetCommand()ফাংশন. পার্থক্য হল যে সঙ্গে"group"ক্ষেত্র সেটিং, যখন বোতামটি ইন্টারঅ্যাকশন ট্রিগার করার জন্য ক্লিক করা হয়, ডায়ালগ যে পৃষ্ঠায় পপ আপ একটি সেট রয়েছেগ্রুপইনপুট কন্ট্রোলগুলি একসাথে ডেটা গ্রুপ প্রবেশ করতে সেট আপ করা হয়। এই বিষয়ে কয়েকটি বিষয় উল্লেখ করা দরকার।"group"স্ট্যাটাস বার বাটন কন্ট্রোল এবং গ্রুপ বাটন কন্ট্রোলের কাঠামোর ক্ষেত্রঃ

  • দ্যtypeগ্রুপে সম্পত্তি শুধুমাত্র নিম্নলিখিত চার ধরনের সমর্থন করে, এবংdefValueproperty হল ডিফল্ট মান। selected: একটি ড্রপডাউন বক্স কন্ট্রোল যা|একটি ড্রপডাউন বাক্সে প্রতিটি বিকল্প আলাদা করার জন্য চিহ্ন হিসাবে এটি সেট করা হয়। number: সংখ্যাগত ইনপুট বক্স নিয়ন্ত্রণ। string: স্ট্রিং ইনপুট বক্স কন্ট্রোল। বুলিয়ান: চেকবক্স কন্ট্রোল, (বুলিয়ান) সত্যের জন্য চেক করা হয়েছে, (বুলিয়ান) মিথ্যার জন্য চেক করা হয়নি।
  • ইন্টারেক্টিভ ইনপুট সাপোর্ট ডিপেন্ডেন্সি সেটিংসের নিয়ন্ত্রণঃ উদাহরণস্বরূপ, নিচের উদাহরণেঃ"name": "tradePrice@orderType==1"সেটিং, যাবাণিজ্য মূল্যইনপুট নিয়ন্ত্রণ শুধুমাত্র যখন উপলব্ধঅর্ডারপ্রকারড্রপ-ডাউন কন্ট্রোল নির্বাচন করা হয়আদেশের অপেক্ষায়.
  • ইন্টারেক্টিভ ইনপুটগুলির জন্য দ্বিভাষিক নিয়ন্ত্রণ নাম সমর্থন উদাহরণস্বরূপ, নিম্নলিখিত উদাহরণেঃ description: একক পদ্ধতিতে order type setting, use|চীনা এবং ইংরেজি ভাষার বর্ণনার বিষয়বস্তু আলাদা করার জন্য চিহ্ন।
  • name, descriptionগ্রুপ এবংname, descriptionবোতাম কাঠামোর মধ্যে একই ক্ষেত্রের নাম থাকা সত্ত্বেও একই সংজ্ঞা নেই। সংজ্ঞাnameগ্রুপের সংজ্ঞা থেকেও ভিন্ন।nameইনপুট.
  • যখন গ্রুপ বোতাম নিয়ন্ত্রণটি ট্রিগার করা হয়, তখন ইন্টারঅ্যাকশন সামগ্রীটি বোতামের cmd ক্ষেত্রের মান এবং গ্রুপ ক্ষেত্রের সম্পর্কিত ডেটা, যেমন বোতামের আউটপুট হিসাবে পাঠানো হয়Log("cmd:", cmd)নিম্নলিখিত পরীক্ষার উদাহরণে বিবৃতিcmd: open:{"orderType":1,"tradePrice":99,"orderAmount":"99","boolean":true}, অর্থাৎ, কি দ্বারা ফিরে আসেGetCommand()ফাংশন যখন একটি মিথস্ক্রিয়া ঘটেঃopen:{"orderType":1,"tradePrice":99,"orderAmount":"99","boolean":true}.
  • দ্যtypeবোতাম নিয়ন্ত্রণ বৈশিষ্ট্য শুধুমাত্র সমর্থন করেঃ"button". বোতাম নিয়ন্ত্রণ যা ইনপুট ডেটা সমর্থন করে, অর্থাৎ নিয়ন্ত্রণগুলিinputসম্পত্তি সেট,typeবৈশিষ্ট্য কনফিগারেশন তথ্যinputক্ষেত্র একাধিক কন্ট্রোল টাইপ সমর্থন করে। নিচের উদাহরণগুলো দেখুন:
function main() {
    // Status bar button control (set input field to implement) testBtn1 button triggered by the page in the drop-down box control using the options field to set options, using the defValue field to set the default options. This is different from the other examples in this chapter, which use defValue to set the options directly.
    var testBtn1 = {
        type: "button",
        name: "testBtn1",
        cmd: "cmdTestBtn1",
        input: {name: "testBtn1ComboBox", type: "selected", options: ["A", "B"], defValue: 1}
    }

    /* 
      Status bar button control (set input field implementation) testBtn2 button triggered by the page in the drop-down box control using the options field to set the options, options field in the options field not only supports the string,
      the use of the ```{text: "description", value: "value"}``` structure is also supported. Use the defValue field to set the default option, which can be multiple choice (multiple choice via array structure). Multiple choice requires setting the additional field multiple to a true value.
    */
    var testBtn2 = {
        type: "button", 
        name: "testBtn2",
        cmd: "cmdTestBtn2",
        input: {
            name: "testBtn2MultiComboBox", 
            type: "selected", 
            description: "Implementing dropdown box multi-selection", 
            options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}],
            defValue: ["A", "C"],
            multiple: true
        }
    }

    // Status bar grouping button control (set group field implementation) testBtn3 button triggered by the page in the drop-down box control using the options field to set options, also supports the direct use of defValue set options.
    var testBtn3 = {
        type: "button",                     
        name: "testBtn3",
        cmd: "cmdTestBtn3", 
        group: [
            {name: "comboBox1", label: "labelComboBox1", description: "Dropdown box 1", type: "selected", defValue: 1, options: ["A", "B"]}, 
            {name: "comboBox2", label: "labelComboBox2", description: "Dropdown box 2", type: "selected", defValue: "A|B"}, 
            {name: "comboBox3", label: "labelComboBox3", description: "Dropdown box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]}, 
            {
                name: "comboBox4", 
                label: "labelComboBox4", 
                description: "Dropdown box 4", 
                type: "selected", 
                defValue: ["A", "C"], 
                multiple: true, 
                options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}, {text: "Option D", value: "D"}]
            }
        ]
    }
    while (true) {
        LogStatus("`" + JSON.stringify(testBtn1) + "`\n", "`" + JSON.stringify(testBtn2) + "`\n", "`" + JSON.stringify(testBtn3) + "`\n")
        var cmd = GetCommand()
        if (cmd) {
            Log(cmd)
        }
        Sleep(5000)
    }
}
import json

def main():
    testBtn1 = {
        "type": "button",
        "name": "testBtn1",
        "cmd": "cmdTestBtn1",
        "input": {"name": "testBtn1ComboBox", "type": "selected", "options": ["A", "B"], "defValue": 1}
    }

    testBtn2 = {
        "type": "button", 
        "name": "testBtn2",
        "cmd": "cmdTestBtn2",
        "input": {
            "name": "testBtn2MultiComboBox", 
            "type": "selected", 
            "description": "Implementing dropdown box multi-selection", 
            "options": [{"text": "Option A", "value": "A"}, {"text": "Option B", "value": "B"}, {"text": "Option C", "value": "C"}],
            "defValue": ["A", "C"],
            "multiple": True
        }
    }

    testBtn3 = {
        "type": "button",                     
        "name": "testBtn3",
        "cmd": "cmdTestBtn3", 
        "group": [
            {"name": "comboBox1", "label": "labelComboBox1", "description": "Dropdown box 1", "type": "selected", "defValue": 1, "options": ["A", "B"]}, 
            {"name": "comboBox2", "label": "labelComboBox2", "description": "Dropdown box 2", "type": "selected", "defValue": "A|B"}, 
            {"name": "comboBox3", "label": "labelComboBox3", "description": "Dropdown box 3", "type": "selected", "defValue": [0, 2], "multiple": True, "options": ["A", "B", "C"]}, 
            {
                "name": "comboBox4", 
                "label": "labelComboBox4", 
                "description": "Dropdown box 4", 
                "type": "selected", 
                "defValue": ["A", "C"], 
                "multiple": True, 
                "options": [{"text": "Option A", "value": "A"}, {"text": "Option B", "value": "B"}, {"text": "Option C", "value": "C"}, {"text": "Option D", "value": "D"}]
            }
        ]
    }

    while True:
        LogStatus("`" + json.dumps(testBtn1) + "`\n", "`" + json.dumps(testBtn2) + "`\n", "`" + json.dumps(testBtn3) + "`\n")
        cmd = GetCommand()
        if cmd:
            Log(cmd)
        Sleep(5000)
void main() {
    json testBtn1 = R"({
        "type": "button",
        "name": "testBtn1",
        "cmd": "cmdTestBtn1",
        "input": {"name": "testBtn1ComboBox", "type": "selected", "options": ["A", "B"], "defValue": 1}
    })"_json;
    
    json testBtn2 = R"({
        "type": "button", 
        "name": "testBtn2",
        "cmd": "cmdTestBtn2",
        "input": {
            "name": "testBtn2MultiComboBox", 
            "type": "selected", 
            "description": "Implementing dropdown box multi-selection", 
            "options": [{"text": "Option A", "value": "A"}, {"text": "Option B", "value": "B"}, {"text": "Option C", "value": "C"}],
            "defValue": ["A", "C"],
            "multiple": true
        }
    })"_json;
    
    json testBtn3 = R"({
        "type": "button",                     
        "name": "testBtn3",
        "cmd": "cmdTestBtn3", 
        "group": [
            {"name": "comboBox1", "label": "labelComboBox1", "description": "Dropdown box 1", "type": "selected", "defValue": 1, "options": ["A", "B"]}, 
            {"name": "comboBox2", "label": "labelComboBox2", "description": "Dropdown box 2", "type": "selected", "defValue": "A|B"}, 
            {"name": "comboBox3", "label": "labelComboBox3", "description": "Dropdown box 3", "type": "selected", "defValue": [0, 2], "multiple": true, "options": ["A", "B", "C"]}, 
            {
                "name": "comboBox4", 
                "label": "labelComboBox4", 
                "description": "Dropdown box 4", 
                "type": "selected", 
                "defValue": ["A", "C"], 
                "multiple": true, 
                "options": [{"text": "Option A", "value": "A"}, {"text": "Option B", "value": "B"}, {"text": "Option C", "value": "C"}, {"text": "Option D", "value": "D"}]
            }
        ]
    })"_json;
    
    while (true) {
        LogStatus("`" + testBtn1.dump() + "`\n", "`" + testBtn2.dump() + "`\n", "`" + testBtn3.dump() + "`\n");
        auto cmd = GetCommand();
        if (cmd != "") {
            Log(cmd);
        }
        Sleep(5000);
    }
}

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

var symbols = ["BTC_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "BNB_USDT.swap", "SOL_USDT.swap"]

function createBtn(tmp, group) {
    var btn = JSON.parse(JSON.stringify(tmp))

    _.each(group, function(eleByGroup) {
        btn["group"].unshift(eleByGroup)
    })

    return btn
}

function main() {
    var arrManager = []

    _.each(symbols, function(symbol) {
        arrManager.push({
            "symbol": symbol,
        })
    })

    // Btn
    var tmpBtnOpen = {
        "type": "button",
        "cmd": "open",
        "name": "Open a position and place an order",
        "group": [{
            "type": "selected",
            "name": "tradeType",
            "label": "Order type",
            "description": "Market order, limit order",
            "default": 0,
            "group": "Trading setup",
            "settings": {
                "options": ["Market order", "Limit order"],
                "required": true,
            }
        }, {
            "type": "selected",
            "name": "direction",
            "label": "Trading direction",
            "description": "Buy, sell",
            "default": "buy",
            "group": "Trading setup",
            "settings": {
                "render": "segment",
                "required": true,
                "options": [{"name": "buy", "value": "buy"}, {"name": "sell", "value": "sell"}],
            }
        }, {
            "type": "number",
            "name": "price",
            "label": "price",
            "description": "The price of the order",
            "group": "Trading setup",
            "filter": "tradeType==1",
            "settings": {
                "required": true,
            }
        }, {
            "type": "number",
            "name": "amount",
            "label": "Order quantity",
            "description": "Order quantity",
            "group": "Trading setup",
            "settings": {
                "required": true,
            }
        }],
    }

    while (true) {
        var tbl = {"type": "table", "title": "dashboard", "cols": ["symbol", "actionOpen"], "rows": []}

        _.each(arrManager, function(m) {
            var btnOpen = createBtn(tmpBtnOpen, [{"type": "string", "name": "symbol", "label": "Trading instruments", "default": m["symbol"], "settings": {"required": true}}])
            tbl["rows"].push([m["symbol"], btnOpen])
        })

        var cmd = GetCommand()
        if (cmd) {
            Log("Receive interaction:", cmd)

            // Parsing interaction messages: open:{"symbol":"LTC_USDT.swap","tradeType":0,"direction":"buy","amount":111}
            // According to the first colon: the previous instruction determines which button template triggers the message
            var arrCmd = cmd.split(":", 2)
            if (arrCmd[0] == "open") {
                var msg = JSON.parse(cmd.slice(5))
                Log("Trading instruments:", msg["symbol"], ", Trading direction:", msg["direction"], ", Order type:", msg["tradeType"] == 0 ? "Market order" : "Limit order", msg["tradeType"] == 0 ? ", Order price: current market price" : ", Order price:" + msg["price"], ", Order quantity:", msg["amount"])
            }
        }

        LogStatus(_D(), "\n", "`" + JSON.stringify(tbl) + "`")
        Sleep(1000)
    }
}
import json

symbols = ["BTC_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "BNB_USDT.swap", "SOL_USDT.swap"]

def createBtn(tmp, group):
    btn = json.loads(json.dumps(tmp))
    for eleByGroup in group:
        btn["group"].insert(0, eleByGroup)
    return btn

def main():
    arrManager = []

    for symbol in symbols:
        arrManager.append({"symbol": symbol})

    # Btn
    tmpBtnOpen = {
        "type": "button",
        "cmd": "open",
        "name": "Open a position and place an order",
        "group": [{
            "type": "selected",
            "name": "tradeType",
            "label": "Order type",
            "description": "Market order, limit order",
            "default": 0,
            "group": "Trading setup",
            "settings": {
                "options": ["Market order", "Limit order"],
                "required": True,
            }
        }, {
            "type": "selected",
            "name": "direction",
            "label": "Trading direction",
            "description": "Buy, sell",
            "default": "buy",
            "group": "Trading Setup",
            "settings": {
                "render": "segment",
                "required": True,
                "options": [{"name": "买入", "value": "buy"}, {"name": "卖出", "value": "sell"}],
            }
        }, {
            "type": "number",
            "name": "price",
            "label": "price",
            "description": "The price of the order",
            "group": "Trading Setup",
            "filter": "tradeType==1",
            "settings": {
                "required": True,
            }
        }, {
            "type": "number",
            "name": "amount",
            "label": "Order quantity",
            "description": "Order quantity",
            "group": "Trading Setup",
            "settings": {
                "required": True,
            }
        }],
    }

    while True:
        tbl = {"type": "table", "title": "dashboard", "cols": ["symbol", "actionOpen"], "rows": []}
        for m in arrManager:
            btnOpen = createBtn(tmpBtnOpen, [{"type": "string", "name": "symbol", "label": "交易品种", "default": m["symbol"], "settings": {"required": True}}])
            tbl["rows"].append([m["symbol"], btnOpen])

        cmd = GetCommand()

        if cmd != "" and cmd != None:
            Log("Receive interaction:", cmd) 

            # Parsing interaction messages: open:{"symbol":"LTC_USDT.swap","tradeType":0,"direction":"buy","amount":111}
            # According to the first colon: the previous instruction determines which button template triggers the message
            arrCmd = cmd.split(":")
            if arrCmd[0] == "open":
                msg = json.loads(cmd[5:])
                Log("Trading instruments:", msg["symbol"], ", Trading direction:", msg["direction"], ", Order type:", "Market order" if msg["tradeType"] == 0 else "Limit order", ", Order price: current market price" if msg["tradeType"] == 0 else ", Order price:" + str(msg["price"]), ", Order quantity:", msg["amount"])
        
        # Output status bar information
        LogStatus(_D(), "\n", "`" + json.dumps(tbl) + "`")
        Sleep(1000)
// Omit...

স্ট্যাটাস বার টেবিলের বোতামগুলি তৈরি করতে সর্বশেষ বোতাম কাঠামোটি ব্যবহার করুন। ইন্টারঅ্যাকশনটি ট্রিগার করতে বোতামটি ক্লিক করার সময়, একটি মাল্টি-কন্ট্রোল পপ-আপ উইন্ডো পপ আপ হবে। আরও তথ্যের জন্য, দয়া করে পড়ুনঃব্যবহারকারী নির্দেশিকা - অবস্থা বারে ইন্টারেক্টিভ কন্ট্রোল.

function main() {
    var table = { 
        type: 'table', 
        title: 'position operation', 
        cols: ['column1', 'column2', 'Action'], 
        rows: [ 
            ['abc', 'def', {'type':'button', 'cmd': 'coverAll', 'name': 'close positions'}]
        ]
    } 
    var ticker = exchange.GetTicker()
    // Add a row of data, merge the first and second cells, and output the ticker variable in the merged cell
    table.rows.push([{body : JSON.stringify(ticker), colspan : 2}, "abc"])    
    LogStatus('`' + JSON.stringify(table) + '`')
}
import json
def main():
    table = {
        "type" : "table",
        "title" : "position operation",
        "cols" : ["column1", "column2", "Action"],
        "rows" : [
            ["abc", "def", {"type": "button", "cmd": "coverAll", "name": "close positions"}]
        ]
    }
    ticker = exchange.GetTicker()
    table["rows"].append([{"body": json.dumps(ticker), "colspan": 2}, "abc"])
    LogStatus("`" + json.dumps(table) + "`")
void main() {
    json table = R"({
        "type" : "table",
        "title" : "position operation",
        "cols" : ["column1", "column2", "Action"],
        "rows" : [
            ["abc", "def", {"type": "button", "cmd": "coverAll", "name": "close positions"}]
        ]
    })"_json;            

    auto ticker = exchange.GetTicker();
    json jsonTicker = R"({"Buy": 0, "Sell": 0, "High": 0, "Low": 0, "Volume": 0, "Last": 0, "Time": 0})"_json;
    jsonTicker["Buy"] = ticker.Buy;
    jsonTicker["Sell"] = ticker.Sell;
    jsonTicker["Last"] = ticker.Last;
    jsonTicker["Volume"] = ticker.Volume;
    jsonTicker["Time"] = ticker.Time;
    jsonTicker["High"] = ticker.High;
    jsonTicker["Low"] = ticker.Low;            

    json arr = R"([{"body": {}, "colspan": 2}, "abc"])"_json;
    arr[0]["body"] = jsonTicker;
    table["rows"].push_back(arr);
    LogStatus("`" + table.dump() + "`");
}

টেবিলের মধ্যে কোষগুলির অনুভূমিক একীকরণLogStatus()ফাংশনঃ

function main() {
    var table = { 
        type: 'table', 
        title: 'table demo', 
        cols: ['columnA', 'columnB', 'columnC'], 
        rows: [ 
            ['A1', 'B1', {'type':'button', 'cmd': 'coverAll', 'name': 'C1'}]
        ]
    }             

    var ticker = exchange.GetTicker()
    var name = exchange.GetName()            

    table.rows.push([{body : "A2 + B2:" + JSON.stringify(ticker), colspan : 2}, "C2"])
    table.rows.push([{body : "A3 + A4 + A5:" + name, rowspan : 3}, "B3", "C3"])
    // A3 is merged by the first cell in the previous row
    table.rows.push(["B4", "C4"])
    // A2 is merged by the first cell of the previous row
    table.rows.push(["B5", "C5"])                                            
    table.rows.push(["A6", "B6", "C6"])
    LogStatus('`' + JSON.stringify(table) + '`')
}
import json
def main():
    table = {
        "type" : "table", 
        "title" : "table demo", 
        "cols" : ["columnA", "columnB", "columnC"], 
        "rows" : [
            ["A1", "B1", {"type": "button", "cmd": "coverAll", "name": "C1"}]
        ]
    }
    
    ticker = exchange.GetTicker()
    name = exchange.GetName()
    
    table["rows"].append([{"body": "A2 + B2:" + json.dumps(ticker), "colspan": 2}, "C2"])
    table["rows"].append([{"body": "A3 + A4 + A5:" + name, "rowspan": 3}, "B3", "C3"])
    table["rows"].append(["B4", "C4"])
    table["rows"].append(["B5", "C5"])
    table["rows"].append(["A6", "B6", "C6"])
    LogStatus("`" + json.dumps(table) + "`")
void main() {
    json table = R"({
        "type" : "table", 
        "title" : "table demo", 
        "cols" : ["columnA", "columnB", "columnC"], 
        "rows" : [
            ["A1", "B1", {"type": "button", "cmd": "coverAll", "name": "C1"}]
        ]
    })"_json;
    // For testing purposes, the code is short and easy to read, and the constructed data is used here
    json jsonTicker = R"({"High": 0, "Low": 0, "Buy": 0, "Sell": 0, "Last": 0, "Time": 0, "Volume": 0})"_json;
    auto name = exchange.GetName();
    json arr1 = R"([{"body": "", "colspan": 2}, "C2"])"_json;
    arr1[0]["body"] = "A2 + B2:" + jsonTicker.dump();
    json arr2 = R"([{"body": "", "rowspan": 3}, "B3", "C3"])"_json;
    arr2[0]["body"] = "A3 + A4 + A5:" + name;
    table["rows"].push_back(arr1);
    table["rows"].push_back(arr2);
    table["rows"].push_back(R"(["B4", "C4"])"_json);
    table["rows"].push_back(R"(["B5", "C5"])"_json);
    table["rows"].push_back(R"(["A6", "B6", "C6"])"_json);
    LogStatus("`" + table.dump() + "`");
}

উল্লম্বভাবে কোষগুলিকে একত্রিত করুনLogStatus()ফাংশনঃ

function main() {
    var table1 = {type: 'table', title: 'table1', cols: ['column1', 'column2'], rows: [ ['abc', 'def'], ['ABC', 'support color #ff0000']]}
    var table2 = {type: 'table', title: 'table2', cols: ['column1', 'column2'], rows: [ ['abc', 'def'], ['ABC', 'support color #ff0000']]}
    LogStatus('`' + JSON.stringify([table1, table2]) + '`')
}
import json
def main():
    table1 = {"type": "table", "title": "table1", "cols": ["column1", "column2"], "rows": [ ["abc", "def"], ["ABC", "support color #ff0000"]]}
    table2 = {"type": "table", "title": "table2", "cols": ["column1", "column2"], "rows": [ ["abc", "def"], ["ABC", "support color #ff0000"]]}
    LogStatus("`" + json.dumps([table1, table2]) + "`")
void main() {
    json table1 = R"({"type": "table", "title": "table1", "cols": ["column1", "column2"], "rows": [ ["abc", "def"], ["ABC", "support color #ff0000"]]})"_json;
    json table2 = R"({"type": "table", "title": "table2", "cols": ["column1", "column2"], "rows": [ ["abc", "def"], ["ABC", "support color #ff0000"]]})"_json;
    json arr = R"([])"_json;
    arr.push_back(table1);
    arr.push_back(table2);
    LogStatus("`" + arr.dump() + "`");
}

স্ট্যাটাস বার টেবিল পেইজিং প্রদর্শনঃ

function main(){
    var tab1 = {
        type : "table",
        title : "table1",
        cols : ["1", "2"],
        rows : []
    }
    var tab2 = {
        type : "table",
        title : "table2",
        cols : ["1", "2", "3"],
        rows : []
    }
    var tab3 = {
        type : "table",
        title : "table3",
        cols : ["A", "B", "C"],
        rows : []
    }            

    tab1.rows.push(["jack", "lucy"])
    tab2.rows.push(["A", "B", "C"])
    tab3.rows.push(["A", "B", "C"])            

    LogStatus('`' + JSON.stringify(tab1) + '`\n' + 
        '`' + JSON.stringify(tab2) + '`\n' +
        '`' + JSON.stringify(tab3) + '`')
  
    Log("exit")
}
import json
def main():
    tab1 = {
        "type": "table", 
        "title": "table1", 
        "cols": ["1", "2"], 
        "rows": []
    }
    tab2 = {
        "type": "table", 
        "title": "table2", 
        "cols": ["1", "2", "3"], 
        "rows": []
    }
    tab3 = {
        "type": "table", 
        "title": "table3", 
        "cols": ["A", "B", "C"], 
        "rows": []
    }            

    tab1["rows"].append(["jack", "lucy"])
    tab2["rows"].append(["A", "B", "C"])
    tab3["rows"].append(["A", "B", "C"])
    LogStatus("`" + json.dumps(tab1) + "`\n" + 
        "`" + json.dumps(tab2) + "`\n" + 
        "`" + json.dumps(tab3) + "`")
void main() {
    json tab1 = R"({
        "type": "table", 
        "title": "table1", 
        "cols": ["1", "2"], 
        "rows": []
    })"_json;
    json tab2 = R"({
        "type": "table", 
        "title": "table2", 
        "cols": ["1", "2", "3"], 
        "rows": []
    })"_json;
    json tab3 = R"({
        "type": "table", 
        "title": "table3", 
        "cols": ["A", "B", "C"], 
        "rows": []
    })"_json;
    tab1["rows"].push_back(R"(["jack", "lucy"])"_json);
    tab2["rows"].push_back(R"(["A", "B", "C"])"_json);
    tab3["rows"].push_back(R"(["A", "B", "C"])"_json);
    LogStatus("`" + tab1.dump() + "`\n" + 
        "`" + tab2.dump() + "`\n" +
        "`" + tab3.dump() + "`");
}

পৃষ্ঠাগুলিতে টেবিলগুলি প্রদর্শনের পাশাপাশি, একাধিক টেবিলগুলিও উপরের থেকে নীচের ক্রমে প্রদর্শিত হতে পারেঃ

function main() {
    var tbl = {
        type : "table",
        title : "test scroll",
        scroll : "auto",
        cols : ["col 0", "col 1", "col 2", "col 3", "col 4", "col 5", "col 6", "col 7", "col 8", "col 9", "col 10", 
            "col 11", "col 12", "col 13", "col 14", "col 15", "col 16", "col 17", "col 18", "col 19", "col 20"],
        rows : []
    }

    for (var i = 1 ; i < 100 ; i++) {
        tbl.rows.push([i, "1," + i, "2," + i, "3," + i, "4," + i, "5," + i, "6," + i, "7," + i, "8," + i, "9," + i, "10," + i, 
            "11," + i, "12," + i, "13," + i, "14," + i, "15," + i, "16," + i, "17," + i, "18," + i, "19," + i, "20," + i])
    }
    
    LogStatus("`" + JSON.stringify(tbl) + "`")
}
import json

def main():
    tbl = {
        "type" : "table",
        "title" : "test scroll",
        "scroll" : "auto",
        "cols" : ["col 0", "col 1", "col 2", "col 3", "col 4", "col 5", "col 6", "col 7", "col 8", "col 9", "col 10", 
            "col 11", "col 12", "col 13", "col 14", "col 15", "col 16", "col 17", "col 18", "col 19", "col 20"],
        "rows" : []
    }

    for index in range(1, 100):
        i = str(index)
        tbl["rows"].append([i, "1," + i, "2," + i, "3," + i, "4," + i, "5," + i, "6," + i, "7," + i, "8," + i, "9," + i, "10," + i, 
            "11," + i, "12," + i, "13," + i, "14," + i, "15," + i, "16," + i, "17," + i, "18," + i, "19," + i, "20," + i])
    
    LogStatus("`" + json.dumps(tbl) + "`")
void main() {
    json table = R"({
        "type" : "table",
        "title" : "test scroll",
        "scroll" : "auto",
        "cols" : ["col 0", "col 1", "col 2", "col 3", "col 4", "col 5", "col 6", "col 7", "col 8", "col 9", "col 10", 
            "col 11", "col 12", "col 13", "col 14", "col 15", "col 16", "col 17", "col 18", "col 19", "col 20"],
        "rows" : []
    })"_json;

    for (int index = 1; index < 100; ++index) {
        std::string i = std::to_string(index);
        table["rows"].push_back({i, "1," + i, "2," + i, "3," + i, "4," + i, "5," + i, "6," + i, "7," + i, "8," + i, "9," + i, "10," + i,
            "11," + i, "12," + i, "13," + i, "14," + i, "15," + i, "16," + i, "17," + i, "18," + i, "19," + i, "20," + i});
    }

    LogStatus("`" + table.dump() + "`");
}

স্ট্যাটাস বার টেবিলের অনুভূমিক এবং উল্লম্ব স্ক্রোল মোড সেট করার জন্য সমর্থন।scrollঅ্যাট্রিবিউট"auto", যখন অবস্থা বার টেবিলের উল্লম্ব সারি সংখ্যা 20 সারি অতিক্রম করে, বিষয়বস্তু স্ক্রোল করা হবে। যখন অনুভূমিক কলাম সংখ্যা পৃষ্ঠা প্রদর্শন পরিসীমা অতিক্রম করে,scrollলাইভ ট্রেডিংয়ের সময় স্ট্যাটাস বারে প্রচুর পরিমাণে ডেটা লেখার বিলম্ব সমস্যা দূর করতে এই বৈশিষ্ট্যটি ব্যবহার করা যেতে পারে। নিম্নলিখিত পরীক্ষার উদাহরণটি দেখুনঃ

তথ্য আউটপুটLogStatus()লাইভ ট্রেডিং চলাকালীন ফাংশনটি লাইভ ট্রেডিং ডাটাবেসে সংরক্ষণ করা হয় না, তবে এটি কেবলমাত্র বর্তমান লাইভ ট্রেডিংয়ের স্ট্যাটাস বার সামগ্রী আপডেট করে। দ্যLogStatus()ফাংশন মুদ্রণ সমর্থনbase64কোডেড ছবি, দিয়ে শুরু`এবং এর সাথে শেষ`উদাহরণস্বরূপঃLogStatus("`data:image/png;base64,AAAA`"). দ্যLogStatus()ফাংশন পাস সমর্থন করেmatplotlib.pyplotঅবজেক্ট সরাসরিPython, যতক্ষণ না বস্তুর মধ্যেsavefigপদ্ধতি, এটি একটি পরামিতি হিসাবে পাস করা যেতে পারেLogStatus()ফাংশন, যেমনঃ

import matplotlib.pyplot as plt 
def main():
    plt.plot([3,6,2,4,7,1])
    LogStatus(plt) 

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

{@ মজা/গ্লোবাল/GetCommand GetCommand}

EnableLog সক্রিয় করুন

অর্ডার তথ্য লগিং চালু বা বন্ধ করুন।

EnableLog (সক্রিয়)

যদিenableপ্যারামিটারটি একটি মিথ্যা মান নির্ধারণ করা হয়, যেমনঃfalse, অর্ডার লগ (যেমন ফাংশন দ্বারা উত্পন্ন লগexchange.Buy()) মুদ্রণ করা হয় না এবং লাইভ ট্রেডিং এর ডাটাবেসে লেখা হয় না। সক্ষম করুন সত্য বুল

function main() {
    EnableLog(false)
}
def main():
    EnableLog(False)
void main() {
    EnableLog(false);
}

{@fun/Trade/exchange.buy exchange.buy}, {@fun/Trade/exchange.sell exchange.sell}, {@fun/Trade/exchange.cancelOrder exchange.cancelOrder}, {@fun/Trade/exchange.cancelOrder exchange.cancelOrder}, {@fun/Trade/exchange.buy.exchange.buy}, {@fun/Trade/exchange.sell}, {@fun/Trade/exchange.sell}, {@fun/Trade/exchange.cancelOrder exchange.cancelOrder}, {@fun/Trade/exchange.cancelOrder.shop.buy}, {@fun/Trade/exchange.sell.sell}, {@fun/Trade/exchange.sell.sell}, {@fun/Trade/exchange.sell.sell.sell.sell.sell.sell.sell.sell.sell.sell.sell.sell.sell.sell.sell

চার্ট

চার্ট অঙ্কন ফাংশন কাস্টমাইজ করুন.

চার্ট অবজেক্ট। বস্তু

চার্ট (বিকল্প)

দ্যoptionsপ্যারামিটার হল চার্ট কনফিগারেশন।Chart()ফাংশন প্যারামিটারoptionsএকটিJSONসিরিয়ালাইজযোগ্যHighStocksপ্যারামিটারHighcharts.StockChartঅতিরিক্ত__isStockঅ্যাট্রিবিউট নেটিভ প্যারামিটারের উপরে যোগ করা হয়, এবং যদি__isStock:falseনির্দিষ্ট করা হয়, এটি একটি স্বাভাবিক চার্ট হিসাবে প্রদর্শিত হয়.__isStockঅ্যাট্রিবিউট একটি মিথ্যা মান সেট করা হয়, যেমনfalse, অর্থাৎ ব্যবহৃত চার্টটি একটিHighchartsচার্ট.__isStockঅ্যাট্রিবিউট একটি সত্য মান সেট করা হয়, যেমনtrue, অর্থাৎ ব্যবহৃত চার্টটি একটিHighstocksচার্ট (ডিফল্টরূপে__isStockসত্য, যেমনtrue) আপনি প্রশ্ন জিজ্ঞাসা করতে পারেনহাইস্টকস চার্ট লাইব্রেরি. বিকল্প সত্য বস্তু, বস্তু অ্যারে

function main() {
    var cfgA = {
        extension: {
            layout: 'single', // No grouping, display separately, default to group 'group'
            height: 300, // Specify the height
        },
        title: {
            text: 'handicap chart'
        },
        xAxis: {
            type: 'datetime'
        },
        series: [{
            name: 'buy one',
            data: [],
        }, {
            name: 'sell one',
            data: [],
        }]
    }
    var cfgB = {
        title: {
            text: 'spread chart'
        },
        xAxis: {
            type: 'datetime'
        },
        series: [{
            name: 'spread',
            type: 'column',
            data: [],
        }]
    }            

    var cfgC = {
        __isStock: false,
        title: {
            text: 'pie chart'
        },
        series: [{
            type: 'pie',
            name: 'one',
            data: [
                ["A", 25],
                ["B", 25],
                ["C", 25],
                ["D", 25],
            ]  // Instead of updating the initial data with the add function, the sequence can be updated by changing the chart configuration directly.
        }]
    };
    var cfgD = {
        extension: {
            layout: 'single',
            col: 8, // Specify the cell value for the width, the total value is 12
            height: '300px',
        },
        title: {
            text: 'handicap chart'
        },
        xAxis: {
            type: 'datetime'
        },
        series: [{
            name: 'buy one',
            data: [],
        }, {
            name: 'sell one',
            data: [],
        }]
    }
    var cfgE = {
        __isStock: false,
        extension: {
            layout: 'single',
            col: 4,
            height: '300px',
        },
        title: {
            text: 'pie chart2'
        },
        series: [{
            type: 'pie',
            name: 'one',
            data: [
                ["A", 25],
                ["B", 25],
                ["C", 25],
                ["D", 25],
            ]
        }]
    };            

    var chart = Chart([cfgA, cfgB, cfgC, cfgD, cfgE]);
    chart.reset()
        // Add a number of points to the pie chart, add can only update the data points added by add, built-in data points cannot be updated later.
    chart.add(3, {
        name: "ZZ",
        y: Math.random() * 100
    });
    while (true) {
        Sleep(1000)
        var ticker = exchange.GetTicker()
        if (!ticker) {
            continue;
        }
        var diff = ticker.Sell - ticker.Buy
        cfgA.subtitle = {
            text: 'buy one ' + ticker.Buy + ', sell one ' + ticker.Sell,
        };
        cfgB.subtitle = {
            text: 'spread ' + diff,
        };            

        chart.add([0, [new Date().getTime(), ticker.Buy]]);
        chart.add([1, [new Date().getTime(), ticker.Sell]]);
        // Equivalent to updating the first data series of the second chart
        chart.add([2, [new Date().getTime(), diff]]);
        chart.add(4, [new Date().getTime(), ticker.Buy]);
        chart.add(5, [new Date().getTime(), ticker.Buy]);
        cfgC.series[0].data[0][1] = Math.random() * 100;
        cfgE.series[0].data[0][1] = Math.random() * 100;
        // update is actually the same as resetting the chart's configuration
        chart.update([cfgA, cfgB, cfgC, cfgD, cfgE]);
    }
}            
import random
import time
def main():
    cfgA = {
        "extension" : {
            "layout" : "single", 
            "height" : 300,
            "col" : 8
        }, 
        "title" : {
            "text" : "handicap chart"
        },
        "xAxis" : {
            "type" : "datetime" 
        }, 
        "series" : [{
            "name" : "buy one",
            "data" : []
        }, {
            "name" : "sell one", 
            "data" : []
        }]
    }                

    cfgB = {
        "title" : {
            "text" : "spread chart"
        }, 
        "xAxis" : {
            "type" : "datetime",
        }, 
        "series" : [{
            "name" : "spread", 
            "type" : "column", 
            "data" : []
        }]
    }                

    cfgC = {
        "__isStock" : False,
        "title" : {
            "text" : "pie chart"
        }, 
        "series" : [{
            "type" : "pie", 
            "name" : "one", 
            "data" : [
                ["A", 25],
                ["B", 25],
                ["C", 25],
                ["D", 25],
            ]
        }]
    }                

    cfgD = {
        "extension" : {
            "layout" : "single",
            "col" : 8,
            "height" : "300px"
        }, 
        "title" : {
            "text" : "handicap chart"
        }, 
        "series" : [{
            "name" : "buy one", 
            "data" : []
        }, {
            "name" : "sell one",
            "data" : []
        }]
    }                

    cfgE = {
        "__isStock" : False, 
        "extension" : {
            "layout" : "single", 
            "col" : 4,
            "height" : "300px"
        }, 
        "title" : {
            "text" : "pie chart2"
        },
        "series" : [{
            "type" : "pie",
            "name" : "one", 
            "data" : [
                ["A", 25], 
                ["B", 25], 
                ["C", 25], 
                ["D", 25]
            ]
        }]
    }
    
    chart = Chart([cfgA, cfgB, cfgC, cfgD, cfgE])
    chart.reset()
    chart.add(3, {
        "name" : "ZZ",
        "y" : random.random() * 100
    })
    
    while True:
        Sleep(1000)
        ticker = exchange.GetTicker()
        if not ticker :
            continue
        diff = ticker["Sell"] - ticker["Buy"]
        cfgA["subtitle"] = {
            "text" : "buy one" + str(ticker["Buy"]) + "sell one" + str(ticker["Sell"])
        }
        cfgB["subtitle"] = {
            "text" : "spread " + str(diff)
        }
        
        chart.add(0, [time.time() * 1000, ticker["Buy"]])
        chart.add(1, [time.time() * 1000, ticker["Sell"]])
        chart.add(2, [time.time() * 1000, diff])
        chart.add(4, [time.time() * 1000, ticker["Buy"]])
        chart.add(5, [time.time() * 1000, ticker["Buy"]])
        cfgC["series"][0]["data"][0][1] = random.random() * 100
        cfgE["series"][0]["data"][0][1] = random.random() * 100
void main() {
    json cfgA = R"({
        "extension" : {
            "layout" : "single", 
            "height" : 300,
            "col" : 8
        }, 
        "title" : {
            "text" : "handicap chart"
        },
        "xAxis" : {
            "type" : "datetime" 
        }, 
        "series" : [{
            "name" : "buy one",
            "data" : []
        }, {
            "name" : "sell one", 
            "data" : []
        }]
    })"_json;                

    json cfgB = R"({
        "title" : {
            "text" : "spread chart"
        }, 
        "xAxis" : {
            "type" : "datetime"
        }, 
        "series" : [{
            "name" : "spread", 
            "type" : "column", 
            "data" : []
        }]
    })"_json;    
    
    json cfgC = R"({
        "__isStock" : false,
        "title" : {
            "text" : "pie chart"
        }, 
        "series" : [{
            "type" : "pie", 
            "name" : "one", 
            "data" : [
                ["A", 25],
                ["B", 25],
                ["C", 25],
                ["D", 25]
            ]
        }]
    })"_json;    
    
    json cfgD = R"({
        "extension" : {
            "layout" : "single",
            "col" : 8,
            "height" : "300px"
        }, 
        "title" : {
            "text" : "handicap chart"
        }, 
        "series" : [{
            "name" : "buy one", 
            "data" : []
        }, {
            "name" : "sell one",
            "data" : []
        }]
    })"_json;    
    
    json cfgE = R"({
        "__isStock" : false, 
        "extension" : {
            "layout" : "single", 
            "col" : 4,
            "height" : "300px"
        }, 
        "title" : {
            "text" : "pie chart2"
        },
        "series" : [{
            "type" : "pie",
            "name" : "one", 
            "data" : [
                ["A", 25], 
                ["B", 25], 
                ["C", 25], 
                ["D", 25]
            ]
        }]
    })"_json;            

    auto chart = Chart({cfgA, cfgB, cfgC, cfgD, cfgE});
    chart.reset();
    json zz = R"({
        "name" : "ZZ", 
        "y" : 0
    })"_json;
    zz["y"] = rand() % 100;
    chart.add(3, zz);
    
    while(true) {
        Sleep(1000);
        auto ticker = exchange.GetTicker();
        if(!ticker.Valid) {
            continue;
        }
        auto diff = ticker.Sell - ticker.Buy;
        json cfgASubTitle = R"({"text" : ""})"_json;
        cfgASubTitle["text"] = format("buy one %f , sell one %f", ticker.Buy, ticker.Sell);
        cfgA["subtitle"] = cfgASubTitle;
        
        json cfgBSubTitle = R"({"text" : ""})"_json;
        cfgBSubTitle["text"] = format("spread %f", diff);
        cfgB["subtitle"] = cfgBSubTitle;            

        chart.add(0, {Unix() * 1000, ticker.Buy});
        chart.add(1, {Unix() * 1000, ticker.Sell});
        chart.add(2, {Unix() * 1000, diff});
        chart.add(4, {Unix() * 1000, ticker.Buy});
        chart.add(5, {Unix() * 1000, ticker.Buy});
        cfgC["series"][0]["data"][0][1] = rand() % 100;
        cfgE["series"][0]["data"][0][1] = rand() % 100;
        chart.update({cfgA, cfgB, cfgC, cfgD, cfgE});
    }
}

মাল্টি-চার্ট অঙ্কন কনফিগারেশনঃ

  • extension.layoutবৈশিষ্ট্য যদি বৈশিষ্ট্যটি single মান দিয়ে সেট করা থাকে, তবে চার্টগুলি স্তুপীকৃত হবে না (ট্যাব হিসাবে প্রদর্শিত হবে না), তবে পৃথকভাবে প্রদর্শিত হবে (টাইলড) ।
  • extension.heightবৈশিষ্ট্য অ্যাট্রিবিউটটি চার্টের উচ্চতা সেট করতে ব্যবহৃত হয়, হয় একটি সংখ্যাগত মান হিসাবে, অথবা 300px হিসাবে।
  • extension.colবৈশিষ্ট্য অ্যাট্রিবিউটটি চার্টের প্রস্থ সেট করতে ব্যবহৃত হয়, পৃষ্ঠা প্রস্থ 12 টি কোষে বিভক্ত করা হয়, সেট 8,অর্থাৎ, চার্ট 8 টি কোষের প্রস্থ দখল করে।
// This chart is an object in the JavaScript language, and before using the Chart function, we need to declare an object variable chart to configure the chart. var chart = {                                           
    // This field marks whether the chart is a general chart or not, if you are interested, you can change it to false and run it.
    __isStock: true,                                    
    // Scaling tool
    tooltip: {xDateFormat: '%Y-%m-%d %H:%M:%S, %A'},    
    // title
    title : { text : 'spread analysis chart'},                       
    // selection range
    rangeSelector: {                                    
        buttons:  [{type: 'hour',count: 1, text: '1h'}, {type: 'hour',count: 3, text: '3h'}, {type: 'hour', count: 8, text: '8h'}, {type: 'all',text: 'All'}],
        selected: 0,
        inputEnabled: false
    },
    // Coordinate axis horizontal axis that is: x-axis, the current setting type is: time
    xAxis: { type: 'datetime'},                         
    // Coordinate axis vertical axis that is: y-axis, default value adjusted with the size of the data
    yAxis : {                                           
        // title
        title: {text: 'spread'},                           
        // Whether to enable the right vertical axis
        opposite: false                                 
    },
    // Data series, this sttribute holds the individual data series (lines, K-charts, labels, etc...)
    series : [                                          
        // The index is 0, and the data array holds the data of the index series
        {name : "line1", id : "line1,buy1Price", data : []},                          
        // Index is 1, set dashStyle:'shortdash' i.e.: set the dashed line
        {name : "line2", id : "line2,lastPrice", dashStyle : 'shortdash', data : []}  
    ]
} function main(){
    // Call the Chart function to initialize the chart
    var ObjChart = Chart(chart)         
    // Clear out
    ObjChart.reset()                      
    while(true){
        // Gets the timestamp of this poll, i.e. a millisecond timestamp. It's used to determine the position of the X-axis written to the chart.
        var nowTime = new Date().getTime()
        // Get the ticker data
        var ticker = _C(exchange.GetTicker)
        // Get buy one price from the return value of the ticker data
        var buy1Price = ticker.Buy    
        // To obtain the final transaction price, we add 1 in order not to overlap the 2 lines
        var lastPrice = ticker.Last + 1
        // Data sequence with timestamp as X-value and buy one price as Y-value passed into index 0
        ObjChart.add(0, [nowTime, buy1Price])
        // ditto
        ObjChart.add(1, [nowTime, lastPrice])
        Sleep(2000)
    }
}```
```python
import time
chart = {
    "__isStock" : True,
    "tooltip" : {"xDateFormat" : "%Y-%m-%d %H:%M:%S, %A"},  
    "title" : {"text" : "spread analysis chart"}, 
    "rangeSelector" : {
        "buttons" : [{"type": "count", "count": 1, "text": "1h"}, {"type": "hour", "count": 3, "text": "3h"}, {"type": "hour", "count": 8, "text": "8h"}, {"type": "all", "text": "All"}], 
        "selected": 0,
        "inputEnabled": False 
    }, 
    "xAxis": {"type": "datetime"}, 
    "yAxis": {
        "title": {"text": "spread"},
        "opposite": False
    },
    "series": [{
        "name": "line1", "id": "line1,buy1Price", "data": []
    }, {
        "name": "line2", "id": "line2,lastPrice", "dashStyle": "shortdash", "data": []
    }]
}
def main():
    ObjChart = Chart(chart)
    ObjChart.reset()
    while True:
        nowTime = time.time() * 1000
        ticker = exchange.GetTicker()
        buy1Price = ticker["Buy"]
        lastPrice = ticker["Last"] + 1
        ObjChart.add(0, [nowTime, buy1Price])
        ObjChart.add(1, [nowTime, lastPrice])
        Sleep(2000)
void main() {
    // When writing strategies in C++, try not to declare global variables that are not of the base type, so the chart configuration object is declared inside the main function.
    json chart = R"({
        "__isStock" : true,
        "tooltip" : {"xDateFormat" : "%Y-%m-%d %H:%M:%S, %A"},  
        "title" : {"text" : "spread analysis chart"}, 
        "rangeSelector" : {
            "buttons" : [{"type": "count", "count": 1, "text": "1h"}, {"type": "hour", "count": 3, "text": "3h"}, {"type": "hour", "count": 8, "text": "8h"}, {"type": "all", "text": "All"}], 
            "selected": 0,
            "inputEnabled": false 
        }, 
        "xAxis": {"type": "datetime"}, 
        "yAxis": {
            "title": {"text": "spread"},
            "opposite": false
        },
        "series": [{
            "name": "line1", "id": "line1,buy1Price", "data": []
        }, {
            "name": "line2", "id": "line2,lastPrice", "dashStyle": "shortdash", "data": []
        }]
    })"_json;
    auto ObjChart = Chart(chart);
    ObjChart.reset();
    while(true) {
        auto nowTime = Unix() * 1000;
        auto ticker = exchange.GetTicker();
        auto buy1Price = ticker.Buy;
        auto lastPrice = ticker.Last + 1.0;
        ObjChart.add(0, {nowTime, buy1Price});
        ObjChart.add(1, {nowTime, lastPrice});
        Sleep(2000);
    }
}

একটি সহজ অঙ্কনের উদাহরণঃ

// Objects used to initialize the chart
var chart = {                                   
    // Chart title
    title: {text: "line value triggers the plotLines value"},   
    // Y-axis related settings
    yAxis: {                                    
        // A horizontal line perpendicular to the Y-axis, used as a trigger line, is a structural array that can set multiple trigger lines
        plotLines: [{                           
            // The value of the trigger line, how much it set, this line will be displayed in the corresponding value position
            value: 0,                           
            // Set the color of the trigger line
            color: 'red',                       
            // Width
            width: 2,                           
            // Displaying labels
            label: {                            
                // Label text
                text: 'Trigger value',                  
                // Centered label position
                align: 'center'                 
            }
        }]
    },
    // X-axis related settings, here the setting type is time axis
    xAxis: {type: "datetime"},                  
    series: [
        {name: "sin", type: "spline", data: []},
        // This is an important data series, you can set multiple data series, according to the array index control
        {name: "cos", type: "spline", data: []}
    ]  
}
function main(){
    // Circumference
    var pi = 3.1415926535897
    // Variables for recording timestamps
    var time = 0                   
    // Angle
    var angle = 0                        
    // Coordinate y values for receiving sine and cosine values
    var y = 0          
    // Call the API interface to initialize the chart with the chart object
    var objChart = Chart(chart)        
    // Initially, clear the chart
    objChart.reset()
    // Set the value of the trigger line to 1
    chart.yAxis.plotLines[0].value = 1
    // Loop
    while(true){                          
        // Get the timestamp of the current moment
        time = new Date().getTime() 
        // Angle increases by 5 degrees every 500ms and calculates the sine value
        y = Math.sin(angle * 2 * pi / 360)
        // Write the calculated y value to the data series of the corresponding index of the chart, the first parameter of the add function is the specified data series index
        objChart.add(0, [time, y])
        // Calculate the cosine value
        y = Math.cos(angle * 2 * pi / 360)
        objChart.add(1, [time, y])
        // Increase by 5 degrees
        angle += 5
        // Pause for 5 seconds to avoid drawing too often and growing data too fast
        Sleep(5000)     
    }
}
import math
import time
chart = {
    "title": {"text": "line value triggers the plotLines value"}, 
    "yAxis": {
        "plotLines": [{
            "value": 0,
            "color": "red",
            "width": 2,
            "label": {
                "text": "trigger value", 
                "align": "center"
            }
        }]
    },
    "xAxis": {"type": "datetime"},
    "series": [{"name": "sin", "type": "spline", "data": []},
               {"name": "cos", "type": "spline", "data": []}]
}
def main():
    pi = 3.1415926535897
    ts = 0
    angle = 0
    y = 0
    objChart = Chart(chart)
    objChart.reset()
    chart["yAxis"]["plotLines"][0]["value"] = 1
    while True:
        ts = time.time() * 1000
        y = math.sin(angle * 2 * pi / 360)
        objChart.add(0, [ts, y])
        y = math.cos(angle * 2 * pi / 360)
        objChart.add(1, [ts, y])
        angle += 5
        Sleep(5000)
void main() {
    json chart = R"({
        "title": {"text": "line value triggers the plotLines value"}, 
        "yAxis": {
            "plotLines": [{
                "value": 0,
                "color": "red",
                "width": 2,
                "label": {
                    "text": "trigger value", 
                    "align": "center"
                }
            }]
        },
        "xAxis": {"type": "datetime"},
        "series": [{"name": "sin", "type": "spline", "data": []},
                   {"name": "cos", "type": "spline", "data": []}]     
    })"_json;            

    auto pi = 3.1415926535897;
    auto ts = 0;
    auto angle = 0.0;
    auto y = 0.0;
    auto objChart = Chart(chart);
    objChart.reset();
    chart["yAxis"]["plotLines"][0]["value"] = 1;
    while(true) {
        ts = Unix() * 1000;
        y = sin(angle * 2 * pi / 360);
        objChart.add(0, {ts, y});
        y = cos(angle * 2 * pi / 360);
        objChart.add(1, {ts, y});
        angle += 5;
        Sleep(5000);
    }
}

ত্রিভুজীয় বক্ররেখা অঙ্কনের উদাহরণঃ

/*backtest
start: 2020-03-11 00:00:00
end: 2020-04-09 23:59:00
period: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/            

var chartCfg = {
    subtitle: {
        text: "subtitle",
    },
    yAxis: [{
        height: "40%",
        lineWidth: 2,
        title: {
            text: 'PnL',
        },
        tickPixelInterval: 20,
        minorGridLineWidth: 1,
        minorTickWidth: 0,
        opposite: true,
        labels: {
            align: "right",
            x: -3,
        }
    }, {
        title: {
            text: 'Profit',
        },
        top: "42%",
        height: "18%",
        offset: 0,
        lineWidth: 2
    }, {
        title: {
            text: 'Vol',
        },
        top: '62%',
        height: '18%',
        offset: 0,
        lineWidth: 2
    }, {
        title: {
            text: 'Asset',
        },
        top: '82%',
        height: '18%',
        offset: 0,
        lineWidth: 2
    }],
    series: [{
        name: 'PnL',
        data: [],
        id: 'primary',
        tooltip: {
            xDateFormat: '%Y-%m-%d %H:%M:%S'
        },
        yAxis: 0
    }, {
        type: 'column',
        lineWidth: 2,
        name: 'Profit',
        data: [],
        yAxis: 1,
    }, {
        type: 'column',
        name: 'Trade',
        data: [],
        yAxis: 2
    }, {
        type: 'area',
        step: true,
        lineWidth: 0,
        name: 'Long',
        data: [],
        yAxis: 2
    }, {
        type: 'area',
        step: true,
        lineWidth: 0,
        name: 'Short',
        data: [],
        yAxis: 2
    }, {
        type: 'line',
        step: true,
        color: '#5b4b00',
        name: 'Asset',
        data: [],
        yAxis: 3
    }, {
        type: 'pie',
        innerSize: '70%',
        name: 'Random',
        data: [],
        center: ['3%', '6%'],
        size: '15%',
        dataLabels: {
            enabled: false
        },
        startAngle: -90,
        endAngle: 90,
    }],
};            

function main() {
    let c = Chart(chartCfg);
    let preTicker = null;
    while (true) {
        let t = exchange.GetTicker();
        
        c.add(0, [t.Time, t.Last]); // PnL
        c.add(1, [t.Time, preTicker ? t.Last - preTicker.Last : 0]); // profit
        let r = Math.random();
        var pos = parseInt(t.Time/86400);
        c.add(2, [t.Time, pos/2]); // Vol
        c.add(3, [t.Time, r > 0.8 ? pos : null]); // Long
        c.add(4, [t.Time, r < 0.8 ? -pos : null]); // Short
        c.add(5, [t.Time, Math.random() * 100]); // Asset
        // update pie
        chartCfg.series[chartCfg.series.length-1].data = [
            ["A", Math.random()*100],
            ["B", Math.random()*100],
         ];
        c.update(chartCfg)
        preTicker = t;
    }
}
'''backtest
start: 2020-03-11 00:00:00
end: 2020-04-09 23:59:00
period: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''            

import random            

chartCfg = {
    "subtitle": {
        "text": "subtitle"
    },
    "yAxis": [{
        "height": "40%",
        "lineWidth": 2,
        "title": {
            "text": 'PnL'
        },
        "tickPixelInterval": 20,
        "minorGridLineWidth": 1,
        "minorTickWidth": 0,
        "opposite": True,
        "labels": {
            "align": "right",
            "x": -3
        }
    }, {
        "title": {
            "text": 'Profit'
        },
        "top": "42%",
        "height": "18%",
        "offset": 0,
        "lineWidth": 2
    }, {
        "title": {
            "text": 'Vol'
        },
        "top": '62%',
        "height": '18%',
        "offset": 0,
        "lineWidth": 2
    }, {
        "title": {
            "text": 'Asset'
        },
        "top": '82%',
        "height": '18%',
        "offset": 0,
        "lineWidth": 2
    }],
    "series": [{
        "name": 'PnL',
        "data": [],
        "id": 'primary',
        "tooltip": {
            "xDateFormat": '%Y-%m-%d %H:%M:%S'
        },
        "yAxis": 0
    }, {
        "type": 'column',
        "lineWidth": 2,
        "name": 'Profit',
        "data": [],
        "yAxis": 1
    }, {
        "type": 'column',
        "name": 'Trade',
        "data": [],
        "yAxis": 2
    }, {
        "type": 'area',
        "step": True,
        "lineWidth": 0,
        "name": 'Long',
        "data": [],
        "yAxis": 2
    }, {
        "type": 'area',
        "step": True,
        "lineWidth": 0,
        "name": 'Short',
        "data": [],
        "yAxis": 2
    }, {
        "type": 'line',
        "step": True,
        "color": '#5b4b00',
        "name": 'Asset',
        "data": [],
        "yAxis": 3
    }, {
        "type": 'pie',
        "innerSize": '70%',
        "name": 'Random',
        "data": [],
        "center": ['3%', '6%'],
        "size": '15%',
        "dataLabels": {
            "enabled": False
        },
        "startAngle": -90,
        "endAngle": 90
    }]
}            

def main():
    c = Chart(chartCfg)
    preTicker = None
    while True:
        t = exchange.GetTicker()
        c.add(0, [t["Time"], t["Last"]])
        profit = t["Last"] - preTicker["Last"] if preTicker else 0
        c.add(1, [t["Time"], profit])
        r = random.random()
        pos = t["Time"] / 86400
        c.add(2, [t["Time"], pos / 2])
        long = pos if r > 0.8 else None
        c.add(3, [t["Time"], long])
        short = -pos if r < 0.8 else None
        c.add(4, [t["Time"], short])
        c.add(5, [t["Time"], random.random() * 100])            

        # update pie
        chartCfg["series"][len(chartCfg["series"]) - 1]["data"] = [
            ["A", random.random() * 100], 
            ["B", random.random() * 100]
        ]
        c.update(chartCfg)
        preTicker = t
/*backtest
start: 2020-03-11 00:00:00
end: 2020-04-09 23:59:00
period: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/            

void main() {
    json chartCfg = R"({
        "subtitle": {
            "text": "subtitle"
        },
        "yAxis": [{
            "height": "40%",
            "lineWidth": 2,
            "title": {
                "text": "PnL"
            },
            "tickPixelInterval": 20,
            "minorGridLineWidth": 1,
            "minorTickWidth": 0,
            "opposite": true,
            "labels": {
                "align": "right",
                "x": -3
            }
        }, {
            "title": {
                "text": "Profit"
            },
            "top": "42%",
            "height": "18%",
            "offset": 0,
            "lineWidth": 2
        }, {
            "title": {
                "text": "Vol"
            },
            "top": "62%",
            "height": "18%",
            "offset": 0,
            "lineWidth": 2
        }, {
            "title": {
                "text": "Asset"
            },
            "top": "82%",
            "height": "18%",
            "offset": 0,
            "lineWidth": 2
        }],
        "series": [{
            "name": "PnL",
            "data": [],
            "id": "primary",
            "tooltip": {
                "xDateFormat": "%Y-%m-%d %H:%M:%S"
            },
            "yAxis": 0
        }, {
            "type": "column",
            "lineWidth": 2,
            "name": "Profit",
            "data": [],
            "yAxis": 1
        }, {
            "type": "column",
            "name": "Trade",
            "data": [],
            "yAxis": 2
        }, {
            "type": "area",
            "step": true,
            "lineWidth": 0,
            "name": "Long",
            "data": [],
            "yAxis": 2
        }, {
            "type": "area",
            "step": true,
            "lineWidth": 0,
            "name": "Short",
            "data": [],
            "yAxis": 2
        }, {
            "type": "line",
            "step": true,
            "color": "#5b4b00",
            "name": "Asset",
            "data": [],
            "yAxis": 3
        }, {
            "type": "pie",
            "innerSize": "70%",
            "name": "Random",
            "data": [],
            "center": ["3%", "6%"],
            "size": "15%",
            "dataLabels": {
                "enabled": false
            },
            "startAngle": -90,
            "endAngle": 90
        }]
    })"_json;
    
    Chart c = Chart(chartCfg);
    Ticker preTicker;
    while(true) {
        auto t = exchange.GetTicker();
        c.add(0, {t.Time, t.Last});
        auto profit = preTicker.Valid ? t.Last - preTicker.Last : 0;
        c.add(1, {t.Time, profit});    
        auto r = rand() % 100;
        auto pos = t.Time / 86400.0;
        c.add(2, {t.Time, pos / 2.0});
        auto longPos = r > 0.8 ? pos : NULL;
        c.add(3, {t.Time, longPos});
        auto shortPos = r < 0.8 ? -pos : NULL;
        c.add(4, {t.Time, shortPos});
        c.add(5, {t.Time, rand() % 100});
        
        // update pie 
        json pie = R"([["A", 0], ["B", 0]])"_json;
        pie[0][1] = rand() % 100;
        pie[1][1] = rand() % 100;
        chartCfg["series"][chartCfg["series"].size() - 1]["data"] = pie;
        
        c.update(chartCfg);
        preTicker = t;
    }
}            

হাইব্রিড চার্ট ব্যবহারের জটিল উদাহরণঃ

// update pie
chartCfg.series[chartCfg.series.length-1].data = [
    ["A", Math.random()*100],
    ["B", Math.random()*100],
];
c.update(chartCfg)
# update pie
chartCfg["series"][len(chartCfg["series"]) - 1]["data"] = [
    ["A", random.random() * 100], 
    ["B", random.random() * 100]
]
c.update(chartCfg)
// update pie 
json pie = R"([["A", 0], ["B", 0]])"_json;
pie[0][1] = rand() % 100;
pie[1][1] = rand() % 100;
chartCfg["series"][chartCfg["series"].size() - 1]["data"] = pie;
c.update(chartCfg);

টাইপ চার্টpieউদাহরণস্বরূপ উপরের উদাহরণে কোডটি ব্যবহার করে চার্ট আপডেট করেc.update(chartCfg)তথ্য আপডেট করার পর, নিম্নরূপঃ

দ্যChart()ফাংশন একটি চার্ট অবজেক্ট রিটার্ন করে যার 4 টি পদ্ধতি রয়েছেঃadd(), reset(), update(), del().

    1. দ্যupdate()পদ্ধতিঃ দ্যupdate()পদ্ধতি চার্ট কনফিগারেশন তথ্য আপডেট করতে পারেন. এই পদ্ধতির পরামিতি চার্ট কনফিগারেশন বস্তু (JSON) হয়.
    1. দ্যdel()পদ্ধতিঃ দ্যdel()পদ্ধতিটি পাস করা সিরিজের পরামিতির উপর ভিত্তি করে নির্দিষ্ট সূচকের ডেটা সিরিজ মুছে ফেলতে পারে।
    1. দ্যadd()পদ্ধতিঃ দ্যadd()পদ্ধতিটি নিম্নলিখিত পরামিতিগুলির সাথে চার্টে ডেটা লিখতে পারেঃ
    • series: ডেটা সিরিজের সূচক সেট করতে ব্যবহৃত হয়, যা একটি পূর্ণসংখ্যা।
    • data: লিখতে হবে এমন নির্দিষ্ট ডেটা সেট করতে ব্যবহৃত হয়, এটি একটি অ্যারে।
    • index(ঐচ্ছিক): ডাটা ইন্ডেক্স সেট করতে ব্যবহৃত হয়, এটি একটি পূর্ণসংখ্যা। পরিবর্তিত ডেটার নির্দিষ্ট সূচক অবস্থান নির্দিষ্ট করুন এবং এটি নেতিবাচক সংখ্যা সমর্থন করে, সেটিংটি হল-1এটি ডেটা সেটের শেষ তথ্যকে বোঝায়। উদাহরণস্বরূপ, একটি রেখা অঙ্কন করার সময়, রেখার শেষ বিন্দুতে তথ্য পরিবর্তন করুনঃchart.add(0, [1574993606000, 13.5], -1), অর্থাৎ, চার্টের প্রথম পয়েন্টে তথ্য পরিবর্তনseries[0].data. দ্যindexপ্যারামিটারটি সেট করা নেই, যার মানে বর্তমান ডেটা সিরিজের শেষ বিন্দুতে তথ্য যোগ করা হয়।
    1. দ্যreset()পদ্ধতিঃ দ্যreset()চার্ট তথ্য খালি করার জন্য পদ্ধতি ব্যবহার করা হয়।reset()পদ্ধতি একটি পরামিতি নিতে পারেনremainসংরক্ষণ করার জন্য এন্ট্রি সংখ্যা নির্দিষ্ট করতে. কোন পরামিতিremainসমস্ত তথ্য মুছে ফেলার জন্য পাস করা হয়।

{@fun/Log/KLineChart KLineChart}

KLineChart

ফাংশনটি কৌশল রানটাইমে কাস্টম অঙ্কন করার জন্য ব্যবহৃত হয়Pine language.

চার্ট অবজেক্ট.KLineChart()ফাংশন বিভিন্ন পদ্ধতির সাথে একটি চার্ট বস্তু ফেরত দেয়, যার মধ্যে আপনাকে মনোযোগ দিতে হবেbegin()এবংclose(). অঙ্কন অপারেশন একটিbegin()ফাংশন কল এবং একটি সঙ্গে শেষclose()অঙ্কন অপারেশন সম্পাদন করার জন্য KLine ডেটা অতিক্রম করার সময় ফাংশন কল। বস্তু

KLineChart (বিকল্প)

দ্যoptionsপ্যারামিটার হল চার্ট কনফিগারেশন। বিকল্প সত্য বস্তু, বস্তু অ্যারে

function main() {
    // Call the KLineChart function to create a chart control object c
    let c = KLineChart({
        overlay: true
    })            

    // Use the Spot Exchange object test to get K-line data. If you use the futures exchange object test, you need to set up the contract first.
    let bars = exchange.GetRecords()
    if (!bars) {
        return
    }            
    
    // Execute the drawing operation by traversing over the K-line data. The drawing operation must start with the ```c.begin(bar)``` function call and end with the ```c.close()``` function call.
    bars.forEach(function(bar, index) {
        c.begin(bar)
        c.barcolor(bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(0, 0, 0, 0.2)')
        if (bar.Close > bar.Open) {
            c.bgcolor('rgba(0, 255, 0, 0.5)')
        }
        let h = c.plot(bar.High, 'high')
        let l = c.plot(bar.Low, 'low')            

        c.fill(h, l, {
            color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0.2)'
        })
        c.hline(bar.High)
        c.plotarrow(bar.Close - bar.Open)
        c.plotshape(bar.Low, {
            style: 'diamond'
        })
        c.plotchar(bar.Close, {
            char: 'X'
        })
        c.plotcandle(bar.Open*0.9, bar.High*0.9, bar.Low*0.9, bar.Close*0.9)
        if (bar.Close > bar.Open) {
            // long/short/closelong/closeshort
            c.signal("long", bar.High, 1.5)
        } else if (bar.Close < bar.Open) {
            c.signal("closelong", bar.Low, 1.5)
        }
        c.close()
    })
}
def main():
    # Call the KLineChart function to create a chart control object c
    c = KLineChart({
        "overlay": True
    })            

    # Use the Spot Exchange object test to get K-line data. If you use the futures exchange object test, you need to set up the contract first.
    bars = exchange.GetRecords()
    if not bars:
        return            

    for bar in bars:
        c.begin(bar)
        c.barcolor('rgba(255, 0, 0, 0.2)' if bar.Close > bar.Open else 'rgba(0, 0, 0, 0.2)')
        if bar.Close > bar.Open:
            c.bgcolor('rgba(0, 255, 0, 0.5)')            

        h = c.plot(bar.High, 'high')
        l = c.plot(bar.Low, 'low')            

        c.fill(h, l, 'rgba(255, 0, 0, 0.2)' if bar.Close > bar.Open else 'rgba(255, 0, 0, 0.2)')
        c.hline(bar.High)
        c.plotarrow(bar.Close - bar.Open)        
        c.plotshape(bar.Low, style = 'diamond')
        c.plotchar(bar.Close, char = 'X')
        c.plotcandle(bar.Open*0.9, bar.High*0.9, bar.Low*0.9, bar.Close*0.9)
        if bar.Close > bar.Open:
            # long/short/closelong/closeshort
            c.signal("long", bar.High, 1.5)
        elif bar.Close < bar.Open:
            c.signal("closelong", bar.Low, 1.5)            

        c.close()
// Not supported for now

যদি চার্ট কন্ট্রোল অবজেক্ট কৌশল কাস্টম অঙ্কন এলাকায় আঁকা প্রয়োজন হয়, ব্যবহার করুনKLineChart()ফাংশন বস্তু তৈরি করতে.KLineChart()ফাংশন একটি চার্ট কনফিগারেশন কাঠামো, রেফারেন্স কোডে ব্যবহৃত সহজঃ{overlay: true}. এই চার্ট কনফিগারেশন কাঠামো শুধুমাত্র প্রধান চার্টে আউটপুট আঁকা বিষয়বস্তু সেট করে.overlayএকটি মিথ্যা মান সেট করা হয়, যেমনfalse, চার্টের বিষয়বস্তু সেকেন্ডারি চার্টে আউটপুট হয়. আপনি প্রধান চার্টে আঁকা একটি অঙ্কন ফাংশন নির্দিষ্ট করতে হবে, আপনি প্যারামিটার উল্লেখ করতে পারেনoverlayএকটি নির্দিষ্ট ফাংশন কল একটি সত্য মান হিসাবে, উদাহরণস্বরূপঃtrue.

c.barcolor(bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(0, 0, 0, 0.2)')   // Use the example illustrated in the reference code in this example, without further ado
c.barcolor('rgba(255, 0, 0, 0.2)' if bar.Close > bar.Open else 'rgba(0, 0, 0, 0.2)')
//  Not supported for now

অঙ্কন ইন্টারফেস ফাংশনPineঅঙ্কন অপারেশনে সমর্থিত ভাষা হলঃbarcolor, যা কে-লাইন রঙ নির্ধারণ করে।

barcolor ((color, offset, editable, show_last, title, display) প্রদর্শন পরামিতি ঐচ্ছিকঃ none, all

c.bgcolor('rgba(0, 255, 0, 0.5)')
c.bgcolor('rgba(0, 255, 0, 0.5)')
// Not supported for now

bgcolor, নির্দিষ্ট রঙের সাথে কে-লাইনের পটভূমি পূরণ করে।

bgcolor ((color, offset, editable, show_last, title, display, overlay) প্রদর্শন পরামিতি ঐচ্ছিকঃ none, all

c.plot(bar.High, 'high')
c.plot(bar.Open < bar.Close ? NaN : bar.Close, "Close", {style: "linebr"})  // Support for drawing discontinuous data lines
h = c.plot(bar.High, 'high')
h = c.plot(None if bar.Open < bar.Close else bar.Close, "Close", style = "linebr")  # Support for drawing discontinuous data lines
// Not supported for now

plot, একটি চার্টে তথ্যের একটি সিরিজ প্লট করুন।

plot ((সিরিজ, শিরোনাম, রঙ, লাইনউইথ, স্টাইল, ট্র্যাকপ্রিস, হিস্টবেস, অফসেট, যোগদান, সম্পাদনাযোগ্য, শো_লস্ট, প্রদর্শন) শৈলী পরামিতি ঐচ্ছিকঃ stepline_diamond, stepline, cross, areabr, area, circles, columns, histogram, linebr, line প্রদর্শন পরামিতি ঐচ্ছিকঃ none, all

let h = c.plot(bar.High, 'high')
let l = c.plot(bar.Low, 'low')

c.fill(h, l, {color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0.2)'})
h = c.plot(bar.High, 'high')
l = c.plot(bar.Low, 'low')

c.fill(h, l, color = 'rgba(255, 0, 0, 0.2)' if bar.Close > bar.Open else 'rgba(255, 0, 0, 0.2)'})
// Not supported for now

fill, দুই প্লট মধ্যে পটভূমি পূরণ বাhlineপ্রদত্ত রং দিয়ে।

fill ((line1, hline2, রঙ, শিরোনাম, সম্পাদনাযোগ্য, fillgaps, প্রদর্শন) প্রদর্শন পরামিতি ঐচ্ছিকঃ none, all

যেহেতুJavaScriptভাষা ফাংশন আনুষ্ঠানিক পরামিতি নামের উপর ভিত্তি করে ইনকামিং পরামিতি নির্দিষ্ট করতে পারবেন না, এই সমস্যা সমাধানের জন্য, আপনি একটি ব্যবহার করতে পারেন{key: value}একটি নির্দিষ্ট আনুষ্ঠানিক প্যারামিটার নাম পাস করা হবে প্যারামিটার নির্দিষ্ট করার জন্য কাঠামো। উদাহরণস্বরূপ, রেফারেন্স কোড ব্যবহার করে{color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0, 0.2)'}নির্দিষ্ট করেcolorপ্যারামিটারfillফাংশন যদি আপনি ধারাবাহিক ফর্ম প্যারামিটার নাম সঙ্গে একাধিক পরামিতি উল্লেখ করতে হবে, আপনি ব্যবহার করতে পারেন{key1: value1, key2: value2, key3: value3}. উদাহরণস্বরূপ, এই উদাহরণে, একটি অতিরিক্তtitleপ্যারামিটার উল্লেখ করা হয়েছেঃ{color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0, 0.2)', title: 'fill'}. রঙ মান জন্য, আপনি এটি সেট করতে পারেন'rgba(255, 0, 0, 0, 0.2)'অথবা'#FF0000'.

c.hline(bar.High)
c.hline(bar.High)
// Not supported for now

hline, অনুভূমিক রেখাটি একটি নির্দিষ্ট স্থির মূল্য স্তরে উপস্থাপন করা হয়।

hline ((মূল্য, শিরোনাম, রঙ, লাইন স্টাইল, লাইন প্রস্থ, সম্পাদনাযোগ্য, প্রদর্শন) লাইনস্টাইল পরামিতি ঐচ্ছিকঃ ড্যাশড, ডটড, সলিড প্রদর্শন পরামিতি ঐচ্ছিকঃ none, all

c.plotarrow(bar.Close - bar.Open)
c.plotarrow(bar.Close - bar.Open)
// Not supported for now

plotarrow, চার্টে উপরের এবং নীচের তীরগুলি অঙ্কন করুন।

প্লোটারো ((সিরিজ, শিরোনাম, রঙ আপ, রঙ ডাউন, অফসেট, মিনহাইট, ম্যাক্সহাইট, সম্পাদনাযোগ্য, দেখান_শেষ, প্রদর্শন) প্রদর্শন পরামিতি ঐচ্ছিকঃ none, all

c.plotshape(bar.Low, {style: 'diamond'})
c.plotshape(bar.Low, style = 'diamond')
// Not supported for now

plotshape, চার্টে ভিজ্যুয়াল আকার আঁকা।

plotshape ((সিরিজ, শিরোনাম, স্টাইল, অবস্থান, রঙ, অফসেট, পাঠ্য, textcolor, সম্পাদনাযোগ্য, আকার, show_last, প্রদর্শন) শৈলী পরামিতি ঐচ্ছিকঃ diamond, square, label_down, label_up, arrow_down, arrow_up, circle, flag, triangle_down, triangle_up, cross, xcross অবস্থানের পরামিতি ঐচ্ছিকঃ উপরের বার, নিচের বার, উপরে, নিচে, নিঃসন্দেহে আকারের পরামিতিগুলি ঐচ্ছিকঃ 10px, 14px, 20px, 40px, 80px, পাইন ভাষায় size.tiny, size.small, size.normal, size.large, size.huge এর তুলনা করে।size.autoআকার ছোট। প্রদর্শন পরামিতি ঐচ্ছিকঃ none, all

c.plotchar(bar.Close, {char: 'X'})
c.plotchar(bar.Close, char = 'X')
// Not supported for now

plotchar, কোন নির্দিষ্ট ইউনিকোড অক্ষর ব্যবহার করে চার্টে ভিজ্যুয়াল আকার আঁকা।

plotchar ((সিরিজ, শিরোনাম, char, অবস্থান, রঙ, অফসেট, টেক্সট, টেক্সট রঙ, সম্পাদনাযোগ্য, আকার, show_last, প্রদর্শন) অবস্থান পরামিতি ঐচ্ছিকঃ উপরের বার, নিচের বার, উপরে, নীচে, নিঃসন্দেহে আকারের পরামিতিগুলি ঐচ্ছিকঃ 10px, 14px, 20px, 40px, 80px, পাইন ভাষায় size.tiny, size.small, size.normal, size.large, size.huge এর তুলনা করে।size.autoআকার ছোট। প্রদর্শন পরামিতি ঐচ্ছিকঃ none, all

c.plotcandle(bar.Open*0.9, bar.High*0.9, bar.Low*0.9, bar.Close*0.9)
c.plotcandle(bar.Open*0.9, bar.High*0.9, bar.Low*0.9, bar.Close*0.9)
// Not supported for now

plotcandle, একটি চার্টে একটি কে-লাইন চার্ট প্লট করুন।

plotcandle ((open, high, low, close, title, color, wickcolor, editable, show_last, bordercolor, display) প্রদর্শন পরামিতি ঐচ্ছিকঃ none, all

c.signal("long", bar.High, 1.5)
c.signal("long", bar.High, 1.5)
// Not supported for now

signal, একটি ফাংশন পাইন ভাষায় পাওয়া যায় না, এখানে কিনতে এবং বিক্রয় সংকেত আঁকা ব্যবহার করা হয়।

সিগন্যাল ((দিক, মূল্য, qty, id) long প্যারামিটার long লেনদেনের দিক নির্দেশ করতে পাস করা হয়, আপনি long, closelong, short, closeshort নির্বাচন করতে পারেন। প্যারামিটারbar.Highহ'ল মার্কার সিগন্যালের Y- অক্ষের অবস্থান। পাস করা প্যারামিটার 1.5 সিগন্যালের লেনদেনের সংখ্যা নির্দেশ করে। চতুর্থ প্যারামিটারটি অঙ্কিত ডিফল্ট পাঠ্য সামগ্রী প্রতিস্থাপনের জন্য পাস করা যেতে পারে এবং অঙ্কিত সিগন্যাল মার্কারের ডিফল্ট পাঠ্যটি লেনদেনের দিক, উদাহরণস্বরূপ closelong

c.reset()
c.reset()
// Not supported for now

reset, একটি ফাংশন পাইন ভাষায় পাওয়া যায় না, চার্ট ডেটা খালি করতে ব্যবহৃত হয়।

পুনরায় সেট করুন (অবশিষ্ট) দ্যreset()পদ্ধতিটি একটি প্যারামিটার নিতে পারে,remain, সংরক্ষণ করা তথ্যের সংখ্যা নির্দিষ্ট করতে।remainমানে সব ডাটা সাফ করা।

কৌশল কাস্টম অঙ্কন শুধুমাত্র উপায় এক ব্যবহার করতে পারেনKLineChart()ফাংশন বাChart()ফাংশন. কিছু রঙ এবং শৈলী সেটিংস ব্যবহার করা হয়KLineChart()ফাংশন কল, দয়া করে পড়ুনকৌশল অঙ্কন নকশা সহজ করতে KLineChart ফাংশন ব্যবহার করুন.

{@fun/Log/Chart Chart} {@fun/Log/Chart Chart} {@fun/Log/Chart Chart}

লগ রিসেট

লোগ পরিষ্কার করো।

লগ রিসেট ((অবশিষ্ট)

দ্যremainপ্যারামিটারটি ব্যবহার করা হয় সাম্প্রতিক লগ এন্ট্রিগুলির সংখ্যা সেট করার জন্য। থাকুন মিথ্যা সংখ্যা

function main() {
    // Keep the last 10 logs and clear the rest
    LogReset(10)     
}
def main():
    LogReset(10)
void main() {
    LogReset(10);
}

কৌশল লাইভ ট্রেডিং প্রতিটি শুরু জন্য স্টার্টআপ লগ এক হিসাবে গণনা করা হয়, তাই যদি কোন পরামিতি পাস করা হয় এবং কৌশল শুরুতে কোন লগ আউটপুট নেই, কোন লগ প্রদর্শিত হবে না, ডকার লগ ফিরে আসা পর্যন্ত অপেক্ষা (কোন ব্যতিক্রম নয়) ।

{@fun/Log Log}, {@fun/Log/Log ভ্যাকুয়াম লগ ভ্যাকুয়াম}

লগভ্যাকুয়াম

ব্যবহার করা হয় স্টোরেজ স্পেস দখল পুনরুদ্ধারের জন্যএসকিউএলাইটডাটা ডায়াল করার পরLogReset()লগ পরিষ্কার করার জন্য ফাংশন.

LogVacuum ((()

function main() {
    LogReset()
    LogVacuum()
}
def main():
    LogReset()
    LogVacuum()
void main() {
    LogReset()
    LogVacuum()
}

কারণটা হচ্ছেSQLiteতথ্য মুছে ফেলার সময় দখল করা স্থান পুনরুদ্ধার করে না, এবং এটি চালানো প্রয়োজনVACUUMফাইল সরান অপারেশন এই ফাংশন কল করা হয় যখন ঘটে, এবং বিলম্ব বড়, তাই এটি একটি উপযুক্ত সময় ব্যবধানে কল করার পরামর্শ দেওয়া হয়।

{@fun/Log/LogReset লগ রিসেট}

console.log

এটি লাইভ ট্রেডিং পৃষ্ঠার debug information কলামে ডিবাগিং তথ্য আউটপুট করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, যদি লাইভ ট্রেডিং আইডি হয়123456,console.logফাংশন আউটপুট লাইভ ট্রেডিং পৃষ্ঠায় ডিবাগিং তথ্য, এবং একই সময়ে, এক্সটেনশন সঙ্গে একটি লগ ফাইল তৈরি.logএবং ডিবাগিং তথ্য লিখুন/logs/storage/123456/ডকারের ডিরেক্টরিতে যেখানে লাইভ ট্রেডিং রয়েছে, ফাইলের নামের উপসর্গ দিয়েstdout_.

কনসোল.লগ ((...msgs)

প্যারামিটারmsgআউটপুট এর বিষয়বস্তু, এবং পরামিতিmsgএকের বেশি পাস হতে পারে। মেসেজ মিথ্যা string, number, bool, object, array, null এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য টাইপ।

function main() {
    console.log("test console.log")
}
# Not supported
// Not supported
  • শুধুমাত্রJavaScriptভাষা এই ফাংশন সমর্থন করে।
  • এই ফাংশন শুধুমাত্র লাইভ ট্রেডিং দ্বারা সমর্থিত, কিন্তু Debugging Tools বা Backtesting System দ্বারা নয়।
  • একটি বস্তুর আউটপুট স্ট্রিং রূপান্তরিত হয়[object Object], তাই যতটা সম্ভব পাঠযোগ্য তথ্য আউটপুট করার চেষ্টা করুন।

{@fun/Log/console.error কনসোল.error}

console.error

লাইভ ট্রেডিং পৃষ্ঠার Debug message ক্ষেত্রের ত্রুটি আউটপুট জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, যদি লাইভ ট্রেডিং আইডি হয়123456,console.errorফাংশন এক্সটেনশান সহ একটি লগ ফাইল তৈরি করে.logমধ্যে/logs/storage/123456/ডকার যেখানে লাইভ ট্রেডিং অন্তর্গত ডিরেক্টরি, এবং উপসর্গ সঙ্গে ত্রুটি আউটপুট লিখেছেনstderr_.

কনসোল. ত্রুটি ((...msgs)

প্যারামিটারmsgআউটপুট এর বিষয়বস্তু, এবং পরামিতিmsgএকের বেশি পাস হতে পারে। মেসেজ মিথ্যা string, number, bool, object, array, null এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য টাইপ।

function main() {
    console.error("test console.error")
}
# Not supported
// Not supported
  • শুধুমাত্রJavaScriptভাষা এই ফাংশন সমর্থন করে।
  • এই ফাংশন শুধুমাত্র লাইভ ট্রেডিং দ্বারা সমর্থিত, কিন্তু Debugging Tools বা Backtesting System দ্বারা নয়।
  • একটি বস্তুর আউটপুট স্ট্রিং রূপান্তরিত হয়[object Object], তাই যতটা সম্ভব পাঠযোগ্য তথ্য আউটপুট করার চেষ্টা করুন।

{@fun/Log/console.log কনসোল.log}

বাজার

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}

বাণিজ্য

exchange.Buy

দ্যexchange.Buy()এই ফাংশনটি ক্রয় অর্ডার দেওয়ার জন্য ব্যবহৃত হয়।Buy()ফাংশনটি এক্সচেঞ্জ অবজেক্ট {@var/EXCHANGE exchange} এর সদস্য ফাংশন।Buy()ফাংশন বিনিময় বস্তুর সাথে সংযুক্ত বিনিময় অ্যাকাউন্টে কাজ করেexchange. সদস্যদের কার্যাবলীর উদ্দেশ্য (পদ্ধতি)exchangeবস্তুর শুধুমাত্র সম্পর্কিত হয়exchange, এবং ডকুমেন্টেশন পরে এটি পুনরাবৃত্তি করা হবে না।

একটি সফল অর্ডার অর্ডার আইডি প্রদান করে, একটি ব্যর্থ অর্ডার একটি শূন্য মান প্রদান করে। বৈশিষ্ট্যIdঅর্ডার {@struct/Order Order} FMZ প্ল্যাটফর্মের কাঠামো এক্সচেঞ্জ পণ্য কোড এবং এক্সচেঞ্জ মূল অর্ডার আইডি, ইংরেজি কমা দ্বারা পৃথক গঠিত। উদাহরণস্বরূপ, বৈশিষ্ট্যIdস্পট ট্রেডিং জোড়ার বিন্যাসETH_USDTOKX এক্সচেঞ্জের অর্ডার হলঃETH-USDT,1547130415509278720. যখন কলexchange.Buy()একটি অর্ডার স্থাপন করার ফাংশন, রিটার্ন মান অর্ডারIdএর সাথে সামঞ্জস্যপূর্ণIdঅর্ডার {@struct/Order Order} কাঠামোর বৈশিষ্ট্য।

স্ট্রিং, null মান

বিনিময়. কেনা ((দাম, পরিমাণ) বিনিময়. কেনা ((দাম, পরিমাণ,...args)

দ্যpriceপ্যারামিটারটি অর্ডার মূল্য নির্ধারণ করতে ব্যবহৃত হয়। দাম সত্য সংখ্যা দ্যamountঅর্ডার পরিমাণ সেট করতে প্যারামিটার ব্যবহার করা হয়। পরিমাণ সত্য সংখ্যা বর্ধিত পরামিতি যা এই অর্ডার লগের সাথে তথ্য আউটপুট করতে পারে,argপ্যারামিটার একের বেশি পাস করা যেতে পারে। আরজি মিথ্যা string, number, bool, object, array, null এবং সিস্টেম দ্বারা সমর্থিত অন্য যেকোনো টাইপ

function main() {
    var id = exchange.Buy(100, 1);
    Log("id:", id);
}
def main():
    id = exchange.Buy(100, 1)
    Log("id:", id)
void main() {
    auto id = exchange.Buy(100, 1);
    Log("id:", id);
}

দ্বারা ফেরত অর্ডার নম্বরexchange.Buy()অর্ডার তথ্য অনুসন্ধান এবং অর্ডার বাতিল করতে ব্যবহার করা যেতে পারে।

// The following is an error call
function main() {
    exchange.SetContractType("quarter")
  
    // Set the shorting direction
    exchange.SetDirection("sell")     
    // If you place a buy order, an error will be reported, and shorting can only be sold
    var id = exchange.Buy(50, 1)

    // Set the long direction
    exchange.SetDirection("buy")      
    // If you place a sell order, it will report an error, go long, only buy
    var id2 = exchange.Sell(60, 1)    
  
    // Set direction to close long positions
    exchange.SetDirection("closebuy")    
    // If you place a buy order, it will report an error, close long, only sell
    var id3 = exchange.Buy(-1, 1)        
  
    // Set direction to close short positions
    exchange.SetDirection("closesell")   
    // If you place a sell order, it will report an error, close short, only buy
    var id4 = exchange.Sell(-1, 1)       
}
# The following is an error call
def main():
    exchange.SetContractType("quarter")
    exchange.SetDirection("sell")
    id = exchange.Buy(50, 1)
    exchange.SetDirection("buy")
    id2 = exchange.Sell(60, 1)
    exchange.SetDirection("closebuy")
    id3 = exchange.Buy(-1, 1)
    exchange.SetDirection("closesell")
    id4 = exchange.Sell(-1, 1)
// The following is an error call
void main() {
    exchange.SetContractType("quarter");
    exchange.SetDirection("sell");
    auto id = exchange.Buy(50, 1);
    exchange.SetDirection("buy");
    auto id2 = exchange.Sell(60, 1);
    exchange.SetDirection("closebuy");
    auto id3 = exchange.Buy(-1, 1);
    exchange.SetDirection("closesell");
    auto id4 = exchange.Sell(-1, 1);
}

ক্রিপ্টোকারেন্সি ফিউচার চুক্তির জন্য অর্ডার দেওয়ার সময়, এটি নিশ্চিত করার জন্য যত্ন নেওয়া উচিত যে ট্রেডিং দিকটি সঠিকভাবে সেট করা হয়েছে, কারণ ট্রেডিং দিক এবং ট্রেডিং ফাংশনের মধ্যে একটি অসঙ্গতি একটি ত্রুটির ফলে হবেঃ

direction is sell, invalid order type Buy
direction is buy, invalid order type Sell
direction is closebuy, invalid order type Buy
direction is closesell, invalid order type Sell
// For example, the trading pair: ETH_BTC, place a buy order at the market price
function main() {
    // Place a buy order at the market price and buy ETH coins with a value of 0.1 BTC (denominated currency)
    exchange.Buy(-1, 0.1)    
}
def main():
    exchange.Buy(-1, 0.1)
void main() {
    exchange.Buy(-1, 0.1);
}

স্পট মার্কেট অর্ডার।

ফিউচার কন্ট্রাক্টের জন্য অর্ডার দেওয়ার সময়, আপনাকে অবশ্যই মনোযোগ দিতে হবে যে ট্রেডিং দিকটি সঠিকভাবে সেট করা আছে কিনা, কারণ ট্রেডিং দিক এবং ট্রেড ফাংশনটি মিলে না থাকলে একটি ত্রুটি রিপোর্ট করা হবে। ক্রিপ্টোকারেন্সি ফিউচার কন্ট্রাক্টগুলির জন্য অর্ডার আকারটি চুক্তির সংখ্যা যদি নির্দিষ্ট না হয়। প্যারামিটারpriceসেট করা আছে-1মার্কেট অর্ডার দেওয়ার জন্য, যার জন্য এক্সচেঞ্জের অর্ডার প্লেসমেন্ট ইন্টারফেসকে মার্কেট অর্ডার সমর্থন করতে হয়। ক্রিপ্টোকারেন্সি স্পট চুক্তির জন্য মার্কেট অর্ডার দেওয়ার সময়, প্যারামিটারটিamountঅর্ডারের মুদ্রায় অর্থের পরিমাণ। ক্রিপ্টোকারেন্সি ফিউচার চুক্তির জন্য বাজার অর্ডার স্থাপন করার সময়, পরিমাণ পরামিতিamountহল চুক্তির সংখ্যা। কিছু ক্রিপ্টোকারেন্সি এক্সচেঞ্জ রয়েছে যা লাইভ ট্রেডিংয়ের সময় মার্কেট অর্ডার ইন্টারফেস সমর্থন করে না। কিছু স্পট এক্সচেঞ্জে মার্কেট কেনার অর্ডারের অর্ডার পরিমাণ ট্রেডিং মুদ্রার সংখ্যা। দয়া করে পড়ুনবিনিময় সংক্রান্ত বিশেষ নির্দেশাবলীব্যবহারকারীর নির্দেশিকা বিস্তারিত জানার জন্য। যদি আপনি ডকারের একটি পুরোনো সংস্করণ ব্যবহার করছেন, অর্ডার রিটার্ন মানIdএরexchange.Buy()ফাংশন অর্ডার রিটার্ন মান থেকে ভিন্ন হতে পারেIdবর্তমান নথিতে বর্ণিত।

{@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetDirection exchange.SetDirection}

exchange.Sell

দ্যexchange.Sell()ফাংশনটি বিক্রয় অর্ডার দেওয়ার জন্য ব্যবহৃত হয়।

একটি সফল অর্ডার অর্ডার আইডি প্রদান করে, একটি ব্যর্থ অর্ডার একটি শূন্য মান প্রদান করে।Idঅর্ডার {@struct/Order Order} FMZ প্ল্যাটফর্মের কাঠামো এক্সচেঞ্জ পণ্য কোড এবং এক্সচেঞ্জ মূল অর্ডার আইডি, ইংরেজি কমা দ্বারা পৃথক গঠিত। উদাহরণস্বরূপ, বৈশিষ্ট্যIdস্পট ট্রেডিং জোড়ার বিন্যাসETH_USDTOKX এক্সচেঞ্জের অর্ডার হলঃETH-USDT,1547130415509278720. যখন কলexchange.Sell()একটি অর্ডার স্থাপন করার ফাংশন, রিটার্ন মান অর্ডারIdএর সাথে সামঞ্জস্যপূর্ণIdঅর্ডার {@struct/Order Order} কাঠামোর বৈশিষ্ট্য। স্ট্রিং, null মান

বিনিময়.বিক্রয় ((দাম, পরিমাণ) বিনিময়.বিক্রয় ((দাম, পরিমাণ,... args)

দ্যpriceপ্যারামিটারটি অর্ডার মূল্য নির্ধারণ করতে ব্যবহৃত হয়। দাম সত্য সংখ্যা দ্যamountঅর্ডার পরিমাণ সেট করতে প্যারামিটার ব্যবহার করা হয়। পরিমাণ সত্য সংখ্যা বর্ধিত পরামিতি যা এই অর্ডার লগের সাথে তথ্য আউটপুট করতে পারে,argপ্যারামিটার একের বেশি পাস করা যেতে পারে। আরজি মিথ্যা string, number, bool, object, array, null এবং সিস্টেম দ্বারা সমর্থিত অন্য যেকোনো টাইপ

function main(){
    var id = exchange.Sell(100, 1)
    Log("id:", id)
}
def main():
    id = exchange.Sell(100, 1)
    Log("id:", id)
void main() {
    auto id = exchange.Sell(100, 1);
    Log("id:", id);
}

দ্বারা ফেরত অর্ডার নম্বরexchange.Sell()অর্ডার তথ্য অনুসন্ধান এবং অর্ডার বাতিল করতে ব্যবহার করা যেতে পারে।

// The following is an error call
function main() {
    exchange.SetContractType("quarter")
  
    // Set the shorting direction
    exchange.SetDirection("sell")     
    // If you place a buy order, an error will be reported, and shorting can only be sold
    var id = exchange.Buy(50, 1)                  

    // Set the long direction
    exchange.SetDirection("buy")      
    // If you place a sell order, it will report an error, go long, only buy
    var id2 = exchange.Sell(60, 1)    
  
    // Set direction to close long positions
    exchange.SetDirection("closebuy")    
    // If you place a buy order, it will report an error, close long, only sell
    var id3 = exchange.Buy(-1, 1)        
  
    // Set direction to close short positions
    exchange.SetDirection("closesell")   
    // If you place a sell order, it will report an error, close short, only buy
    var id4 = exchange.Sell(-1, 1)       
}
# The following is an error call
def main():
    exchange.SetContractType("quarter")
    exchange.SetDirection("sell")
    id = exchange.Buy(50, 1)
    exchange.SetDirection("buy")
    id2 = exchange.Sell(60, 1)
    exchange.SetDirection("closebuy")
    id3 = exchange.Buy(-1, 1)
    exchange.SetDirection("closesell")
    id4 = exchange.Sell(-1, 1)
// The following is an error call
void main() {
    exchange.SetContractType("quarter");
    exchange.SetDirection("sell");
    auto id = exchange.Buy(50, 1);
    exchange.SetDirection("buy");
    auto id2 = exchange.Sell(60, 1);
    exchange.SetDirection("closebuy");
    auto id3 = exchange.Buy(-1, 1);
    exchange.SetDirection("closesell");
    auto id4 = exchange.Sell(-1, 1);
}

ক্রিপ্টোকারেন্সি ফিউচার চুক্তির জন্য অর্ডার দেওয়ার সময়, এটি নিশ্চিত করার জন্য যত্ন নেওয়া উচিত যে ট্রেডিং দিকটি সঠিকভাবে সেট করা হয়েছে, কারণ ট্রেডিং দিক এবং ট্রেডিং ফাংশনের মধ্যে একটি অসঙ্গতি একটি ত্রুটির ফলে হবেঃ

direction is sell, invalid order type Buy
direction is buy, invalid order type Sell
direction is closebuy, invalid order type Buy
direction is closesell, invalid order type Sell
// For example, the trading pair: ETH_BTC, place a sell order at the market price
function main() {
    // Note: place a market order to sell, sell 0.2 ETH
    exchange.Sell(-1, 0.2)   
}
def main():
    exchange.Sell(-1, 0.2)
void main() {
    exchange.Sell(-1, 0.2);
}

স্পট মার্কেট অর্ডার।

ফিউচার কন্ট্রাক্টের জন্য অর্ডার দেওয়ার সময়, আপনাকে অবশ্যই মনোযোগ দিতে হবে যে ট্রেডিং দিকটি সঠিকভাবে সেট করা আছে কিনা, কারণ ট্রেডিং দিক এবং ট্রেড ফাংশনটি মিলে না থাকলে একটি ত্রুটি রিপোর্ট করা হবে। ক্রিপ্টোকারেন্সি ফিউচার কন্ট্রাক্টের জন্য অর্ডার পরিমাণটি চুক্তির সংখ্যা যদি নির্দিষ্ট না হয়। প্যারামিটারpriceসেট করা আছে-1মার্কেট অর্ডার স্থাপনের জন্য, যার জন্য এক্সচেঞ্জের অর্ডার স্থাপনের ইন্টারফেসকে মার্কেট অর্ডার সমর্থন করতে হবে। ক্রিপ্টোকারেন্সি স্পট চুক্তির জন্য মার্কেট অর্ডার স্থাপনের সময়, পরিমাণ প্যারামিটারamountট্রেডিং মুদ্রায় পরিমাণ. ক্রিপ্টোকারেন্সি ফিউচার চুক্তির জন্য বাজার অর্ডার স্থাপন করার সময়, পরিমাণ পরামিতিamountকিছু ক্রিপ্টোকারেন্সি এক্সচেঞ্জ আছে যা লাইভ ট্রেডিংয়ের সময় মার্কেট অর্ডার ইন্টারফেস সমর্থন করে না। যদি আপনি ডকারের একটি পুরোনো সংস্করণ ব্যবহার করছেন, অর্ডার রিটার্ন মানIdএরexchange.Sell()ফাংশন অর্ডার রিটার্ন মান থেকে ভিন্ন হতে পারেIdবর্তমান নথিতে বর্ণিত।

{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetDirection exchange.SetDirection}

exchange.CreateOrder

দ্যexchange.CreateOrder()ফাংশনটি অর্ডার দেওয়ার জন্য ব্যবহৃত হয়।

যদি অর্ডার সফলভাবে স্থাপন করা হয়, অর্ডার আইডি ফিরে আসে; যদি অর্ডার ব্যর্থ হয়, একটি শূন্য মান ফিরে আসে।Idঅর্ডার {@struct/Order Order} FMZ প্ল্যাটফর্মের কাঠামো এক্সচেঞ্জ পণ্য কোড এবং এক্সচেঞ্জ মূল অর্ডার আইডি, ইংরেজি কমা দ্বারা পৃথক গঠিত। উদাহরণস্বরূপ, বৈশিষ্ট্যIdস্পট ট্রেডিং জোড়ার অর্ডারের বিন্যাসETH_USDTওকেএক্স এক্সচেঞ্জের মূলধন হল:ETH-USDT,1547130415509278720. যখন কলexchange.CreateOrder(symbol, side, price, amount)অর্ডার দেওয়ার ফাংশন, অর্ডারের রিটার্ন মানIdএর সাথে সামঞ্জস্যপূর্ণIdঅর্ডার {@struct/Order Order} কাঠামোর বৈশিষ্ট্য। স্ট্রিং, null মান

exchange.CreateOrder ((প্রতীক, পাশ, মূল্য, পরিমাণ) exchange.CreateOrder ((প্রতীক, পাশ, মূল্য, পরিমাণ,...args)

প্যারামিটারsymbolঅর্ডারের নির্দিষ্ট ট্রেডিং জোড়া এবং চুক্তি কোড নির্দিষ্ট করতে ব্যবহৃত হয়।exchange.CreateOrder(symbol, side, price, amount)অর্ডার দেওয়ার ফাংশন,exchangeযদি অর্ডার denominated মুদ্রা USDT হয় এবং ট্রেডিং মুদ্রা BTC হয়, পরামিতিsymbolহচ্ছেঃ"BTC_USDT", ট্রেডিং জোড়া ফরম্যাটে FMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত।exchange.CreateOrder(symbol, side, price, amount)অর্ডার দেওয়ার ফাংশন,exchangeযদি অর্ডারটি বিটিসি এর ইউ-স্ট্যান্ডার্ড চিরস্থায়ী চুক্তি অর্ডার হয়, প্যারামিটারটিsymbolহচ্ছেঃ"BTC_USDT.swap", এবং ফরম্যাটটি হলট্রেডিং জুটিএবংচুক্তির কোডFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত, অক্ষর দ্বারা পৃথক ..exchange.CreateOrder(symbol, side, price, amount)অর্ডার দেওয়ার ফাংশন,exchangeযদি অর্ডারটি বিটিসি এর ইউ-স্ট্যান্ডার্ড অপশন কন্ট্রাক্ট অর্ডার হয়, তাহলে প্যারামিটারটিsymbolহচ্ছেঃ"BTC_USDT.BTC-240108-40000-C"(একটি উদাহরণ হিসাবে Binance Option BTC-240108-40000-C গ্রহণ), এবং বিন্যাস হলট্রেডিং জুটিFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত এবং এক্সচেঞ্জ দ্বারা সংজ্ঞায়িত নির্দিষ্ট বিকল্প চুক্তির কোড, অক্ষর . দ্বারা পৃথক। প্রতীক সত্য স্ট্রিং দ্যsideঅর্ডারের ট্রেডিং দিকনির্দেশনা নির্দিষ্ট করতে এই প্যারামিটার ব্যবহার করা হয়। স্পট এক্সচেঞ্জ অবজেক্টের জন্য,sideপরামিতি হলঃbuy, sell. buyঅর্থ ক্রয়, এবংsellমানে বিক্রি। ফিউচার এক্সচেঞ্জ অবজেক্টের জন্য,sideপরামিতি হলঃbuy, closebuy, sell, closesell. buyমানে লং পজিশন খোলার অর্থ,closebuyঅর্থ একটি দীর্ঘ পজিশন বন্ধ করা,sellশর্ট পজিশন খোলার অর্থ, এবংclosesellমানে শর্ট পজিশন বন্ধ করা।

পাশের সত্য স্ট্রিং প্যারামিটারpriceঅর্ডারের দাম নির্ধারণ করতে ব্যবহৃত হয়। -1 এর দাম নির্দেশ করে যে অর্ডারটি একটি বাজার অর্ডার। দাম সত্য সংখ্যা প্যারামিটারamountঅর্ডার পরিমাণ সেট করতে ব্যবহৃত হয়। দয়া করে মনে রাখবেন যে যখন অর্ডার একটি বাজার ক্রয় অর্ডার হয়, অর্ডার পরিমাণ ক্রয় পরিমাণ; কিছু স্পট এক্সচেঞ্জের বাজার ক্রয় অর্ডার অর্ডার পরিমাণ ট্রেডিং মুদ্রার সংখ্যা। বিস্তারিত জানার জন্য, দয়া করে পড়ুনবিনিময় সংক্রান্ত বিশেষ নির্দেশাবলীব্যবহারকারী নির্দেশিকা। পরিমাণ সত্য সংখ্যা বর্ধিত পরামিতি এই অর্ডার লগ অতিরিক্ত তথ্য আউটপুট করতে পারেন. একাধিকargপ্যারামিটারগুলি পাস করা যেতে পারে। আরজি মিথ্যা সিস্টেম দ্বারা সমর্থিত যে কোন প্রকার, যেমন স্ট্রিং, সংখ্যা, বুল, বস্তু, অ্যারে, শূন্য মান ইত্যাদি।

function main() {
    var id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01)           // Spot exchange objects place orders for currency-to-currency transactions BTC_USDT trading pairs
    // var id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01)   // Futures exchange objects place orders for BTC's U-standard perpetual contracts
    Log("Order Id:", id)
}
def main():
    id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01)          # Spot exchange objects place orders for currency-to-currency transactions BTC_USDT trading pairs
    # id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01)   # Futures exchange objects place orders for BTC's U-standard perpetual contracts
    Log("Order Id:", id)
void main() {
    auto id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01);           // Spot exchange objects place orders for currency-to-currency transactions BTC_USDT trading pairs
    // auto id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01);   // Futures exchange objects place orders for BTC's U-standard perpetual contracts
    Log("Order Id:", id);
}

স্পট এক্সচেঞ্জ অবজেক্ট এবং ফিউচার এক্সচেঞ্জ অবজেক্টকেexchange.CreateOrder()অর্ডার দেওয়ার ফাংশন।

{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}

exchange.CancelOrder

দ্যexchange.CancelOrder()ফাংশনটি অর্ডার বাতিল করতে ব্যবহৃত হয়। বৈশিষ্ট্যIdঅর্ডার {@struct/Order Order} FMZ প্ল্যাটফর্মের কাঠামো এক্সচেঞ্জ পণ্য কোড এবং এক্সচেঞ্জ মূল অর্ডার আইডি, ইংরেজি কমা দ্বারা পৃথক গঠিত। উদাহরণস্বরূপ, বৈশিষ্ট্যIdস্পট ট্রেডিং জোড়ার অর্ডারের বিন্যাসETH_USDTওকেএক্স এক্সচেঞ্জের মূলধন হল:ETH-USDT,1547130415509278720. প্যারামিটারorderIdকল করার সময় পাসexchange.CancelOrder()একটি অর্ডার বাতিল করার ফাংশনIdঅর্ডার {@struct/Order Order} কাঠামোর বৈশিষ্ট্য।

দ্যexchange.CancelOrder()ফাংশন একটি সত্য মান ফেরৎ, উদাহরণস্বরূপtrueমানে বাতিল আদেশ অনুরোধ সফলভাবে পাঠানো হয়েছে. যদি এটি একটি মিথ্যা মান ফেরত, যেমনfalse, এর মানে হল যে বাতিল আদেশ অনুরোধ পাঠানো ব্যর্থ হয়েছে। রিটার্ন মান শুধুমাত্র বিনিময় আদেশ বাতিল কিনা তা নির্ধারণ করতে পাঠানো অনুরোধের সাফল্য বা ব্যর্থতা প্রতিনিধিত্ব করে। আপনি কল করতে পারেনexchange.GetOrders()অর্ডারটি বাতিল করা হয়েছে কিনা তা নির্ধারণ করতে। বুল

বিনিময়.অর্ডার বাতিল করুন (অর্ডার আইডি) বিনিময়.অর্ডার বাতিল করুন (অর্ডার আইডি,...আর্গ)

দ্যorderIdপ্যারামিটারটি বাতিল করা অর্ডার নির্দিষ্ট করতে ব্যবহৃত হয়। অর্ডার সত্য সংখ্যা, স্ট্রিং প্রসারিত পরামিতি, আপনি এই প্রত্যাহার লগ সংযুক্ত তথ্য আউটপুট করতে পারেন,argপ্যারামিটার একের বেশি পাস করা যেতে পারে। আরজি মিথ্যা string, number, bool, object, array, null এবং সিস্টেম দ্বারা সমর্থিত অন্য যেকোনো টাইপ

function main(){
    var id = exchange.Sell(99999, 1)
    exchange.CancelOrder(id)
}
def main():
    id = exchange.Sell(99999, 1)
    exchange.CancelOrder(id)
void main() {
    auto id = exchange.Sell(99999, 1);
    exchange.CancelOrder(id);
}

অর্ডার বাতিল করো।

function main() {
    if (exchange.GetName().includes("Futures_")) {
        Log("Set the contract as: perpetual contract, set the trade direction as: open long position.")
        exchange.SetContractType("swap")
        exchange.SetDirection("buy")
    }
    
    var ticker = exchange.GetTicker()
    exchange.Buy(ticker.Last * 0.5, 0.1)
    
    var orders = exchange.GetOrders()
    for (var i = 0 ; i < orders.length ; i++) {
        exchange.CancelOrder(orders[i].Id, "Cancelled orders:", orders[i])
        Sleep(500)
    }
}
def main():
    if exchange.GetName().find("Futures_") != -1:
        Log("Set the contract as: perpetual contract, set the trade direction as: open long position.")
        exchange.SetContractType("swap")
        exchange.SetDirection("buy")
    
    ticker = exchange.GetTicker()
    exchange.Buy(ticker["Last"] * 0.5, 0.1)            

    orders = exchange.GetOrders()
    for i in range(len(orders)):
        exchange.CancelOrder(orders[i]["Id"], "Cancelled orders:", orders[i])
        Sleep(500)
void main() {
    if (exchange.GetName().find("Futures_") != std::string::npos) {
        Log("Set the contract as: perpetual contract, set the trade direction as: open long position.");
        exchange.SetContractType("swap");
        exchange.SetDirection("buy");
    }            

    auto ticker = exchange.GetTicker();
    exchange.Buy(ticker.Last * 0.5, 0.1);            

    auto orders = exchange.GetOrders();
    for (int i = 0 ; i < orders.size() ; i++) {
        exchange.CancelOrder(orders[i].Id, "Cancelled orders:", orders[i]);
        Sleep(500);
    }
}

এফএমজেড এপিআই ফাংশন যা লগ আউটপুট ফাংশন যেমনঃLog(), exchange.Buy(), exchange.CancelOrder()প্রয়োজনীয় পরামিতিগুলির পরে কিছু সহগামী আউটপুট পরামিতি অনুসরণ করা যেতে পারে। উদাহরণস্বরূপঃexchange.CancelOrder(orders[i].Id, orders[i]), যাতে আদেশ বাতিল করার সময় যার আইডি হয়orders[i].Id, অর্ডার s তথ্য এটির সাথে আউটপুট হয়। অর্থাৎ, {@struct/Order Order} এর কাঠামোorders[i].

আপনি যদি ডকারের একটি পুরোনো সংস্করণ ব্যবহার করেন, তবে এক্সচেঞ্জ.ক্যান্সেলঅর্ডার ()) ফাংশনের অর্ডারআইডি প্যারামিটারটি বর্তমান নথিতে বর্ণিত অর্ডারআইডি থেকে আলাদা হতে পারে।

{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}

exchange.GetOrder

দ্যexchange.GetOrder()ফাংশন অর্ডার তথ্য পেতে ব্যবহৃত হয়।

ক্যোয়ারী সফল হলে ক্যোয়ারী নম্বর অনুযায়ী অর্ডার বিবরণ অনুসন্ধান করুন এবং {@struct/Order Order} কাঠামোটি ফেরত দিন, অথবা ক্যোয়ারী ব্যর্থ হলে null ফেরত দিন। {@struct/Order Order}, শূন্য মান

বিনিময়.GetOrder ((orderId)

দ্যorderIdপ্যারামিটারটি অনুসন্ধান করার আদেশ নির্দিষ্ট করতে ব্যবহৃত হয়। বৈশিষ্ট্যIdঅর্ডার {@struct/Order Order} FMZ প্ল্যাটফর্মের কাঠামো এক্সচেঞ্জ পণ্য কোড এবং এক্সচেঞ্জ মূল অর্ডার আইডি, ইংরেজি কমা দ্বারা পৃথক গঠিত। উদাহরণস্বরূপ, বৈশিষ্ট্যIdস্পট ট্রেডিং জোড়ার অর্ডারের বিন্যাসETH_USDTওকেএক্স এক্সচেঞ্জের মূলধন হল:ETH-USDT,1547130415509278720. প্যারামিটারorderIdকল করার সময় পাসexchange.GetOrder()ফাংশন একটি অর্ডার অনুসন্ধান করার জন্যIdঅর্ডার {@struct/Order Order} কাঠামোর বৈশিষ্ট্য।

অর্ডার সত্য স্ট্রিং

function main(){
    var id = exchange.Sell(1000, 1)
    // Parameter id is the order number, you need to fill in the number of the order you want to query
    var order = exchange.GetOrder(id)      
    Log("Id:", order.Id, "Price:", order.Price, "Amount:", order.Amount, "DealAmount:",
        order.DealAmount, "Status:", order.Status, "Type:", order.Type)
}
def main():
    id = exchange.Sell(1000, 1)
    order = exchange.GetOrder(id)
    Log("Id:", order["Id"], "Price:", order["Price"], "Amount:", order["Amount"], "DealAmount:", 
        order["DealAmount"], "Status:", order["Status"], "Type:", order["Type"])
void main() {
    auto id = exchange.Sell(1000, 1);
    auto order = exchange.GetOrder(id);
    Log("Id:", order.Id, "Price:", order.Price, "Amount:", order.Amount, "DealAmount:", 
        order.DealAmount, "Status:", order.Status, "Type:", order.Type);
}

দ্যexchange.GetOrder()এই ফাংশনটি কিছু এক্সচেঞ্জ দ্বারা সমর্থিত নয়।AvgPrice{@struct/Order Order} স্ট্রাকচারে রিটার্ন মানের বৈশিষ্ট্যটি হল লেনদেনের গড় মূল্য। কিছু এক্সচেঞ্জ এই ক্ষেত্রটি সমর্থন করে না, এবং যদি তারা না করে, এটি 0 এ সেট করা হয়। যদি আপনি ডকারের একটি পুরোনো সংস্করণ ব্যবহার করছেন,orderIdপ্যারামিটারexchange.GetOrder()ফাংশন থেকে ভিন্ন হতে পারেorderIdবর্তমান ডকুমেন্টেশনে বর্ণিত। এক্সচেঞ্জ যে সমর্থন করে নাexchange.GetOrder()ফাংশনঃ

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

{@struct/Order Order}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}

exchange.GetOrders

দ্যexchange.GetOrders()এই ফাংশনটি অপ্রত্যাশিত অর্ডার পেতে ব্যবহৃত হয়।

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

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

প্যারামিটারsymbolসেট করতে ব্যবহৃত হয়লেনদেনের প্রতীকঅথবালেনদেনের প্রতীক পরিসীমাজিজ্ঞাসাবাদ করা হবে। স্পট এক্সচেঞ্জের জন্য, যদিsymbolপ্যারামিটারটি পাস করা না হলে, সমস্ত স্পট পণ্যের অসম্পূর্ণ অর্ডার ডেটা অনুরোধ করা হবে। ফিউচার এক্সচেঞ্জের জন্য, যদিsymbolপ্যারামিটারটি পাস করা না হলে, ডিফল্টরূপে বর্তমান ট্রেডিং জোড়া এবং চুক্তির কোডের মাত্রা পরিসরের সমস্ত জাতের অসম্পূর্ণ অর্ডার ডেটা অনুরোধ করা হয়।

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

/*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 = ["ETH_USDT", "BTC_USDT", "LTC_USDT", "SOL_USDT"]

    for (var symbol of arrSymbol) {
        var t = exchange.GetTicker(symbol)
        exchange.CreateOrder(symbol, "buy", t.Last / 2, 0.01)
    }

    var spotOrders = exchange.GetOrders()

    var tbls = []
    for (var orders of [spotOrders]) {
        var tbl = {type: "table", title: "test GetOrders", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
        for (var order of orders) {
            tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
        }
        tbls.push(tbl)
    }

    LogStatus("`" + JSON.stringify(tbls) +  "`")

    // Print out the information once and then return to prevent the order from being executed during the subsequent backtest and affecting data observation
    return
}
'''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 = ["ETH_USDT", "BTC_USDT", "LTC_USDT", "SOL_USDT"]

    for symbol in arrSymbol:
        t = exchange.GetTicker(symbol)
        exchange.CreateOrder(symbol, "buy", t["Last"] / 2, 0.01)

    spotOrders = exchange.GetOrders()

    tbls = []
    for orders in [spotOrders]:
        tbl = {"type": "table", "title": "test GetOrders", "cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], "rows": []}
        for order in orders:
            tbl["rows"].append([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
        tbls.append(tbl)

    LogStatus("`" + json.dumps(tbls) +  "`")

    return
/*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"}]
*/

void main() {
    auto arrSymbol = {"ETH_USDT", "BTC_USDT", "LTC_USDT", "SOL_USDT"};
    
    for (const auto& symbol : arrSymbol) {
        auto t = exchange.GetTicker(symbol);
        exchange.CreateOrder(symbol, "buy", t.Last / 2, 0.01);
    }

    auto spotOrders = exchange.GetOrders();

    json tbls = R"([])"_json;
    std::vector<std::vector<Order>> arr = {spotOrders};
    for (const auto& orders : arr) {
        json tbl = R"({
            "type": "table", 
            "title": "test GetOrders", 
            "cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"],
            "rows": []
        })"_json;

        for (const auto& order : orders) {
            json arrJson = R"([])"_json;

            arrJson.push_back("Symbol");
            arrJson.push_back("Id");
            arrJson.push_back(order.Price);
            arrJson.push_back(order.Amount);
            arrJson.push_back(order.DealAmount);
            arrJson.push_back(order.AvgPrice);
            arrJson.push_back(order.Status);
            arrJson.push_back(order.Type);
            arrJson.push_back(order.Offset);
            arrJson.push_back(order.ContractType);

            tbl["rows"].push_back(arrJson);
        }

        tbls.push_back(tbl);
    }
    
    LogStatus(_D(), "\n", "`" + tbls.dump() + "`");

    return;
}

স্পট এক্সচেঞ্জ অবজেক্ট ব্যবহার করে বর্তমান মূল্যের অর্ধেকের বিনিময়ে একাধিক ভিন্ন ট্রেডিং জোড়ার জন্য ক্রয় অর্ডার স্থাপন করুন এবং তারপরে অসমাপ্ত অর্ডার তথ্য অনুসন্ধান করুন।

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

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

    for (var symbol of arrSymbol) {
        var t = exchange.GetTicker(symbol)
        exchange.CreateOrder(symbol, "buy", t.Last / 2, 1)
        exchange.CreateOrder(symbol, "sell", t.Last * 2, 1)
    }

    var defaultOrders = exchange.GetOrders()
    var swapOrders = exchange.GetOrders("USDT.swap")
    var futuresOrders = exchange.GetOrders("USDT.futures")
    var btcUsdtSwapOrders = exchange.GetOrders("BTC_USDT.swap")

    var tbls = []
    var arr = [defaultOrders, swapOrders, futuresOrders, btcUsdtSwapOrders]
    var tblDesc = ["defaultOrders", "swapOrders", "futuresOrders", "btcUsdtSwapOrders"]
    for (var index in arr) {
        var orders = arr[index]
        var tbl = {type: "table", title: tblDesc[index], cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
        for (var order of orders) {
            tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
        }
        tbls.push(tbl)
    }

    LogStatus("`" + JSON.stringify(tbls) +  "`")

    // Print out the information once and then return to prevent the order from being executed during the subsequent backtest and affecting data observation
    return
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''

import json

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

    for symbol in arrSymbol:
        t = exchange.GetTicker(symbol)
        exchange.CreateOrder(symbol, "buy", t["Last"] / 2, 1)
        exchange.CreateOrder(symbol, "sell", t["Last"] * 2, 1)

    defaultOrders = exchange.GetOrders()
    swapOrders = exchange.GetOrders("USDT.swap")
    futuresOrders = exchange.GetOrders("USDT.futures")
    btcUsdtSwapOrders = exchange.GetOrders("BTC_USDT.swap")

    tbls = []
    arr = [defaultOrders, swapOrders, futuresOrders, btcUsdtSwapOrders]
    tblDesc = ["defaultOrders", "swapOrders", "futuresOrders", "btcUsdtSwapOrders"]
    for index in range(len(arr)):
        orders = arr[index]
        tbl = {"type": "table", "title": tblDesc[index], "cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], "rows": []}
        for order in orders:
            tbl["rows"].append([order["Symbol"], order["Id"], order["Price"], order["Amount"], order["DealAmount"], order["AvgPrice"], order["Status"], order["Type"], order["Offset"], order["ContractType"]])
        tbls.append(tbl)

    LogStatus("`" + json.dumps(tbls) +  "`")

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

void main() {
    auto arrSymbol = {"BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"};
    
    for (const auto& symbol : arrSymbol) {
        auto t = exchange.GetTicker(symbol);
        exchange.CreateOrder(symbol, "buy", t.Last / 2, 1);
        exchange.CreateOrder(symbol, "sell", t.Last * 2, 1);
    }
    
    auto defaultOrders = exchange.GetOrders();
    auto swapOrders = exchange.GetOrders("USDT.swap");
    auto futuresOrders = exchange.GetOrders("USDT.futures");
    auto btcUsdtSwapOrders = exchange.GetOrders("BTC_USDT.swap");
    
    json tbls = R"([])"_json;
    std::vector<std::vector<Order>> arr = {defaultOrders, swapOrders, futuresOrders, btcUsdtSwapOrders};
    std::string tblDesc[] = {"defaultOrders", "swapOrders", "futuresOrders", "btcUsdtSwapOrders"};
    for (int index = 0; index < arr.size(); index++) {
        auto orders = arr[index];
        json tbl = R"({
            "type": "table", 
            "cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"],
            "rows": []
        })"_json;
        tbl["title"] = tblDesc[index];
    
        for (const auto& order : orders) {
            json arrJson = R"([])"_json;

            arrJson.push_back(order.Symbol);
            arrJson.push_back(to_string(order.Id));    // The Id attribute type in the Order structure is TId, which is encoded using a C++ function to_string built into the FMZ platform.
            arrJson.push_back(order.Price);
            arrJson.push_back(order.Amount);
            arrJson.push_back(order.DealAmount);
            arrJson.push_back(order.AvgPrice);
            arrJson.push_back(order.Status);
            arrJson.push_back(order.Type);
            arrJson.push_back(order.Offset);
            arrJson.push_back(order.ContractType);
    
            tbl["rows"].push_back(arrJson);
        }
    
        tbls.push_back(tbl);
    }
    
    LogStatus(_D(), "\n", "`" + tbls.dump() + "`");
    
    return;
}

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

function main() {
    var orders = exchange.GetOrders("BTC_USDT")           // Examples of spot products
    // var orders = exchange.GetOrders("BTC_USDT.swap")   // Examples of futures products
    Log("orders:", orders)
}
def main():
    orders = exchange.GetOrders("BTC_USDT")          # Examples of spot products
    # orders = exchange.GetOrders("BTC_USDT.swap")   # Examples of futures products
    Log("orders:", orders)
void main() {
    auto orders = exchange.GetOrders("BTC_USDT");           // Examples of spot products
    // auto orders = exchange.GetOrders("BTC_USDT.swap");   // Examples of futures products
    Log("orders:", orders);
}

যখন কলexchange.GetOrders()ফাংশন, পাসSymbolএকটি নির্দিষ্ট ট্রেডিং জোড়া এবং চুক্তির কোডের জন্য অর্ডার ডেটা অনুরোধ করার জন্য প্যারামিটার।

এ বিষয়েGetOrdersফাংশন, প্রতীক পরামিতি ব্যবহারের দৃশ্যাবলী নিম্নরূপ সংক্ষিপ্ত করা হয়ঃ

এক্সচেঞ্জ অবজেক্ট শ্রেণীবিভাগ প্রতীক পরামিতি কোয়েরি পরিধি মন্তব্য
স্পট প্রতীক পরামিতি পাস করবেন না সমস্ত স্পট ট্রেডিং জোড়া অনুসন্ধান করুন সমস্ত কলিং দৃশ্যকল্পের জন্য, যদি এক্সচেঞ্জ ইন্টারফেস এটি সমর্থন না করে, একটি ত্রুটি রিপোর্ট করা হবে এবং একটি শূন্য মান ফেরত দেওয়া হবে। আরও ব্যাখ্যা দেওয়া হবে না।
স্পট ট্রেডিং টাইপ উল্লেখ করুন, প্রতীক প্যারামিটার হলঃ BTC_USDT নির্দিষ্ট বিটিসি_ইউএসডিটি ট্রেডিং জোড়া অনুসন্ধান করুন স্পট এক্সচেঞ্জ অবজেক্টের জন্য প্রতীক পরামিতি বিন্যাসঃ BTC_USDT
ফিউচার প্রতীক পরামিতি পাস করবেন না বর্তমান ট্রেডিং জোড়া এবং চুক্তি কোড মাত্রা পরিসীমা মধ্যে সমস্ত ট্রেডিং পণ্য অনুসন্ধান যদি বর্তমান ট্রেডিং জোড়াটি BTC_USDT হয় এবং চুক্তির কোডটি swap হয়, তাহলে সমস্ত USDT-মার্জিনযুক্ত চিরস্থায়ী চুক্তি অনুসন্ধান করা হবে। এটি কল করার সমতুল্যGetOrders("USDT.swap")
ফিউচার ট্রেডিং টাইপ উল্লেখ করুন, প্রতীক প্যারামিটার হলঃ BTC_USDT.swap একটি নির্দিষ্ট বিটিসির জন্য ইউএসডিটি ভিত্তিক চিরস্থায়ী চুক্তি অনুসন্ধান করুন ফিউচার এক্সচেঞ্জ অবজেক্টের জন্য প্যারামিটার প্রতীক বিন্যাস হলঃট্রেডিং জুটিএবংচুক্তির কোডFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত, চিহ্ন দ্বারা পৃথক"..
ফিউচার ট্রেডিং পণ্যের পরিসীমা উল্লেখ করুন, প্রতীক পরামিতি হলঃ USDT.swap সমস্ত ইউএসডিটি ভিত্তিক স্থায়ী চুক্তি অনুসন্ধান করুন -
বিকল্প সমর্থনকারী ফিউচার এক্সচেঞ্জ প্রতীক পরামিতি পাস করবেন না বর্তমান ট্রেডিং জোড়া মাত্রা পরিসীমা মধ্যে সমস্ত বিকল্প চুক্তি অনুসন্ধান যদি বর্তমান ট্রেডিং জোড়াটি BTC_USDT হয়, তবে চুক্তিটি একটি বিকল্প চুক্তিতে সেট করা হয়, উদাহরণস্বরূপ, Binance বিকল্প চুক্তিঃ BTC-240108-40000-C
বিকল্প সমর্থনকারী ফিউচার এক্সচেঞ্জ নির্দিষ্ট ট্রেডিং পণ্য নির্দিষ্ট করুন নির্দিষ্ট বিকল্প চুক্তির অনুসন্ধান করুন উদাহরণস্বরূপ, বিন্যান্স ফিউচার এক্সচেঞ্জের জন্য, প্রতীক পরামিতি হলঃ BTC_USDT.BTC-240108-40000-C
বিকল্প সমর্থনকারী ফিউচার এক্সচেঞ্জ ট্রেডিং প্রোডাক্টের পরিসীমা উল্লেখ করুন, প্রতীক প্যারামিটারটি হলঃ USDT.option সমস্ত ইউএসডিটি ভিত্তিক বিকল্প চুক্তি অনুসন্ধান করুন -

এ বিষয়েGetOrdersফাংশন, ফিউচার এক্সচেঞ্জ বস্তু অনুসন্ধান পরিমাপ পরিসীমা নিম্নরূপ সংক্ষিপ্ত করা হয়ঃ

প্রতীক পরামিতি অনুরোধ পরিসীমা সংজ্ঞা মন্তব্য
USDT.swap ইউএসডিটি ভিত্তিক চিরস্থায়ী চুক্তি পরিসীমা। জন্য

এক্সচেঞ্জ এপিআই ইন্টারফেসে সমর্থিত নয় এমন মাত্রা, একটি ত্রুটি রিপোর্ট করা হবে এবং একটি শূন্য মান ফিরে আসবে যখন ডাকছে। ইউএসডিটি ভবিষ্যৎ ইউএসডিটি ভিত্তিক ডেলিভারি চুক্তির পরিসীমা। ∙ ∙ ইউএসডি.সোয়াপ ∙ ∙ ∙ মুদ্রা ভিত্তিক স্থায়ী চুক্তি। ইউএসডি.ভবিষ্যৎ। মুদ্রা ভিত্তিক ডেলিভারি পরিসীমা চুক্তি। ইউএসডিটি.অপশন ইউএসডিটি-ভিত্তিক বিকল্প চুক্তি পরিসীমা। ইউএসডি.অপশন। মুদ্রা ভিত্তিক বিকল্প চুক্তি পরিসীমা। USDT.futures_combo। CFD সমন্বয়ের পরিসীমা। ফিউচার_ডেরিবিট এক্সচেঞ্জ। ইউএসডি.ফ্যুচারস_এফএফ। মিশ্র মার্জিন ডেলিভারি চুক্তির পরিসর। ফিউচারস_ক্রাকেন এক্সচেঞ্জ। ইউএসডি.সোয়াপ_পিএফ। মিশ্র মার্জিন স্থায়ী চুক্তির পরিসীমা। ∙∙ ফিউচার_ক্র্যাকেন এক্সচেঞ্জ ∙

যখন অ্যাকাউন্ট বিনিময় বস্তু দ্বারা প্রতিনিধিত্ব করা হয়exchangeএর মধ্যে কোন অপেক্ষমান অর্ডার নেইঅনুসন্ধান পরিসীমাঅথবানির্দিষ্ট ট্রেডিং ইনস্ট্রুমেন্ট(একটি অ্যাক্টিভ অর্ডার একটি অসম্পূর্ণ অবস্থায়), এই ফাংশন কলিং একটি খালি অ্যারে ফেরত দেয়, অর্থাৎঃ[]. নিম্নলিখিত এক্সচেঞ্জগুলির জন্য বর্তমানে অসম্পূর্ণ অর্ডারগুলি অনুসন্ধান করার সময় ইনস্ট্রুমেন্ট প্যারামিটারে পাস করা প্রয়োজন। এই এক্সচেঞ্জগুলির সাথে গেটঅর্ডার্স ফাংশনটি কল করার সময়, যদি ইনস্ট্রুমেন্ট প্যারামিটারটি পাস না করা হয় তবে কেবলমাত্র বর্তমান ইনস্ট্রুমেন্টের অসম্পূর্ণ অর্ডারগুলি অনুরোধ করা হয়, সমস্ত ইনস্ট্রুমেন্টের অসম্পূর্ণ অর্ডারগুলি নয় (কারণ এক্সচেঞ্জ ইন্টারফেস এটি সমর্থন করে না) । জাইফ, এমইএক্সসি, এলব্যাঙ্ক, কর্বিত, কয়েন, বিটমার্ট, বিথাম্ব, বিটফ্লায়ার, বিগোন।

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

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

{@struct/Order Order}, {@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}

exchange.GetHistoryOrders

দ্যexchange.GetHistoryOrders()এই ফাংশনটি বর্তমান ট্রেডিং জোড়া, চুক্তির জন্য ঐতিহাসিক অর্ডার পেতে ব্যবহৃত হয়; এটি নির্দিষ্ট ট্রেডিং জাতের নির্দিষ্টকরণকে সমর্থন করে।

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

exchange.GetHistoryOrders ((() exchange.GetHistoryOrders ((প্রতীক) exchange.GetHistoryOrders ((প্রতীক, যেহেতু) exchange.GetHistoryOrders ((প্রতীক, যেহেতু, সীমা) বিনিময়.GetHistoryOrders ((সেই থেকে) exchange.GetHistoryOrders (যেহেতু, সীমা)

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

প্রতীক মিথ্যা স্ট্রিং দ্যsinceপ্যারামিটারটি মিলিসেকেন্ডে ক্যোয়ারির শুরু টাইমস্ট্যাম্প নির্দিষ্ট করতে ব্যবহৃত হয়। যেহেতু মিথ্যা সংখ্যা দ্যlimitপ্যারামিটারটি ক্যোয়ারির অর্ডারের সংখ্যা নির্দিষ্ট করতে ব্যবহৃত হয়। সীমা মিথ্যা সংখ্যা

function main() {
    var historyOrders = exchange.GetHistoryOrders()
    Log(historyOrders)
}
def main():
    historyOrders = exchange.GetHistoryOrders()
    Log(historyOrders)
void main() {
    auto historyOrders = exchange.GetHistoryOrders();
    Log(historyOrders);
}
  • কখনsymbol, since, limitপ্যারামিটারগুলি নির্দিষ্ট করা হয় না, ডিফল্ট অনুসন্ধানটি বর্তমান ট্রেডিং জোড়া, চুক্তির ঐতিহাসিক আদেশ। বর্তমান সময়ের নিকটতম একটি নির্দিষ্ট পরিসরের মধ্যে ঐতিহাসিক আদেশগুলি অনুসন্ধান করে, অনুসন্ধান পরিসীমা এক্সচেঞ্জ ইন্টারফেসের একক অনুসন্ধান পরিসরের উপর নির্ভর করে।
  • যখনsymbolপ্যারামিটারটি নির্দিষ্ট করা হলে, সেট ট্রেড টাইপের জন্য অর্ডারের ইতিহাস অনুসন্ধান করুন।
  • যখনsinceপ্যারামিটার নির্দিষ্ট করা হয়, বর্তমান সময় ব্যবহার করে দিক অনুসন্ধানsinceসময় স্ট্যাম্প হিসাবে শুরু সময়.
  • যদিlimitপ্যারামিটারটি নির্দিষ্ট করা হলে, যথেষ্ট সংখ্যক এন্ট্রি করার পর ক্যোয়ারীটি ফিরে আসে।
  • এই ফাংশনটি শুধুমাত্র এক্সচেঞ্জগুলির জন্য সমর্থিত যা একটি ঐতিহাসিক অর্ডার অনুসন্ধান ইন্টারফেস সরবরাহ করে।

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

ফাংশনের নাম সমর্থিত না হওয়া স্পট এক্সচেঞ্জ সমর্থিত নয় এমন ফিউচার এক্সচেঞ্জ
GetHistoryঅর্ডার Zaif / Upbit / Coincheck / Bitstamp / Bithumb / BitFlyer / BigONE ফিউচার_ডিওয়াইডিএক্স / ফিউচার_বিবক্স / ফিউচার_অ্যাপোলোএক্স

{@struct/Order Order}, {@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}

exchange.SetPrecision

exchange.SetPrecision()ফাংশন সঠিকতা সেট করতে ব্যবহার করা হয়exchangeবিনিময় বস্তুদামএবংঅর্ডার পরিমাণ, সেটিং করার পর, সিস্টেম স্বয়ংক্রিয়ভাবে অতিরিক্ত তথ্য উপেক্ষা করবে।

exchange.SetPrecision ((pricePrecision, amountPrecision) বিনিময় করুন।

দ্যpricePrecisionদামের তথ্যের নির্ভুলতা নিয়ন্ত্রণ করতে এই প্যারামিটার ব্যবহার করা হয়। মূল্যনির্দিষ্টতা সত্য সংখ্যা দ্যamountPrecisionপ্যারামিটারটি অর্ডার করা তথ্যের পরিমাণের নির্ভুলতা নিয়ন্ত্রণ করতে ব্যবহৃত হয়। পরিমাণনির্দিষ্টতা সত্য সংখ্যা

function main(){
    // Set the decimal precision of price to 2 bits, and the decimal precision of variety order amount to 3 bits
    exchange.SetPrecision(2, 3)
}
def main():
    exchange.SetPrecision(2, 3)
void main() {
    exchange.SetPrecision(2, 3);
}

ব্যাকটেস্টিং সিস্টেম এই ফাংশন সমর্থন করে না, এবং ব্যাকটেস্টিং সিস্টেমের সংখ্যাসূচক নির্ভুলতা স্বয়ংক্রিয়ভাবে পরিচালিত হয়।

{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}

exchange.SetRate

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

exchange.SetRate (রেট)

দ্যrateরূপান্তর বিনিময় হার নির্দিষ্ট করতে এই পরামিতি ব্যবহার করা হয়। হার সত্য সংখ্যা

function main(){
    Log(exchange.GetTicker())
    // Set exchange rate conversion
    exchange.SetRate(7)
    Log(exchange.GetTicker())
    // Set to 1, no conversion
    exchange.SetRate(1)
}
def main():
    Log(exchange.GetTicker())
    exchange.SetRate(7)
    Log(exchange.GetTicker())
    exchange.SetRate(1)
void main() {
    Log(exchange.GetTicker());
    exchange.SetRate(7);
    Log(exchange.GetTicker());
    exchange.SetRate(1);
}

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

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

exchange.IO

দ্যexchange.IO()ফাংশনটি এক্সচেঞ্জ অবজেক্টের সাথে সম্পর্কিত অন্যান্য ইন্টারফেস কলগুলির জন্য ব্যবহৃত হয়।

দ্যexchange.IO()ফাংশন এক্সচেঞ্জ অবজেক্টের সাথে সম্পর্কিত অন্যান্য ইন্টারফেসগুলিকে কল করে, একটি সফল কলের জন্য অনুরোধ করা প্রতিক্রিয়া ডেটা ফেরত দেয় এবং এটি ব্যর্থ কলের জন্য null ফেরত দেয়। string, number, bool, object, array, null, এবং সিস্টেম দ্বারা সমর্থিত অন্য কোন টাইপ

exchange.IO(k,...args)

দ্যkপ্যারামিটার কল টাইপ সেট করতে ব্যবহৃত হয়, ঐচ্ছিক মান সঙ্গে"api", "currency", "base", "trade_margin", "trade_normal", "public_base", "mbase", selfTradePreventionMode, simulate, cross, dual, unifiedইত্যাদি। k সত্য স্ট্রিং প্রসারিত পরামিতি, নির্দিষ্ট কল দৃশ্যকল্প অনুযায়ী পাস,argপ্যারামিটার একের বেশি পাস করা যেতে পারে।exchange.IO()ফাংশন, বিভিন্ন পরামিতি সেটিং বিভিন্ন ফাংশন অনুরূপ।exchange.IO()ফাংশন অনির্দিষ্ট। আরজি সত্য string, number, bool, object, array, null এবং সিস্টেম দ্বারা সমর্থিত অন্য যেকোনো টাইপ

function main() {
    var arrOrders = [
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"},
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
    ]
    
    // Call exchange.IO to access the exchange's bulk order interface directly
    var ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", JSON.stringify(arrOrders))
    Log(ret)
}
import json
def main():
    arrOrders = [
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}, 
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
    ]
    ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", json.dumps(arrOrders))
    Log(ret)
void main() {
    json arrOrders = R"([
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"},
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
    ])"_json;
    auto ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", arrOrders.dump());
    Log(ret);
}

ব্যবহার করেexchange.IO("api", httpMethod, resource, params, raw)কল ফর্মexchange.IO()ফাংশন, এটি এক্সচেঞ্জের এপিআই ইন্টারফেস বুঝতে এবং প্রাসঙ্গিক ডকুমেন্টেশন পরীক্ষা করা প্রয়োজন। এটি আপনাকে FMZ প্ল্যাটফর্মে যোগ করা হয় না এমন কার্যকারিতা প্রসারিত করার অনুমতি দেবে।POSTঅনুরোধ আপনাকে এনক্রিপশন, স্বাক্ষর, বা পরামিতি যাচাই করার বিষয়ে চিন্তা করতে হবে না, যা ইতিমধ্যে নীচে FMZ দ্বারা পরিচালিত হয়, যতক্ষণ আপনি সংশ্লিষ্ট পরামিতি পূরণ করুন। আপনি ব্যাচ অর্ডার উদাহরণটি উল্লেখ করতে পারেনOKX এক্সচেঞ্জফিউচার চুক্তি, এবং প্যারামিটার ব্যবহারrawঅর্ডার প্যারামিটার পাস করার জন্যঃ

var amount = 1
var price = 10
var basecurrency = "ltc"
function main () {
    // Note that both amount.toString() and price.toString() have a ' character on the left and right side
    var message = "symbol=" + basecurrency + "&amount='" + amount.toString() + "'&price='" + price.toString() + "'&side=buy" + "&type=limit"
    var id = exchange.IO("api", "POST", "/v1/order/new", message)
}
amount = 1
price = 10
basecurrency = "ltc"
def main():
    message = "symbol=" + basecurrency + "&amount='" + str(amount) + "'&price='" + str(price) + "'&side=buy" + "&type=limit"
    id = exchange.IO("api", "POST", "/v1/order/new", message)
void main() {
    auto amount = 1.0;
    auto price = 10.0;
    auto basecurrency = "ltc";
    string message = format("symbol=%s&amount=\"%.1f\"&price=\"%.1f\"&side=buy&type=limit", basecurrency, amount, price);
    auto id = exchange.IO("api", "POST", "/v1/order/new", message);
}

যদি মূল মানparamsপ্যারামিটার (যেমন, HTTP অনুরোধ প্যারামিটার) একটি স্ট্রিং, এটি প্যারামিটার মান আবৃত করতে প্যারামিটার মান চারপাশে একক উদ্ধৃতি (যেমন, চিহ্ন ') লিখতে হবে।

function main() {
    var ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
    Log(ret)
}
def main():
    ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
    Log(ret)
void main() {
    auto ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC");
    Log(ret);
}

এটি সম্পূর্ণ ইউআরএল পরামিতি পাস সমর্থন করে, যা বেস ঠিকানা সুইচিং অপারেশন বাদ দিতে পারেনexchange.SetBase()ফাংশন) ।

function main(){
    var ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT")
    Log(ret)
}
def main():
    ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT")
    Log(ret)
void main() {
    auto ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT");
    Log(ret);
}

প্যারামিটার ছাড়াই একটি কলের উদাহরণraw:

function main() {
    // For example, if you set the current trading pair of the exchange object to BTC_USDT at the beginning of the live trading, print the current trading pair tickers
    Log(exchange.GetTicker())
    // Switch the trading pair to LTC_BTC      
    exchange.IO("currency", "LTC_BTC")
    Log(exchange.GetTicker())
}
def main():
    Log(exchange.GetTicker())
    exchange.IO("currency", "LTC_BTC")
    Log(exchange.GetTicker())
void main() {
    Log(exchange.GetTicker());
    exchange.IO("currency", "LTC_BTC");
    Log(exchange.GetTicker());
}

বর্তমান এক্সচেঞ্জের ট্রেডিং জোড়া পরিবর্তন করুন, যাতে এটি কোড দ্বারা কনফিগার করা ট্রেডিং জোড়া পরিবর্তন করবেলাইভ ট্রেডিং সৃষ্টিতেঅথবাব্যাকটেস্টে.

function main () {
    // exchanges[0] is the first exchange object added when the live trading is created 
    exchanges[0].IO("base", "https://api.huobi.pro")
}
def main():
    exchanges[0].IO("base", "https://api.huobi.pro")
void main() {
    exchanges[0].IO("base", "https://api.huobi.pro");
}```
For example, the default base address when the exchange object is wrapped is ```https://api.huobipro.com```, and when you need to switch to ```https://api.huobi.pro```, use the following code to switch:
```javascript
function main() {
    exchange.SetBase("https://api.bitfinex.com")
    exchange.IO("mbase", "https://api-pub.bitfinex.com")
}
def main():
    exchange.SetBase("https://api.bitfinex.com")
    exchange.IO("mbase", "https://api-pub.bitfinex.com")
void main() {
    exchange.SetBase("https://api.bitfinex.com");
    exchange.IO("mbase", "https://api-pub.bitfinex.com");
}

টিকার ইন্টারফেস এবং ট্রেডিং ইন্টারফেস জন্য বিভিন্ন বেস ঠিকানা সঙ্গে এক্সচেঞ্জ জন্য, উদাহরণস্বরূপ, Bitfinex ফিউচার দুটি ঠিকানা আছে, টিকার ইন্টারফেস জন্য এক এবং ট্রেডিং ইন্টারফেস জন্য অন্য. Bitfinex ফিউচার ব্যবহার করে ব্যক্তিগত ইন্টারফেস বেস ঠিকানা পরিবর্তনexchange.SetBase("xxx"). Bitfinex ফিউচার পাবলিক ইন্টারফেস বেস ঠিকানা পরিবর্তন ব্যবহার করেexchange.IO("mbase", "xxx").

I. ক্রিপ্টোকারেন্সি-কেন্দ্রিক এক্সচেঞ্জের জন্য অন্যান্য API ইন্টারফেস কলগুলি যা পরামিতি সহ অভিন্নভাবে ক্যাপসুল করা হয় নাkসেট করুন"api":

exchange.IO("api", httpMethod, resource, params, raw)
  • httpMethod : প্যারামিটারটি একটি স্ট্রিং টাইপ, অনুরোধ টাইপ পূরণ করুনPOST, GETইত্যাদি।
  • resource: প্যারামিটারটি স্ট্রিং টাইপের এবং অনুরোধ পথ পূরণ করে; এটি সম্পূর্ণ অনুরোধ পথ ব্যবহার সমর্থন করে, বিস্তারিত জানার জন্য রেফারেন্স উদাহরণ দেখুন।
  • প্যারামিটার: প্যারামিটারটি একটি স্ট্রিং টাইপ, যা অনুরোধ প্যারামিটার দিয়ে ভরা, যা কোড করা হয়URL.
  • raw: প্যারামিটারটি হল raw স্ট্রিং প্যারামিটার এবং বাদ দেওয়া যেতে পারে।

দ্যexchange.IO("api", httpMethod, resource, params, raw)ফাংশন কল এক্সচেঞ্জ ইন্টারফেসে অ্যাক্সেস করবে এবং কল ব্যর্থ হলে এবং একটি ত্রুটি ঘটে গেলে null ফেরত দেবে। শুধুমাত্র বাস্তব ট্রেডিং সমর্থন কলexchange.IO("api", httpMethod, resource, params, raw) function.

II. ট্রেডিং জোড়া পরিবর্তন করার জন্য, পরামিতিkসেট করা আছে"currency":

exchange.IO("currency", currency)
  • মুদ্রাঃ পরামিতিটি একটি স্ট্রিং টাইপ যা একটি অভিন্ন বড় হাতের ফরম্যাটের সাথে, পৃথক করার জন্য একটি underscore ব্যবহার করেbaseCurrencyথেকেquoteCurrencyযেমন-BTC_USDT.

    1. ব্যাকটেস্টিং সিস্টেম এখন ট্রেডিং জোড়া স্যুইচিং সমর্থন করে (শুধুমাত্র ডিজিটাল মুদ্রা স্পট এক্সচেঞ্জ বস্তুর জন্য), যখন ব্যাকটেস্টিং, আপনি মনোযোগ দিতে হবে যে আপনি শুধুমাত্র একই denominated মুদ্রা সঙ্গে ট্রেডিং জোড়া স্যুইচ করতে পারেন, উদাহরণস্বরূপ, বর্তমান ট্রেডিং জোড়া হয়ETH_BTCশুধুমাত্র পরিবর্তন করতে পারেনLTC_BTC, নাLTC_USDT.
    2. ক্রিপ্টোকারেন্সি ফিউচার চুক্তির ক্ষেত্রে এক্সচেঞ্জ অবজেক্ট ট্রেডিং জোড়া পরিবর্তন করে এবং কোন চুক্তিটি ট্রেড করা হবে তা নির্ধারণের জন্য চুক্তির কোডটি আবার সেট করতে হবে।
    3. {@fun/Account/exchange.SetCurrency exchange.SetCurrency} ফাংশন ব্যবহার করে ট্রেডিং জোড়া স্যুইচ করার জন্য ব্যবহার ঠিক একইexchange.IO("currency", currency)ট্রেডিং জোড়া পরিবর্তন করতে।

iii. ক্রিপ্টোকারেন্সি স্পট এক্সচেঞ্জ অবজেক্ট লিভারেজড অ্যাকাউন্ট মোড স্যুইচ করতে ব্যবহৃত হয়ঃ

  • প্যারামিটারkসেট করা আছে"trade_margin"এক্সচেঞ্জের স্পট লিভারেজ অ্যাকাউন্ট মোডে স্যুইচ করার জন্য। অর্ডার দেওয়া এবং অ্যাকাউন্টের সম্পদ পাওয়া এক্সচেঞ্জের স্পট লিভারেজ ইন্টারফেসে অ্যাক্সেস পাবে। যদি এক্সচেঞ্জ স্পট লিভারেজের ক্ষেত্রে পূর্ণ মার্জিন এবং বিচ্ছিন্ন মার্জিনের মধ্যে পার্থক্য করে, তাহলে ব্যবহার করুনঃexchange.IO("trade_super_margin")লিভারেজযুক্ত অ্যাকাউন্টের জন্য পূর্ণ মার্জিনে স্যুইচ করতে হবে এবংexchange.IO("trade_margin")লিভারেজযুক্ত অ্যাকাউন্টের জন্য আইসোলেটেড মার্জিনে স্যুইচ করতে হবে।
  • প্যারামিটারkসেট করা আছে"trade_normal"স্বাভাবিক স্পট অ্যাকাউন্ট মোডে ফিরে যেতে।

স্পট এক্সচেঞ্জ যা লিভারেজযুক্ত অ্যাকাউন্ট মডেলগুলির মধ্যে স্যুইচিং সমর্থন করেঃ

বিনিময় বিশেষ মন্তব্য
ঠিক আছে লিভারেজযুক্ত অ্যাকাউন্ট মোডে ট্রেডিং জোড়া স্বাভাবিকগুলির থেকে আলাদা, কিছু ট্রেডিং জোড়া তাদের নাও থাকতে পারে।exchange.IO("trade_super_margin")লিভারেজযুক্ত অ্যাকাউন্টের জন্য পূর্ণ পজিশনে স্যুইচ করা এবং ব্যবহার করাexchange.IO("trade_margin")অবস্থান দ্বারা অবস্থান পরিবর্তন করতে.trade_normalসাধারণ স্পট মোডে স্যুইচ করতে।exchange.IO("tdMode", "cross")সরাসরি লিভারেজ মোড নির্দিষ্ট করতে।
হুবি লিভারেজড অ্যাকাউন্ট মোড ট্রেডিং জোড়া স্বাভাবিকের থেকে আলাদা, কিছু ট্রেডিং জোড়া তাদের নাও থাকতে পারে। হুবি লিভারেজড অ্যাকাউন্টে পূর্ণ অবস্থান এবং অবস্থান দ্বারা অবস্থান রয়েছে। ব্যবহার করুনtrade_marginপজিশন অনুযায়ী লিভারেজ অ্যাকাউন্ট পজিশনে স্যুইচ করতে, ব্যবহারtrade_super_marginলিভারেজ অ্যাকাউন্টের পূর্ণ অবস্থানে স্যুইচ করতে।trade_normalস্বাভাবিক মুদ্রা-মুদ্রা মোডে স্যুইচ করতে।
বিন্যান্স লিভারেজযুক্ত অ্যাকাউন্টের মোডটি পজিশন অনুযায়ী পজিশন এবং পূর্ণ পজিশনে বিভক্ত, ব্যবহারtrade_marginঅবস্থান দ্বারা অবস্থান পরিবর্তন করতে, ব্যবহারtrade_super_marginপূর্ণ অবস্থানে স্যুইচ করতে, ব্যবহারtrade_normalস্বাভাবিক মুদ্রা-মুদ্রা মোডে স্যুইচ করতে।
গেটআইও লিভারেজযুক্ত অ্যাকাউন্টের মোডটি পজিশন অনুযায়ী পজিশন এবং পূর্ণ পজিশনে বিভক্ত, ব্যবহারtrade_marginঅবস্থান দ্বারা অবস্থান পরিবর্তন করতে, ব্যবহারtrade_super_marginপূর্ণ অবস্থানে স্যুইচ করতে, ব্যবহারtrade_normalস্বাভাবিক মুদ্রা-মুদ্রা মোডে স্যুইচ করতে।
AscendEx ব্যবহারexchange.IO("trade_margin")লিভারেজ অ্যাকাউন্ট মোডে স্যুইচ করতে এবংexchange.IO("trade_normal")স্বাভাবিক অ্যাকাউন্ট মোডে ফিরে যেতে।
উও ব্যবহারexchange.IO("trade_margin")লিভারেজ অ্যাকাউন্ট মোডে স্যুইচ করতে এবংexchange.IO("trade_normal")স্বাভাবিক অ্যাকাউন্ট মোডে ফিরে যেতে।
কয়েন এক্স ব্যবহারexchange.IO("trade_margin")লিভারেজযুক্ত অ্যাকাউন্ট মোডে স্যুইচ করতে এবংexchange.IO("trade_normal")স্বাভাবিক অ্যাকাউন্ট মোডে ফিরে যেতে।

IV. অন্যান্য সুইচিং ফাংশনঃদেখুনexchange.IO()জন্য ফাংশনঅন্যান্য সুইচিং ফাংশনব্যবহারকারীর নির্দেশিকায়।

{@fun/NetSettings/exchange.SetBase exchange.SetBase}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@var EXCHANGE_OP_IO_CONTROL}

exchange.Log

দ্যexchange.Log()ফাংশনটি লগ কলাম এলাকায় অর্ডার স্থাপন এবং প্রত্যাহারের লগ আউটপুট করতে ব্যবহৃত হয়। যখন কল করা হয়, কোন অর্ডার স্থাপন করা হয় না, শুধুমাত্র লেনদেন লগ আউটপুট এবং রেকর্ড করা হয়।

exchange.Log ((অর্ডারপ্রকার, মূল্য, পরিমাণ) exchange.Log ((orderType, price, amount,...args) অর্ডারের ধরন, মূল্য, পরিমাণ,...args)

দ্যorderTypeপ্যারামিটারটি আউটপুট লগ টাইপ সেট করতে ব্যবহৃত হয়, ঐচ্ছিক মানগুলি হল {@var/LOG_TYPE/LOG_TYPE_BUY LOG_TYPE_BUY}, {@var/LOG_TYPE/LOG_TYPE_SELL LOG_TYPE_SELL}, {@var/LOG_TYPE/LOG_TYPE_CANCEL LOG_TYPE_CANCEL}. অর্ডারপ্রকার সত্য সংখ্যা দ্যpriceপ্যারামিটারটি আউটপুট লগ-এ প্রদর্শিত দাম সেট করতে ব্যবহৃত হয়। দাম সত্য সংখ্যা দ্যamountএই প্যারামিটারটি আউটপুট লগ-এ প্রদর্শিত অর্ডারের পরিমাণ সেট করতে ব্যবহৃত হয়। পরিমাণ সত্য সংখ্যা প্রসারিত প্যারামিটার যা এই লগের সাথে তথ্য আউটপুট করতে পারে,argপ্যারামিটার একের বেশি পাস করা যেতে পারে। আরজি মিথ্যা string, number, bool, object, array, null এবং সিস্টেম দ্বারা সমর্থিত অন্য যেকোনো টাইপ

var id = 123
function main() {
    // Order type buy, price 999, amount 0.1
    exchange.Log(LOG_TYPE_BUY, 999, 0.1)      
    // Cancel the order
    exchange.Log(LOG_TYPE_CANCEL, id)         
}
id = 123
def main():
    exchange.Log(LOG_TYPE_BUY, 999, 0.1)
    exchange.Log(LOG_TYPE_CANCEL, id)
void main() {
    auto id = 123;
    exchange.Log(LOG_TYPE_BUY, 999, 0.1);
    exchange.Log(LOG_TYPE_CANCEL, id);
}

ব্যবহারexchange.Log(orderType, price, amount)এটি পরীক্ষার পরে লাইভ ট্রেডিং অর্ডারের জন্য ব্যবহার করা যেতে পারে, সিমুলেটেড অর্ডার স্থাপন, এবং এটি অর্ডার স্থানান্তর লগিংয়ে সহায়তা করতে পারে। সর্বাধিক সাধারণ দৃশ্যকল্পগুলির মধ্যে একটি হল {@fun/Trade/exchange.IOexchange.IO} ফাংশনটি শর্তাধীন অর্ডার তৈরির জন্য এক্সচেঞ্জের ইন্টারফেসে অ্যাক্সেস করতে পারে, কিন্তুexchange.IO()ফাংশন লাইভ ট্রেডিং লগ রেকর্ডে লেনদেন লগ তথ্য আউটপুট দেয় না।exchange.Log()অর্ডার স্থানান্তর তথ্য রেকর্ড করার জন্য আউটপুট লগকে সম্পূরক করতে এই ফাংশন ব্যবহার করা যেতে পারে এবং অর্ডার প্রত্যাহারের ক্ষেত্রেও একই কথা সত্য।

যখনorderTypeপ্যারামিটার হলLOG_TYPE_CANCEL,priceপ্যারামিটার হল প্রত্যাহারকৃত অর্ডারের অর্ডার আইডি, যা অর্ডারটি সরাসরি প্রত্যাহার করা হলে প্রত্যাহারের লগটি মুদ্রণের জন্য ব্যবহৃত হয়।exchange.IO()ফাংশন।exchange.Log()ফাংশন হল {@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্টের সদস্য ফাংশন, যা গ্লোবাল ফাংশন {@fun/Log Log} থেকে আলাদা।

{@fun/Log Log}, {@var/EXCHANGE exchange}, {@var/LOG_TYPE/LOG_TYPE_BUY LOG_TYPE_BUY}, {@var/LOG_TYPE/LOG_TYPE_SELL LOG_TYPE_SELL}, {@var/LOG_TYPE/LOG_TYPE_CANCEL LOG_TYPE_CANCEL}

exchange.Encode

দ্যexchange.Encode()ফাংশনটি স্বাক্ষর এনক্রিপশন গণনার জন্য ব্যবহৃত হয়।

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

exchange.Encode ((algo, inputFormat, outputFormat, data) exchange.Encode ((algo, inputFormat, outputFormat, data, keyফরম্যাট, কী)

প্যারামিটারalgoহ'ল এনকোডিং গণনার জন্য ব্যবহৃত অ্যালগরিদম। সমর্থিত সেটিংস হ'লঃ raw (কোন অ্যালগরিদম ব্যবহার করা হয়নি), sign, signTx, md4, md5, sha256, sha512, sha1, keccak256, sha3.224, sha3.256, sha3.384, sha3.512, sha3.keccak256, sha3.keccak512, sha512.384, sha512.256, sha512.224, emd160, blake2ripb.256, blake2b.512, blake2s.128, blake2s.256।algoএছাড়াও সমর্থন করেঃ text.encoder.utf8, text.decoder.utf8, text.encoder.gbk, text.decoder.gbk, এনকোডিং এবং ডিকোডিং স্ট্রিং জন্য।algoএছাড়াও সমর্থন করেঃ ed25519 অ্যালগরিদম। এটি বিভিন্ন হ্যাশ অ্যালগরিদম ব্যবহার সমর্থন করে, উদাহরণস্বরূপ, প্যারামিটারalgoed25519.md5, ed25519.sha512 ইত্যাদি হিসাবে লেখা যেতে পারেed25519.seedগণনা। কিছু সত্য স্ট্রিং তথ্য বিন্যাস নির্দিষ্ট করতে ব্যবহৃত হয়dataপ্যারামিটার।inputFormatপ্যারামিটারটি raw, hex, base64, এবং string এর মধ্যে একটিতে সেট করা যেতে পারে। raw এর অর্থ ডেটা কাঁচা ডেটা, hex এর অর্থ ডেটাhexকোড করা, base64 মানে তথ্যbase64এনকোড করা হয়, এবং string মানে ডাটা একটি স্ট্রিং। ইনপুটফরম্যাট সত্য স্ট্রিং আউটপুট ডেটা ফরম্যাট নির্দিষ্ট করতে ব্যবহৃত হয়।outputFormatপ্যারামিটার নিম্নলিখিত সেটিংস সমর্থন করেঃ raw, hex, base64, string. raw মানে ডাটা কাঁচা ডাটা, hex মানে ডাটাhexকোড করা, base64 মানে তথ্যbase64এনকোড করা হয়, এবং string মানে ডাটা একটি স্ট্রিং। আউটপুটফর্ম্যাট সত্য স্ট্রিং প্যারামিটারdataযে তথ্যগুলো প্রক্রিয়া করা হবে। তথ্য সত্য স্ট্রিং তথ্য বিন্যাস নির্দিষ্ট করতে ব্যবহৃত হয়keyপ্যারামিটার।keyপ্যারামিটারটি raw, hex, base64, এবং string এর মধ্যে একটিতে সেট করা যেতে পারে। raw এর অর্থ ডেটা কাঁচা ডেটা, hex এর অর্থ ডেটাhexকোড করা, base64 মানে তথ্যbase64এনকোড করা হয়, এবং string মানে ডাটা একটি স্ট্রিং। keyফরম্যাট মিথ্যা স্ট্রিং দ্যkeyপ্যারামিটার স্বাক্ষর হিসাব ব্যবহৃত কী উল্লেখ করতে ব্যবহৃত হয়, এবং এটি একটি সরল পাঠ্য স্ট্রিং হিসাবে ব্যবহার করা যেতে পারে. আপনি ব্যবহার করতে পারেন"{{accesskey}}", "{{secretkey}}"উল্লেখ করার জন্যaccessKeyএবংsecretKey{@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্টে কনফিগার করা। চাবি মিথ্যা স্ট্রিং

function main() {
    var APIKEY = "your Access Key(Bitmex API ID)"
    var expires = parseInt(Date.now() / 1000) + 10
    var signature = exchange.Encode("sha256", "string", "hex", "GET/realtime" + expires, "hex", "{{secretkey}}")
    var client = Dial("wss://www.bitmex.com/realtime", 60)
    var auth = JSON.stringify({args: [APIKEY, expires, signature], op: "authKeyExpires"})
    var pos = 0
    client.write(auth)
    client.write('{"op": "subscribe", "args": "position"}')
    while (true) {
        bitmexData = client.read()
        if(bitmexData.table == 'position' && pos != parseInt(bitmexData.data[0].currentQty)){
            Log('position change', pos, parseInt(bitmexData.data[0].currentQty), '@')
            pos = parseInt(bitmexData.data[0].currentQty)
        }
    }
}
import time
def main():
    APIKEY = "your Access Key(Bitmex API ID)"
    expires = int(time.time() + 10)
    signature = exchange.Encode("sha256", "string", "hex", "GET/realtime" + expires, "hex", "{{secretkey}}")
    client = Dial("wss://www.bitmex.com/realtime", 60)
    auth = json.dumps({"args": [APIKEY, expires, signature], "op": "authKeyExpires"})
    pos = 0
    client.write(auth)
    client.write('{"op": "subscribe", "args": "position"}')
    while True:
        bitmexData = json.loads(client.read())
        if "table" in bitmexData and bitmexData["table"] == "position" and len(bitmexData["data"]) != 0 and pos != bitmexData["data"][0]["currentQty"]:   
            Log("position change", pos, bitmexData["data"][0]["currentQty"], "@")
            pos = bitmexData["data"][0]["currentQty"]
void main() {
    auto APIKEY = "your Access Key(Bitmex API ID)";
    auto expires = Unix() + 10;
    auto signature = exchange.Encode("sha256", "string", "hex", format("GET/realtime%d", expires), "hex", "{{secretkey}}");
    
    auto client = Dial("wss://www.bitmex.com/realtime", 60);
    json auth = R"({"args": [], "op": "authKeyExpires"})"_json;            

    auth["args"].push_back(APIKEY);
    auth["args"].push_back(expires);
    auth["args"].push_back(signature);
    auto pos = 0;
    client.write(auth.dump());
    client.write("{\"op\": \"subscribe\", \"args\": \"position\"}");
    while(true) {
        auto bitmexData = json::parse(client.read());
        if(bitmexData["table"] == "position" && bitmexData["data"][0].find("currentQty") != bitmexData["data"][0].end() && pos != bitmexData["data"][0]["currentQty"]) {
            Log("test");
            Log("position change", pos, bitmexData["data"][0]["currentQty"], "@");
            pos = bitmexData["data"][0]["currentQty"];
        }
    }
}

BitMEX অবস্থান পরিবর্তন চাপের উদাহরণ (wss প্রোটোকল):

শুধুমাত্র বাস্তব ট্রেডিং সমর্থন কলexchange.Encode()ফাংশন।"{{accesskey}}", "{{secretkey}}"রেফারেন্স শুধুমাত্র বৈধ যখনexchange.Encode()ফাংশন ব্যবহার করা হয়.

{@var/EXCHANGE exchange}, {@fun/Global/Encode Encode}

exchange.Go

মাল্টি-থ্রেইড অ্যাসিনক্রোনস সাপোর্ট ফাংশনগুলি সমস্ত সমর্থিত ফাংশনগুলির ক্রিয়াকলাপকে অ্যাসিনক্রোনস সমান্তরাল এক্সিকিউশনে পরিণত করতে পারে।

দ্যexchange.Go()ফাংশন অবিলম্বে একটি সমান্তরাল বস্তু ফেরত, এবং আপনি ব্যবহার করতে পারেনwait()একই সাথে অনুরোধের ফলাফল পেতে যে সমান্তরাল বস্তুর পদ্ধতি. বস্তু

exchange.Go পদ্ধতি) বিনিময়.Go ((পদ্ধতি,... args)

দ্যmethodপ্যারামিটারটি সমান্তরাল ফাংশনের নাম নির্দিষ্ট করতে ব্যবহৃত হয়। লক্ষ্য করুন যে প্যারামিটারটি একটি ফাংশন নাম স্ট্রিং, একটি ফাংশন রেফারেন্স নয়। পদ্ধতি সত্য স্ট্রিং প্যারামিটারএকযোগে ফাংশন সম্পাদন, একের বেশি প্যারামিটার থাকতে পারেarg. প্যারামিটারের ধরন এবং সংখ্যাargপ্যারামিটার উপর নির্ভর করেসমান্তরাল সম্পাদন ফাংশন. আরজি মিথ্যা string, number, bool, object, array, function, null, এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য সকল টাইপ

function main(){
    // The following four operations are concurrently executed asynchronously by multiple threads and do not take time and return immediately
    var a = exchange.Go("GetTicker")
    var b = exchange.Go("GetDepth") 
    var c = exchange.Go("Buy", 1000, 0.1)
    var d = exchange.Go("GetRecords", PERIOD_H1)
           
    // Call the wait method to wait for the return of the ticker results asynchronously 
    var ticker = a.wait()            
    // Returns the depth, or null if it fails 
    var depth = b.wait()             
    // return order number, limited to 1 second timeout, if timeout, returns undefined, the object can continue to call wait if the last wait timeout 
    var orderId = c.wait(1000)
    if(typeof(orderId) == "undefined") {
        // Timeout, reacquire
        orderId = c.wait()
    }
    var records = d.wait()
}
def main():
    a = exchange.Go("GetTicker")
    b = exchange.Go("GetDepth")
    c = exchange.Go("Buy", 1000, 0.1)
    d = exchange.Go("GetRecords", PERIOD_H1)            

    ticker, ok = a.wait()
    depth, ok = b.wait()
    orderId, ok = c.wait(1000)
    if ok == False:
        orderId, ok = c.wait()
    records, ok = d.wait()
void main() {
    auto a = exchange.Go("GetTicker");
    auto b = exchange.Go("GetDepth");
    auto c = exchange.Go("Buy", 1000, 0.1);
    auto d = exchange.Go("GetRecords", PERIOD_H1);            

    Ticker ticker;
    Depth depth;
    Records records;
    TId orderId;
    a.wait(ticker);
    b.wait(depth);
    if(!c.wait(orderId, 300)) {
        c.wait(orderId);
    }
    d.wait(records);
}

Exchange.Go()ফাংশন ব্যবহারের উদাহরণ, নির্ধারণ করতেundefinedব্যবহার করাtypeof(xx) === "undefined"কারণnull == undefinedজাভাস্ক্রিপ্টে বৈধ।

function main() {
    var d = exchange.Go("GetRecords", PERIOD_H1)
    // Waiting for K-line results
    var records = d.wait()
    // Here waits an asynchronous operation that has been waited and finished, it will return null, and log the error message
    var ret = d.wait()
}
def main():
    d = exchange.Go("GetRecords", PERIOD_H1)
    records, ok = d.wait()
    ret, ok = d.wait()
void main() {
    auto d = exchange.Go("GetRecords", PERIOD_H1);
    Records records;
    d.wait(records);
    Records ret;
    d.wait(ret);
}

কলিংwait()একটি সমান্তরাল বস্তুর উপর পদ্ধতি যা মুক্তি দেওয়া হয়েছে একটি ত্রুটি রিপোর্ট করবেঃ

function main() {
    while(true) {
        var beginTS = new Date().getTime()
        var arrRoutine = []
        var arrTicker = []
        var arrName = []
        for(var i = 0; i < exchanges.length; i++) {
            arrRoutine.push(exchanges[i].Go("GetTicker"))
            arrName.push(exchanges[i].GetName())
        }            

        for(var i = 0; i < arrRoutine.length; i++) {
            arrTicker.push(arrRoutine[i].wait())
        }
        var endTS = new Date().getTime()            

        var tbl = {
            type: "table", 
            title: "ticker", 
            cols: ["index", "name", "latest-deal-price"], 
            rows: []
        }
        
        for(var i = 0; i < arrTicker.length; i++) {
            tbl.rows.push([i, arrName[i], arrTicker[i].Last])
        }            

        LogStatus(_D(), "Total time taken to obtain tickers from multiple exchanges concurrently:", endTS - beginTS, "millisecond", "\n", "`" + JSON.stringify(tbl) + "`")
        Sleep(500)
    }
}
import time 
import json
def main():
    while True:
        beginTS = time.time()
        arrRoutine = []
        arrTicker = []
        arrName = []
        for i in range(len(exchanges)):
            arrRoutine.append(exchanges[i].Go("GetTicker"))
            arrName.append(exchanges[i].GetName())            

        for i in range(len(exchanges)):
            ticker, ok = arrRoutine[i].wait()
            arrTicker.append(ticker)            

        endTS = time.time()
        tbl = {
            "type": "table", 
            "title": "ticker", 
            "cols": ["index", "name", "latest-deal-price"], 
            "rows": [] 
        }            

        for i in range(len(arrTicker)):
            tbl["rows"].append([i, arrName[i], arrTicker[i]["Last"]])            

        LogStatus(_D(), "Total time taken to obtain tickers from multiple exchanges concurrently:", endTS - beginTS, "second", "\n", "`" + json.dumps(tbl) + "`")
        Sleep(500)
void main() {
    while(true) {
        int length = exchanges.size();
        auto beginTS = UnixNano() / 1000000;
        Ticker arrTicker[length] = {};
        string arrName[length] = {};
        
        // Note that to add several exchange objects, several exchanges[n].Go functions have to be executed here, this example is to add four exchange objects, the details can be modified
        auto r0 = exchanges[0].Go("GetTicker");
        auto r1 = exchanges[1].Go("GetTicker");
        auto r2 = exchanges[2].Go("GetTicker");
        auto r3 = exchanges[3].Go("GetTicker");
        GoObj *arrRoutine[length] = {&r0, &r1, &r2, &r3};
        
        for(int i = 0; i < length; i++) {
            arrName[i] = exchanges[i].GetName();
        }            

        for(int i = 0; i < length; i++) {
            Ticker ticker;
            arrRoutine[i]->wait(ticker);
            arrTicker[i] = ticker;
        }        
        auto endTS = UnixNano() / 1000000;            

        json tbl = R"({
            "type": "table", 
            "title": "ticker", 
            "cols": ["index", "name", "latest-deal-price"], 
            "rows": [] 
        })"_json;            

        for(int i = 0; i < length; i++) {
            json arr = R"(["", "", ""])"_json;
            arr[0] = format("%d", i);
            arr[1] = arrName[i];
            arr[2] = format("%f", arrTicker[i].Last);
            tbl["rows"].push_back(arr);
        }            

        LogStatus(_D(), "Total time taken to obtain tickers from multiple exchanges concurrently:", format("%d", endTS - beginTS), "millisecond", "\n", "`" + tbl.dump() + "`");
        Sleep(500);
    }
}

একাধিক এক্সচেঞ্জ টিকার একযোগে অ্যাক্সেসঃ

function main() {
    /*  
        Testing with OKX futures order interface
        POST /api/v5/trade/order        
    */
    
    var beginTS = new Date().getTime()
    var param = {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}
    var ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
    var ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
    var ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
    
    var id1 = ret1.wait()
    var id2 = ret2.wait()
    var id3 = ret3.wait()
    var endTS = new Date().getTime()                

    Log("id1:", id1)
    Log("id2:", id2)
    Log("id3:", id3)
    Log("Concurrent order placement time consumption:", endTS - beginTS, "millisecond")
}
import time
import json
def main():
    beginTS = time.time()
    param = {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}
    ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
    ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
    ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))            

    id1, ok1 = ret1.wait()
    id2, ok2 = ret2.wait()
    id3, ok3 = ret3.wait()
    endTS = time.time()            

    Log("id1:", id1)
    Log("id2:", id2)
    Log("id3:", id3)
    Log("Concurrent order placement time consumption:", endTS - beginTS, "second")
void main() {
    auto beginTS = UnixNano() / 1000000;
    json param = R"({"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"})"_json;
    auto ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
    auto ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
    auto ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());            

    json id1 = R"({})"_json;
    json id2 = R"({})"_json;
    json id3 = R"({})"_json;            

    ret1.wait(id1);
    ret2.wait(id2);
    ret3.wait(id3);
    auto endTS = UnixNano() / 1000000;            

    Log("id1:", id1);
    Log("id2:", id2);
    Log("id3:", id3);
    Log("Concurrent order placement time consumption:", endTS - beginTS, "millisecond");
}

একযোগে আহ্বানexchange.IO("api", ...)ফাংশনঃ

এই ফাংশনটি কেবলমাত্র বাস্তব ট্রেডিংয়ে চলার সময় মাল্টি-থ্রেডড এক্সিকিউশন টাস্ক তৈরি করে, ব্যাকটেস্টিং মাল্টি-থ্রেডড সমান্তরাল টাস্ক এক্সিকিউশন সমর্থন করে না (ব্যাকটেস্টিং উপলব্ধ, তবে এখনও ক্রমিকভাবে কার্যকর হয়) । এর পরexchange.Go()ফাংশন একটি বস্তু ফেরত, তারwait()ফাংশনটি থ্রেড দ্বারা ফেরত দেওয়া তথ্য পেতে সেই বস্তুর মাধ্যমে কল করা হয়।wait()ফাংশন স্বয়ংক্রিয়ভাবে থ্রেড মুক্তি হবে আগে তথ্য পেতে কল করা আবশ্যক।wait()একটি থ্রেডের ফলাফল স্বয়ংক্রিয়ভাবে মুক্তি পাওয়ার আগে পাওয়া উচিত (একযোগে অ্যাক্সেসের জন্য ইন্টারফেস কলের সাফল্য বা ব্যর্থতার নির্বিশেষে) । সহজ কথায়, অনুরোধ করা থ্রেডটি অবশ্যইwait()ফাংশন নির্বিশেষে নির্বাহ সফল বা ব্যর্থ হয় কিনা, এবং থ্রেড অনুরোধ রিসোর্সexchange.Go()ফাংশন ডকার দ্বারা স্বয়ংক্রিয়ভাবে মুক্তি দেওয়া আবশ্যক। দ্যwait()পদ্ধতিটি একটি টাইমআউট প্যারামিটার সমর্থন করেঃ টাইমআউট প্যারামিটার ছাড়া, অর্থাৎ,wait()অথবা টাইমআউট প্যারামিটার ০, অর্থাৎ,wait(0).wait()ফাংশন ব্লক এবং অপেক্ষা করে যতক্ষণ না সমান্তরাল থ্রেডটি চালানো শেষ হয়, সমান্তরাল থ্রেডের এক্সিকিউশনের ফলাফল ফেরত দেয়। টাইমআউট প্যারামিটার সেট করুন -1, অর্থাৎwait(-1).wait()ফাংশন অবিলম্বে ফেরত দেয়, বিভিন্ন প্রোগ্রামিং ভাষার জন্য বিভিন্ন রিটার্ন মান সহ, একটি উদাহরণ কলের জন্য এই উপবিভাগটি দেখুন। নির্দিষ্ট টাইমআউট প্যারামিটার সেট করুন,wait(300), এবংwait()ফাংশনটি ফিরে আসার আগে সর্বোচ্চ ৩০০ মিলিসেকেন্ড অপেক্ষা করবে।

যদি ফাইনাল ফলাফল ফিরেwait()ফাংশনটি পাওয়া যায়নি, থ্রেড রিসোর্সগুলি স্বয়ংক্রিয়ভাবে মুক্তি পাবে না, যা অনুরোধ করা থ্রেডগুলির জমে উঠতে পারে এবং 2000 এর বেশি ত্রুটি রিপোর্ট করবেঃ"too many routine wait, max is 2000". সমর্থিত ফাংশনঃGetTicker, GetDepth, GetTrades, GetRecords, GetAccount, GetOrders, GetOrder, CancelOrder, Buy, Sell, GetPositions, IO. এই সমস্ত ফাংশন বর্তমান {@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্টের উপর ভিত্তি করে একই সাথে কল করা হয়। পাইথন ভাষা এবং জাভাস্ক্রিপ্ট ভাষার মধ্যে পার্থক্য হল যেwait()পাইথন ভাষায় সমান্তরাল বস্তুর ফাংশন দুটি পরামিতি ফেরত দেয়। প্রথম প্যারামিটারটি একটি অ্যাসিনক্রোন এপিআই কল দ্বারা ফেরত দেওয়া ফলাফল, এবং দ্বিতীয় প্যারামিটারটি নির্দেশ করে যে অ্যাসিনক্রোন কলটি সম্পন্ন হয়েছে কিনা।


def main():
    d = exchange.Go("GetRecords", PERIOD_D1)
    # ok will return True definitely, unless the strategy is stopped
    ret, ok = d.wait()          
    # If the wait times out, or if it waits for an instance that has already ended, ok returns False
    ret, ok = d.wait(100)  

{@fun/Global/Mail_Go Mail_Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}, {@fun/Global/EventLoop ইভেন্টলুপ}

অ্যাকাউন্ট

exchange.GetAccount

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

অ্যাকাউন্ট সম্পদ তথ্য অনুসন্ধান করুন এবং যদি অনুসন্ধানটি সফল হয় তবে {@struct/Account Account} কাঠামোটি ফেরত দিন বা ব্যর্থ হলে শূন্য। {@struct/Account Account}, শূন্য মান

এক্সচেঞ্জ.গেটঅ্যাকাউন্ট ((()

function main(){
    // Switching trading pairs
    exchange.IO("currency", "BTC_USDT")     
    // Take OKX futures as an example, set the contract as the current week's contract, the current trading pair is BTC_USDT, so the current contract is BTC's U-nominal current week contract
    exchange.SetContractType("this_week")   
    // Get current account asset data
    var account = exchange.GetAccount()
    // Available balance of USDT as margin
    Log(account.Balance)
    // USDT freeze amount as margin
    Log(account.FrozenBalance)
    // Current asset equity
    Log(account.Equity)
    // The unrealized profit and loss of all positions held with the current asset as margin
    Log(account.UPnL)
}
def main():
    exchange.IO("currency", "BTC_USDT")
    exchange.SetContractType("this_week")    
    account = exchange.GetAccount()
    Log(account["Balance"])
    Log(account["FrozenBalance"])
    Log(account["Equity"])
    Log(account["UPnL"])
void main() {
    exchange.IO("currency", "BTC_USDT");
    exchange.SetContractType("this_week");    
    auto account = exchange.GetAccount();
    Log(account.Balance);
    Log(account.FrozenBalance);
    Log(account["Equity"])
    Log(account["UPnL"])
}

ট্রেডিং জোড়া সেট আপ করুন, চুক্তি কোড, এবং বর্তমান অ্যাকাউন্ট তথ্য পান.

যদি বিনিময় বস্তু একটি cryptocurrency ফিউচার চুক্তি বিনিময় সেট করা হয়, এবং একটি চুক্তিতে স্যুইচUSDTযেমন মার্জিন (দেখুন {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType} ফাংশন কিভাবে স্যুইচ করতে হয়) । সম্পদ হলUSDTমার্জিন হিসাবে, যা রেকর্ড করা হয়Balance, FrozenBalance{@struct/Account Account} স্ট্রাকচারের বৈশিষ্ট্য। যদি এক্সচেঞ্জ অবজেক্টটি একটি ক্রিপ্টোকারেন্সি ফিউচার চুক্তি এক্সচেঞ্জে সেট করা হয়, এবং মুদ্রা ভিত্তিক চুক্তিতে স্যুইচ করা হয়, তবে সম্পদটি মুদ্রায় মার্জিন হিসাবে রয়েছে এবং অ্যাকাউন্টে রেকর্ড করা হয়Stocks, FrozenStocks{@struct/Account Account} স্ট্রাকচারের বৈশিষ্ট্য। Binance ফিউচার ইউনিফাইড অ্যাকাউন্ট ব্যবহার করার সময়,exchange.GetAccount()অ্যাকাউন্ট তথ্য অনুরোধ করার জন্য ফাংশন, encapsulated তথ্য সব সম্পদ রূপান্তরিত পরিমাণমার্কিন ডলার. এটি প্রদর্শিত হয়Balance{@struct/Account Account} কাঠামোর ক্ষেত্র। যদি আপনার অন্যান্য সম্পদের রূপান্তর পরিমাণ গণনা করতে হয়, তাহলে আপনি এটি গণনা করার জন্য ইউএসডি রূপান্তর পরিমাণকে সূচক মূল্য (রূপান্তরিত সম্পদের) দ্বারা বিভক্ত এবং তারপরে প্রতিশ্রুতি হার (রূপান্তরিত সম্পদের) দ্বারা বিভক্ত করতে পারেন।

{@struct/AccountAccount}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@struct/AccountAccount}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetContractType}, {@fun/Futures/exchange.SetContractType}, {@fun/Futures/exchange.SetContractType}, {@fun/Futures/exchange.

exchange.GetAssets

দ্যexchange.GetAssetsএই ফাংশনটি বিনিময় অ্যাকাউন্টের সম্পদ সংক্রান্ত তথ্য অনুরোধ করতে ব্যবহৃত হয়।

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

এক্সচেঞ্জ.গেটঅ্যাসেটস ((()

function main() {
    // exchange.SetCurrency("BTC_USDT")  // You can set up trading pairs
    // exchange.SetContractType("swap")  // You can set up contracts
    var assets = exchange.GetAssets()
    Log(assets)
}
def main():
    # exchange.SetCurrency("BTC_USDT")  # You can set up trading pairs
    # exchange.SetContractType("swap")  # You can set up contracts
    assets = exchange.GetAssets()
    Log(assets)
void main() {
    // exchange.SetCurrency("BTC_USDT");  // You can set up trading pairs
    // exchange.SetContractType("swap");  // You can set up contracts
    auto assets = exchange.GetAssets();
    Log(assets);
}

এক্সচেঞ্জ অ্যাকাউন্টের সম্পদের তথ্য পেতে,exchange.GetAssets()সম্পদ কাঠামোর উপাদান সহ একটি অ্যারে প্রদান করে।

দ্যGetAssets()ফিউচার এক্সচেঞ্জ অবজেক্টের ফাংশন বর্তমান ট্রেডিং জোড়ার অধীনে মার্জিন সম্পদ (মুদ্রা ভিত্তিক, ইউএসডিটি ভিত্তিক, ইউএসডিসি ভিত্তিক ইত্যাদি) প্রদান করে।

{@struct/Asset Asset}

exchange.GetName

দ্যexchange.GetName()বর্তমান এক্সচেঞ্জ অবজেক্টের সাথে আবদ্ধ এক্সচেঞ্জের নাম পেতে ফাংশনটি ব্যবহার করা হয়।

দ্যexchange.GetName()ফাংশন FMZ Quant Trading প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত এক্সচেঞ্জের নাম প্রদান করে। স্ট্রিং

exchange.GetName ((()

function main() {
    Log("The exchange object exchange is judged to be Binance spot, and the result is judged to be:", exchange.GetName() == "Binance")
}
def main():
    Log("The exchange object exchange is judged to be Binance spot, and the result is judged to be:", exchange.GetName() == "Binance")
void main() {
    Log("The exchange object exchange is judged to be Binance spot, and the result is judged to be:", exchange.GetName() == "Binance");
}

দ্যexchange.GetName()ফাংশন সাধারণত বিনিময় বস্তু সনাক্ত করতে ব্যবহৃত হয়, যেমনঃexchangeঅথবাexchanges[1], exchanges[2]কৌশল কোড মধ্যে. cryptocurrency ফিউচার চুক্তি এক্সচেঞ্জ নাম স্থির উপসর্গ আছেFutures_.

{@fun/Account/exchange.GetLabel বিনিময়.GetLabel}

exchange.GetLabel

দ্যexchange.GetLabel()ফাংশনটি এক্সচেঞ্জ অবজেক্টটি কনফিগার করার সময় সেট করা কাস্টম লেবেলটি পেতে ব্যবহৃত হয়।

দ্যexchange.GetLabel()ফাংশন এক্সচেঞ্জ অবজেক্ট কনফিগার করার সময় সেট করা কাস্টম লেবেলটি ফেরত দেয়। স্ট্রিং

এক্সচেঞ্জ.গেটলেবেল ((()

function main() {
    Log("exchange label:", exchange.GetLabel())
}
def main():
    Log("exchange label:", exchange.GetLabel())
void main() {
    Log("exchange label:", exchange.GetLabel());
}

বিনিময় বস্তু যেমনঃexchangeঅথবাexchanges[1], exchanges[2]কৌশল কোডে সেট ট্যাগ দ্বারা চিহ্নিত করা হয়।

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

exchange.GetCurrency

দ্যexchange.GetCurrency()ফাংশনটি বর্তমানে সেট করা ট্রেডিং জোড়া পেতে ব্যবহৃত হয়।

দ্যexchange.GetCurrency()ফাংশন বর্তমান {@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্ট দ্বারা সেট করা ট্রেডিং জোড়া প্রদান করে। স্ট্রিং

exchange.GetCurrency ((()

function main() {
    Log("the current trading pair of exchange is:", exchange.GetCurrency())
}
def main():
    Log("the current trading pair of exchange is:", exchange.GetCurrency())
void main() {
    Log("the current trading pair of exchange is:", exchange.GetCurrency());
}

ট্রেডিং জোড়ার বিন্যাস বড় হাতের আকারে অভিন্নভাবে হয়।baseCurrencyএবংquoteCurrencyযেমন-BTC_USDT.

{@fun/Account/exchange.SetCurrency exchange.SetCurrency} {@fun/Account/exchange.SetCurrency exchange.SetCurrency} {@fun/Account/exchange.SetCurrency exchange.SetCurrency} {@account/exchange.setCurrency.setCurrency} {@account/exchange.setCurrency.setCurrency.setCurrency}

exchange.SetCurrency

দ্যexchange.SetCurrency()এক্সচেঞ্জ অবজেক্ট {@var/EXCHANGE exchange} এর বর্তমান ট্রেডিং জোড়া পরিবর্তন করতে ফাংশনটি ব্যবহার করা হয়।

exchange.SetCurrency ((মুদ্রা)

দ্যcurrencyপ্যারামিটার ব্যবহার করা হয় ট্রেডিং জোড়া সেট করতে স্যুইচ করা. ট্রেডিং জোড়া বিন্যাস বড় হাতের অভিন্ন হয়, একটি underscore ব্যবহার করে পৃথক করতেbaseCurrencyথেকেquoteCurrencyযেমন-BTC_USDT. মুদ্রা সত্য স্ট্রিং

function main() {
    var ticker = exchange.GetTicker() 
    Log(ticker)
    Log(exchange.GetAccount())    
    // Switching trading pairs, pay attention to the changes of ticker data and account information after switching
    exchange.SetCurrency("LTC_USDT")
    Log("Switch to LTC_USDT")
    ticker = exchange.GetTicker()
    Log(ticker)
    Log(exchange.GetAccount())
}
def main():
    ticker = exchange.GetTicker()
    Log(ticker)
    Log(exchange.GetAccount())
    exchange.SetCurrency("LTC_USDT")
    Log("Switch to LTC_USDT")
    ticker = exchange.GetTicker()
    Log(ticker)
    Log(exchange.GetAccount())
void main() {
    auto ticker = exchange.GetTicker();
    Log(ticker);
    Log(exchange.GetAccount());
    exchange.SetCurrency("LTC_USDT");
    Log("Switch to LTC_USDT");
    ticker = exchange.GetTicker();
    Log(ticker);
    Log(exchange.GetAccount());
}
  1. সামঞ্জস্যপূর্ণexchange.IO("currency", "BTC_USDT")স্যুইচিং পদ্ধতি, দয়া করে {@funexcahnge.IO}.
  2. ব্যাকটেস্টিং সিস্টেমে ট্রেডিং জোড়া স্যুইচিং সমর্থন করে, ব্যাকটেস্টিং সিস্টেমে ট্রেডিং জোড়া স্যুইচ করার সময় নামযুক্ত মুদ্রার নাম পরিবর্তন করা যাবে না। উদাহরণস্বরূপঃBTC_USDTপরিবর্তন করা যেতে পারেLTC_USDT, নাLTC_BTC.
  3. ব্যাকটেস্ট পেইজে প্রাথমিকভাবে সেট করা ট্রেডিং জোড়ায় স্যুইচ করার পর ট্রেডিং মুদ্রার সংখ্যা 0 হয়। উদাহরণস্বরূপ, ব্যাকটেস্ট পেইজে সেট করা প্রাথমিক ট্রেডিং জোড়া ব্যাকটেস্টিং করার সময়BTC_USDT, সংখ্যাBTCহয় 3, সংখ্যাUSDTএই সময়ে, চালু করুনLTC_USDTঅবিলম্বে, ট্রেডিং মুদ্রার সংখ্যা 0 হয় স্যুইচ করার পর, অর্থাৎLTC_USDTঅ্যাকাউন্টে 0 হয়, অর্থাৎ, সংখ্যাLTCঅ্যাকাউন্টে 0 এবং স্যুইচ করা ট্রেডিং জোড়ার সংখ্যাUSDTযা ১০,০০০।

{@fun/Account/exchange.GetCurrency exchange.GetCurrency} {@fun/Account/exchange.GetCurrency exchange.GetCurrency} {@fun/Account/exchange.GetCurrency exchange.GetCurrency} {@account/exchange.GetCurrency exchange.GetCurrency}

exchange.GetQuoteCurrency

দ্যexchange.GetQuoteCurrency()ফাংশনটি বর্তমান ট্রেডিং জোড়ার মুদ্রার নাম পেতে ব্যবহৃত হয়, অর্থাৎquoteCurrency.

দ্যexchange.GetQuoteCurrency()ফাংশনটি বর্তমান ট্রেডিং জোড়ার মুদ্রার নাম প্রদান করে। স্ট্রিং

exchange.GetQuoteCurrency ((()

function main() {
    exchange.SetCurrency("BTC_USDT")
    Log("BTC_USDT denominated currency name:", exchange.GetQuoteCurrency())
    // exchange.SetCurrency("ETH_BTC")
    // Log("ETH_BTC denominated currency name:", exchange.GetQuoteCurrency())
}
def main():
    exchange.SetCurrency("BTC_USDT")
    Log("BTC_USDT denominated currency name:", exchange.GetQuoteCurrency())
    # exchange.SetCurrency("ETH_BTC")
    # Log("ETH_BTC denominated currency name:", exchange.GetQuoteCurrency())
void main() {
    exchange.SetCurrency("BTC_USDT");
    Log("BTC_USDT denominated currency name:", exchange.GetQuoteCurrency());
    // exchange.SetCurrency("ETH_BTC")
    // Log("ETH_BTC denominated currency name:", exchange.GetQuoteCurrency())
}

উদাহরণস্বরূপঃ {@var/EXCHANGE exchange} exchange object এর বর্তমান লেনদেনের জোড়া হলBTC_USDT,exchange.GetQuoteCurrency()ফাংশন রিটার্নUSDT. যদি বর্তমান ট্রেডিং জোড়া হয়ETH_BTC,exchange.GetQuoteCurrency()ফাংশন রিটার্নBTC.

{@fun/Account/exchange.GetCurrency exchange.GetCurrency}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}

ফিউচার

exchange.GetPositions

দ্যexchange.GetPositions()অবস্থান তথ্য পেতে ফাংশন ব্যবহার করা হয়;GetPositions()ফাংশনটি এক্সচেঞ্জ অবজেক্ট {@var/EXCHANGE exchange} এর সদস্য ফাংশন।GetPositions()ফাংশন বিনিময় বস্তুর সাথে আবদ্ধ বিনিময় অ্যাকাউন্টের অবস্থান তথ্য পায়exchange. সদস্যদের কার্যাবলীর উদ্দেশ্য (পদ্ধতি)exchangeবস্তুর শুধুমাত্র সম্পর্কিত হয়exchangeএবং এখানে পুনরাবৃত্তি হবে না।

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

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

প্যারামিটারsymbolসেট করতে ব্যবহৃত হয়ট্রেডিং সিম্বলঅথবাট্রেডিং সিম্বল পরিসীমাজিজ্ঞাসাবাদ করা হবে। যদিsymbolপ্যারামিটারটি পাস করা না হলে, ডিফল্টরূপে বর্তমান ট্রেডিং জোড়া এবং চুক্তির কোডের মাত্রা পরিসরের সমস্ত প্রতীকগুলির অবস্থান তথ্য অনুরোধ করা হয়।

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

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

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

    for (var symbol of arrSymbol) {
        exchange.CreateOrder(symbol, "buy", -1, 1)
        exchange.CreateOrder(symbol, "sell", -1, 1)
    }

    var defaultPositions = exchange.GetPositions()
    var swapPositions = exchange.GetPositions("USDT.swap")
    var futuresPositions = exchange.GetPositions("USDT.futures")
    var btcUsdtSwapPositions = exchange.GetPositions("BTC_USDT.swap")

    var tbls = []
    var arr = [defaultPositions, swapPositions, futuresPositions, btcUsdtSwapPositions]
    var tblDesc = ["defaultPositions", "swapPositions", "futuresPositions", "btcUsdtSwapPositions"]
    for (var index in arr) {
        var positions = arr[index]
        var tbl = {type: "table", title: tblDesc[index], cols: ["Symbol", "MarginLevel", "Amount", "FrozenAmount", "Price", "Profit", "Type", "ContractType", "Margin"], rows: [] }
        for (var pos of positions) {
            tbl.rows.push([pos.Symbol, pos.MarginLevel, pos.Amount, pos.FrozenAmount, pos.Price, pos.Profit, pos.Type, pos.ContractType, pos.Margin])
        }
        tbls.push(tbl)
    }

    LogStatus("`" + JSON.stringify(tbls) + "`")

    // Print out the information once and then return to prevent the order from being executed during the subsequent backtest and affecting data observation
    return
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''

import json

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

    for symbol in arrSymbol:
        exchange.CreateOrder(symbol, "buy", -1, 1)
        exchange.CreateOrder(symbol, "sell", -1, 1)

    defaultPositions = exchange.GetPositions()
    swapPositions = exchange.GetPositions("USDT.swap")
    futuresPositions = exchange.GetPositions("USDT.futures")
    btcUsdtSwapPositions = exchange.GetPositions("BTC_USDT.swap")

    tbls = []
    arr = [defaultPositions, swapPositions, futuresPositions, btcUsdtSwapPositions]
    tblDesc = ["defaultPositions", "swapPositions", "futuresPositions", "btcUsdtSwapPositions"]
    for index in range(len(arr)):
        positions = arr[index]
        tbl = {"type": "table", "title": tblDesc[index], "cols": ["Symbol", "MarginLevel", "Amount", "FrozenAmount", "Price", "Profit", "Type", "ContractType", "Margin"], "rows": []}
        for pos in positions:
            tbl["rows"].append([pos["Symbol"], pos["MarginLevel"], pos["Amount"], pos["FrozenAmount"], pos["Price"], pos["Profit"], pos["Type"], pos["ContractType"], pos["Margin"]])

        tbls.append(tbl)

    LogStatus("`" + json.dumps(tbls) + "`")

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

void main() {
    auto arrSymbol = {"BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"};
    
    for (const auto& symbol : arrSymbol) {
        exchange.CreateOrder(symbol, "buy", -1, 1);
        exchange.CreateOrder(symbol, "sell", -1, 1);
    }
    
    auto defaultPositions = exchange.GetPositions();
    auto swapPositions = exchange.GetPositions("USDT.swap");
    auto futuresPositions = exchange.GetPositions("USDT.futures");
    auto btcUsdtSwapPositions = exchange.GetPositions("BTC_USDT.swap");
    
    json tbls = R"([])"_json;
    std::vector<std::vector<Position>> arr = {defaultPositions, swapPositions, futuresPositions, btcUsdtSwapPositions};
    std::string tblDesc[] = {"defaultPositions", "swapPositions", "futuresPositions", "btcUsdtSwapPositions"};
    for (int index = 0; index < arr.size(); index++) {
        auto positions = arr[index];
        json tbl = R"({
            "type": "table", 
            "cols": ["Symbol", "MarginLevel", "Amount", "FrozenAmount", "Price", "Profit", "Type", "ContractType", "Margin"],
            "rows": []
        })"_json;
        tbl["title"] = tblDesc[index];
    
        for (const auto& pos : positions) {
            json arrJson = R"([])"_json;
    
            arrJson.push_back(pos.Symbol);
            arrJson.push_back(pos.MarginLevel);
            arrJson.push_back(pos.Amount);
            arrJson.push_back(pos.FrozenAmount);
            arrJson.push_back(pos.Price);
            arrJson.push_back(pos.Profit);
            arrJson.push_back(pos.Type);
            arrJson.push_back(pos.ContractType);
            arrJson.push_back(pos.Margin);
    
            tbl["rows"].push_back(arrJson);
        }
    
        tbls.push_back(tbl);
    }
    
    LogStatus(_D(), "\n", "`" + tbls.dump() + "`");
    
    return; 
}

একাধিক বিভিন্ন ট্রেডিং জোড়া এবং চুক্তি কোডের জন্য বাজার অর্ডার স্থাপন করার জন্য ফিউচার এক্সচেঞ্জ বস্তু ব্যবহার করুন। একাধিক উপায়ে অবস্থান অনুসন্ধান করুন।

ক্রিপ্টোকারেন্সি ফিউচার চুক্তিগুলি ক্রিপ্টোকারেন্সি স্পট থেকে পৃথক, যার কেবল অবস্থানটির যৌক্তিক ধারণা রয়েছে। এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মের সিস্টেমে, নির্দিষ্ট ধরণের ক্রিপ্টোকারেন্সি ফিউচার চুক্তিগুলি দ্বারা চিহ্নিত করা হয়ট্রেডিং জোড়া, চুক্তির কোড{@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType} ফাংশনগুলো দেখুন। এ বিষয়েGetPositionsফাংশন, প্রতীক পরামিতি ব্যবহারের দৃশ্যাবলী নিম্নরূপ সংক্ষিপ্ত করা হয়ঃ

এক্সচেঞ্জ অবজেক্ট শ্রেণীবিভাগ প্রতীক পরামিতি কোয়েরি পরিধি মন্তব্য
ফিউচার প্রতীক পরামিতি পাস করবেন না বর্তমান ট্রেডিং জোড়া এবং চুক্তি কোড মাত্রা পরিসীমা মধ্যে সমস্ত ট্রেডিং পণ্য অনুসন্ধান যদি বর্তমান ট্রেডিং জোড়াটি BTC_USDT হয় এবং চুক্তির কোডটি swap হয়, তাহলে USDT-ভিত্তিক সকল চিরস্থায়ী চুক্তি অনুসন্ধান করা হবে। এটি কল করার সমতুল্যGetPositions("USDT.swap")
ফিউচার ট্রেডিং প্রোডাক্টটি নির্দিষ্ট করুন, প্রতীক প্যারামিটারটি হলঃ BTC_USDT.swap একটি নির্দিষ্ট বিটিসির ইউএসডিটি ভিত্তিক চিরস্থায়ী চুক্তি অনুসন্ধান করুন ফিউচার এক্সচেঞ্জ অবজেক্টের জন্য প্যারামিটার প্রতীকের বিন্যাস হলঃট্রেডিং জুটিএবংচুক্তির কোডFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত, চিহ্ন দ্বারা পৃথক"..
ফিউচার ট্রেডিং পণ্যের পরিসীমা উল্লেখ করুন, প্রতীক পরামিতি হলঃ USDT.swap সমস্ত ইউএসডিটি ভিত্তিক স্থায়ী চুক্তি অনুসন্ধান করুন -
বিকল্প সমর্থনকারী ফিউচার এক্সচেঞ্জ প্রতীক পরামিতি পাস করবেন না বর্তমান ট্রেডিং জোড়া মাত্রা পরিসীমা মধ্যে সমস্ত বিকল্প চুক্তি অনুসন্ধান যদি বর্তমান ট্রেডিং জোড়াটি BTC_USDT হয়, তবে চুক্তিটি একটি বিকল্প চুক্তিতে সেট করা হয়, উদাহরণস্বরূপ, Binance বিকল্প চুক্তিঃ BTC-240108-40000-C
বিকল্প সমর্থনকারী ফিউচার এক্সচেঞ্জ নির্দিষ্ট ট্রেডিং পণ্য উল্লেখ করুন নির্দিষ্ট বিকল্প চুক্তির অনুসন্ধান করুন উদাহরণস্বরূপ, বিন্যান্স ফিউচার এক্সচেঞ্জের জন্য, প্রতীক পরামিতি হলঃ BTC_USDT.BTC-240108-40000-C
বিকল্প সমর্থনকারী ফিউচার এক্সচেঞ্জ ট্রেডিং প্রোডাক্টের পরিসীমা উল্লেখ করুন, প্রতীক প্যারামিটারটি হলঃ USDT.option সমস্ত ইউএসডিটি ভিত্তিক বিকল্প চুক্তি অনুসন্ধান করুন -

এ বিষয়েGetPositionsফাংশন, ফিউচার এক্সচেঞ্জ অবজেক্ট প্রশ্নের মাত্রা পরিসীমা নিম্নরূপ সংক্ষিপ্ত করা হয়ঃ

প্রতীক পরামিতি অনুরোধের পরিসরের সংজ্ঞা মন্তব্য
USDT.swap ইউএসডিটি ভিত্তিক চিরস্থায়ী চুক্তি পরিসীমা। জন্য

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

ইউএসডিটি ভবিষ্যৎ ইউএসডিটি ভিত্তিক ডেলিভারি চুক্তির পরিসীমা।

ইউএসডি.সোয়াপ। মুদ্রাভিত্তিক চিরস্থায়ী মুদ্রার পরিধি চুক্তি।

ইউএসডি.ভবিষ্যত। মুদ্রা ভিত্তিক বিতরণের পরিধি চুক্তি।

ইউএসডিটি.অপশন ইউএসডিটি-ভিত্তিক বিকল্প চুক্তি পরিসীমা।

ইউএসডি.অপশন। মুদ্রা ভিত্তিক বিকল্প চুক্তি পরিসীমা।

  • |

USDT.futures_combo। CFD সমন্বয়ের পরিসীমা। ফিউচার_ডেরিবিট এক্সচেঞ্জ।

USD.futures_ff। মিশ্র মার্জিন ডেলিভারি চুক্তির পরিধি। ফিউচারস_ক্রাকেন এক্সচেঞ্জ।

ইউএসডি.সোয়াপ_পিএফ মিশ্র মার্জিন চিরস্থায়ী চুক্তি পরিসীমা। ফিউচারস_ক্রাকেন এক্সচেঞ্জ।

সামঞ্জস্যপূর্ণexchange.GetPosition()কল করুন,GetPositionঠিক একইGetPositions.

যখন অ্যাকাউন্ট বিনিময় বস্তু দ্বারা প্রতিনিধিত্ব করা হয়exchangeকোন পজিশন নেইঅনুসন্ধান পরিসীমাঅথবানির্দিষ্ট ট্রেডিং ইনস্ট্রুমেন্ট,exchange.GetPositions()ফাংশন একটি খালি অ্যারে ফেরত দেয়, উদাহরণস্বরূপঃ[].

{@struct/Position Position}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}

exchange.SetMarginLevel

দ্যexchange.SetMarginLevel()ফাংশনটি ট্রেডিং জুটি বা চুক্তির লিভারেজ মান নির্ধারণের জন্য ব্যবহৃত হয়symbolপ্যারামিটার. শুধুমাত্র প্যারামিটার পাস সঙ্গে সামঞ্জস্যপূর্ণmarginLevel{@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্টের বর্তমান ট্রেডিং জোড়া বা চুক্তির লিভারেজ মান নির্ধারণ করতে।

exchange.SetMarginLevel ((প্রতীক, মার্জিনলেভেল) exchange.SetMarginLevel (মার্জিন লেভেল)

দ্যsymbolএই প্যারামিটারটি সেই ট্রেডিং জোড়া বা চুক্তি নির্দিষ্ট করতে ব্যবহৃত হয় যার জন্য লিভারেজের মান সংশোধন করা প্রয়োজন।symbolপ্যারামিটারSetMarginLevel()ফাংশন ফরম্যাটের সাথে সামঞ্জস্যপূর্ণsymbolপ্যারামিটারGetTicker()ফাংশন। প্রতীক মিথ্যা স্ট্রিং দ্যmarginLevelপ্যারামিটারটি লিভারেজ মান সেট করতে ব্যবহৃত হয়, যা সাধারণত এক্সচেঞ্জের জন্য একটি পূর্ণসংখ্যা এবং এটি কিছু এক্সচেঞ্জের জন্য ফ্লোটিং পয়েন্ট লিভারেজ মান সেটিং সমর্থন করে। মার্জিন লেভেল সত্য সংখ্যা

function main() {
    exchange.SetMarginLevel(10)
    // Set the leverage of BTC’s USDT-margined perpetual contract to 15
    exchange.SetMarginLevel("BTC_USDT.swap", 15)
}
def main():
    exchange.SetMarginLevel(10)
    exchange.SetMarginLevel("BTC_USDT.swap", 15)
void main() {
    exchange.SetMarginLevel(10);
    exchange.SetMarginLevel("BTC_USDT.swap", 15); 
}

দ্যexchange.SetMarginLevel()ফাংশন শুধুমাত্র cryptocurrency ফিউচার চুক্তি বিনিময় বস্তু সমর্থন করে. ব্যাকটেস্টিং সিস্টেম কল সমর্থন করেexchange.SetMarginLevel()লিভারেজ মান সেট করার ফাংশন। ক্রিপ্টোকারেন্সি ফিউচার চুক্তির জন্য, লিভারেজ প্রক্রিয়াটি ক্রিপ্টোকারেন্সি ফিউচার চুক্তি এক্সচেঞ্জগুলির কারণে অভিন্ন নয়। কিছু এক্সচেঞ্জে ফিউচার চুক্তির লিভারেজ মান অর্ডার প্লেসমেন্ট ইন্টারফেসে একটি পরামিতি, যখন অর্ডার স্থানান্তর ইন্টারফেসটি কল করা হয়exchange.SetMarginLevel()ফাংশন একটি নেটওয়ার্ক অনুরোধ উৎপন্ন করে না, কিন্তু শুধুমাত্র অন্তর্নিহিত এফএমজেড সিস্টেমে লিভারেজ ভেরিয়েবল সেট করে (অর্ডার প্লেসমেন্ট ইন্টারফেসে পরামিতি পাস করার জন্য ব্যবহৃত হয়) । কিছু এক্সচেঞ্জ ফিউচার চুক্তির লিভারেজ মানটি এক্সচেঞ্জের একটি সেটিং, যা এক্সচেঞ্জ ওয়েবসাইট পৃষ্ঠায় বা API ইন্টারফেস ব্যবহার করে সেট করা প্রয়োজন। এই ক্ষেত্রে কলিংexchange.SetMarginLevel()ফাংশনটি একটি নেটওয়ার্ক অনুরোধ তৈরি করবে এবং লিভারেজ সেট করতে ব্যর্থ হতে পারে। এর অনেক কারণ হতে পারে, উদাহরণস্বরূপঃ একটি বর্তমান অবস্থান বা অপেক্ষমান অর্ডার রয়েছে, যা এই ট্রেডিং জোড়া বা চুক্তির জন্য একটি নতুন লিভারেজ মান সেট করা অসম্ভব করে তোলে। এক্সচেঞ্জ যে সমর্থন করে নাexchange.SetMarginLevel()ফাংশনঃ

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

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

exchange.SetDirection

দ্যexchange.SetDirection(){@fun/Trade/exchange.Buy exchange.Buy} ফাংশন, {@fun/Trade/exchange.Sell exchange.Sell} ফাংশনের অর্ডার দিকনির্দেশ সেট করতে ব্যবহৃত হয় যখন ফিউচার চুক্তির অর্ডার দেওয়া হয়।

বিনিময়.SetDirection ((নির্দেশ)

দ্যdirectionঅর্ডার দেওয়ার সময় ফিউচার কন্ট্রাক্টের দিকনির্দেশনা সেট করতে এই প্যারামিটারটি ব্যবহার করা হয়। ঐচ্ছিক মান হলঃ"buy", "closesell", "sell", "closebuy". দিকনির্দেশ সত্য স্ট্রিং

function main(){
    // For example, set to OKX futures contract of this week
    exchange.SetContractType("this_week")    
    // Set leverage to 5 times
    exchange.SetMarginLevel(5)
    // Set the order type to long
    exchange.SetDirection("buy")
    // Place an order for 2 contracts at 10,000
    exchange.Buy(10000, 2)              
    exchange.SetMarginLevel(5)
    exchange.SetDirection("closebuy")
    exchange.Sell(1000, 2)
}
def main():
    exchange.SetContractType("this_week")
    exchange.SetMarginLevel(5)
    exchange.SetDirection("buy")
    exchange.Buy(10000, 2)
    exchange.SetMarginLevel(5)
    exchange.SetDirection("closebuy")
    exchange.Sell(1000, 2)
void main() {
    exchange.SetContractType("this_week");
    exchange.SetMarginLevel(5);
    exchange.SetDirection("buy");
    exchange.Buy(10000, 2);
    exchange.SetMarginLevel(5);
    exchange.SetDirection("closebuy");
    exchange.Sell(1000, 2);
}

দ্যexchange.SetDirection()ফাংশনটি ফিউচার কন্ট্রাক্ট লেনদেনের দিক এবং অর্ডার প্লেসমেন্ট ফাংশনের মধ্যে সম্পর্ক নির্ধারণ করেঃ

অর্ডার স্থাপন ফাংশন সেটডাইরেকশন ফাংশনের পরামিতি দ্বারা নির্ধারিত দিক মন্তব্যসমূহ
exchange.Buy খরিদ করুন লং পজিশন ক্রয় ও খোলা
exchange.Buy বিক্রয় বন্ধ শর্ট পজিশন ক্রয় ও বন্ধ
exchange.Sell বিক্রয় শর্ট পজিশন বিক্রি এবং খোলা
exchange.Sell ক্লোজবয় লং পজিশন বিক্রি এবং বন্ধ

{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}

exchange.SetContractType

দ্যexchange.SetContractType()ফাংশন {@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্টের বর্তমান চুক্তি কোড সেট করতে ব্যবহৃত হয়।

দ্যexchange.SetContractType()ফাংশন একটি কাঠামো ফেরত দেয় যা বর্তমান চুক্তির কোডের সাথে মিলে যায়। উদাহরণস্বরূপ, বিন্যান্স ফিউচারস চুক্তি বিনিময় জন্য, বর্তমান চুক্তির কোডটি হলquarter, এবং এই ফাংশনের রিটার্ন ভ্যালু স্ট্রাকচার হলঃ{"InstrumentID": "BTCUSD_230630", "instrument": "BTCUSD_230630"}. বস্তু

exchange.SetContractType ((প্রতীক)

দ্যsymbolপ্যারামিটারটি চুক্তির কোড সেট করতে ব্যবহৃত হয়, ঐচ্ছিক মানগুলি হলঃ"this_week", "next_week", "quarter", "next_quarter", "swap"ইত্যাদি। ক্রিপ্টোকারেন্সি ফিউচার চুক্তিবিতরণ চুক্তিকোড, যদি নির্দিষ্ট না করা হয়, সাধারণত আছেঃ

  • this_week: চলমান সপ্তাহের চুক্তি।
  • next_week: পরের সপ্তাহের চুক্তি।
  • quarter: ত্রৈমাসিক চুক্তি।
  • next_quarter: পরবর্তী ত্রৈমাসিক চুক্তি।স্থায়ী চুক্তিক্রিপ্টোকারেন্সি ফিউচার চুক্তির কোড, যদি নির্দিষ্ট না করা হয়, সাধারণতঃ
  • swap: চিরস্থায়ী চুক্তি।

প্রতীক সত্য স্ট্রিং

function main() {
    // Set to this week contract
    exchange.SetContractType("this_week") 
}
def main():
    exchange.SetContractType("this_week")
void main() {
    exchange.SetContractType("this_week");
}

বর্তমান চুক্তিকে বর্তমান সপ্তাহের চুক্তি হিসাবে সেট করুনঃ

function main() {
    // The default trading pair is BTC_USD, set the contract for this week, and the contract is a currency standard contract
    exchange.SetContractType("this_week")
    Log("ticker:", exchange.GetTicker())
    
    // Switching trading pairs, then setting up contracts, switching to USDT as margin contracts, as opposed to currency standard contracts
    exchange.IO("currency", "BTC_USDT")   
    exchange.SetContractType("swap")
    Log("ticker:", exchange.GetTicker())
}
def main():
    exchange.SetContractType("this_week")
    Log("ticker:", exchange.GetTicker())
    exchange.IO("currency", "BTC_USDT")
    exchange.SetContractType("swap")
    Log("ticker:", exchange.GetTicker())
void main() {
    exchange.SetContractType("this_week");
    Log("ticker:", exchange.GetTicker());
    exchange.IO("currency", "BTC_USDT");
    exchange.SetContractType("swap");
    Log("ticker:", exchange.GetTicker());
}

যখন একটি চুক্তির সাথেUSDTমার্জিন হিসাবে, আপনাকে কোডে ট্রেডিং জুটি পরিবর্তন করতে হবে (আপনি বিনিময় বস্তু যোগ করার সময় সরাসরি ট্রেডিং জুটি সেট করতে পারেন):

function main(){
    // Set the contract for this week
    var ret = exchange.SetContractType("this_week")     
    // Return information about the current week's contracts
    Log(ret)
}
def main():
    ret = exchange.SetContractType("this_week")
    Log(ret)
void main() {
    auto ret = exchange.SetContractType("this_week");
    Log(ret);
}

রিটার্ন মান মুদ্রণ করুনexchange.SetContractType()ফাংশনঃ

ক্রিপ্টোকারেন্সি ফিউচার চুক্তির কৌশল, একটি উদাহরণ নিতেBTC_USDTট্রেডিং জোড়া: যখন ট্রেডিং জোড়া পরিবর্তন করেexchange.SetCurrency("BTC_USDT")অথবাexchange.IO("currency", "BTC_USDT")ফাংশন, সুইচিং পরে, আপনি ব্যবহার করতে হবেexchange.SetContractType()নতুন ট্রেডিং জোড়ার অধীনে পরিচালিত বর্তমান চুক্তি নির্ধারণ করার জন্য চুক্তি পুনরায় সেট করার ফাংশন।মুদ্রা মানক চুক্তিঅথবাইউএসডিটি স্ট্যান্ডার্ড চুক্তিউদাহরণস্বরূপ, যদি একটি ট্রেডিং জোড়া সেট করা হয়BTC_USDT, ব্যবহার করুনexchange.SetContractType("swap")চুক্তি কোড সেট করার জন্য ফাংশনswap. এই সময়ে, এটা সেট করা হয়BTCজন্যইউএসডিটি স্ট্যান্ডার্ডযদি ট্রেডিং জোড়া হয়BTC_USD, ব্যবহার করুনexchange.SetContractType("swap")চুক্তি কোড সেট করার জন্য ফাংশনswap. এই সময়ে, এটা সেট করা হয়BTCএরমুদ্রা মানচিরস্থায়ী চুক্তি। সমর্থিত ক্রিপ্টোকারেন্সি ফিউচার চুক্তি এক্সচেঞ্জের বিবরণ, প্রতিটি এক্সচেঞ্জের জন্য নিম্নলিখিত চুক্তির নাম সহঃ

  • ফিউচার_ওকেকয়েন (ওকেএক্স) স্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap")এই সপ্তাহের চুক্তিতে সেটঃexchange.SetContractType("this_week")পরের সপ্তাহের চুক্তিতে সেটঃexchange.SetContractType("next_week")মাসিক চুক্তিতে সেট করুনঃexchange.SetContractType("month")পরের মাসের চুক্তিতে সেট করুনঃexchange.SetContractType("next_month")ত্রৈমাসিক চুক্তিতে সেট করাঃexchange.SetContractType("quarter")পরবর্তী ত্রৈমাসিকের চুক্তিতে নির্ধারিতঃexchange.SetContractType("next_quarter")

    OKX এর প্রাক-বাজার ট্রেডিং চুক্তি রয়েছেঃ চুক্তির বিতরণ তারিখ একটি নির্দিষ্ট সময়। এক্সচেঞ্জ দ্বারা সংজ্ঞায়িত চুক্তি কোডটি উদাহরণস্বরূপঃHMSTR-USDT-250207. ট্রেডিং জোড়া সেট করুনHMSTR_USDTFMZ প্ল্যাটফর্মে, এবং তারপর ব্যবহারexchange.SetContractType("HMSTR-USDT-250207")চুক্তির জন্য। ফাংশনগুলির জন্য যা সমর্থন করেsymbolপ্যারামিটার, যেমনঃexchange.GetTicker(), exchange.CreateOrder(), ইত্যাদি আপনি নির্দিষ্ট করতে পারেনsymbolপ্যারামিটারঃHMSTR_USDT.HMSTR-USDT-250207এই চুক্তির বাজার তথ্য পেতে বা অর্ডার দিতে।

  • ফিউচার_হুওবিডিএম (হুওবি ফিউচার) এই সপ্তাহের চুক্তিতে সেটঃexchange.SetContractType("this_week"). পরের সপ্তাহের চুক্তিতে সেটঃexchange.SetContractType("next_week"). ত্রৈমাসিক চুক্তিতে সেট করাঃexchange.SetContractType("quarter"). পরবর্তী ত্রৈমাসিকের চুক্তিতে নির্ধারিতঃexchange.SetContractType("next_quarter"). স্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap"). এটি চুক্তি সমর্থন করেUSDTমার্জিন হিসাবে, নিতেBTCউদাহরণস্বরূপ চুক্তিঃ ব্যবহারexchange.IO("currency", "BTC_USDT")একটি চুক্তিতে স্যুইচ করতে যা ব্যবহার করেUSDTমার্জিন হিসেবে। অথবা বর্তমান ট্রেডিং জোড়া সেট করুনBTC_USDTসরাসরি লাইভ ট্রেডিং পরামিতি কনফিগার এবং বিনিময় বস্তু যোগ করার সময়. ট্রেডিং জোড়া স্যুইচ করার পর, আপনি কল করতে হবেexchange.SetContractType()চুক্তি সেট করতে আবার ফাংশন।

  • ফিউচার_বিটমেক্স (বিটমেক্স) স্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap"). Futures_BitMEX এক্সচেঞ্জ ডেলিভারি চুক্তি হল নিম্নলিখিত চুক্তি কোড সহ মাসিক চুক্তি (জানুয়ারি থেকে ডিসেম্বর):

    "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
    

    বিতরণ চুক্তি তৈরি করাঃexchange.SetContractType("December")উদাহরণস্বরূপ, যখন ট্রেডিং জোড়া সেট করা হয়XBT_USDT,exchange.SetContractType("December")ডিসেম্বরের ডেলিভারি চুক্তিটি ইউএসডিটি ভিত্তিক বিটিসিতে সেট করার জন্য ফাংশনটি কল করা হয় (বিটিসির প্রকৃত চুক্তি কোডের সাথে মিলে যায়)XBTUSDTZ23).

    ফিউচার_বিটমেক্স চুক্তির তথ্য সংক্ষিপ্তসার

    Futures_BitMEX দ্বারা সংজ্ঞায়িত চুক্তির কোড FMZ-এ সংশ্লিষ্ট ট্রেডিং জুটি FMZ-এ সংশ্লিষ্ট চুক্তির কোড মন্তব্য
    DOGEUSD DOGE_USD সুপ মার্কিন ডলার, এক্সবিটি নিষ্পত্তি। এক্সবিটি বিটিসি।
    DOGEUSDT DOGE_USDT সুপ ইউএসডিটি-তে মুদ্রিত, ইউএসডিটি-তে নিষ্পত্তি।
    XBTETH XBT_ETH সুপ ইটিএইচ নামকরণ, এক্সবিটি নিষ্পত্তি।
    এক্সবিটিইউআর XBT_EUR সুপ ইউরোতে, এক্সবিটি-তে নিষ্পত্তি।
    USDTUSDC USDT_USDC সুপ ইউএসডিসিতে মুদ্রাভুক্ত, এক্সবিটিতে নিষ্পত্তি।
    ETHUSD_ETH ETH_USD_ETH সুপ ইউএসডিতে নামকরণ, ইটিএইচ-তে নিষ্পত্তি।
    XBTH24 XBT_USD মার্চ মেয়াদ শেষ হওয়ার তারিখঃ ২৪শে মার্চ, মাসের কোড হল: H; USD নামকরণ, XBT নিষ্পত্তি।
    ETHUSDZ23 ETH_USD ডিসেম্বর মেয়াদ শেষ হওয়ার তারিখঃ ২৩শে ডিসেম্বর, মাসের কোড হল: Z; USD নামকরণ, XBT নিষ্পত্তি।
    XBTUSDTZ23 XBT_USDT ডিসেম্বর মেয়াদ শেষ হওয়ার তারিখঃ ২৩শে ডিসেম্বর, মাসের কোড হল: Z; USDT-এ নামকরণ, USDT-এ নিষ্পত্তি।
    ADAZ23 ADA_XBT ডিসেম্বর মেয়াদ শেষ হওয়ার তারিখঃ ২৩শে ডিসেম্বর, মাসের কোড হল: Z ; XBT বিলিং, XBT নিষ্পত্তি।
    P_XBTETFX23 USDT_XXX P_XBTETFX23 মেয়াদ শেষঃ ১১/২৩/২৩; শতাংশ হিসেবে প্রকাশিত এবং ইউএসডিটি-তে নিষ্পত্তি করা হয়।
  • ফিউচার_গেটআইও এই সপ্তাহের চুক্তিতে সেটঃexchange.SetContractType("this_week"). পরের সপ্তাহের চুক্তিতে সেটঃexchange.SetContractType("next_week"). ত্রৈমাসিক চুক্তিতে সেট করাঃexchange.SetContractType("quarter"). পরবর্তী ত্রৈমাসিকের চুক্তিতে নির্ধারিতঃexchange.SetContractType("next_quarter"). স্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap"). এটি চুক্তি সমর্থন করেUSDTমার্জিন হিসাবে, নিতেBTCউদাহরণস্বরূপ চুক্তিঃ ব্যবহারexchange.IO("currency", "BTC_USDT")একটি চুক্তিতে স্যুইচ করতে যা ব্যবহার করেUSDTমার্জিন হিসেবে। অথবা বর্তমান ট্রেডিং জোড়া সেট করুনBTC_USDTসরাসরি লাইভ ট্রেডিং পরামিতি কনফিগার এবং বিনিময় বস্তু যোগ করার সময়. ট্রেডিং জোড়া স্যুইচ করার পর, আপনি কল করতে হবেexchange.SetContractType()চুক্তি সেট করতে আবার ফাংশন।

  • ফিউচার_ডেরিবিট স্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap"). এটি ডেরিবিট সমর্থন করেUSDCচুক্তি। বিতরণ চুক্তি হল:"this_week", "next_week", "month", "quarter", "next_quarter", "third_quarter", "fourth_quarter". CFD (future_combo):"this_week,swap", "next_week,swap", "next_quarter,this_week", "third_quarter,this_week", "month,next_week", অনেক সংমিশ্রণ আছে। বিকল্প চুক্তিগুলির জন্য আপনাকে এক্সচেঞ্জ দ্বারা সংজ্ঞায়িত নির্দিষ্ট বিকল্প চুক্তি কোডটি পাস করতে হবে, বিস্তারিত জানার জন্য ডেরিবিত ওয়েবসাইট দেখুন।

  • ফিউচার_কুকয়েন উদাহরণস্বরূপ, যদি ট্রেডিং জোড়া সেট করা হয়BTC_USDএবং কন্ট্রাক্ট কোড সেট করা হয়, এটি একটি মুদ্রা ভিত্তিক চুক্তিঃ স্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap"). ত্রৈমাসিক চুক্তিতে সেট করাঃexchange.SetContractType("quarter"). পরবর্তী ত্রৈমাসিকের চুক্তিতে নির্ধারিতঃexchange.SetContractType("next_quarter").

    মার্জিন চুক্তি হিসাবে ইউএসডিটিঃ উদাহরণস্বরূপ, যদি ট্রেডিং জোড়া সেট করা হয়BTC_USDT, এবং তারপর চুক্তি কোড সেট করুন, এটি মার্জিন হিসাবে ইউএসডিটি সঙ্গে একটি চুক্তি. স্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap").

  • ফিউচার_বাইনান্স বর্তমান ট্রেডিং জোড়ার চিরস্থায়ী চুক্তিতে বিন্যান্স ফিউচার এক্সচেঞ্জ ডিফল্ট, চুক্তি কোডঃswap. স্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap"), বিন্যান্সের চিরস্থায়ী চুক্তিতে এমন চুক্তি রয়েছে যা ব্যবহার করেUSDTউদাহরণস্বরূপ,USDTস্ট্যান্ডার্ড স্থায়ী চুক্তিBTCমার্জিন চুক্তি হিসেবে ব্যবহার করা যেতে পারে, এবং ট্রেডিং জুটিBTC_USDT. বিন্যান্স এছাড়াও চিরস্থায়ী চুক্তি সমর্থন করে যা মার্জিন হিসাবে মুদ্রা ব্যবহার করে, উদাহরণস্বরূপ,BTCBinance এর স্ট্যান্ডার্ড চিরস্থায়ী চুক্তি, ট্রেডিং জোড়া সেটBTC_USD. ত্রৈমাসিক চুক্তিতে সেট করাঃexchange.SetContractType("quarter"), ডেলিভারি চুক্তিতে একটি মুদ্রা স্ট্যান্ডার্ড চুক্তি রয়েছে (যেমন, মার্জিন হিসাবে মুদ্রা ব্যবহার করে), উদাহরণস্বরূপ,BTCট্রেডিং জুটি নিম্নরূপ নির্ধারণ করা হয়:BTC_USDএবং তারপর চুক্তি সেটexchange.SetContractType("quarter"), এটি সেট করা আছেBTCএকটি মুদ্রা স্ট্যান্ডার্ড চুক্তির সাথে ত্রৈমাসিক চুক্তি। পরবর্তী ত্রৈমাসিকের চুক্তিতে নির্ধারিতঃexchange.SetContractType("next_quarter")যেমন,BTCমুদ্রা স্ট্যান্ডার্ড ত্রৈমাসিক চুক্তির, ট্রেডিং জোড়া নির্ধারণ করা হয়ঃBTC_USD, এবং তারপর চুক্তি সেটexchange.SetContractType("next_quarter"). বিন্যান্স আংশিক সমর্থন করেUSDTমার্জিন বিতরণ চুক্তি হিসাবে, গ্রহণBTCউদাহরণস্বরূপ, ট্রেডিং জোড়া সেট করুনBTC_USDT, তারপর চুক্তির কোড সেট করুন.

    বিন্যান্স অপশন চুক্তির জন্য সমর্থনঃ বিকল্প চুক্তির কোডের ফর্ম্যাটটি এক্সচেঞ্জ দ্বারা সংজ্ঞায়িত বিকল্প চুক্তির কোডের উপর ভিত্তি করে তৈরি করা হয়েছেঃBTC-241227-15000-C, XRP-240112-0.5-C, BTC-241227-15000-P. বাইনারেন্স অপশন কন্ট্রাক্ট কোড নিনBTC-241227-15000-Pউদাহরণস্বরূপঃ বিটিসি হল অপশন মুদ্রা কোড, ২৪১২২৭ হল এক্সারসাইজ ডেট, ১৫০০০ হল এক্সারসাইজ প্রাইস, পি হল পুট অপশন এবং সি হল ক্যাল অপশন। বিকল্পের ধরন সম্পর্কে বিস্তারিত জানার জন্য, এটি ইউরোপীয় বিকল্প বা আমেরিকান বিকল্প কিনা, দয়া করে এক্সচেঞ্জের বিকল্প চুক্তির প্রাসঙ্গিক তথ্য দেখুন। এক্সচেঞ্জটি বিকল্প বিক্রেতাদের সীমাবদ্ধ করতে পারে এবং তাদের পৃথকভাবে যোগ্যতার জন্য আবেদন করতে বাধ্য করতে পারে। বাইনারেন্স বিকল্পগুলির জন্য বিক্রেতার যোগ্যতা প্রয়োজন।

  • ফিউচার_বিবক্স বিবক্স চিরস্থায়ী চুক্তির জন্য চুক্তির কোডঃswap. স্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap").

  • ফিউচার_বিবিট ডিফল্ট হল বর্তমান ট্রেডিং জোড়ার জন্য চিরস্থায়ী চুক্তি, চুক্তির কোডঃswap. এই সপ্তাহের চুক্তির কোডঃthis_week. পরের সপ্তাহের চুক্তি কোডঃnext_week. তৃতীয় সপ্তাহের চুক্তির কোডঃthird_week. মাসিক চুক্তির কোডঃmonth. পরের মাসের চুক্তির কোডঃnext_month. ত্রৈমাসিক চুক্তির কোডঃquarter. পরবর্তী ত্রৈমাসিকের চুক্তির কোডঃnext_quarter. তৃতীয় ত্রৈমাসিকের চুক্তির কোডঃthird_quarter.

  • ফিউচার_ক্রাকেন ডিফল্ট হল বর্তমান ট্রেডিং জোড়ার চিরস্থায়ী চুক্তি, চুক্তির কোডঃswap. swap: চিরস্থায়ী চুক্তি।month: চলতি মাসের চুক্তি।quarter: ত্রৈমাসিক চুক্তি।next_quarter: পরের ত্রৈমাসিকের চুক্তি।swap_pf: মিশ্র মার্জিনযুক্ত স্থায়ী চুক্তি।quarter_ff: মিশ্র মার্জিনযুক্ত ত্রৈমাসিক চুক্তি।month_ff: মিশ্র মার্জিন বর্তমান মাসের চুক্তি।next_quarter_ff: মিশ্র মার্জিন পরবর্তী ত্রৈমাসিক চুক্তি.

  • ফিউচার_বিটফাইনেক্স ডিফল্ট হল বর্তমান ট্রেডিং জোড়ার জন্য স্থায়ী চুক্তি, চুক্তির কোডঃswap.

  • ফিউচার_বিটজেট ডিফল্ট হল বর্তমান ট্রেডিং জোড়ার জন্য স্থায়ী চুক্তি, চুক্তির কোডঃswap. ট্রেডিং জোড়া সেট করা আছেBTC_USDমুদ্রা স্ট্যান্ডার্ড চুক্তির জন্য, এবং ট্রেডিং জোড়া সেট করা হয়BTC_USDTদ্বারা নিষ্পত্তি চুক্তির জন্যUSDT. ডেমো কন্ট্রাক্ট ট্রেডিং জোড়ার সাথে সেট আপ করা যেতে পারে যেমনSBTC_USD, BTC_SUSDT.

  • ফিউচার_ডিওয়াইডিএক্স ডিওয়াইডিএক্স চিরস্থায়ী চুক্তির জন্য চুক্তির কোডঃswap. স্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap"), dYdX শুধুমাত্র USDT স্ট্যান্ডার্ড কন্ট্রাক্ট আছে।

  • ফিউচার_MEXC মেক্সিকোর স্থায়ী চুক্তির জন্য চুক্তির কোডঃswap. স্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap"). ট্রেডিং জোড়া সেট করুনBTC_USD, যা মুদ্রা মান চুক্তি, এবং সেট ট্রেডিং জোড়াBTC_USDT, যাUSDT- চুক্তি স্থির।

  • ফিউচার_ক্রিপ্টো অ্যাকাউন্টে টোকেনcrypto.comবিনিময়কে মার্কিন ডলারে ধার্য ক্রেডিটে রূপান্তর করা যেতে পারে যা চুক্তির ট্রেডিংয়ের জন্য মার্জিন হিসাবে ব্যবহার করা যেতে পারে। চিরস্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap"). উদাহরণস্বরূপ কলিংexchange.SetContractType("swap")বিটিসির জন্য একটি স্থায়ী চুক্তি সেট করার ফাংশন যখন ট্রেডিং জোড়া সেট করা হয়BTC_USD. দ্যcrypto.comএক্সচেঞ্জ ডেলিভারি চুক্তি হল নিম্নলিখিত চুক্তি কোড সহ মাসিক চুক্তি (জানুয়ারি থেকে ডিসেম্বর পর্যন্ত):

    "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
    

    ডেলিভারি চুক্তি সেট করুনঃexchange.SetContractType("October")উদাহরণস্বরূপ, যখন ট্রেডিং জোড়া সেট করা হয়BTC_USD, ফাংশন কল করুনexchange.SetContractType("October")অক্টোবরে বিটিসির ডেলিভারি কন্ট্রাক্ট নির্ধারণ করা। এই মুহূর্তে চুক্তির সংশ্লিষ্ট কোড হল:BTCUSD-231027.

  • ফিউচার_WOO ফিউচার_WOO বিনিময় সহায়তাUSDTস্থায়ী চুক্তি কোড সঙ্গে ভিত্তিক চুক্তিswapউদাহরণস্বরূপ, যখন ট্রেডিং জোড়া সেট করা হয়BTC_USDT, ফাংশনexchange.SetContractType("swap")বর্তমান চুক্তিকে ইউএসডিটি ভিত্তিক বিটিসির স্থায়ী চুক্তি হিসেবে নির্ধারণ করতে বলা হয়েছে।

{@fun/Futures/exchange.GetContractType exchange.GetContractType}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}

exchange.GetContractType

দ্যexchange.GetContractType()ফাংশন {@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্টের বর্তমান সেটিংয়ের জন্য চুক্তি কোড পেতে ব্যবহৃত হয়।

দ্যexchange.GetContractType()ফাংশনটি FMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত চুক্তি কোডটি ফেরত দেয়, উদাহরণস্বরূপঃthis_week, swapইত্যাদি। স্ট্রিং

exchange.GetContractType (()

function main () {
    Log(exchange.SetContractType("this_week")) 
    Log(exchange.GetContractType())
}
def main():
    Log(exchange.SetContractType("this_week"))
    Log(exchange.GetContractType())
void main() {
    Log(exchange.SetContractType("this_week"));
    Log(exchange.GetContractType());
}

{@fun/Futures/exchange.SetContractType exchange.SetContractType}

exchange.GetFundings

দ্যexchange.GetFundings()চলমান সময়ের জন্য তহবিলের হার সংক্রান্ত তথ্য পেতে এই ফাংশন ব্যবহার করা হয়।

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

এক্সচেঞ্জ.গেটফান্ডিংস ((() exchange.GetFundings (প্রতীক)

প্যারামিটারsymbolসেট করতে ব্যবহৃত হয়লেনদেনের প্রতীকঅথবালেনদেনের প্রতীক পরিসীমাপ্রশ্ন করা হবে। যখনsymbolযদি এই প্যারামিটারটি পাস না করা হয়, তাহলে বর্তমান ট্রেডিং জোড়া এবং চুক্তির কোডের মাত্রা পরিসরে ডিফল্টরূপে সমস্ত যন্ত্রের বর্তমান তহবিলের হার তথ্য অনুরোধ করা হবে।

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

/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-23 00:05:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDC"}]
*/

function main() {
    // LPT_USDT.swap 4-hour period
    var symbols = ["SOL_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "SOL_USDC.swap", "ETH_USDC.swap", "BTC_USD.swap", "BTC_USDT.quarter", "LPT_USDT.swap"]
    for (var symbol of symbols) {
        exchange.GetTicker(symbol)
    }
    
    var arr = []
    var arrParams = ["no param", "LTC_USDT.swap", "USDT.swap", "USD.swap", "USDC.swap", "USDT.futures", "BTC_USDT.quarter"]
    for (p of arrParams) {
        if (p == "no param") {
            arr.push(exchange.GetFundings())
        } else {
            arr.push(exchange.GetFundings(p))
        }
    }
    
    var tbls = []
    var index = 0
    for (var fundings of arr) {
        var tbl = {
            "type": "table",
            "title": arrParams[index],
            "cols": ["Symbol", "Interval", "Time", "Rate"],
            "rows": [],
        }
    
        for (var f of fundings) {
            tbl["rows"].push([f.Symbol, f.Interval / 3600000, _D(f.Time), f.Rate * 100 + " %"])
        }
        tbls.push(tbl)
        index++
    }
    
    LogStatus(_D(), "\n Requested market types:", symbols, "\n`" + JSON.stringify(tbls) + "`")
}
'''backtest
start: 2024-10-01 00:00:00
end: 2024-10-23 00:05:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDC"}]
'''
    
import json
    
def main():
    # LPT_USDT.swap 4-hour period
    symbols = ["SOL_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "SOL_USDC.swap", "ETH_USDC.swap", "BTC_USD.swap", "BTC_USDT.quarter", "LPT_USDT.swap"]
    for symbol in symbols:
        exchange.GetTicker(symbol)
    
    arr = []
    arrParams = ["no param", "LTC_USDT.swap", "USDT.swap", "USD.swap", "USDC.swap", "USDT.futures", "BTC_USDT.quarter"]
    for p in arrParams:
        if p == "no param":
            arr.append(exchange.GetFundings())
        else:
            arr.append(exchange.GetFundings(p))
    
    tbls = []
    index = 0
    for fundings in arr:
        tbl = {
            "type": "table",
            "title": arrParams[index],
            "cols": ["Symbol", "Interval", "Time", "Rate"],
            "rows": [],
        }
    
        for f in fundings:
            tbl["rows"].append([f["Symbol"], f["Interval"] / 3600000, _D(f["Time"]), str(f["Rate"] * 100) + " %"])
    
        tbls.append(tbl)
        index += 1
    
    LogStatus(_D(), "\n Requested market types:", symbols, "\n`" + json.dumps(tbls) + "`")
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-23 00:05:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDC"}]
*/
    
void main() {
    // LPT_USDT.swap 4-hour period
    json arrSymbol = R"([])"_json;
    std::string symbols[] = {"SOL_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "SOL_USDC.swap", "ETH_USDC.swap", "BTC_USD.swap", "BTC_USDT.quarter", "LPT_USDT.swap"};
    for (const std::string& symbol : symbols) {
        exchange.GetTicker(symbol);
        arrSymbol.push_back(symbol);
    }
    
    std::vector<std::vector<Funding>> arr = {};
    std::string arrParams[] = {"no param", "LTC_USDT.swap", "USDT.swap", "USD.swap", "USDC.swap", "USDT.futures", "BTC_USDT.quarter"};
    for (const std::string& p : arrParams) {
        if (p == "no param") {
            arr.push_back(exchange.GetFundings());
        } else {
            arr.push_back(exchange.GetFundings(p));
        }
    }
    
    json tbls = R"([])"_json;
    int index = 0;
    for (int i = 0; i < arr.size(); i++) {
        auto fundings = arr[i];
    
        json tbl = R"({
            "type": "table", 
            "cols": ["Symbol", "Interval", "Time", "Rate"],
            "rows": []
        })"_json;
        tbl["title"] = arrParams[index];
    
        for (int j = 0; j < fundings.size(); j++) {
            auto f = fundings[j];
            // json arrJson = {f.Symbol, f.Interval / 3600000, _D(f.Time), string(f.Rate * 100) + " %"};
            json arrJson = {f.Symbol, f.Interval / 3600000, _D(f.Time), f.Rate};
            tbl["rows"].push_back(arrJson);
        }
        tbls.push_back(tbl);
        index++;
    }
    
    LogStatus(_D(), "\n Requested market types:", arrSymbol.dump(), "\n`" + tbls.dump() + "`");
}

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

ফিউচার এক্সচেঞ্জগুলির জন্য যা অর্থায়ন হার তথ্যের ব্যাচ অনুসন্ধান সমর্থন করে না, যদিsymbolপ্যারামিটারটি অনুসন্ধান পরিসীমা হিসাবে নির্দিষ্ট করা হয়, উদাহরণস্বরূপঃUSDT.swapঅথবাsymbolপ্যারামিটার পাস করা হয় না, ইন্টারফেস একটি ত্রুটি রিপোর্ট করবে.GetFundings()ফাংশন এই ধরনের ফিউচার বিনিময় বস্তুর ব্যবহার করে, আপনি নির্দিষ্ট করতে হবেsymbolএই প্যারামিটারটি একটি নির্দিষ্ট স্থায়ী চুক্তির ধরন হিসেবে ব্যবহার করা হয় যাতে এই ধরনের বর্তমান অর্থায়ন হার সংক্রান্ত তথ্য অনুসন্ধান করা যায়। দ্যexchange.GetFundings()ফাংশন বাস্তব ট্রেডিং এবং ব্যাকটেস্টিং সিস্টেম সমর্থন করে। এক্সচেঞ্জ যা তহবিলের হার তথ্য ব্যাচ অধিগ্রহণ সমর্থন করে নাঃ Futures_Bitget, Futures_OKX, Futures_MEXC, Futures_Deribit, Futures_Crypto.symbolনির্দিষ্ট প্রতীক কোড সহ প্যারামিটার, উদাহরণস্বরূপঃETH_USDT.swap.

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

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

{@struct/ফান্ডিং ফান্ডিং}

নেট সেটিং

exchange.SetBase

দ্যexchange.SetBase()ফাংশন {@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্টে কনফিগার করা এক্সচেঞ্জ এপিআই ইন্টারফেসের বেস ঠিকানা সেট করতে ব্যবহৃত হয়।

exchange.SetBase ((s)

দ্যsএক্সচেঞ্জ এপিআই ইন্টারফেসের বেস ঠিকানা নির্দিষ্ট করতে প্যারামিটার ব্যবহার করা হয়। s সত্য স্ট্রিং

function main() {
    // Use default base address
    Log(exchange.GetTicker())
    // Switch to https://aws.okx.com
    exchange.SetBase("https://aws.okx.com")
    Log(exchange.GetTicker())
}
def main():
    Log(exchange.GetTicker())
    exchange.SetBase("https://aws.okx.com")
    Log(exchange.GetTicker())
void main() {
    Log(exchange.GetTicker());
    exchange.SetBase("https://aws.okx.com");
    Log(exchange.GetTicker());
}

এক্সচেঞ্জ এপিআই বেস ঠিকানা পরিবর্তন ব্যাকটেস্টিং সিস্টেমে সমর্থিত নয়, কারণ ব্যাকটেস্টিং সিস্টেম একটি স্যান্ডবক্স সিমুলেশন পরিবেশ এবং এটি সত্যিই এক্সচেঞ্জ এপিআই ইন্টারফেস অ্যাক্সেস করে না।

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

exchange.GetBase

দ্যexchange.GetBase()বর্তমান এক্সচেঞ্জ এপিআই ইন্টারফেস বেস ঠিকানা পেতে ফাংশন ব্যবহার করা হয়।

বর্তমান এক্সচেঞ্জ এপিআই ইন্টারফেস বেস ঠিকানা। স্ট্রিং

এক্সচেঞ্জ.গেটবেস ((()

function main() {
    Log(exchange.GetBase())
}
def main():
    Log(exchange.GetBase())
void main() {
    Log(exchange.GetBase());
}

{@fun/NetSettings/exchange.SetBase exchange.SetBase}

exchange.SetProxy

দ্যexchange.SetProxy()ফাংশন {@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্টের প্রক্সি কনফিগারেশন সেট করতে ব্যবহৃত হয়।

exchange.SetProxy ((প্রক্সি)

দ্যproxyপ্যারামিটার প্রক্সি কনফিগারেশন নির্দিষ্ট করতে ব্যবহৃত হয়। প্রক্সি সত্য স্ট্রিং

function main() {
    exchange.SetProxy("socks5://192.168.1.10:8080")
    // If you can't access the exchange ticker interface, set up an available ss5 proxy and you can access the ticker interface
    Log(exchange.GetTicker())
}
def main():
    exchange.SetProxy("socks5://192.168.1.10:8080")
    Log(exchange.GetTicker())
void main() {
    exchange.SetProxy("socks5://192.168.1.10:8080");
    Log(exchange.GetTicker());
}

{@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্ট কনফিগার করুনsocks5প্রক্সিঃ

function main(){
    exchange.SetProxy("ip://10.0.3.15")
    // The requested IP address is 10.0.3.15
    exchange.GetTicker()
}
def main():
    exchange.SetProxy("ip://10.0.3.15")
    exchange.GetTicker()
void main() {
    exchange.SetProxy("ip://10.0.3.15");
    exchange.GetTicker();
}

এর পাশাপাশিগ্লোবাল স্পেসিফিকেশন{@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্ট থেকে অনুরোধের আইপি ঠিকানার জন্য, {@var/EXCHANGE exchange} এর উপর ভিত্তি করে একটি আইপি ঠিকানা নির্দিষ্ট করার জন্যও সমর্থন রয়েছেঃ

যদি প্রক্সি সেটিং ব্যর্থ হয়,exchange.SetProxy()ফাংশন কল করা হলে null ফেরত হবে.exchange.SetProxy()ফাংশন প্রক্সি সেট করেrestপ্রতিটি {@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্টের জন্য একটি প্রক্সি সেট করা যেতে পারে, এবং প্রক্সি সেট করার পরে {@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্টের সাথে আবদ্ধ এক্সচেঞ্জ ইন্টারফেসের অ্যাক্সেস প্রক্সির মাধ্যমে অ্যাক্সেস করা হবে। সেটিং সমর্থনsocks5প্রক্সি, প্রথম এক্সচেঞ্জ অবজেক্ট যোগ করা হচ্ছে {@var/EXCHANGE exchange} অর্থাৎঃexchanges[0]উদাহরণস্বরূপঃ

  • প্রক্সি সেট করুন, কোন ব্যবহারকারীর নাম, কোন পাসওয়ার্ডঃexchange.SetProxy("socks5://127.0.0.1:8889").
  • প্রক্সি সেট করুন, ব্যবহারকারীর নাম এবং পাসওয়ার্ড লিখুনঃexchange.SetProxy("socks5://username:password@127.0.0.1:8889"). usernameব্যবহারকারীর নাম এবংpasswordপাসওয়ার্ড।
  • প্রক্সি ছাড়াই স্বাভাবিক মোডে স্যুইচ করুনঃexchange.SetProxy("").

{@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্ট থেকে অনুরোধের আইপি ঠিকানা সেট করতে সহায়তা করে,বিশ্বব্যাপী নির্দিষ্ট.

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

exchange.SetTimeout

দ্যexchange.SetTimeout()ফাংশনটি টাইমআউট সেট করতে ব্যবহৃত হয়rest{@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্টের জন্য অনুরোধ।

এক্সচেঞ্জ.সেটটাইমআউট ((টাইমআউট)

দ্যtimeoutপ্যারামিটারটি টাইমআউট সেটিংয়ের জন্য মিলিসেকেন্ডের সংখ্যা নির্দিষ্ট করতে ব্যবহৃত হয়। টাইমআউট সত্য সংখ্যা

function main() {
    exchange.SetTimeout(3000)
    Log(exchange.GetTicker())
}
def main():
    exchange.SetTimeout(3000)
    Log(exchange.GetTicker())
void main() {
    exchange.SetTimeout(3000);
    Log(exchange.GetTicker());
}

প্যারামিটারtimeoutএকটি মিলিসেকেন্ড মান, 1000 মিলিসেকেন্ড 1 সেকেন্ড সমান।restশুধুমাত্র প্রোটোকল, টাইমআউট সেট করতে ব্যবহৃতrestঅনুরোধ, এটি শুধুমাত্র একবার সেটিং দ্বারা কার্যকর হয়। উদাহরণস্বরূপ,exchange.SetTimeout(3000), সেট করেrestসময়সীমার জন্য অনুরোধexchangeএক্সচেঞ্জ অবজেক্ট 3 সেকেন্ডে। নেটওয়ার্ক অনুরোধগুলির সাথে ফাংশনগুলি কল করা যেমনexchange.GetTicker()যা ৩ সেকেন্ডের বেশি সময় ধরে উত্তর পায় না তা টাইম আউট হবে এবং টাইম আউট করা ফাংশন কলগুলি শূন্য মান ফেরত দেবে।SetTimeout()একটি গ্লোবাল ফাংশন নয়, এটি {@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্টের একটি পদ্ধতি।

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

থ্রেড

এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্ম সত্যই মাল্টি-থ্রেড ফাংশন সমর্থন করেJavaScriptসিস্টেমের নীচে থেকে ভাষা কৌশল, এবং নিম্নলিখিত উদ্দেশ্য বাস্তবায়নঃ

বস্তু নির্দেশাবলী মন্তব্যসমূহ
থ্রেডিং মাল্টিথ্রেড গ্লোবাল অবজেক্ট সদস্যদের কাজ:Thread, getThread, mainThreadইত্যাদি।
থ্রেড থ্রেড অবজেক্ট সদস্যদের কাজ:peekMessage, postMessage, joinইত্যাদি।
থ্রেডলক থ্রেড লক অবজেক্ট সদস্যদের কাজ:acquire, releaseতারা থ্রেড এক্সিকিউশন ফাংশনের পরামিতি হিসাবে থ্রেড পরিবেশে পাস করা যেতে পারে।
থ্রেড ইভেন্ট ইভেন্ট বস্তু সদস্যদের কাজ:set, clear, wait, isSet. তারা থ্রেড এক্সিকিউশন ফাংশনের একটি পরামিতি হিসাবে থ্রেড পরিবেশে পাস করা যেতে পারে।
থ্রেডCondition শর্ত বস্তু সদস্যদের কাজ:notify, notifyAll, wait, acquire, release. তারা থ্রেড এক্সিকিউশন ফাংশনের একটি পরামিতি হিসাবে থ্রেড পরিবেশে পাস করা যেতে পারে।
ThreadDict অভিধানের বস্তু সদস্যদের কাজ:get, setতারা থ্রেড এক্সিকিউশন ফাংশনের পরামিতি হিসাবে থ্রেড পরিবেশে পাস করা যেতে পারে।

থ্রেডিং

দ্যthreadingobject হল একটি গ্লোবাল মাল্টিথ্রেডিং ম্যানেজমেন্ট টুল যা সমান্তরাল থ্রেড, থ্রেড লক এবং শর্ত বস্তুর সৃষ্টির মতো ফাংশন প্রদান করে। এই বিভাগটি সদস্য ফাংশনগুলিকে পরিচয় করিয়ে দেয়threadingএই বস্তুর শুধুমাত্র দ্বারা সমর্থিত হয়JavaScriptভাষা কৌশল।

থ্রেড

দ্যThread()একই সময়ে থ্রেড তৈরি করতে ফাংশন ব্যবহার করা হয়।

দ্যThread()ফাংশন a প্রদান করেThreadobject, যা তৈরি concurrent threads, thread communication ইত্যাদি পরিচালনা করতে ব্যবহৃত হয়।

Threadবস্তু

থ্রেড ((ফান,... আর্গস) থ্রেড ((... আইটেম)

প্যারামিটারfuncএকটি ফাংশন যা একই সাথে সম্পাদন করা হয় (রেফারেন্স দ্বারা পাস করা হয়), এবং বেনামী ফাংশনগুলিকে পাস করতে সহায়তা করে।funcএকাধিক পরামিতি গ্রহণ করতে পারে, যা মাধ্যমে পাস করা হবে...argsএকই সময়ে কার্যকর করার সময়. অতএব, পরামিতি তালিকাfuncএর সাথে সামঞ্জস্যপূর্ণ হতে হবে...args.

ফাংশন সত্য ফাংশন প্যারামিটারargপ্রকৃত প্যারামিটার যা পাস করা হয়func(যেমন সমান্তরাল থ্রেড এক্সিকিউশন ফাংশন) যখন কলব্যাক এক্সিকিউটেড হয়; একাধিক পরামিতি থাকতে পারেarg, এবং প্যারামিটার তালিকাfuncএর সাথে সামঞ্জস্যপূর্ণ হতে হবে...args.

আরজি মিথ্যা string, number, bool, object, array, function, null value এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য প্রকার প্যারামিটারitemএকটি অ্যারে যা একই সময়ে কার্যকর করা ফাংশন রেফারেন্স এবং তাদের পরামিতি ধারণ করে।itemপ্যারামিটার কল করার সময় পাস করা যেতে পারেThread function.

বিষয় সত্য অ্যারে

function test1(a, b, c) {
    Log("test1:", a, b, c)
}

function main() {
    var t1 = threading.Thread(test1, 1, 2, 3)
    var t2 = threading.Thread(function (msg) {
        Log("msg:", msg)
    }, "Hello thread2")

    t1.join()
    t2.join()
}

একটি কাস্টম ফাংশন এবং একটি বেনামী ফাংশন উভয়ের জন্য সমান্তরাল থ্রেড তৈরি করুন।

function test1(msg) {
    Log("msg:", msg)
    test2("Hello test2")
}

function main() {
    var t1 = threading.Thread(
        [function(a, b, c) {Log(a, b, c)}, 1, 2, 3], 
        [test1, "Hello test1"], 
        [`function test2(msg) {Log("msg:", msg)}`])

    t1.join()
}

ব্যবহার করুনThread(...items)একই সাথে থ্রেড তৈরি করতে এবং একাধিক ফাংশন ক্রমাগত সম্পাদন করতে।

function ml(input) {
    const net = new brain.NeuralNetwork()
    net.train([
        { input: [0, 0], output: [0] },
        { input: [0, 1], output: [1] },
        { input: [1, 0], output: [1] },
        { input: [1, 1], output: [0] },
    ])
    return net.run(input)
}

function main() {
    var ret = threading.Thread([ml, [1, 0]], [HttpQuery("https://unpkg.com/brain.js")]).join()

    // ret: {"id":1,"terminated":false,"elapsed":337636000,"ret":{"0":0.9339330196380615}}
    Log(ret)
}

এটি ফাংশন স্ট্রিংগুলি পাস করতে সমর্থন করে এবং সমান্তরাল কম্পিউটিংয়ের জন্য গতিশীলভাবে বাহ্যিক লাইব্রেরি আমদানি করতে পারে।

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

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

{@fun/Threads/threading/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/Event Event}, {@fun/Threads/threading/Dict Dict}, {@fun/Threads/threading/pending pending}, {@fun/Threads/threading/eventLoop}

getThread

দ্যgetThread()ফাংশনটি নির্দিষ্ট থ্রেড আইডি এর উপর ভিত্তি করে থ্রেড অবজেক্ট পেতে ব্যবহৃত হয়।

দ্যgetThread()ফাংশন রিটার্ন করেThreadপ্যারামিটার দ্বারা নির্ধারিত threadId সহ বস্তু

Threadবস্তু

getThread ((থ্রেডআইডি)

প্যারামিটারthreadIdহল থ্রেড অবজেক্ট আইডি। প্যারামিটার উল্লেখ করে সংশ্লিষ্ট থ্রেড অবজেক্ট পান।

threadId সত্য সংখ্যা

function main() {
    var t1 = threading.Thread(function () {
        Log("Hello thread1")
    })
    // The Thread object has a method: id(), which is used to get the thread ID. You can view the section of the document corresponding to the Thread object.
    var threadId = t1.id()
    var threadName = t1.name()
    Log("threadId:", threadId, ", threadName:", threadName)
    
    var t2 = threading.getThread(threadId)
    Log(`threadId == t2.id():`, threadId == t2.id(), `, threadName == t2.name():`, threadName == t2.name())
}

নির্দিষ্ট থ্রেড অবজেক্টটি পাস করুনthreadId.

এটি ব্যাকটেস্টিং সিস্টেম এবং লাইভ ট্রেডিং পরিবেশ সমর্থন করে।

যদি আপনি যে থ্রেডটি পেতে চান তা কার্যকর করা হয়েছে এবং মুক্ত করা হয়েছে, আপনি এটি ব্যবহার করতে পারবেন নাthreading.getThread(threadId)গহ্বরের থ্রেড অবজেক্ট পাওয়া যায়।

{@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/event Event}, {@fun/Threads/threads/eventLoop}, {@fun/Threads/threads/Dict Dict}, {@fun/Threads/threading/eventLoop pending}, {@fun/Threads/threads/threading/eventLoop}

প্রধান থ্রেড

দ্যmainThread()ফাংশন প্রধান থ্রেড এর থ্রেড অবজেক্ট পেতে ব্যবহৃত হয়, অর্থাৎ থ্রেড যেখানেmain()কৌশল মধ্যে ফাংশন অবস্থিত.

দ্যmainThread()ফাংশন মূল থ্রেডের থ্রেড অবজেক্ট ফেরত দেয়।

Threadবস্তু

mainThread ((()

function main() {
    Log("The threadId of the main thread:", threading.mainThread().id())
}

নিয়ে যাওThreadপ্রধান থ্রেড এবং আউটপুট বস্তুরthreadIdমূল থ্রেডের।

function test() {
    Log("Output the main thread ID in the test function:", threading.mainThread().id())
}

function main() {
    var t1 = threading.Thread(test)
    t1.join()
}

মূল থ্রেডের থ্রেড অবজেক্টটি সমান্তরাল থ্রেডগুলিতেও পাওয়া যায়।

এটি ব্যাকটেস্টিং সিস্টেম এবং লাইভ ট্রেডিং পরিবেশ সমর্থন করে।

{@fun/Threads/getThread getThread}, {@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/Event Event}, {@fun/Threads/threads/threading/Dict Dict}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/threading/Lock Lock}, {@fun/Threads/threading/eventLoop}, {@fun/Threads/threads/threading/eventLoop}, {@fun/Threads/threads/threading/eventLoop}, {@fun/Threads/threads/threading/eventLoop}

বর্তমান থ্রেড

দ্যcurrentThread()বর্তমান থ্রেডের থ্রেড অবজেক্ট পেতে ফাংশন ব্যবহার করা হয়।

দ্যcurrentThread()ফাংশন বর্তমান থ্রেডের থ্রেড অবজেক্ট ফেরত দেয়।

Threadবস্তু

বর্তমান থ্রেড ((()

function test() {
    Log("Id of the current thread:", threading.currentThread().id())
}

function main() {
    var t1 = threading.Thread(test)
    t1.join()
}

নিয়ে যাওThreadবর্তমান থ্রেড এবং আউটপুট বস্তুরthreadIdবর্তমান থ্রেডের।

এটি ব্যাকটেস্টিং সিস্টেম এবং লাইভ ট্রেডিং পরিবেশ সমর্থন করে।

{@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/threading/Condition Condition}, {@fun/Threads/threading/event Event}, {@fun/Threads/threading/event Loop}, {@fun/Threads/threads/threads/threading/mainThread mainThread}, {@fun/Threads/threads/threading/threading/threading/thread Thread Lock}, {@fun/Threads/threads/threading/eventLoop eventLoop}, {@fun/Threads/threads/threading/eventLoop}, {@fun/Threads/threads/threads/eventLoop event

লক

দ্যLock()থ্রেড লক অবজেক্ট তৈরি করতে ফাংশন ব্যবহার করা হয়।

দ্যLock()ফাংশন একটি থ্রেড লক অবজেক্ট রিটার্ন করে।

ThreadLockবস্তু

লক ((()

function consumer(productionQuantity, dict, lock) {
    for (var i = 0; i < productionQuantity; i++) {
        lock.acquire()
        var count = dict.get("count")        
        Log("consumer:", count)
        Sleep(1000)
        lock.release()
    }
}

function producer(productionQuantity, dict, lock) {
    for (var i = 0; i < productionQuantity; i++) {
        lock.acquire()
        dict.set("count", i)
        Log("producer:", i)
        Sleep(1000)
        lock.release()
    }
}

function main() {
    var dict = threading.Dict()
    dict.set("count", -1)
    var lock = threading.Lock()
    var productionQuantity = 10
    var producerThread = threading.Thread(producer, productionQuantity, dict, lock)
    var consumerThread = threading.Thread(consumer, productionQuantity, dict, lock)

    consumerThread.join()
    producerThread.join()
}

দুটি সমান্তরাল থ্রেড একটি সাধারণ রিসোর্স অ্যাক্সেস করে।

এটি ব্যাকটেস্টিং সিস্টেম এবং লাইভ ট্রেডিং পরিবেশ সমর্থন করে।

{@fun/Threads/threading/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threads/threading/ThreadThread}, {@fun/Threads/threads/threading/Condition Condition}, {@fun/Threads/threads/threading/Event Event}, {@fun/Threads/threads/threading/Dict Dict}, {@fun/Threads/threads/threading/pending pending}, {@fun/Threads/threads/threading/threading/eventLoop}, {@fun/Threads/threads/threads/eventLoop}

শর্ত

দ্যCondition()ফাংশনটি একটি শর্ত পরিবর্তনশীল বস্তু তৈরি করতে ব্যবহৃত হয়, যা মাল্টি-থ্রেডেড সমান্তরাল পরিবেশে থ্রেডগুলির মধ্যে সিঙ্ক্রোনাইজেশন এবং যোগাযোগ অর্জনের জন্য ব্যবহৃত হয়।Condition(), একটি থ্রেড নির্দিষ্ট শর্ত পূরণ না হলে অপেক্ষা করতে পারে যতক্ষণ না অন্য থ্রেড এটিকে জানায় যে শর্তটি পূরণ হয়েছে।

দ্যCondition()ফাংশন a প্রদান করেThreadCondition object.

ThreadConditionবস্তু

অবস্থা (((

function consumer(productionQuantity, dict, condition) {
    for (var i = 0; i < productionQuantity; i++) {
        condition.acquire()
        while (dict.get("array").length == 0) {
            condition.wait()
        }
        var arr = dict.get("array")
        var count = arr.shift()
        dict.set("array", arr)
        Log("consumer:", count, ", array:", arr)
        condition.release()
        Sleep(1000)
    }
}

function producer(productionQuantity, dict, condition) {
    for (var i = 0; i < productionQuantity; i++) {
        condition.acquire()
        var arr = dict.get("array")
        arr.push(i)
        dict.set("array", arr)
        Log("producer:", i, ", array:", arr)
        condition.notify()
        condition.release()
        Sleep(1000)
    }
}

function main() {
    var dict = threading.Dict()
    dict.set("array", [])
    var condition = threading.Condition()
    var productionQuantity = 10
    var producerThread = threading.Thread(producer, productionQuantity, dict, condition)
    var consumerThread = threading.Thread(consumer, productionQuantity, dict, condition)
    consumerThread.join()
    producerThread.join()
}

দুটি সমান্তরাল থ্রেড একটি সাধারণ রিসোর্স অ্যাক্সেস করে।

ব্যাকটেস্টিং সিস্টেম এই কার্যকারিতা বাস্তবায়ন করে না, এটি শুধুমাত্র এটি সংজ্ঞায়িত করে।

{@fun/Threads/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Thread Thread}, {@fun/Threads/threads/threading/event Event}, {@fun/Threads/threads/threading/Dict Dict}, {@fun/Threads/threading/pending pending}, {@fun/Threads/threading/threading/eventLoop}, {@fun/Threads/threads/threading/eventLoop},

ঘটনা

দ্যEvent()ফাংশন একটি তৈরি করতে ব্যবহৃত হয়থ্রেড ইভেন্টথ্রেডের মধ্যে সিঙ্ক্রোনাইজেশনের জন্য ব্যবহৃত হয়, যা একটি থ্রেডকে অন্য থ্রেড থেকে বিজ্ঞপ্তি বা সংকেতের জন্য অপেক্ষা করতে দেয়।

দ্যEvent()ফাংশন a প্রদান করেThreadEvent object.

ThreadEventবস্তু

ঘটনা ((()

function consumer(productionQuantity, dict, pEvent, cEvent) {
    for (var i = 0; i < productionQuantity; i++) {
        while (dict.get("array").length == 0) {
            pEvent.wait()
        }
        if (pEvent.isSet()) {
            pEvent.clear()
        }

        var arr = dict.get("array")
        var count = arr.shift()
        dict.set("array", arr)
        Log("consumer:", count, ", array:", arr)
        cEvent.set()
        Sleep(1000)
    }
}

function producer(productionQuantity, dict, pEvent, cEvent) {
    for (var i = 0; i < productionQuantity; i++) {
        while (dict.get("array").length != 0) {
            cEvent.wait()
        }
        if (cEvent.isSet()) {
            cEvent.clear()
        }

        var arr = dict.get("array")
        arr.push(i)
        dict.set("array", arr)
        Log("producer:", i, ", array:", arr)        
        pEvent.set()       
        Sleep(1000)
    }
}

function main() {    
    var dict = threading.Dict()
    dict.set("array", [])
    var pEvent = threading.Event()
    var cEvent = threading.Event()
    var productionQuantity = 10
    var producerThread = threading.Thread(producer, productionQuantity, dict, pEvent, cEvent)
    var consumerThread = threading.Thread(consumer, productionQuantity, dict, pEvent, cEvent)

    consumerThread.join()
    producerThread.join()
}

দুটি সমান্তরাল থ্রেড একটি সাধারণ রিসোর্স অ্যাক্সেস করে।

এটি ব্যাকটেস্টিং সিস্টেম এবং লাইভ ট্রেডিং পরিবেশ সমর্থন করে।

{@fun/Threads/threading/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/threading/Thread Thread}, {@fun/Threads/threads/threading/Dict Dict}, {@fun/Threads/threading/pending pending}, {@fun/Threads/threads/threading/eventLoop eventop}, {@fun/Threads/threads/threads/pending pending}, {@fun/Threads/threads/loop eventop}, {@fun/Threads/threads/threads/eventLoop}, {@fun/threads/thre

ডিক্ট

দ্যDict()একই সময়ে থ্রেডে পাস করার জন্য একটি অভিধান বস্তু তৈরি করতে ফাংশন ব্যবহার করা হয়।

দ্যDict()ফাংশন a প্রদান করেThreadDict object.

ThreadDictবস্তু

ডিক্ট ((()

function threadFun1(obj) {
    obj["age"] = 100
    while (true) {
        Log("threadFun1 obj:", obj)
        Sleep(5000)
    }
}

function threadFun2(obj) {
    while (true) {
        Log("threadFun2 obj:", obj)
        Sleep(5000)
    }
}

function main() {
    var obj = {"age": 10}
    var t1 = threading.Thread(threadFun1, obj)
    var t2 = threading.Thread(threadFun2, obj)
    t1.join()
    t2.join()    
}

অবজেক্টের কী মান পরিবর্তন করলে অন্যান্য থ্রেডে অবজেক্টের কী মান পরিবর্তিত হবে কিনা তা পরীক্ষা করার জন্য একটি সাধারণ অবজেক্টকে সমান্তরাল থ্রেড এক্সিকিউশন ফাংশনে পাস করুন।

function threadFun1(threadDict) {
    threadDict.set("age", 100)
    while (true) {
        Log(`threadFun1 threadDict.get("age"):`, threadDict.get("age"))
        Sleep(5000)
    }
}

function threadFun2(threadDict) {
    while (true) {
        Log(`threadFun2 threadDict.get("age"):`, threadDict.get("age"))
        Sleep(5000)
    }
}

function main() {
    var threadDict = threading.Dict()
    threadDict.set("age", 10)
    var t1 = threading.Thread(threadFun1, threadDict)
    var t2 = threading.Thread(threadFun2, threadDict)

    t1.join()
    t2.join()    
}

পাস করুনThreadDictবস্তুর দ্বারা তৈরিDict()একই সময়ে থ্রেড এক্সিকিউশন ফাংশনের সাথে ফাংশন, এবং পরীক্ষা করুন যে বস্তুর কী মান পরিবর্তন করলে অন্যান্য থ্রেডের বস্তুর কী মান পরিবর্তন হবে কিনা।

যখন একটি সাধারণ বস্তু একটি সমান্তরাল থ্রেড ফাংশনে পাস করা হয়, তখন এটি একটি গভীর অনুলিপি হিসাবে পাস করা হয়। একটি সমান্তরাল থ্রেডের কী মান পরিবর্তন করা অন্যান্য থ্রেডের অভিধানকে প্রভাবিত করবে না।

এটি ব্যাকটেস্টিং সিস্টেম এবং লাইভ ট্রেডিং পরিবেশ সমর্থন করে।

{@fun/Threads/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/event Event}, {@fun/Threads/threading/threading/Thread Thread}, {@fun/Threads/threading/threading/pending pending}, {@fun/Threads/threading/eventLoop}, {@fun/Threads/threading/eventLoop}, {@fun/Threads/threading/threading/eventLoop}, {@fun/Threads/threading/eventLoop}, {@fun/Threads/threads/threading/eventLoop}, {@fun/

অপেক্ষমান

দ্যpendingবর্তমান কৌশল প্রোগ্রামে চলমান সমান্তরাল থ্রেডের সংখ্যা পেতে ফাংশনটি ব্যবহার করা হয়।

দ্যpending()ফাংশন বর্তমান কৌশল প্রোগ্রাম চালানো হচ্ছে যে সমান্তরাল থ্রেড সংখ্যা ফেরত দেয়।

সংখ্যা

অপেক্ষমান (((

function threadFun1() {
    Log("threadFun1")
    Sleep(3000)
}

function threadFun2() {
    for (var i = 0; i < 3; i++) {
        LogStatus(_D(), "print from threadFun2")
        Sleep(3000)
    }
}

function main() {
    Log(`begin -- threading.pending():`, threading.pending())

    var t1 = threading.Thread(threadFun1)
    var t2 = threading.Thread(threadFun2)
    Log(`after threading.Thread -- threading.pending():`, threading.pending())

    t1.join()
    t2.join()
    Log(`after thread.join -- threading.pending():`, threading.pending())
}

একই সময়ে চলমান দুটি থ্রেড তৈরি করুন এবংpending()বিভিন্ন সময় নোড এ ফাংশন।

যখন কৌশলmain()ফাংশন চালানো শুরু, ফাংশন কলpending()সরাসরি 1 ফিরে আসবে, কারণ প্রধান থ্রেড যেখানে কৌশলmain()ফাংশনটিও একটি অপেক্ষমান থ্রেড।

এটি ব্যাকটেস্টিং সিস্টেম এবং লাইভ ট্রেডিং পরিবেশ সমর্থন করে।

{@fun/Threads/threading/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/Event Event}, {@fun/Threads/threading/Dict Dict}, {@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/eventLoop}, {@fun/Threads/threading/eventLoop}, {@fun/Threads/threads/threading/eventLoop}

থ্রেড

Threadবস্তুর দ্বারা তৈরি বা ফিরে আসতে পারেthreading.Thread(), threading.getThread(), threading.mainThread(), এবংthreading.currentThread().

পিক বার্তা

দ্যpeekMessage()একটি থ্রেড থেকে একটি বার্তা পেতে ফাংশন ব্যবহার করা হয়।

দ্যpeekMessage()ফাংশন বর্তমান থ্রেড অবজেক্টের সাথে যুক্ত থ্রেড দ্বারা গৃহীত বার্তাটি ফেরত দেয়।

string, number, bool, object, array, null value এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য প্রকার

পিকমেইজ ((() পিকমেইজ ((টাইমআউট)

প্যারামিটারtimeoutis the timeout setting. এটি প্যারামিটার দ্বারা সেট করা মিলিসেকেন্ডের সংখ্যা ব্লক করবে এবং ডেটা ফেরত দেবে। যদি কোনও ডেটা না থাকে এবং টাইমআউট সীমা অতিক্রম করে, তাহলে একটি শূন্য মান ফেরত দেওয়া হবে। যদিtimeout0 বাtimeoutপ্যারামিটার পাস করা হয় না, এর মানে হল যে প্রক্রিয়া ব্লক হবে এবং অপেক্ষা করুন যতক্ষণ না চ্যানেল থেকে তথ্য গ্রহণ করা হয়.timeoutযদি -১ এ সেট করা হয়, তাহলে এর মানে হল যে প্রক্রিয়াটি অবিলম্বে ডেটা ব্লক করবে না এবং ফেরত দেবে না। যদি কোন ডেটা না থাকে, তাহলে একটি শূন্য মান ফেরত দেওয়া হবে।

টাইমআউট মিথ্যা সংখ্যা

function main() {
    var t1 = threading.Thread(function() {
        for (var i = 0; i < 10; i++) {
            Log("thread1 postMessage():", i)
            threading.mainThread().postMessage(i)
            Sleep(500)
        }        
    })

    while (true) {
        var msg = threading.currentThread().peekMessage()
        Log("main peekMessage():", msg)
        if (msg == 9) {
            break
        }
        Sleep(1000)
    }

    t1.join()
}

একটি সমান্তরাল থ্রেড থেকে প্রধান থ্রেডে বার্তা পাঠান।

প্রোগ্রাম লেখার সময়, আমাদের থ্রেড ব্লক সমস্যার দিকে মনোযোগ দিতে হবে।

{@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Threads/Thread/name}, {@Threads/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop event

postMessage

দ্যpostMessage()ফাংশন একটি থ্রেডে একটি বার্তা পাঠাতে ব্যবহৃত হয়।

postMessage ((msg)

প্যারামিটারmsgএই বার্তাটি পাঠানো হবে।

মেসেজ সত্য সিস্টেম দ্বারা সমর্থিত যে কোন প্রকার, যেমন স্ট্রিং, সংখ্যা, বুল, বস্তু, অ্যারে, শূন্য মান ইত্যাদি।

function main() {
    var t1 = threading.Thread(function() {
        for (var i = 0; i < 10; i++) {
            Log("thread1 postMessage():", i)
            threading.mainThread().postMessage(i)
            Sleep(500)
        }        
    })
    for (var i = 0; i < 10; i++) {
        var event = threading.mainThread().eventLoop()
        Log("main event:", event)
        Sleep(500)
    }
    t1.join()
}

একই সময়ে থ্রেডে বার্তা পাঠান এবং ব্যবহার করুনeventLoop()মেসেজ নোটিফিকেশন পেতে।

যখন একটি থ্রেড এর এক্সিকিউশন ফাংশনpostMessage()একটি সংকেত বা তথ্য পাঠাতে ফাংশন, একটি বার্তা ইভেন্ট এছাড়াও উৎপন্ন হয়. আমরা ব্যবহার করতে পারেনeventLoop()মেসেজ নোটিফিকেশন গ্রহণের ফাংশন।

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Threads/Thread/name name join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/eventLoop eventLoop}

যোগদান

দ্যjoin()থ্রেড থেকে বেরিয়ে আসার জন্য অপেক্ষা করতে এবং সিস্টেম রিসোর্স পুনরুদ্ধার করতে ফাংশনটি ব্যবহৃত হয়।

দ্যThreadRetবস্তুসম্পাদনের ফলাফল সম্পর্কে তথ্য রয়েছে। বৈশিষ্ট্যগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছেঃ

  • আইডিঃ থ্রেড আইডি।
  • terminated: থ্রেড শেষ হতে বাধ্য কিনা।
  • elapsed: ন্যানো সেকেন্ডে থ্রেডের চলার সময়।
  • ret: থ্রেড ফাংশনের রিটার্ন মান।

ThreadRetবস্তু

যোগদান ((() যোগদান ((টাইমআউট)

দ্যtimeoutপ্যারামিটার থ্রেড শেষ হওয়ার জন্য অপেক্ষা করার জন্য মিলিসেকেন্ডে টাইমআউট সেট করতে ব্যবহৃত হয়। যখনtimeoutপ্যারামিটার 0 সেট করা হয় অথবাtimeoutপ্যারামিটার সেট করা হয় না,join()ফাংশন ব্লক এবং থ্রেড শেষ পর্যন্ত অপেক্ষা করবে. যখনtimeoutপ্যারামিটার -1 এ সেট করা হয়,join()অবিলম্বে ফাংশন ফিরে আসবে।

টাইমআউট মিথ্যা সংখ্যা

function main() {
    var t1 = threading.Thread(function() {
        Log("Hello thread1")
        Sleep(5000)
    })

    var ret = t1.join(1000)
    Log("ret:", ret)   // ret: undefined

    ret = t1.join()
    Log("ret:", ret)   // ret: {"id":1,"terminated":false,"elapsed":5003252000}
}

পরীক্ষা করুনjoin()টাইমআউট ফাংশন এবং রিটার্ন মান আউটপুট।

দ্যjoin()ফাংশন টাইমস আউট এবং রিটার্নundefined.

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Threads/Thread/id id}, {@fun/Threads/Thread/name name name}, {@fun/Threads/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads

শেষ করা

দ্যterminate()ফাংশনটি একটি থ্রেডকে জোরপূর্বক শেষ করতে এবং তৈরি থ্রেড দ্বারা ব্যবহৃত হার্ডওয়্যার সংস্থানগুলি মুক্ত করতে ব্যবহৃত হয়।

সমাপ্ত ((()

function main() {
    var t1 = threading.Thread(function() {
        for (var i = 0; i < 10; i++) {
            Log("thread1 i:", i)
            Sleep(1000)
        }
    })

    Sleep(3000)
    t1.terminate()
    Log("after t1.terminate()")

    while (true) {
        LogStatus(_D())
        Sleep(1000)
    }
}

একটি থ্রেডের এক্সিকিউশন জোরপূর্বক শেষ করুন। একটি থ্রেড জোরপূর্বক শেষ করার পরে, লগটিতে এই থ্রেড থেকে কোন আউটপুট থাকবে না।

থ্রেডগুলির জন্য যা জোরপূর্বক শেষ হয়terminate()ফাংশন, আমরা আর ব্যবহার করতে পারবেন নাjoin()তাদের শেষ হওয়ার জন্য অপেক্ষা করার ফাংশন।

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/name name name}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@

getData

দ্যgetData()ফাংশন থ্রেড পরিবেশে রেকর্ড ভেরিয়েবল অ্যাক্সেস করতে ব্যবহার করা হয়. তথ্য বৈধ যখন থ্রেড এক্সিকিউটেড না হয়েছেjoin()ফাংশন (সফল প্রস্থান জন্য অপেক্ষা) এবং কার্যকর করা হয়নিterminate()ফাংশন (শক্তির সাথে থ্রেড শেষ) ।

দ্যgetData()ফাংশন মূল মান সংশ্লিষ্ট রিটার্নkeyবর্তমান থ্রেড কনটেক্সটে সংরক্ষিত কী-ভ্যালু জোড়ার প্যারামিটার।

string, number, bool, object, array, null value এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য প্রকার

getData ((() getData ((কী)

দ্যkeyপ্যারামিটার হল সংরক্ষিত কী-মানের জোড়ার কী নাম।

চাবি সত্য স্ট্রিং

function main() {
    var t1 = threading.Thread(function() {
        for (var i = 0; i < 5; i++) {
            threading.currentThread().setData("count", i)
            Log(`setData("count"):`, i)
            Sleep(1000)
        }
    })
    for (var i = 0; i < 5; i++) {
        var count = threading.getThread(t1.id()).getData("count")
        Log(`getData("count"):`, count)
        Sleep(1000)
    }
    t1.join()
}

কী এর মান রেকর্ড করুনcountসমান্তরাল থ্রেড পরিবেশে, এবং তারপর কী মান পড়াcountমূল থ্রেডে।

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/setData set}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/name name name}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun

সেটডাটা

দ্যsetData()ফাংশনটি থ্রেডের প্রেক্ষাপটে ভেরিয়েবল সংরক্ষণ করতে ব্যবহৃত হয়।

setData ((কী, মান)

দ্যkeyসংরক্ষিত কী-মানের জোড়ার কী নাম নির্দিষ্ট করতে প্যারামিটার ব্যবহার করা হয়।

চাবি সত্য স্ট্রিং দ্যvalueসংরক্ষিত কী-মানের জোড়ার কী মান নির্দিষ্ট করতে প্যারামিটার ব্যবহার করা হয়।

মূল্য সত্য সিস্টেম দ্বারা সমর্থিত যে কোন প্রকার, যেমন স্ট্রিং, সংখ্যা, বুল, বস্তু, অ্যারে, শূন্য মান ইত্যাদি।

function main() {
    var t1 = threading.Thread(function() {
        threading.currentThread().setData("data", 100)
    })
    Sleep(1000)
    Log(`t1.getData("data"):`, t1.getData("data"))
    t1.join()
}

সমান্তরাল থ্রেডে কী-মানের জোড়া সেট করুন এবং মূল থ্রেডে কী-মানের জোড়া পড়ুন।

ডাটা বৈধ যখন থ্রেড এক্সিকিউট করেনিjoin()ফাংশন (সফল প্রস্থান জন্য অপেক্ষা) এবং কার্যকর করা হয়নিterminate()ফাংশন (শক্তিগতভাবে থ্রেড শেষ) । প্যারামিটার মানvalueএকটি সিরিয়ালাইজযোগ্য ভেরিয়েবল হতে হবে।

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/name name name}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}

আইডি

দ্যid()ফাংশন রিটার্ন করতে ব্যবহৃত হয়threadIdবর্তমান মাল্টি-থ্রেডেড অবজেক্ট ইনস্ট্যান্স।

রিটার্ন মানid()ফাংশন হলthreadId.

সংখ্যা

id ((()

function main() {
    var t1 = threading.Thread(function() {
        threading.currentThread().setData("data", 100)
    })
    Log(`t1.id():`, t1.id())
    t1.join()
}

একটি সমান্তরালভাবে চলমান থ্রেড তৈরি করুন এবং আউটপুটthreadIdমূল থ্রেডে এই সমান্তরাল থ্রেডের।

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Threads/setData set}, {@fun/Threads/Thread/name name name}, {@fun/Threads/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/event

নাম

দ্যname()বর্তমান মাল্টি-থ্রেডেড অবজেক্ট ইনস্ট্যান্সের নাম ফেরত দিতে ফাংশন ব্যবহার করা হয়।

দ্যname()ফাংশন সমান্তরাল থ্রেডের নাম প্রদান করে।

স্ট্রিং

নাম ((()

function main() {
    var t1 = threading.Thread(function() {
        threading.currentThread().setData("data", 100)
    })
    Log(`t1.name():`, t1.name())  // t1.name(): Thread-1
    t1.join()
}

একটি সমান্তরাল থ্রেড তৈরি করুন এবং মূল থ্রেডে সমান্তরাল থ্রেডের নামটি আউটপুট করুন।

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Threads/setData set}, {@fun/Threads/Thread/id id}, {@fun/Threads/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads

ইভেন্টলুপ

দ্যeventLoop()ফাংশনটি থ্রেড দ্বারা প্রাপ্ত ইভেন্টগুলির জন্য শুনতে ব্যবহৃত হয়।

দ্যeventLoop()ফাংশন বর্তমান থ্রেড দ্বারা প্রাপ্ত ইভেন্ট তথ্য প্রদান করে।ইভেন্ট তথ্য কাঠামো.

বস্তু, শূন্য মান

ইভেন্টলুপ ((() ইভেন্টলুপ (টাইমআউট)

প্যারামিটারtimeoutযদি প্যারামিটারtimeoutএটি 0 এ সেট করা হলে, এটি ফেরত দেওয়ার আগে একটি ইভেন্টের জন্য অপেক্ষা করবে। যদি এটি 0 এর চেয়ে বড় হয় তবে এটি ইভেন্টের অপেক্ষা টাইমআউট সেট করবে। যদি এটি 0 এর চেয়ে কম হয় তবে এটি অবিলম্বে সর্বশেষ ইভেন্টটি ফিরিয়ে দেবে।

টাইমআউট মিথ্যা সংখ্যা

function main() {
    var t1 = threading.Thread(function() {
        while (true) {
            var eventMsg = threading.currentThread().eventLoop()     // Blocking wait
            // 2024-11-14 10:14:18 thread1 eventMsg: {"Seq":1,"Event":"thread","ThreadId":0,"Index":1,"Queue":0,"Nano":1731550458699947000}
            Log(_D(), "thread1 eventMsg:", eventMsg)
        }
    })

    var t2 = threading.Thread(function() {
        while (true) {
            var eventMsg = threading.currentThread().eventLoop(-1)   // Return immediately
            Log(_D(), "thread2 eventMsg:", eventMsg)
            Sleep(5000)
        }
    })

    var t3 = threading.Thread(function() {
        while (true) {
            var eventMsg = threading.currentThread().eventLoop(3000) // Set a 3 second timeout
            Log(_D(), "thread3 eventMsg:", eventMsg)
        }
    })

    t1.postMessage("Hello ", t1.name())
    t2.postMessage("Hello ", t2.name())
    t3.postMessage("Hello ", t3.name())
    t1.join()
    t2.join()
    t3.join()
}

একই সময়ে তিনটি থ্রেড চালান এবং প্রাপ্ত ইভেন্টের তথ্য আউটপুট করুন। যদি টাইমআউট ঘটে বা ফাংশনটি অবিলম্বে ফিরে আসে তবে আউটপুট মানটি শূন্য।

প্রক্রিয়াকরণ প্রক্রিয়াeventLoop()ফাংশন গ্লোবাল ফাংশন হিসাবে একইEventLoop().

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Threads/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Threads/Thread/name name}, {@fun/Threads/name name name}, {@fun/Threads/Thread/name name name}, {@fun/Threads/name name name}, {@fun/Threads/Thread/name name name}, {@fun/Threads/Thread/name name name}, {@fun/Threads/Threads/name name name}, {@fun/Threads/Threads/name name name name name}

থ্রেডলক

থ্রেড লক অবজেক্ট, মাল্টি-থ্রেড সিঙ্ক্রোনাইজেশন প্রসেসিংয়ের জন্য ব্যবহৃত হয়।

অর্জন করা

দ্যacquire()ফাংশনটি একটি থ্রেড লক (লক) অনুরোধ করতে ব্যবহৃত হয়।

অর্জন ((()

অনুগ্রহ করে দেখুনthreading.Lock()উদাহরণ জন্য অধ্যায়.

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

{@fun/Threads/threading/Lock Lock}, {@fun/Threads/ThreadLock/release release}

মুক্তি

দ্যrelease()ফাংশনটি একটি থ্রেড লক (আনলক) মুক্ত করতে ব্যবহৃত হয়।

মুক্তি (((

function consumer(productionQuantity, dict, pLock, cLock) {
    for (var i = 0; i < productionQuantity; i++) {
        pLock.acquire()
        cLock.acquire()
        var arr = dict.get("array")
        var count = arr.shift()
        dict.set("array", arr)
        Log("consumer:", count, ", array:", arr)
        cLock.release()
        Sleep(1000)
        pLock.release()
    }
}

function producer(productionQuantity, dict, pLock, cLock) {
    for (var i = 0; i < productionQuantity; i++) {
        cLock.acquire()   // cLock.acquire() placed after pLock.acquire() will not cause deadlock
        pLock.acquire()   
        var arr = dict.get("array")
        arr.push(i)
        dict.set("array", arr)
        Log("producer:", i, ", array:", arr)
        pLock.release()
        Sleep(1000)
        cLock.release()
    }
}

function main() {
    var dict = threading.Dict()
    dict.set("array", [])
    var pLock = threading.Lock()
    var cLock = threading.Lock()
    var productionQuantity = 10
    var producerThread = threading.Thread(producer, productionQuantity, dict, pLock, cLock)
    var consumerThread = threading.Thread(consumer, productionQuantity, dict, pLock, cLock)

    consumerThread.join()
    producerThread.join()
}

স্থবিরতার পরিস্থিতি পরীক্ষা করা

এটা লক্ষ করা উচিত যে থ্রেড লকগুলির অনুপযুক্ত ব্যবহার স্থবিরতার দিকে পরিচালিত করতে পারে।

{@fun/Threads/threading/Lock Lock}, {@fun/Threads/ThreadLock/acquire acquire}

থ্রেড ইভেন্ট

ইভেন্ট অবজেক্ট, মাল্টি-থ্রেড ইভেন্ট নোটিফিকেশন এবং সিগন্যালের জন্য ব্যবহৃত হয়।

সেট

দ্যset()ফাংশনটি ইভেন্টগুলি (সেট সিগন্যাল) জানাতে ব্যবহৃত হয়।

সেট (()

অনুগ্রহ করে দেখুনthreading.Event()উদাহরণ জন্য অধ্যায়.

যদি সিগন্যালটি ব্যবহার করে সেট করা থাকেset()সিগন্যাল পরিষ্কার করে আবার সেট করতে হবে।

{@fun/Threads/ThreadEvent/clear clear}, {@fun/Threads/ThreadEvent/wait wait}, {@fun/Threads/ThreadEvent/isSet isSet}

পরিষ্কার

দ্যclear()ফাংশনটি সিগন্যালটি পরিষ্কার করতে ব্যবহৃত হয়।

পরিষ্কার

অনুগ্রহ করে দেখুনthreading.Event()উদাহরণ জন্য অধ্যায়.

{@fun/Threads/ThreadEvent/set set}, {@fun/Threads/ThreadEvent/wait wait}, {@fun/Threads/ThreadEvent/isSet isSet}

অপেক্ষা করো

দ্যwait()ফাংশনটি একটি ইভেন্ট (সিগন্যাল) অপেক্ষা সেট করতে ব্যবহৃত হয়, এবং ইভেন্ট (সিগন্যাল) সেট করার আগে ব্লক হবে; এটি একটি টাইমআউট প্যারামিটার সেট করতে সমর্থন করে।

দ্যwait()ফাংশনটি টাইমআউট ঘটেছে কিনা তা ফেরত দেয়। যদি তাই হয় তবে এটি একটি সত্য মান ফেরত দেয়।

বুল

অপেক্ষা করো। অপেক্ষা করুন ((টাইমআউট)

দ্যtimeoutপ্যারামিটারটি মিলিসেকেন্ডে অপেক্ষা সময়সীমা সেট করতে ব্যবহৃত হয়।

টাইমআউট মিথ্যা সংখ্যা

function main() {
    var event = threading.Event()
    var t1 = threading.Thread(function(event) {
        var ret = event.wait(100)
        Log(`event.wait(100):`, ret)
        ret = event.wait()
        Log(`event.wait():`, ret)
    }, event)

    Sleep(1000)
    event.set()
    t1.join()
}

রিটার্ন মান পরীক্ষা করুনwait() function.

{@fun/Threads/ThreadEvent/set set}, {@fun/Threads/ThreadEvent/clear clear}, {@fun/Threads/ThreadEvent/isSet isSet}

isSet

দ্যisSet()একটি ইভেন্ট (সিগন্যাল) সেট করা হয়েছে কিনা তা নির্ধারণ করতে ফাংশন ব্যবহার করা হয়।

দ্যisSet()ফাংশনটি ইভেন্ট (সিগন্যাল) সেট করা হয়েছে কিনা তা ফেরত দেয়; যদি ইভেন্ট (সিগন্যাল) সেট করা হয়েছে, এটি একটি সত্য মান ফেরত দেয়।

বুল

isSet (()

অনুগ্রহ করে দেখুনthreading.Event()উদাহরণ জন্য অধ্যায়.

{@fun/Threads/ThreadEvent/set set}, {@fun/Threads/ThreadEvent/clear clear}, {@fun/Threads/ThreadEvent/wait wait}

থ্রেডCondition

কন্ডিশন অবজেক্ট, মাল্টি-থ্রেড সিঙ্ক্রোনাইজেশনের জন্য ব্যবহৃত হয়।

অবহিত করা

দ্যnotify()ফাংশনটি একটি অপেক্ষা থ্রেড (যদি থাকে) জাগাতে ব্যবহৃত হয়। শুধুমাত্র থ্রেডগুলি যা ডেকেছেwait()পদ্ধতি জেগে উঠবে।

জানানো হবে

function consumer(dict, condition) {
    while (true) {
        condition.acquire()
        while (dict.get("array").length == 0) {
            Log(threading.currentThread().name(), "wait()...", ", array:", dict.get("array"))
            condition.wait()
        }
        var arr = dict.get("array")
        var num = arr.shift()
        Log(threading.currentThread().name(), ", num:", num, ", array:", arr, "#FF0000")
        dict.set("array", arr)
        Sleep(1000)
        condition.release()
    }
}

function main() {
    var condition = threading.Condition()
    var dict = threading.Dict()
    dict.set("array", [])
    var t1 = threading.Thread(consumer, dict, condition)
    var t2 = threading.Thread(consumer, dict, condition)
    var t3 = threading.Thread(consumer, dict, condition)
    Sleep(1000)
    var i = 0
    while (true) {
        condition.acquire()
        var msg = ""
        var arr = dict.get("array")
        var randomNum = Math.floor(Math.random() * 5) + 1
        if (arr.length >= 3) {
            condition.notifyAll()
            msg = "notifyAll"
        } else {
            arr.push(i)
            dict.set("array", arr)
            if (randomNum > 3 && arr.length > 0) {
                condition.notify()
                msg = "notify"
            } else {
                msg = "pass"
            }
            i++
        }

        Log(_D(), "randomNum:", randomNum, ", array:", arr, ", msg:", msg)
        condition.release()
        Sleep(1000)
    }
}

ব্যবহার করুনnotify()অপেক্ষা করা থ্রেডকে জাগ্রত করার ফাংশন।

দ্যnotify()ফাংশন অপেক্ষা সারি একটি থ্রেড জাগায়.

যখনnotify()ফাংশন একটি থ্রেড জাগিয়ে তোলে, থ্রেড থ্রেড লক পুনরায় অর্জন করবে।

{@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/Threads/ThreadCondition/release release}

সকলকে জানানো

দ্যnotifyAll()ফাংশন সব অপেক্ষা থ্রেড জাগায়.

সবাইকে জানানো হবে।

অনুগ্রহ করে দেখুনThreadCondition.notify()উদাহরণ জন্য অধ্যায়.

দ্যnotifyAll()ফাংশনটি অপেক্ষা করা সকল থ্রেডকে একের পর এক জাগিয়ে তোলে, এবং জাগানো থ্রেডগুলি থ্রেড লকটি পুনরায় অর্জন করে।

{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/Threads/ThreadCondition/release release}

অপেক্ষা করো

দ্যwait()ফাংশনটি নির্দিষ্ট ডিজাইন শর্তে থ্রেড অপেক্ষা করতে ব্যবহৃত হয়।

অপেক্ষা করো।

অনুগ্রহ করে দেখুনThreadCondition.notify()উদাহরণ জন্য অধ্যায়.

দ্যwait()ফাংশন থ্রেড লক মুক্ত এবং জাগ্রত যখন থ্রেড লক পুনরায় অর্জন করে।

{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/Threads/ThreadCondition/release release}

অর্জন করা

দ্যacquire()ফাংশনটি একটি থ্রেড লক (লক) অনুরোধ করতে ব্যবহৃত হয়।

অর্জন ((()

অনুগ্রহ করে দেখুনThreadCondition.notify()উদাহরণ জন্য অধ্যায়.

ব্যবহারের আগেwait(), আপনি বর্তমান শর্ত বস্তুর থ্রেড লক (লক) অনুরোধ করতে হবে.

{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/release release}, {@fun/ThreadCondition/ThreadCondition/release release}, {@fun/ThreadCondition/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/release release}, {@fun/ThreadCondition/release release}, {@fun/ThreadCondition/threadCondition/release release}, {@threadCondition/release release}, {@threadCondition/threadCondition/release release release}, {@threadCondition/threadCondition/release release}, {@thread

মুক্তি

দ্যrelease()ফাংশনটি একটি থ্রেড লক (আনলক) মুক্ত করতে ব্যবহৃত হয়।

মুক্তি (((

অনুগ্রহ করে দেখুনThreadCondition.notify()উদাহরণ জন্য অধ্যায়.

ব্যবহারের পরwait(), আমরা বর্তমান অবস্থা বস্তুর থ্রেড লক (আনলক) মুক্ত করতে হবে.

{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}

ThreadDict

ডিকশনারি অবজেক্ট, ডাটা শেয়ারিং এর জন্য ব্যবহৃত হয়।

পেতে

দ্যget()শব্দকোষ বস্তুর মধ্যে রেকর্ড কী মান পেতে ফাংশন ব্যবহার করা হয়.

দ্যget()ফাংশন দ্বারা নির্দিষ্ট কী মান ফেরৎkey parameter.

string, number, bool, object, array, null value এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য প্রকার

get ((key)

দ্যkeyএই প্যারামিটারটি ব্যবহৃত হয় কী নাম নির্দিষ্ট করতে যা পাওয়া যেতে পারে।

চাবি সত্য স্ট্রিং

function main() {
    var event = threading.Event()
    var dict = threading.Dict()
    dict.set("data", 100)
    
    var t1 = threading.Thread(function(dict, event) {
        Log(`thread1, dict.get("data"):`, dict.get("data"))
        
        event.set()
        event.clear()
        
        event.wait()
        Log(`after main change data, thread1 dict.get("data"):`, dict.get("data"))
    
        dict.set("data", 0)
    }, dict, event)
    
    event.wait()
    
    dict.set("data", 99)
    
    event.set()
    event.clear()
    
    t1.join()
    Log(`main thread, dict.get("data"):`, dict.get("data"))
}

ইভেন্ট অবজেক্টগুলি ব্যবহার করুন তথ্য পড়তে এবং সংশোধন করতে থ্রেডগুলিকে জানাতে।

{@fun/Threads/ThreadDict/set set}

সেট

দ্যset()ফাংশন একটি কী-মান জোড়া সেট করতে ব্যবহৃত হয়।

সেট ((কী, মান)

প্যারামিটারkeyপরিবর্তন করা হবে এমন কী নাম সেট করতে ব্যবহৃত হয়।

চাবি সত্য স্ট্রিং প্যারামিটারvalueপরিবর্তন করার জন্য কী মান সেট করতে ব্যবহৃত হয়।

মূল্য সত্য string, number, bool, object, array, null value এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য প্রকার

অনুগ্রহ করে দেখুনThreadDict.get()উদাহরণ জন্য অধ্যায়.

{@fun/Threads/ThreadDict/get get}

ওয়েব৩

exchange.IO("আবি",...)

এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে, এটি মূলত বিভিন্ন ফাংশন বাস্তবায়ন করে, ব্লকচেইন সম্পর্কিত কলগুলিexchange.IO()নিম্নলিখিত ডকুমেন্টেexchange.IO()এর ফাংশন অনুযায়ী পৃথকভাবে কাজ করে।exchange.IO("abi", ...)ফাংশনটি একটি ABI নিবন্ধন করতে ব্যবহৃত হয়।

exchange.IO(k, ঠিকানা, abiContent)

দ্যkপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, সেট করুন"abi"মানে ফাংশনটি রেজিস্টার করতে ব্যবহৃত হয়ABI. k সত্য স্ট্রিং দ্যaddressস্মার্ট কন্ট্রাক্টের ঠিকানা নির্দিষ্ট করতে এই প্যারামিটার ব্যবহার করা হয়। ঠিকানা সত্য স্ট্রিং দ্যabiContentপ্যারামিটার নির্দিষ্ট করতে ব্যবহৃত হয়ABIস্মার্ট কন্ট্রাক্টের। abiবিষয়বস্তু সত্য স্ট্রিং

function main() {
    // register Uniswap SwapRouter02 abi
    var routerAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
    var abi = `[{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct IV3SwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"}]`
    
    // Get the ```ABI``` content of the contract can be obtained with the following URL, taking the ```result``` field only, e.g:
    exchange.IO("abi", routerAddress, abi)
}

স্মার্ট কন্ট্রাক্ট কল করার পদ্ধতিগুলি যদি ERC20 স্ট্যান্ডার্ড পদ্ধতি হয় তবে নিবন্ধন করার প্রয়োজন নেই। নিয়ে যাওABIচুক্তির বিষয়বস্তু নিম্নলিখিত URL-এ পাওয়া যাবে,resultশুধুমাত্র ক্ষেত্র, উদাহরণস্বরূপঃ

https://api.etherscan.io/api?module=contract&action=getabi&address=0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45

exchange.IO("এপি", ,...)

কলিং পদ্ধতিexchange.IO("api", "eth", ...)ফাংশনটি ইথেরিয়াম RPC পদ্ধতির কল করতে ব্যবহৃত হয়।

দ্যexchange.IO("api", "eth", ...)ফাংশন RPC পদ্ধতির রিটার্ন মান ফেরত দেয়। string, number, bool, object, array, null এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য সকল টাইপ

exchange.IO(k, blockChain, rpcMethod)exchange.IO(k, blockChain, rpcMethod,...args)

দ্যkপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, সেট করুন"api"নির্দেশ করে যে ফাংশনটি কল অনুরোধ প্রসারিত করতে ব্যবহৃত হয়। k সত্য স্ট্রিং দ্যblockChainপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, সেট করুন"eth"ইথেরিয়াম নেটওয়ার্কে RPC পদ্ধতির কলের জন্য ফাংশনটি ব্যবহার করা হয়। ব্লকচেইন সত্য স্ট্রিং দ্যrpcMethodপ্যারামিটার RPC পদ্ধতি সেট করতে ব্যবহার করা হয়exchange.IO()ফাংশন। rpc পদ্ধতি সত্য স্ট্রিং দ্যargপ্যারামিটার RPC পদ্ধতির প্যারামিটার নির্দিষ্ট করতে ব্যবহৃত হয়.argপ্যারামিটার।argপ্যারামিটার RPC পদ্ধতি দ্বারা নির্দিষ্ট উপর নির্ভর করেrpcMethodপ্যারামিটার। আরজি মিথ্যা string, number, bool, object, array, function, null, এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য সকল টাইপ

function main() {
    // "owner" needs to be replaced with the specific wallet address
    // Parameter labels for the "latest" string position: 'latest', 'earliest' or 'pending', please refrer to https://eth.wiki/json-rpc/API#the-default-block-parameter
    // The return value ethBalance is a hexadecimal string: 0x9b19ce56113070
    var ethBalance = exchange.IO("api", "eth", "eth_getBalance", "owner", "latest")              

    // ETH has a precision unit of 1e18
    var ethDecimal = 18              

    // Because of the JavaScript language precision, it is necessary to use the system underlying package function BigInt, BigDecimal to process
    // Convert ethBalance to readable amount, 0x9b19ce56113070 to 0.043656995388076145
    Log(Number((BigDecimal(BigInt(ethBalance))/BigDecimal(Math.pow(10, ethDecimal))).toString()))
}

আপনার ওয়ালেটে ETH এর ব্যালেন্স পরীক্ষা করুনঃ

function mian() {
    // ETH has a precision unit of 1e18
    var ethDecimal = 18  

    // Number of transfers, readable amount e.g. 0.01 ETH
    var sendAmount = 0.01  

    // Due to the JavaScript language precision, it is necessary to use the system underlying encapsulated functions BigInt, BigDecimal to process, and to convert the readable amount to the data processed on the chain
    var toAmount = (BigDecimal(sendAmount)*BigDecimal(Math.pow(10, ethDecimal))).toFixed(0)
    
    // "toAddress" is the address of the recipient's ETH wallet at the time of the transfer, which needs to be filled in specifically, and toAmount is the number of transfers
    exchange.IO("api", "eth", "send", "toAddress", toAmount)
}

ETH ট্রান্সফারের জন্য, আপনি{gasPrice: 11, gasLimit: 111, nonce: 111}প্যারামিটার, যা শেষ প্যারামিটারে সেট করা হয়exchange.IO()আপনার নির্দিষ্ট চাহিদা অনুযায়ী কাজ করতে পারেন।nonceএবং সিস্টেম ডিফল্ট ব্যবহার করুন, অথবা ছেড়েgasLimit/gasPrice/nonceসব সিস্টেমের জন্য ডিফল্ট মান ব্যবহার করুন।

function toAmount(s, decimals) {
    return Number((BigDecimal(BigInt(s))/BigDecimal(Math.pow(10, decimals))).toString())
}

function main() {
    var gasPrice = exchange.IO("api", "eth", "eth_gasPrice")
    Log("gasPrice:", toAmount(gasPrice, 0))   // 5000000000 , in wei (5 gwei)
}

অনুসন্ধানgasPrice:

function toAmount(s, decimals) {
    // The toAmount function can convert hex-encoded values to decimal values
    return Number((BigDecimal(BigInt(s))/BigDecimal(Math.pow(10, decimals))).toString())
}                

function main() {
    // Coding approve (authorization) method calls
    var data = exchange.IO("encode", "0x111111111117dC0aa78b770fA6A738034120C302", "approve", "0xe592427a0aece92de3edee1f18e0157c05861564", "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
    Log("data:", data)
    var gasPrice = exchange.IO("api", "eth", "eth_gasPrice")
    Log("gasPrice:", toAmount(gasPrice, 0))
    var obj = {
        "from" : "0x0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",   // walletAddress
        "to"  : "0x111111111117dC0aa78b770fA6A738034120C302",
        "gasPrice" : gasPrice,
        "value" : "0x0",
        "data" : "0x" + data,
    }
    
    var gasLimit = exchange.IO("api", "eth", "eth_estimateGas", obj)
    Log("gasLimit:", toAmount(gasLimit, 0))
    Log("gas fee", toAmount(gasLimit, 0) * toAmount(gasPrice, 0) / 1e18)
}

অনুসন্ধানeth_estimateGas:

দ্বিতীয় প্যারামিটারexchange.IO()সঙ্গে ফাংশন"eth"সরাসরি ইথেরিয়াম নোড সার্ভারে উপলব্ধ RPC পদ্ধতি কল করতে পারেন।

{@ মজার বিগ ডেসিমাল}, {@ মজার বিগ ইন্ট}

exchange.IO("কোড",...)

দ্যexchange.IO("encode", ...)ফাংশনটি ডাটা কোডিং এর জন্য কল করা হয়।

দ্যexchange.IO("encode", ...)ফাংশন এনকোড করা ডেটা ফেরত দেয়। স্ট্রিং

exchange.IO(k, dataFormat,...args)exchange.IO(k, ঠিকানা, ডেটাফর্ম্যাট)exchange.IO(k, ঠিকানা, ডেটাফর্ম্যাট,...args)

দ্যkপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, সেট করুন"encode"মানে ফাংশনটি ডেটা কোডিংয়ের জন্য ব্যবহৃত হয়। k সত্য স্ট্রিং দ্যaddressপ্যারামিটার স্মার্ট চুক্তির ঠিকানা সেট করতে ব্যবহৃত হয়.exchange.IO("encode", ...)ফাংশন,addressপ্যারামিটার স্মার্ট চুক্তিতে পদ্ধতি কল কোডিং নির্দেশ করে.exchange.IO("encode", ...)ফাংশন,addressপ্যারামিটার পাস করা হয় না, ফাংশন নির্দিষ্ট টাইপ অর্ডার কোড করতে ব্যবহৃত হয় এবং কার্যকরীভাবে সমতুল্য হয়abi.encodeমধ্যেSolidity. ঠিকানা মিথ্যা স্ট্রিং দ্যdataFormatপ্যারামিটারটি কোড করা ডেটার পদ্ধতি, প্রকার এবং ক্রম নির্দিষ্ট করতে ব্যবহৃত হয়। তথ্যফরম্যাট সত্য স্ট্রিং দ্যargপ্যারামিটারটি নির্দিষ্ট ডেটা মান নির্দিষ্ট করতে ব্যবহৃত হয় যাdataFormatপ্যারামিটার. এক চেয়ে বেশি হতে পারেargপ্যারামিটার, এবং টাইপ এবং সংখ্যাargপ্যারামিটার উপর নির্ভর করেdataFormatপ্যারামিটার সেটিং। আরজি মিথ্যা স্ট্রিং, সংখ্যা, টুপেল, অ্যারে, এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য সব ধরনের

function main() {
    // Main network address of ContractV3SwapRouterV2: 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
    // Calling the unwrapWETH9 method requires registering the ABI first, which is omitted here
    // "owner" represents the wallet address, which need to fill in the specific, 1 represents the number of unpacking, unpacking a WETH into ETH
    var data = exchange.IO("encode", "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45", "unwrapWETH9(uint256,address)", 1, "owner")
    Log(data)
}

উদাহরণস্বরূপ, এনকোডিং পদ্ধতি কলunwrapWETH9:

function main() {
    var x = 10 
    var address = "0x02a5fBb259d20A3Ad2Fdf9CCADeF86F6C1c1Ccc9"
    var str = "Hello World"
    var array = [1, 2, 3]
    var ret = exchange.IO("encode", "uint256,address,string,uint256[]", x, address, str, array)   // uint i.e. uint256 , the type length needs to be specified on FMZ
    Log("ret:", ret)
    /*
    000000000000000000000000000000000000000000000000000000000000000a    // x
    00000000000000000000000002a5fbb259d20a3ad2fdf9ccadef86f6c1c1ccc9    // address
    0000000000000000000000000000000000000000000000000000000000000080    // Offset of str
    00000000000000000000000000000000000000000000000000000000000000c0    // Offset of array
    000000000000000000000000000000000000000000000000000000000000000b    // The length of str
    48656c6c6f20576f726c64000000000000000000000000000000000000000000    // str data
    0000000000000000000000000000000000000000000000000000000000000003    // The length of the array
    0000000000000000000000000000000000000000000000000000000000000001    // array the first data
    0000000000000000000000000000000000000000000000000000000000000002    // array the second data
    0000000000000000000000000000000000000000000000000000000000000003    // array the third data
    */
}

এটি কোডিং উদাহরণ এর সমতুল্যabi.encodeমধ্যেSolidity:

function main() {
    var types = "tuple(a uint256,b uint8,c address),bytes"
    var ret = exchange.IO("encode", types, {
        a: 30,
        b: 20,
        c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    }, "0011")
    Log("encode: ", ret)
}

এটি একটি টিপল বা একটি টাইপ অর্ডার এনকোডিং সমর্থন করে যা একটি টিপল ধারণ করে। এই প্রকার আদেশের মধ্যে রয়েছেঃtuple, bytes, তাই যখন কলexchange.IO()এনকোডিং এর জন্য, আপনাকে দুটি পরামিতি পাস করতে হবেঃ

    1. টুপল টাইপ অনুসারে ভেরিয়েবলঃ
    
    {
        a: 30,
        b: 20,
        c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    }
    
    

    পাস করা পরামিতিগুলি অবশ্যই কাঠামোর সাথে সামঞ্জস্যপূর্ণ হতে হবেtuple, যেমন সংজ্ঞায়িতtypesফর্মের প্যারামিটারঃtuple(a uint256,b uint8,c address).

    1. টাইপ অনুসারে ভেরিয়েবলbytes:
    "0011"
    
function main() {
    var path = ["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "0xdac17f958d2ee523a2206206994597c13d831ec7"]   // ETH address, USDT address
    var ret = exchange.IO("encode", "address[]", path)
    Log("encode: ", ret)
}

এটি অ্যারে বা অ্যারে ধারণকারী প্রকারের ক্রমিক কোডিং সমর্থন করেঃ

দ্যexchange.IO()ফাংশন ক্যাপসুলencodeপদ্ধতি, যা ফাংশন কল কোড ফেরত দিতে পারেhexস্ট্রিং ফরম্যাট। নির্দিষ্ট ব্যবহারের জন্য, আপনি পাবলিকভাবে উপলব্ধ প্ল্যাটফর্মগুলি উল্লেখ করতে পারেনUniswap V3 Trade টেমপ্লেট. যখন কোডিং পদ্ধতি স্মার্ট কন্ট্রাক্টকে কল করে, তখন প্রথমে সংশ্লিষ্ট এবিআই নিবন্ধন করতে হবে।

exchange.IO("encodePacked",...)

দ্যexchange.IO("encodePacked", ...)ফাংশন একটি উপায় যে জন্য ব্যবহৃত হয় কল করা হয়encodePacked encoding.

দ্যexchange.IO("encodePacked", ...)ফাংশন রিটার্ন করেencodePackedকোড করা তথ্য। স্ট্রিং

exchange.IO(k, dataFormat,...args)

দ্যkপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, সেট করুন"encodePacked"মানে ফাংশনটি ডেটার জন্য ব্যবহৃত হয়encodePackedকোডিং। k সত্য স্ট্রিং দ্যdataFormatপ্যারামিটার টাইপ এবং আদেশ নির্দিষ্ট করতে ব্যবহৃত হয়encodePackedকোড করা তথ্য। তথ্যফরম্যাট সত্য স্ট্রিং দ্যargপ্যারামিটারটি নির্দিষ্ট ডেটা মান নির্দিষ্ট করতে ব্যবহৃত হয় যাdataFormatপ্যারামিটার. এক চেয়ে বেশি হতে পারেargপ্যারামিটার, এবং টাইপ এবং সংখ্যাargপ্যারামিটার উপর নির্ভর করেdataFormatপ্যারামিটার সেটিং। আরজি সত্য স্ট্রিং, সংখ্যা, টুপেল, অ্যারে, এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য সব ধরনের

function main() {
    var fee = exchange.IO("encodePacked", "uint24", 3000)
    var tokenInAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
    var tokenOutAddress = "0x6b175474e89094c44da98b954eedeac495271d0f"
    var path = tokenInAddress.slice(2).toLowerCase()
    path += fee + tokenOutAddress.slice(2).toLowerCase()
    Log("path:", path)
}

ব্যবহারের সময়Uniswap V3, আপনি এক্সচেঞ্জ পথ মত পরামিতি পাস করতে হবে, আপনি ব্যবহার করতে হবেencodePackedকোডিং অপারেশনঃ

exchange.IO("ডিকোড",...)

দ্যexchange.IO("decode", ...)ফাংশনটি ডিকোডিংয়ের জন্য ব্যবহৃত হয়।

দ্যexchange.IO("decode", ...)ফাংশনটি ডিকোড করা ডেটা ফেরত দেয়। স্ট্রিং ফেরত দেয় যখন শুধুমাত্র একটি ডেটা নির্দিষ্ট করা হয়dataFormatপ্যারামিটার. একটি অ্যারে রিটার্ন করে যখন একটির বেশি ডেটা নির্দিষ্ট করা হয়dataFormatপ্যারামিটার। অ্যারে, স্ট্রিং

exchange.IO(k, dataফরম্যাট, ডেটা)

দ্যkপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, এবং এটি সেটিং"decode"মানে ফাংশনটি ডেটা ডিকোডিংয়ের জন্য ব্যবহৃত হয়। k সত্য স্ট্রিং দ্যdataFormatপ্যারামিটারটি ডিকোড করা ডেটার ধরন এবং ক্রম নির্দিষ্ট করতে ব্যবহৃত হয়। তথ্যফরম্যাট সত্য স্ট্রিং দ্যdataপ্যারামিটারটি ডেটা ডিকোড করার জন্য ব্যবহার করা হয়। তথ্য সত্য স্ট্রিং

function main() {
    var types = "tuple(a uint256,b uint8,c address),bytes"
    var ret = exchange.IO("encode", types, {
        a: 30,
        b: 20,
        c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    }, "0011")
    Log("encode: ", ret)            

    var rawData = exchange.IO("decode", types, ret)
    Log("decode:", rawData)
}

বিপরীত অপারেশনexchange.IO("encode", ...)ফাংশনঃ

function main() {
    // register SwapRouter02 abi
    var walletAddress = "0x398a93ca23CBdd2642a07445bCD2b8435e0a373f"
    var routerAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
    var abi = `[{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct IV3SwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"}]`
    exchange.IO("abi", routerAddress, abi)   // abi only uses the contents of the local exactOutput method, the full abi can be searched on the Internet              

    // encode path
    var fee = exchange.IO("encodePacked", "uint24", 3000)
    var tokenInAddress = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    var tokenOutAddress = "0xdac17f958d2ee523a2206206994597c13d831ec7"
    var path = tokenInAddress.slice(2).toLowerCase()
    path += fee + tokenOutAddress.slice(2).toLowerCase()
    Log("path:", path)              

    var dataTuple = {
        "path" : path, 
        "recipient" : walletAddress, 
        "amountOut" : 1000, 
        "amountInMaximum" : 1, 
    }
    // encode SwapRouter02 exactOutput 
    var rawData = exchange.IO("encode", routerAddress, "exactOutput", dataTuple)
    Log("method hash:", rawData.slice(0, 8))   // 09b81346
    Log("params hash:", rawData.slice(8))              

    // decode exactOutput params
    var decodeRaw = exchange.IO("decode", "tuple(path bytes,recipient address,amountOut uint256,amountInMaximum uint256)", rawData.slice(8))
    Log("decodeRaw:", decodeRaw)
}

নিম্নলিখিত উদাহরণ প্রথম একটি সম্পাদন করেencodePackedঅপারেশনpathপ্যারামিটার প্রক্রিয়াকরণ, কারণexactOutputপদ্ধতি কল যে পরে এনকোড করা প্রয়োজন প্রয়োজনpathএকটি পরামিতি হিসাবে. তারপরencodeপত্রিকাexactOutputরুটিং চুক্তির পদ্ধতি, যার মধ্যে শুধুমাত্র এক ধরনের পরামিতি রয়েছেtuple. পদ্ধতির নামexactOutputকোড করা হয়েছেঃ0x09b81346, এবং ব্যবহারexchange.IO("decode", ...)ফলস্বরূপ ডিকোড করার পদ্ধতিdecodeRaw, পরিবর্তনশীল সঙ্গে সামঞ্জস্যপূর্ণdataTuple.

তথ্য প্রক্রিয়াকরণের জন্য,exchange.IO()ফাংশন শুধুমাত্র এনকোডিং সমর্থন করে না, কিন্তু এছাড়াও ডিকোডিং.

exchange.IO("কী",...)

দ্যexchange.IO("key", ...)ফাংশনটি এমনভাবে বলা হয় যাতে প্রাইভেট কী পরিবর্তন করা যায়।

exchange.IO(কে, কী)

প্যারামিটারkব্যবহার করা হয়exchange.IO()ফাংশন, সেট করুন"key"মানে ফাংশনটি প্রাইভেট কী স্যুইচ করতে ব্যবহৃত হয়। k সত্য স্ট্রিং দ্যkeyপ্রাইভেট কী সেট করতে এই প্যারামিটার ব্যবহার করা হয়। চাবি সত্য স্ট্রিং

function main() {
    exchange.IO("key", "Private Key")   // "Private Key" represents the private key string, which needs to be filled in specifically
}

দ্যexchange.IO()ফাংশনটি ব্যক্তিগত কীগুলি স্যুইচিং সমর্থন করে এবং এটি একাধিক ওয়ালেট ঠিকানা ম্যানিপুলেট করতে পারে। একাধিক ওয়ালেট ঠিকানা ম্যানিপুলেট করার জন্য একাধিক এক্সচেঞ্জ অবজেক্ট যুক্ত করাও সম্ভব (দেখুনঃ {@var/EXCHANGE/exchanges exchanges}) ।

exchange.IO("এপিআই",...)

দ্যexchange.IO("api", ...)ফাংশনটি স্মার্ট কন্ট্রাক্টের পদ্ধতিগুলিকে কল করার জন্য ব্যবহৃত হয়।

দ্যexchange.IO("api", ...)ফাংশনটি স্মার্ট কন্ট্রাক্ট পদ্ধতির রিটার্ন ভ্যালু প্রদান করে। string, number, bool, object, array, null এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য সকল টাইপ

exchange.IO(k, ঠিকানা, পদ্ধতি)exchange.IO(k, ঠিকানা, পদ্ধতি,...args)exchange.IO(k, ঠিকানা, পদ্ধতি, মান,...args)

দ্যkপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, সেট করুন"api"নির্দেশ করে যে ফাংশনটি কল অনুরোধ প্রসারিত করতে ব্যবহৃত হয়। k সত্য স্ট্রিং দ্যaddressস্মার্ট কন্ট্রাক্টের ঠিকানা নির্দিষ্ট করতে এই প্যারামিটার ব্যবহার করা হয়। ঠিকানা সত্য স্ট্রিং দ্যmethodস্মার্ট কন্ট্রাক্টের যে পদ্ধতিটি কল করা হবে তা নির্দিষ্ট করতে প্যারামিটার ব্যবহার করা হয়। পদ্ধতি সত্য স্ট্রিং দ্যvalueপ্যারামিটারটি ETH পাঠানোর পরিমাণ সেট করতে ব্যবহৃত হয়।stateMutabilityস্মার্ট কন্ট্রাক্ট মেথডের অ্যাট্রিবিউট যা এক্সিকিউটেড হবে তা হলpayable, তারপরvalueপ্যারামিটার পাস করা প্রয়োজন."stateMutability": "payable"ABI থেকে দেখা যাবে।exchange.IO()ফাংশন প্রয়োজনীয় প্যারামিটার নির্ধারণ করবেstateMutabilityABI এর মধ্যে একটি বৈশিষ্ট্য যা নিবন্ধিত হয়েছে।stateMutabilityঅ্যাট্রিবিউট হলnonpayable, তারপরvalueপ্যারামিটার পাস করার প্রয়োজন নেই। মূল্য মিথ্যা সংখ্যা, স্ট্রিং দ্যargপ্যারামিটার ব্যবহার করা হয় স্মার্ট চুক্তির পদ্ধতির প্যারামিটার নির্দিষ্ট করার জন্য।argপ্যারামিটার, এবং টাইপ এবং সংখ্যাargপ্যারামিটারগুলি স্মার্ট কন্ট্রাক্টের পদ্ধতির উপর নির্ভর করে। আর্গ মিথ্যা স্ট্রিং, সংখ্যা, বুল, এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য সব ধরনের

function main(){
    var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"    // The contract address of the token, the token is 1INCH in the example
    Log(exchange.IO("api", tokenAddress, "decimals"))                  // Query, print 1INCH tokens with precision index of 18
}

দ্যdecimalsপদ্ধতি একটিconstantERC20 এর একটি পদ্ধতি যা গ্যাস খরচ করে না এবং এটি একটি টোকেনের নির্ভুলতা তথ্য অনুসন্ধান করতে পারে।decimalsপদ্ধতির কোন পরামিতি নেই। রিটার্ন মানঃ টোকেনের নির্ভুলতা তথ্য।

function main(){
    // The contract address of the token, in the example the token is 1INCH
    var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"                          

    // For example, the query yields 1000000000000000000, divided by the precision unit of the token 1e18, the wallet to which the current exchange object is bound has authorized 1 1INCH to the spender address
    Log(exchange.IO("api", tokenAddress, "allowance", "owner", "spender"))   
}

দ্যallowanceপদ্ধতি একটিconstantERC20 এর পদ্ধতি যা গ্যাস খরচ উৎপন্ন করে না এবং একটি নির্দিষ্ট চুক্তি ঠিকানার জন্য একটি টোকেনের অনুমোদিত পরিমাণ অনুসন্ধান করতে পারে।allowanceপদ্ধতিটি 2 টি পরামিতি গ্রহণ করে, প্রথমটি হল ওয়ালেট ঠিকানা এবং দ্বিতীয়টি হল অনুমোদিত ঠিকানা। রিটার্ন মানঃ টোকেনের অনুমোদনের পরিমাণ।
owner: মানিব্যাগের ঠিকানা, উদাহরণ স্ট্রিং owner দ্বারা প্রতিস্থাপিত হয়, প্রকৃত ব্যবহার নির্দিষ্ট ঠিকানা পূরণ করতে হবে।spender: অনুমোদিত চুক্তির ঠিকানা, উদাহরণটি স্ট্রিং দ্বারা প্রতিস্থাপিত হয় spender, প্রকৃত ব্যবহারের জন্য নির্দিষ্ট ঠিকানা পূরণ করতে হবে, উদাহরণস্বরূপ এটি হতে পারেUniswap V3 router v1 address.

function main(){
    // The contract address of the token, the token is 1INCH in the example
    var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"                 

    // The hexadecimal string of the authorization amount: 0xde0b6b3a7640000 , the corresponding decimal string: 1e18 , 1e18 divided by the precision unit of the token, i.e. 1 token amount, so this refers to the authorization of one token
    Log(exchange.IO("api", tokenAddress, "approve", "spender", "0xde0b6b3a7640000"))  
}```
The ```approve``` method is a non-```constant``` method of ERC20, which generates gas consumption and is used to authorize the operation amount of a token to a contract address. The ```approve``` method takes 2 parameters, the first one is the address to be authorized and the second one is the amount to be authorized. Return value: txid.  
```spender```: the address of the authorized contract, the example is replaced by the string "spender", the actual use needs to fill in the specific address, for example, it can be ```Uniswap V3 router v1``` address. ```0xde0b6b3a7640000```: the number of authorizations, here is the hexadecimal string, the corresponding decimal value is 1e18, divided by the token precision unit in the example (i.e. 1e18). The result is that 1 token is authorized. The third parameter of the ```exchange.IO()``` function is passed to the method name ```approve```, which can also be written in the form of methodId, such as "0x571ac8b0". It is also possible to write the full standard method name, for example: "approve(address,uint256)".
```javascript
function main() {
    var ContractV3SwapRouterV2 = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
    var tokenInName = "ETH"
    var amountIn = 0.01
    var options = {gasPrice: 5000000000, gasLimit: 21000, nonce: 100}   // This is an example, depending on the actual scene settings
    var data = ""                                                       // The encoded data, here is the empty string, depending on the actual scene settings
    var tx = exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", (tokenInName == 'ETH' ? amountIn : 0), (new Date().getTime() / 1000) + 3600, data, options || {})
}

দ্যmulticallপদ্ধতিটি একটি অ-constantপদ্ধতিUniswap V3যা গ্যাসের খরচ সৃষ্টি করে এবং একাধিক উপায়ে টোকেন বিনিময় করতে ব্যবহৃত হয়। দ্যmulticallপদ্ধতির প্যারামিটার পাস করার বিভিন্ন উপায় থাকতে পারে, আপনি ABI যা নির্দিষ্টভাবে পদ্ধতি ধারণ করে তা পরীক্ষা করতে পারেন, পদ্ধতি কল করার আগে আপনাকে ABI নিবন্ধন করতে হবে। রিটার্ন মানঃ txid।

এর নির্দিষ্ট উদাহরণগুলির জন্যmulticallপদ্ধতি কল, আপনি প্ল্যাটফর্মs পাবলিকভাবে উপলব্ধ পড়ুন করতে পারেনUniswap V3 Trade টেমপ্লেট

কিছু বিবরণ এখানে ছদ্ম কোড ব্যবহার করে বর্ণনা করা হয়েছেঃ


exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)

ContractV3SwapRouterV2: Uniswap V3 এর রাউটার v2 এর ঠিকানা।value: লেনদেনের টোকেনটি যদি ইটিএইচ না হয় তবে লেনদেনের জন্য ইটিএইচ পরিমাণ, যা 0 এ সেট করা আছে।deadline: deadlineপ্যারামিটারmulticallপদ্ধতি, যা (নতুন Date().getTime() / 1000) + 3600 এ সেট করা যেতে পারে, যা নির্দেশ করে যে এটি এক ঘন্টার জন্য বৈধ।data: dataপ্যারামিটারmulticallপ্যাকিং অপারেশনের তথ্য।

অনুরূপexchange.IO("api", "eth", "send", "toAddress", toAmount),gasLimit/gasPrice/nonceমেথড কল সেটিং নির্দিষ্ট করা যেতে পারে যখন কলmulticallপদ্ধতি। আবার, আমরা বর্ণনা করার জন্য ছদ্ম কোড ব্যবহার করিঃ


exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 123456, gasLimit: 21000})

প্যারামিটার{gasPrice: 11, gasLimit: 111, nonce: 111}নির্দিষ্ট চাহিদা অনুযায়ী সেট করা যাবে, যা শেষ প্যারামিটার সেট করা হয়exchange.IO()ফাংশন। আপনি বাদ দিতে পারেনnonceএবং সিস্টেম ডিফল্ট মান ব্যবহার করুন, অথবা ছেড়েgasLimit/gasPrice/nonceসব সিস্টেমের জন্য ডিফল্ট মান ব্যবহার করুন।

exchange.IO("ঠিকানা")

দ্যexchange.IO("address"){@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্ট দ্বারা কনফিগার করা ওয়ালেটের ঠিকানা পেতে ফাংশনটি এমনভাবে কল করা হয়।

দ্যexchange.IO("address")ফাংশনটি কনফিগার করা ওয়ালেট ঠিকানা ফেরত দেয়। স্ট্রিং

exchange.IO(ক)

দ্যkপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, সেট করুন"address"এর মানে হল যে ফাংশনটি কনফিগার করা ওয়ালেট ঠিকানা পেতে ব্যবহৃত হয়। ক সত্য স্ট্রিং

function main() {
    Log(exchange.IO("address"))         // Print the wallet address of the private key configured on the exchange object
}

exchange.IO("বেস",...)

দ্যexchange.IO("base", ...)ফাংশন RPC নোড ঠিকানা সেট করার জন্য একটি উপায় কল করা হয়.

exchange.IO(k, ঠিকানা)

দ্যkপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, সেট করুন"base"মানে ফাংশনটি RPC নোডগুলি স্যুইচ করতে ব্যবহৃত হয়। k সত্য স্ট্রিং দ্যaddressপ্যারামিটারটি RPC নোড ঠিকানা সেট করতে ব্যবহৃত হয়। ঠিকানা সত্য স্ট্রিং

function main() {
    var chainRpc = "https://bsc-dataseed.binance.org"
    e.IO("base", chainRpc)    // Switching to BSC chain
}

টিএ

TA.MACD

দ্যTA.MACD()ফাংশন গণনা করতে ব্যবহৃত হয়এক্সপোনেন্সিয়াল সমতুল্য অসদৃশ্যতা এবং অনুরূপতা MACD সূচক.

রিটার্ন মানTA.MACD()ফাংশন হল একটি দ্বি-মাত্রিক অ্যারে যার কাঠামোঃ[DIF, DEA, MACD]. অ্যারে

TA.MACD ((inReal) TA.MACD ((inReal, optInFastPeriod, optInSlowPeriod, optInSignalPeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInFastPeriodপ্যারামিটার দ্রুত সময়ের সেট করতে ব্যবহৃত হয়. optInFastPeriod মিথ্যা সংখ্যা দ্যoptInSlowPeriodপ্যারামিটার ব্যবহার করা হয় ধীর সময়ের সেট করতে। optInSlowPeriod মিথ্যা সংখ্যা দ্যoptInSignalPeriodসিগন্যালের সময়কাল নির্ধারণের জন্য প্যারামিটার ব্যবহার করা হয়। সিগন্যাল পেরিওড মিথ্যা সংখ্যা

function main(){
    // You can fill in different k-line periods, such as PERIOD_M1,PERIOD_M30,PERIOD_H1...
    var records = exchange.GetRecords(PERIOD_M15)
    var macd = TA.MACD(records, 12, 26, 9)
    // Watching the logs, you can see that three arrays are returned, corresponding to DIF, DEA and MACD.
    Log("DIF:", macd[0], "DEA:", macd[1], "MACD:", macd[2])
}
def main():
    r = exchange.GetRecords(PERIOD_M15)
    macd = TA.MACD(r, 12, 26, 9)
    Log("DIF:", macd[0], "DEA:", macd[1], "MACD:", macd[2])
void main() {
    auto r = exchange.GetRecords(PERIOD_M15);
    auto macd = TA.MACD(r, 12, 26, 9);
    Log("DIF:", macd[0], "DEA:", macd[1], "MACD:", macd[2]);
}

দ্যTAFMZ Quant এর সূচক লাইব্রেরি, সাধারণ সূচক অ্যালগরিদমের জন্য অপ্টিমাইজড। এটি সমর্থন করেJavaScript, Python, C++ভাষা কৌশল কল,ওপেন সোর্স TA লাইব্রেরির কোড. ডিফল্ট মানoptInFastPeriod, optInSlowPeriod, এবংoptInSignalPeriodপ্যারামিটারTA.MACD()ফাংশন হলঃ12, 26, এবং9.

{@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest TA.Lowest}, {@fun/

TA.KDJ

দ্যTA.KDJ()ফাংশন গণনা করতে ব্যবহৃত হয়স্টোকাস্টিক সূচক.

রিটার্ন মানTA.KDJ()ফাংশন হল একটি দ্বি-মাত্রিক অ্যারে যার কাঠামোঃ[K, D, J]. অ্যারে

TA.KDJ ((inReal) TA.KDJ ((Real, period, kPeriod, dPeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যperiodপ্যারামিটারটি প্যারামিটার 1 সেট করতে ব্যবহৃত হয়। সময়কাল মিথ্যা সংখ্যা দ্যkPeriodপ্যারামিটারটি প্যারামিটার 2 সেট করতে ব্যবহৃত হয়। কেপিরিয়ড মিথ্যা সংখ্যা দ্যdPeriodপ্যারামিটারটি সময়সীমা 3 সেট করতে ব্যবহৃত হয়। dসময়কাল মিথ্যা সংখ্যা

function main(){
    var records = exchange.GetRecords(PERIOD_M15)
    var kdj = TA.KDJ(records, 9, 3, 3)
    Log("k:", kdj[0], "d:", kdj[1], "j:", kdj[2])
}
def main():
    r = exchange.GetRecords(PERIOD_M15)
    kdj = TA.KDJ(r, 9, 3, 3)
    Log("k:", kdj[0], "d:", kdj[1], "j:", kdj[2])
void main() {
    auto r = exchange.GetRecords();
    auto kdj = TA.KDJ(r, 9, 3, 3);
    Log("k:", kdj[0], "d:", kdj[1], "j:", kdj[2]);
}

ডিফল্ট মানperiod, kPeriod, এবংdPeriodপ্যারামিটারTA.KDJ()ফাংশন হলঃ9, 3, এবং3.

{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest TA.Lowest}, {@fun/

TA.RSI

দ্যTA.RSI()ফাংশন গণনা করতে ব্যবহৃত হয়শক্তির সূচক.

রিটার্ন মানTA.RSI()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

TA.RSI ((inReal) TA.RSI ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল নির্ধারণ করতে ব্যবহৃত হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main(){
    var records = exchange.GetRecords(PERIOD_M30)
    var rsi = TA.RSI(records, 14)
    Log(rsi)
}
def main():
    r = exchange.GetRecords(PERIOD_M30)
    rsi = TA.RSI(r, 14)
    Log(rsi)
void main() {
    auto r = exchange.GetRecords(PERIOD_M30);
    auto rsi = TA.RSI(r, 14);
    Log(rsi); 
}

ডিফল্ট মানoptInTimePeriodপ্যারামিটারTA.RSI()ফাংশন হলঃ14.

{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest TA.Lowest}, {@fun/

TA.ATR

দ্যTA.ATR()ফাংশন গণনা করতে ব্যবহৃত হয়গড় সত্যিকারের অস্থিরতার সূচক.

রিটার্ন মানTA.ATR()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

TA.ATR ((inPriceHLC) TA.ATR ((inPriceHLC, optInTimePeriod)

দ্যinPriceHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল নির্ধারণ করতে ব্যবহৃত হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main(){
    var records = exchange.GetRecords(PERIOD_M30)
    var atr = TA.ATR(records, 14)
    Log(atr)
}
def main():
    r = exchange.GetRecords(PERIOD_M30)
    atr = TA.ATR(r, 14)
    Log(atr)
void main() {
    auto r = exchange.GetRecords(PERIOD_M30);
    auto atr = TA.ATR(r, 14);
    Log(atr);
}

ডিফল্ট মানoptInTimePeriodপ্যারামিটারTA.ATR()ফাংশন হলঃ14.

{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest TA.Lowest}, {@fun/

TA.OBV

দ্যTA.OBV()ফাংশন গণনা করতে ব্যবহৃত হয়এনার্জি টাইড ইনডিকেটর.

রিটার্ন মানTA.OBV()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

TA.OBV ((inReal) TA.OBV ((inReal, inPriceV)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যinPriceVপ্যারামিটারটি লেনদেনের পরিমাণের তথ্য নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceV মিথ্যা {@struct/Record Record} স্ট্রাকচার অ্যারে

function main(){
    var records = exchange.GetRecords(PERIOD_M30)
    var obv = TA.OBV(records)
    Log(obv)
}
def main():
    r = exchange.GetRecords(PERIOD_M30)
    obv = TA.OBV(r)
    Log(obv)
void main() {
    auto r = exchange.GetRecords(PERIOD_M30);
    auto obv = TA.OBV(r);
    Log(obv);
}

{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest TA.Lowest}, {@fun/

TA.MA

দ্যTA.MA()ফাংশন গণনা করতে ব্যবহৃত হয়এমএসিডি সূচক.

রিটার্ন মানTA.MA()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

TA.MA(অবাস্তব)TA.MA(inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল নির্ধারণ করতে ব্যবহৃত হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main(){
    var records = exchange.GetRecords(PERIOD_M30)
    var ma = TA.MA(records, 14)
    Log(ma)
}
def main():
    r = exchange.GetRecords(PERIOD_M30)
    ma = TA.MA(r, 14)
    Log(ma)
void main() {
    auto r = exchange.GetRecords(PERIOD_M30);
    auto ma = TA.MA(r, 14);
    Log(ma);
}

ডিফল্ট মানoptInTimePeriodপ্যারামিটারTA.MA()ফাংশন হলঃ9.

{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF.TA.RSI}, {@fun/TA/TA.ATR TA.ATR TA.OBV}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.EMA TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.TA.CMF.TA.

TA.EMA

দ্যTA.EMA()ফাংশন গণনা করতে ব্যবহৃত হয়এক্সপোনেন্সিয়াল গড় সূচক.

রিটার্ন মানTA.EMA()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

TA.EMA ((inReal) TA.EMA ((Real, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল নির্ধারণ করতে ব্যবহৃত হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main(){
    var records = exchange.GetRecords()
    // Determine if the number of K-line bars meets the calculation period of the indicator
    if (records && records.length > 9) {
        var ema = TA.EMA(records, 9)          
        Log(ema)
    }
}
def main():
    r = exchange.GetRecords()
    if r and len(r) > 9:
        ema = TA.EMA(r, 9)
        Log(ema)
void main() {
    auto r = exchange.GetRecords();
    if(r.Valid && r.size() > 9) {
        auto ema = TA.EMA(r, 9);
        Log(ema);
    }
}

ডিফল্ট মানoptInTimePeriodপ্যারামিটারTA.EMA()ফাংশন হলঃ9.

{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}

TA.BOLL

দ্যTA.BOLL()ফাংশন গণনা করতে ব্যবহৃত হয়বোলিংজার ব্যান্ড সূচক.

রিটার্ন মানTA.BOLL()ফাংশন হল একটি দ্বি-মাত্রিক অ্যারে যার কাঠামোঃ[upLine, midLine, downLine]. অ্যারে

TA.BOLL ((inReal) TA.BOLL ((inReal, পয়েন্ট, গুণক)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যperiodপ্যারামিটারটি সময়কাল নির্ধারণ করতে ব্যবহৃত হয়। সময়কাল মিথ্যা সংখ্যা দ্যmultiplierপ্যারামিটারটি মাল্টিপ্লাইকার সেট করতে ব্যবহৃত হয়। গুণক মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    if(records && records.length > 20) {
        var boll = TA.BOLL(records, 20, 2)
        var upLine = boll[0]
        var midLine = boll[1]
        var downLine = boll[2]
        Log(upLine)
        Log(midLine)
        Log(downLine)
    }
}
def main():
    r = exchange.GetRecords()
    if r and len(r) > 20:
        boll = TA.BOLL(r, 20, 2)
        upLine = boll[0]
        midLine = boll[1]
        downLine = boll[2]
        Log(upLine)
        Log(midLine)
        Log(downLine)
void main() {
    auto r = exchange.GetRecords();
    if(r.Valid && r.size() > 20) {
        auto boll = TA.BOLL(r, 20, 2);
        auto upLine = boll[0];
        auto midLine = boll[1];
        auto downLine = boll[2];
        Log(upLine);
        Log(midLine);
        Log(downLine);
    }
}

ডিফল্ট মানperiodএবংmultiplierপ্যারামিটারTA.BOLL()ফাংশন হলঃ20এবং2.

{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}

TA.Alligator

দ্যTA.Alligator()ফাংশন গণনা করতে ব্যবহৃত হয়কুমির সূচক.

রিটার্ন মানTA.Alligator()ফাংশন হল একটি দ্বি-মাত্রিক অ্যারে যার কাঠামোঃ[jawLine, teethLine, lipsLine]. অ্যারে

TA.Alligator ((inReal) TA.Alligator ((inReal, jawLength, teethLength, lipsLength) (সত্যিকারের, চোয়াল দৈর্ঘ্য, দাঁত দৈর্ঘ্য, ঠোঁট দৈর্ঘ্য)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যjawLengthপ্যারামিটারটি জাভের সময়কাল নির্ধারণ করতে ব্যবহৃত হয়। চোয়াল দৈর্ঘ্য মিথ্যা সংখ্যা দ্যteethLengthপ্যারামিটার দাঁত সময় সেট করতে ব্যবহৃত হয়. দাঁতদৈর্ঘ্য মিথ্যা সংখ্যা দ্যlipsLengthউপরের ঠোঁটের সময় নির্ধারণের জন্য এই পরামিতি ব্যবহার করা হয়। ঠোঁটের দৈর্ঘ্য মিথ্যা সংখ্যা

function main(){
    var records = exchange.GetRecords()
    var alligator = TA.Alligator(records)
    Log("jawLine:", alligator[0])
    Log("teethLine:", alligator[1])
    Log("lipsLine:", alligator[2])
}
def main():
    records = exchange.GetRecords()
    alligator = TA.Alligator(records)
    Log("jawLine:", alligator[0])
    Log("teethLine:", alligator[1])
    Log("lipsLine:", alligator[2])
void main() {
    auto records = exchange.GetRecords();
    auto alligator = TA.Alligator(records);
    Log("jawLine:", alligator[0]);
    Log("teethLine:", alligator[1]);
    Log("lipsLine:", alligator[2]);
}

ডিফল্ট মানjawLength, teethLength, এবংlipsLengthপ্যারামিটারTA.Alligator()ফাংশন হলঃ13, 8, এবং5.

{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}

TA.CMF

দ্যTA.CMF()ফাংশন গণনা করতে ব্যবহৃত হয়চৈকিন নগদ প্রবাহের সূচক.

রিটার্ন মানTA.CMF()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

TA.CMF ((inReal) TA.CMF ((inReal, inPriceV)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যinPriceVভলিউম ডেটা নির্দিষ্ট করতে প্যারামিটার ব্যবহার করা হয়। inPriceV মিথ্যা {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var cmf = TA.CMF(records)
    Log(cmf)
}
def main():
    records = exchange.GetRecords()
    cmf = TA.CMF(records)
    Log(cmf)
void main() {
    auto records = exchange.GetRecords();
    auto cmf = TA.CMF(records);
    Log(cmf);
}

{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}

TA.Highest

দ্যTA.Highest()ফাংশন গণনা করতে ব্যবহৃত হয়সময়ের সর্বোচ্চ মূল্য.

দ্যTA.Highest()ফাংশনটি বর্তমান বারকে বাদ দিয়ে সর্বশেষ নির্দিষ্ট সময়ের মধ্যে একটি বৈশিষ্ট্যের সর্বাধিক মান প্রদান করে। সংখ্যা

TA.Highest ((inReal) TA.Highest ((inReal, period, attr)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যperiodপ্যারামিটারটি সময়কাল নির্ধারণ করতে ব্যবহৃত হয়। সময়কাল মিথ্যা সংখ্যা দ্যattrপ্যারামিটার ব্যবহার করা হয় বৈশিষ্ট্য সেট করতে, ঐচ্ছিকভাবেঃOpen, Close, Low, High, Volume, OpenInterest. অ্যাট্র মিথ্যা স্ট্রিং

function main() {
    var records = exchange.GetRecords()
    var highestForOpen = TA.Highest(records, 10, "Open")
    Log(highestForOpen)
}
def main():
    records = exchange.GetRecords()
    highestForOpen = TA.Highest(records, 10, "Open")
    Log(highestForOpen)
void main() {
    auto records = exchange.GetRecords();
    auto highestForOpen = TA.Highest(records.Open(), 10);
    Log(highestForOpen);
}

উদাহরণস্বরূপ, যদিTA.Highest(records, 30, "High")ফাংশন কল করা হয়, যদি সময়ের পরামিতিperiodসেট করা আছে0, এটা সব গণনা মানেBarsK-line তথ্যেরinRealপ্যারামিটার; যদি অ্যাট্রিবিউট প্যারামিটারattrনির্দিষ্ট করা হয় না, K- লাইন তথ্য দ্বারা পাসinRealপ্যারামিটারটি একটি সাধারণ অ্যারে হিসাবে বিবেচিত হয়।

{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Lowest TA.Lowest},

TA.Lowest

দ্যTA.Lowest()ফাংশন গণনা করতে ব্যবহৃত হয়সময়ের সর্বনিম্ন মূল্য.

দ্যTA.Lowest()ফাংশনটি বর্তমান বারকে বাদ দিয়ে সর্বশেষ নির্দিষ্ট সময়ের মধ্যে একটি বৈশিষ্ট্যের সর্বনিম্ন মান প্রদান করে। সংখ্যা

TA.Lowest ((inReal) TA.Lowest ((inReal, period, attr)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যperiodপ্যারামিটারটি সময়কাল নির্ধারণ করতে ব্যবহৃত হয়। সময়কাল মিথ্যা সংখ্যা দ্যattrপ্যারামিটার ব্যবহার করা হয় বৈশিষ্ট্য সেট করতে, ঐচ্ছিকভাবেঃOpen, Close, Low, High, Volume, OpenInterest. অ্যাট্র মিথ্যা স্ট্রিং

function main() {
    var records = exchange.GetRecords()
    var lowestForOpen = TA.Lowest(records, 10, "Open")
    Log(lowestForOpen)
}
def main():
    records = exchange.GetRecords()
    lowestForOpen = TA.Lowest(records, 10, "Open")
    Log(lowestForOpen)
void main() {
    auto records = exchange.GetRecords();
    auto lowestForOpen = TA.Lowest(records.Open(), 10);
    Log(lowestForOpen);
}

উদাহরণস্বরূপ, যদিTA.Lowest(records, 30, "Low")ফাংশন কল করা হয়, যদি সময়ের পরামিতিperiodসেট করা আছে0, এটা সব গণনা মানেBarsK-line তথ্যেরinRealপ্যারামিটার; যদি অ্যাট্রিবিউট প্যারামিটারattrনির্দিষ্ট করা হয় না, K- লাইন তথ্য দ্বারা পাসinRealপ্যারামিটারটি একটি সাধারণ অ্যারে হিসাবে বিবেচিত হয়। ব্যবহারTA.Highest()এবংTA.Lowest()কার্যক্রমC++কৌশল উল্লেখ করা প্রয়োজন যেHighest()এবংLowest()ফাংশন প্রতিটি শুধুমাত্র 2 পরামিতি আছে। এবং প্রথম প্যারামিটার পাস করা হয় না K-লাইন তথ্যrযখন ফাংশন পাওয়া যায়auto r = exchange.GetRecords()ডাকা হয়েছিল। তোমাকে ফোন করতে হবেrপদ্ধতি এবং নির্দিষ্ট বৈশিষ্ট্য তথ্য পাস. উদাহরণস্বরূপ,r.Close()বন্ধের মূল্যের তথ্য।Close, High, Low, Open, Volumeযেমনr.Close()কল পদ্ধতি।

পরীক্ষার উদাহরণC++ভাষা কৌশলঃ

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);
    }            

    for(int j = 0; j < r.size(); j++){
        Log(r[j]);
    }            

    // Note: the first parameter passed is not r, you need to call r.Close()
    auto highest = TA.Highest(r.Close(), 8);   
    Log(highest);                     
}

{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest},

TA.SMA

দ্যTA.SMA()ফাংশন গণনা করতে ব্যবহৃত হয়সরল চলমান গড় সূচক.

রিটার্ন মানTA.SMA()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

TA.SMA ((inReal) TA.SMA ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল নির্ধারণ করতে ব্যবহৃত হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main(){
    var records = exchange.GetRecords(PERIOD_M30)
    var sma = TA.SMA(records, 14)
    Log(sma)
}
def main():
    r = exchange.GetRecords(PERIOD_M30)
    sma = TA.SMA(r, 14)
    Log(sma)
void main() {
    auto r = exchange.GetRecords(PERIOD_M30);
    auto sma = TA.SMA(r, 14);
    Log(sma);
}

ডিফল্ট মানoptInTimePeriodপ্যারামিটারTA.SMA()ফাংশন হলঃ9.

{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest TA.Lowest}, {@fun/

তালিব

talib.CDL2CROWS

দ্যtalib.CDL2CROWS()ফাংশন গণনা করতে ব্যবহৃত হয়দু'টি কর্ণ (কে-লাইন চার্ট - দুই কর্ণ).

রিটার্ন মানtalib.CDL2CROWS()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.CDL2CROWS ((inPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDL2CROWS(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDL2CROWS(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDL2CROWS(records);
    Log(ret);
}

দ্যCDL2CROWS()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDL2CROWS(Records[Open,High,Low,Close]) = Array(outInteger)কলের জন্যPythonভাষা, পাস পরামিতি ভিন্ন এবং উপরে বর্ণনা উপর ভিত্তি করে করা প্রয়োজনঃRecords[Open,High,Low,Close].

একটি ভেরিয়েবল ভাগ করার উদাহরণrecords(অর্থাৎ প্যারামিটারinPriceOHLC, টাইপ {@struct/Record Record} গঠন অ্যারে) মধ্যেঃOpenlist: পাইথনে লেখা আছেrecords.Open. Highতালিকাঃ লেখা হয়েছেrecords.Highপাইথনে।Lowlist: পাইথনে লেখা আছেrecords.Low. Closelist: পাইথনে লেখা আছেrecords.Close.

পাইথন কৌশল কোডে বলা হয়:

talib.CDL2CROWS(records.Open, records.High, records.Low, records.Close)

অন্যটাtalibসূচকগুলি একইভাবে বর্ণনা করা হয়েছে এবং তারা পুনরাবৃত্তি করা হবে না।

talib.CDL3BLACKCROWS

দ্যtalib.CDL3BLACKCROWS()ফাংশন গণনা করতে ব্যবহৃত হয়তিন কালো কভু (কে-লাইন চার্ট - তিন কালো কভু).

রিটার্ন মানtalib.CDL3BLACKCROWS()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDL3BLACKCROWS ((inPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDL3BLACKCROWS(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDL3BLACKCROWS(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDL3BLACKCROWS(records);
    Log(ret);
}

দ্যCDL3BLACKCROWS()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDL3BLACKCROWS(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDL3INSIDE

দ্যtalib.CDL3INSIDE()ফাংশন গণনা করতে ব্যবহৃত হয়তিনজন ভিতরে উপরে/নীচে (কে-লাইন চার্টঃ তিনজন ভিতরে উপরে/নীচে).

রিটার্ন মানtalib.CDL3INSIDE()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDL3INSIDE ((inPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDL3INSIDE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDL3INSIDE(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDL3INSIDE(records);
    Log(ret);
}

দ্যCDL3INSIDE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDL3INSIDE(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDL3LINESTRIKE

দ্যtalib.CDL3LINESTRIKE()ফাংশন গণনা করতে ব্যবহৃত হয়তিন-লাইন স্ট্রাইক (কে-লাইন চার্টঃ তিন-লাইন স্ট্রাইক).

রিটার্ন মানtalib.CDL3LINESTRIKE()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সি.ডি.এল. ৩ লাইন স্ট্রাইক ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDL3LINESTRIKE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDL3LINESTRIKE(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDL3LINESTRIKE(records);
    Log(ret);
}

দ্যCDL3LINESTRIKE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDL3LINESTRIKE(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDL3OUTSIDE

দ্যtalib.CDL3OUTSIDE()ফাংশন গণনা করতে ব্যবহৃত হয়তিন বাইরের উপরে/নিচে (কে-লাইন চার্টঃ তিন বাইরের উপরে/নিচে).

রিটার্ন মানtalib.CDL3OUTSIDE()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDL3OUTSIDE ((inPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDL3OUTSIDE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDL3OUTSIDE(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDL3OUTSIDE(records);
    Log(ret);
}

দ্যCDL3OUTSIDE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDL3OUTSIDE(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDL3STARSINSOUTH

দ্যtalib.CDL3STARSINSOUTH()ফাংশন গণনা করতে ব্যবহৃত হয়থ্রি স্টার ইন দ্য সাউথ (কে-লাইন চার্টঃ থ্রি স্টার ইন দ্য সাউথ).

রিটার্ন মানtalib.CDL3STARSINSOUTH()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সিডিএল৩স্টারসিনসউথ ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDL3STARSINSOUTH(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDL3STARSINSOUTH(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDL3STARSINSOUTH(records);
    Log(ret);
}

দ্যCDL3STARSINSOUTH()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDL3STARSINSOUTH(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDL3WHITESOLDIERS

দ্যtalib.CDL3WHITESOLDIERS()ফাংশন গণনা করতে ব্যবহৃত হয়তিনজন অগ্রসর হোয়াইট সোলজার (কে-লাইন চার্টঃ তিনজন অগ্রসর হোয়াইট সোলজার).

রিটার্ন মানtalib.CDL3WHITESOLDIERS()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সিডিএল3WHITESOLDIERS ((InPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDL3WHITESOLDIERS(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDL3WHITESOLDIERS(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDL3WHITESOLDIERS(records);
    Log(ret);
}

দ্যCDL3WHITESOLDIERS()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDL3WHITESOLDIERS(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLABANDONEDBABY

দ্যtalib.CDLABANDONEDBABY()ফাংশন গণনা করতে ব্যবহৃত হয়পরিত্যক্ত শিশু (কে-লাইন চার্টঃ পরিত্যক্ত শিশু).

রিটার্ন মানtalib.CDLABANDONEDBABY()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সিডি.এল.এ.বাংলাদেশে talib.CDLABANDONEDBABY ((InPriceOHLC, optInPenetration)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInPenetrationপ্যারামিটার অনুপ্রবেশ সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0.3 হয়। optInPenetration মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLABANDONEDBABY(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLABANDONEDBABY(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLABANDONEDBABY(records);
    Log(ret);
}

দ্যCDLABANDONEDBABY()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLABANDONEDBABY(Records[Open,High,Low,Close],Penetration = 0.3) = Array(outInteger)

talib.CDLADVANCEBLOCK

দ্যtalib.CDLADVANCEBLOCK()ফাংশন গণনা করতে ব্যবহৃত হয়অগ্রগতি ব্লক (কে-লাইন চার্টঃ অগ্রগতি).

রিটার্ন মানtalib.CDLADVANCEBLOCK()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.সিডিএলএডিভ্যান্স ব্লক ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLADVANCEBLOCK(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLADVANCEBLOCK(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLADVANCEBLOCK(records);
    Log(ret);
}

দ্যCDLADVANCEBLOCK()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLADVANCEBLOCK(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLBELTHOLD

দ্যtalib.CDLBELTHOLD()ফাংশন গণনা করতে ব্যবহৃত হয়বেল্ট-হোল্ড (কে-লাইন চার্টঃ বেল্ট-হোল্ড).

রিটার্ন মানtalib.CDLBELTHOLD()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLBELTHOLD ((inPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLBELTHOLD(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLBELTHOLD(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLBELTHOLD(records);
    Log(ret);
}

দ্যCDLBELTHOLD()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLBELTHOLD(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLBREAKAWAY

দ্যtalib.CDLBREAKAWAY()ফাংশন গণনা করতে ব্যবহৃত হয়বিচ্ছিন্নতা (কে-লাইন চার্টঃ বিচ্ছিন্নতা).

রিটার্ন মানtalib.CDLBREAKAWAY()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সি.ডি.এল.বি.বি.এ.ও.ও.ও.

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLBREAKAWAY(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLBREAKAWAY(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLBREAKAWAY(records);
    Log(ret);
}

CDLBREAKAWAY()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLBREAKAWAY(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLCLOSINGMARUBOZU

দ্যtalib.CDLCLOSINGMARUBOZU()ফাংশন গণনা করতে ব্যবহৃত হয়মারুবোজু বন্ধ হচ্ছে (কে-লাইন চার্টঃ খালি মাথায় এবং খালি পায়ে বন্ধ হচ্ছে).

রিটার্ন মানtalib.CDLCLOSINGMARUBOZU()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সিডিএলসি ক্লোজিং মারুবোজু ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLCLOSINGMARUBOZU(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLCLOSINGMARUBOZU(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLCLOSINGMARUBOZU(records);
    Log(ret);
}

দ্যCDLCLOSINGMARUBOZU()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLCLOSINGMARUBOZU(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLCONCEALBABYSWALL

দ্যtalib.CDLCONCEALBABYSWALL()ফাংশন গণনা করতে ব্যবহৃত হয়শিশুর হাঙ্গর লুকানো (কে-লাইন চার্টঃ শিশুর হাঙ্গর লুকানোর নিদর্শন).

রিটার্ন মানtalib.CDLCONCEALBABYSWALL()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLCONCEALBABYSWALL ((inPriceOHLC))

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLCONCEALBABYSWALL(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLCONCEALBABYSWALL(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLCONCEALBABYSWALL(records);
    Log(ret);
}

দ্যCDLCONCEALBABYSWALL()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLCONCEALBABYSWALL(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLCOUNTERATTACK

দ্যtalib.CDLCOUNTERATTACK()ফাংশন গণনা করতে ব্যবহৃত হয়পাল্টা আক্রমণ (কে-লাইন চার্টঃ পাল্টা আক্রমণ).

রিটার্ন মানtalib.CDLCOUNTERATTACK()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.সি.ডি.এল.কাউন্টারট্যাক ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLCOUNTERATTACK(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLCOUNTERATTACK(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLCOUNTERATTACK(records);
    Log(ret);
}

দ্যCDLCOUNTERATTACK()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLCOUNTERATTACK(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLDARKCLOUDCOVER

দ্যtalib.CDLDARKCLOUDCOVER()ফাংশন গণনা করতে ব্যবহৃত হয়অন্ধকার মেঘাচ্ছাদন (কে-লাইন চার্টঃ অন্ধকার মেঘাচ্ছাদন).

রিটার্ন মানtalib.CDLDARKCLOUDCOVER()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.CDLDARKCLOUDCOVER ((inPriceOHLC) talib.CDLDARKCLOUDCOVER ((InPriceOHLC, optInPenetration)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInPenetrationপ্যারামিটার অনুপ্রবেশ সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0.5 হয়। optInPenetration মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLDARKCLOUDCOVER(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLDARKCLOUDCOVER(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLDARKCLOUDCOVER(records);
    Log(ret);
}

দ্যCDLDARKCLOUDCOVER()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLDARKCLOUDCOVER(Records[Open,High,Low,Close],Penetration = 0.5) = Array(outInteger)

talib.CDLDOJI

দ্যtalib.CDLDOJI()ফাংশন গণনা করতে ব্যবহৃত হয়ডোজি (কে-লাইন চার্টঃ ডোজি).

রিটার্ন মানtalib.CDLDOJI()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLDOJI ((InPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLDOJI(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLDOJI(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLDOJI(records);
    Log(ret);
}

দ্যCDLDOJI()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLDOJI(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLDOJISTAR

দ্যtalib.CDLDOJISTAR()ফাংশন গণনা করতে ব্যবহৃত হয়ডোজি স্টার (কে-লাইন চার্টঃ ডোজি স্টার).

রিটার্ন মানtalib.CDLDOJISTAR()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLDOJISTAR ((InPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLDOJISTAR(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLDOJISTAR(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLDOJISTAR(records);
    Log(ret);
}

দ্যCDLDOJISTAR()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLDOJISTAR(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLDRAGONFLYDOJI

দ্যtalib.CDLDRAGONFLYDOJI()ফাংশন গণনা করতে ব্যবহৃত হয়ড্রাগনফ্লাই ডোজি (কে-লাইন চার্টঃ ড্রাগনফ্লাই ডোজি).

রিটার্ন মানtalib.CDLDRAGONFLYDOJI()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সি.ডি.ড্রাগনফ্লাইডো.জি. (ইনপ্রাইজ ওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLDRAGONFLYDOJI(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLDRAGONFLYDOJI(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLDRAGONFLYDOJI(records);
    Log(ret);
}

দ্যCDLDRAGONFLYDOJI()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLDRAGONFLYDOJI(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLENGULFING

দ্যtalib.CDLENGULFING()ফাংশন গণনা করতে ব্যবহৃত হয়গলফিং প্যাটার্ন (কে-লাইন চার্টঃ গলফিং).

রিটার্ন মানtalib.CDLENGULFING()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.সি.ডি.LENGULFING ((InPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLENGULFING(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLENGULFING(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLENGULFING(records);
    Log(ret);
}

দ্যCDLENGULFING()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLENGULFING(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLEVENINGDOJISTAR

দ্যtalib.CDLEVENINGDOJISTAR()ফাংশন গণনা করতে ব্যবহৃত হয়সন্ধ্যার ডোজি নক্ষত্র (কে-লাইন চার্টঃ সন্ধ্যার ডোজি নক্ষত্র).

রিটার্ন মানtalib.CDLEVENINGDOJISTAR()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সিডি.লেভেনিংডোজিস্টার ((ইনপ্রাইসওএইচএলসি) talib.CDLEVENINGDOJISTAR ((PriceOHLC, optInPenetration) এর মধ্যে)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInPenetrationপ্যারামিটার অনুপ্রবেশ সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0.3 হয়। optInPenetration মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLEVENINGDOJISTAR(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLEVENINGDOJISTAR(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLEVENINGDOJISTAR(records);
    Log(ret);
}

দ্যCDLEVENINGDOJISTAR()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLEVENINGDOJISTAR(Records[Open,High,Low,Close],Penetration = 0.3) = Array(outInteger)

talib.CDLEVENINGSTAR

দ্যtalib.CDLEVENINGSTAR()ফাংশন গণনা করতে ব্যবহৃত হয়সন্ধ্যার নক্ষত্র (কে-লাইন চার্টঃ সন্ধ্যার নক্ষত্র).

রিটার্ন মানtalib.CDLEVENINGSTAR()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সিডিলেভেনিংস্টার ((ইনপ্রাইসওএইচএলসি) talib.CDLEVENINGSTAR ((InPriceOHLC, optInPenetration)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInPenetrationপ্যারামিটার অনুপ্রবেশ সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0.3 হয়। optInPenetration মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLEVENINGSTAR(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLEVENINGSTAR(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLEVENINGSTAR(records);
    Log(ret);
}

দ্যCDLEVENINGSTAR()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLEVENINGSTAR(Records[Open,High,Low,Close],Penetration = 0.3) = Array(outInteger)

talib.CDLGAPSIDESIDEWHITE

দ্যtalib.CDLGAPSIDESIDEWHITE()ফাংশন গণনা করতে ব্যবহৃত হয়উপরে/নীচে ফাঁক পাশের সাদা রেখা (কে-লাইন চার্টঃ উপরে/নীচে ফাঁক পাশের সাদা রেখা).

রিটার্ন মানtalib.CDLGAPSIDESIDEWHITE()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সিডিএলগাপসাইডসাইডহোয়াইট ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLGAPSIDESIDEWHITE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLGAPSIDESIDEWHITE(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLGAPSIDESIDEWHITE(records);
    Log(ret);
}

দ্যCDLGAPSIDESIDEWHITE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLGAPSIDESIDEWHITE(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLGRAVESTONEDOJI

দ্যtalib.CDLGRAVESTONEDOJI()ফাংশন গণনা করতে ব্যবহৃত হয়গ্রেভস্টোন ডোজি (কে-লাইন চার্টঃ গ্রেভস্টোন ডোজি).

রিটার্ন মানtalib.CDLGRAVESTONEDOJI()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সি.ডি.এল. গ্রেভস্টোনডোজি ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLGRAVESTONEDOJI(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLGRAVESTONEDOJI(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLGRAVESTONEDOJI(records);
    Log(ret);
}

দ্যCDLGRAVESTONEDOJI()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLGRAVESTONEDOJI(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLHAMMER

দ্যtalib.CDLHAMMER()ফাংশন গণনা করতে ব্যবহৃত হয়হ্যামার (কে-লাইন চার্টঃ হ্যামার).

রিটার্ন মানtalib.CDLHAMMER()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সি.ডি.এল.হ্যামার ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLHAMMER(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLHAMMER(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLHAMMER(records);
    Log(ret);
}

দ্যCDLHAMMER()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLHAMMER(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLHANGINGMAN

দ্যtalib.CDLHANGINGMAN()ফাংশন গণনা করতে ব্যবহৃত হয়হ্যাং ম্যান (কে-লাইন চার্টঃ হ্যাং ম্যান).

রিটার্ন মানtalib.CDLHANGINGMAN()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.সিডি হ্যাংম্যান ((ইনপ্রাইস ওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLHANGINGMAN(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLHANGINGMAN(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLHANGINGMAN(records);
    Log(ret);
}

দ্যCDLHANGINGMAN()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLHANGINGMAN(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLHARAMI

দ্যtalib.CDLHARAMI()ফাংশন গণনা করতে ব্যবহৃত হয়হারামি প্যাটার্ন (কে-লাইন চার্টঃ নেতিবাচক এবং ধনাত্মক লাইন).

রিটার্ন মানtalib.CDLHARAMI()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.সিডিএলহরামি ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLHARAMI(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLHARAMI(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLHARAMI(records);
    Log(ret);
}

দ্যCDLHARAMI()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLHARAMI(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLHARAMICROSS

দ্যtalib.CDLHARAMICROSS()ফাংশন গণনা করতে ব্যবহৃত হয়হারামি ক্রস প্যাটার্ন (কে-লাইন চার্টঃ ক্রস নেতিবাচক এবং ধনাত্মক লাইন).

রিটার্ন মানtalib.CDLHARAMICROSS()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLHARAMICROSS ((inPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLHARAMICROSS(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLHARAMICROSS(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLHARAMICROSS(records);
    Log(ret);
}

দ্যCDLHARAMICROSS()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLHARAMICROSS(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLHIGHWAVE

দ্যtalib.CDLHIGHWAVE()ফাংশন গণনা করতে ব্যবহৃত হয়হাই-ওয়েভ মোমবাতি (কে-লাইন চার্টঃ লং লেগ ক্রস).

রিটার্ন মানtalib.CDLHIGHWAVE()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.সি.ডি.এইচ.এইচ.ও.ভি.ইউ (ইনপ্রাইজ ওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLHIGHWAVE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLHIGHWAVE(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLHIGHWAVE(records);
    Log(ret);
}

দ্যCDLHIGHWAVE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLHIGHWAVE(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLHIKKAKE

দ্যtalib.CDLHIKKAKE()ফাংশন গণনা করতে ব্যবহৃত হয়হিকাকে প্যাটার্ন (কে-লাইন চার্টঃ ফাঁদ).

রিটার্ন মানtalib.CDLHIKKAKE()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.সি.ডি.এল.হিক্কাকে ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLHIKKAKE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLHIKKAKE(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLHIKKAKE(records);
    Log(ret);
}

দ্যCDLHIKKAKE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLHIKKAKE(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLHIKKAKEMOD

দ্যtalib.CDLHIKKAKEMOD()ফাংশন গণনা করতে ব্যবহৃত হয়সংশোধিত হিকাকে প্যাটার্ন (কে-লাইন চার্টঃ সংশোধিত ফাঁদ).

রিটার্ন মানtalib.CDLHIKKAKEMOD()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সিডিএলহিক্কাকেমোড ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLHIKKAKEMOD(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLHIKKAKEMOD(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLHIKKAKEMOD(records);
    Log(ret);
}

দ্যCDLHIKKAKEMOD()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLHIKKAKEMOD(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLHOMINGPIGEON

দ্যtalib.CDLHOMINGPIGEON()ফাংশন গণনা করতে ব্যবহৃত হয়হোমিং পিভট (কে-লাইন চার্টঃ পিভট).

রিটার্ন মানtalib.CDLHOMINGPIGEON()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLHOMINGPIGEON ((inPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLHOMINGPIGEON(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLHOMINGPIGEON(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLHOMINGPIGEON(records);
    Log(ret);
}

দ্যCDLHOMINGPIGEON()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLHOMINGPIGEON(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLIDENTICAL3CROWS

দ্যtalib.CDLIDENTICAL3CROWS()ফাংশন গণনা করতে ব্যবহৃত হয়একই তিনটা কর্ণ (কে-লাইন চার্টঃ একই তিনটা কর্ণ).

রিটার্ন মানtalib.CDLIDENTICAL3CROWS()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLIDENTICAL3CROWS ((InPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLIDENTICAL3CROWS(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLIDENTICAL3CROWS(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLIDENTICAL3CROWS(records);
    Log(ret);
}

দ্যCDLIDENTICAL3CROWS()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLIDENTICAL3CROWS(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLINNECK

দ্যtalib.CDLINNECK()ফাংশন গণনা করতে ব্যবহৃত হয়ইন-নেক প্যাটার্ন (কে-লাইন চার্টঃ নেকলেট).

রিটার্ন মানtalib.CDLINNECK()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLINNECK ((inPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLINNECK(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLINNECK(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLINNECK(records);
    Log(ret);
}

দ্যCDLINNECK()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLINNECK(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLINVERTEDHAMMER

দ্যtalib.CDLINVERTEDHAMMER()ফাংশন গণনা করতে ব্যবহৃত হয়ইনভার্টেড হ্যামার (কে-লাইন চার্টঃ ইনভার্টেড হ্যামার).

রিটার্ন মানtalib.CDLINVERTEDHAMMER()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সিডিLINVERTEDHAMMER ((inPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLINVERTEDHAMMER(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLINVERTEDHAMMER(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLINVERTEDHAMMER(records);
    Log(ret);
}

দ্যCDLINVERTEDHAMMER()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLINVERTEDHAMMER(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLKICKING

দ্যtalib.CDLKICKING()ফাংশন গণনা করতে ব্যবহৃত হয়লাথি (কে-লাইন চার্টঃ লাথি).

রিটার্ন মানtalib.CDLKICKING()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.সিডিএল কিকিং ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLKICKING(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLKICKING(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLKICKING(records);
    Log(ret);
}

দ্যCDLKICKING()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLKICKING(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLKICKINGBYLENGTH

দ্যtalib.CDLKICKINGBYLENGTH()ফাংশন গণনা করতে ব্যবহৃত হয়কিক-টুল/বিয়ার দীর্ঘতর মারুবোজু দ্বারা নির্ধারিত (কে-লাইন চার্টঃ কিক-টুল/কিক-বিয়ার).

রিটার্ন মানtalib.CDLKICKINGBYLENGTH()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLKICKINGBYLENGTH ((inPriceOHLC))

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLKICKINGBYLENGTH(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLKICKINGBYLENGTH(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLKICKINGBYLENGTH(records);
    Log(ret);
}

দ্যCDLKICKINGBYLENGTH()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLKICKINGBYLENGTH(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLLADDERBOTTOM

দ্যtalib.CDLLADDERBOTTOM()ফাংশন গণনা করতে ব্যবহৃত হয়সিঁড়ির নীচে (কে-লাইন চার্টঃ সিঁড়ির নীচে).

রিটার্ন মানtalib.CDLLADDERBOTTOM()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সি.ডি.এল.এল.ডি.আর.বি.টি.এম. (InPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLLADDERBOTTOM(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLLADDERBOTTOM(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLLADDERBOTTOM(records);
    Log(ret);
}

দ্যCDLLADDERBOTTOM()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLLADDERBOTTOM(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLLONGLEGGEDDOJI

দ্যtalib.CDLLONGLEGGEDDOJI()ফাংশন গণনা করতে ব্যবহৃত হয়লং লেগড ডোজি (কে-লাইন চার্টঃ লং লেগড ডোজি).

রিটার্ন মানtalib.CDLLONGLEGGEDDOJI()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সি.ডি.এল.এল.এল.এল.এল.জি.ডি.ও.জি.

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLLONGLEGGEDDOJI(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLLONGLEGGEDDOJI(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLLONGLEGGEDDOJI(records);
    Log(ret);
}

দ্যCDLLONGLEGGEDDOJI()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLLONGLEGGEDDOJI(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLLONGLINE

দ্যtalib.CDLLONGLINE()ফাংশন গণনা করতে ব্যবহৃত হয়লং লাইন মোমবাতি (কে-লাইন চার্টঃ লং লাইন).

রিটার্ন মানtalib.CDLLONGLINE()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLLONGLINE ((InPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLLONGLINE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLLONGLINE(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLLONGLINE(records);
    Log(ret);
}

দ্যCDLLONGLINE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLLONGLINE(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLMARUBOZU

দ্যtalib.CDLMARUBOZU()ফাংশন গণনা করতে ব্যবহৃত হয়মারুবোজু (কে-লাইন চার্টঃ খালি মাথা এবং খালি পা).

রিটার্ন মানtalib.CDLMARUBOZU()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.CDLMARUBOZU ((inPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLMARUBOZU(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLMARUBOZU(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLMARUBOZU(records);
    Log(ret);
}

দ্যCDLMARUBOZU()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLMARUBOZU(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLMATCHINGLOW

দ্যtalib.CDLMATCHINGLOW()ফাংশন গণনা করতে ব্যবহৃত হয়মিলে যাওয়া নিম্ন (কে-লাইন চার্টঃ মিলে যাওয়া নিম্ন).

রিটার্ন মানtalib.CDLMATCHINGLOW()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সি.ডি.এল.এম. মেশিংলো ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLMATCHINGLOW(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLMATCHINGLOW(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLMATCHINGLOW(records);
    Log(ret);
}

দ্যCDLMATCHINGLOW()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLMATCHINGLOW(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLMATHOLD

দ্যtalib.CDLMATHOLD()ফাংশন গণনা করতে ব্যবহৃত হয়মেট হোল্ড (কে-লাইন চার্টঃ মেট হোল্ড).

রিটার্ন মানtalib.CDLMATHOLD()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLMATHOLD ((inPriceOHLC) talib.CDLMATHOLD ((inPriceOHLC, optInPenetration)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInPenetrationপ্যারামিটারটি ঐচ্ছিক এবং এটি বৃদ্ধি / পতনের প্রবণতা লাইনের প্রস্থের শতাংশ নির্দিষ্ট করতে ব্যবহৃত হয়, ডিফল্ট মানটি 0.5। optInPenetration মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLMATHOLD(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLMATHOLD(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLMATHOLD(records);
    Log(ret);
}

দ্যCDLMATHOLD()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLMATHOLD(Records[Open,High,Low,Close],Penetration = 0.5) = Array(outInteger)

talib.CDLMORNINGDOJISTAR

দ্যtalib.CDLMORNINGDOJISTAR()ফাংশন গণনা করতে ব্যবহৃত হয়মর্নিং ডোজি স্টার (কে-লাইন চার্টঃ মর্নিং ডোজি স্টার).

রিটার্ন মানtalib.CDLMORNINGDOJISTAR()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সিডি.মর্নিংডোজিস্টার ((ইনপ্রাইসওএইচএলসি) তালেব.সিডি.মর্নিংডোজিস্টার ((ইনপ্রাইস ওএইচএলসি, অপ্টইনপেনট্রেশন)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInPenetrationপ্যারামিটারটি বৈধকরণ উদ্বোধনী মূল্য এবং কঠিন অংশের মধ্যে ওভারল্যাপের ডিগ্রি নির্দিষ্ট করতে ব্যবহৃত হয়, ডিফল্ট মানটি 0.3। optInPenetration মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLMORNINGDOJISTAR(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLMORNINGDOJISTAR(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLMORNINGDOJISTAR(records);
    Log(ret);
}

দ্যCDLMORNINGDOJISTAR()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLMORNINGDOJISTAR(Records[Open,High,Low,Close],Penetration = 0.3) = Array(outInteger)

talib.CDLMORNINGSTAR

দ্যtalib.CDLMORNINGSTAR()ফাংশন গণনা করতে ব্যবহৃত হয়মর্নিং স্টার (কে-লাইন চার্টঃ মর্নিং স্টার).

রিটার্ন মানtalib.CDLMORNINGSTAR()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সিডি.মর্নিংস্টার ((ইনপ্রাইসওএইচএলসি) তালেব.সিডিএলমর্নিংস্টার ((ইনপ্রাইসওএইচএলসি, অপ্টইনপেনট্রেশন)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInPenetrationপ্যারামিটারটি হল প্রবণতা নিশ্চিতকরণের জন্য প্রয়োজনীয় মূল্য ফ্লোটিং শতাংশের থ্রেশহোল্ড এবং এটি [0,1] পরিসরের একটি মান গ্রহণ করে, যার ডিফল্ট মান 0.3। optInPenetration মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLMORNINGSTAR(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLMORNINGSTAR(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLMORNINGSTAR(records);
    Log(ret);
}

দ্যCDLMORNINGSTAR()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLMORNINGSTAR(Records[Open,High,Low,Close],Penetration=0.3) = Array(outInteger)

talib.CDLONNECK

দ্যtalib.CDLONNECK()ফাংশন গণনা করতে ব্যবহৃত হয়ঘাড়ের প্যাটার্ন (কে-লাইন চার্টঃ ঘাড়ের প্যাটার্ন).

রিটার্ন মানtalib.CDLONNECK()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.CDLONNECK ((inPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLONNECK(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLONNECK(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLONNECK(records);
    Log(ret);
}

দ্যCDLONNECK()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLONNECK(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLPIERCING

দ্যtalib.CDLPIERCING()ফাংশন গণনা করতে ব্যবহৃত হয়ছিদ্র প্যাটার্ন (কে-লাইন চার্টঃ ছিদ্র প্যাটার্ন).

রিটার্ন মানtalib.CDLPIERCING()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.সি.ডি.এল.পি.আর.সি. ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLPIERCING(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLPIERCING(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLPIERCING(records);
    Log(ret);
}

দ্যCDLPIERCING()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLPIERCING(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLRICKSHAWMAN

দ্যtalib.CDLRICKSHAWMAN()ফাংশন গণনা করতে ব্যবহৃত হয়রিক্সা ম্যান (কে-লাইন চার্টঃ রিক্সা ম্যান).

রিটার্ন মানtalib.CDLRICKSHAWMAN()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLRICKSHAWMAN ((InPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি K-line ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLRICKSHAWMAN(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLRICKSHAWMAN(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLRICKSHAWMAN(records);
    Log(ret);
}

দ্যCDLRICKSHAWMAN()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLRICKSHAWMAN(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLRISEFALL3METHODS

দ্যtalib.CDLRISEFALL3METHODS()ফাংশন গণনা করতে ব্যবহৃত হয়উত্থান/পতন তিন পদ্ধতি (কে-লাইন চার্টঃ উত্থান/পতন তিন পদ্ধতি).

রিটার্ন মানtalib.CDLRISEFALL3METHODS()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLRISEFALL3METHODS ((inPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLRISEFALL3METHODS(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLRISEFALL3METHODS(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLRISEFALL3METHODS(records);
    Log(ret);
}

দ্যCDLRISEFALL3METHODS()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLRISEFALL3METHODS(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLSEPARATINGLINES

দ্যtalib.CDLSEPARATINGLINES()ফাংশন গণনা করতে ব্যবহৃত হয়বিভাজক রেখা (কে-লাইন চার্টঃ বিভাজক রেখা).

রিটার্ন মানtalib.CDLSEPARATINGLINES()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.সি.ডি.এল.এস.বিভিন্ন লাইন ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLSEPARATINGLINES(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLSEPARATINGLINES(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLSEPARATINGLINES(records);
    Log(ret);
}

দ্যCDLSEPARATINGLINES()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLSEPARATINGLINES(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLSHOOTINGSTAR

দ্যtalib.CDLSHOOTINGSTAR()ফাংশন গণনা করতে ব্যবহৃত হয়শুটিং স্টার (কে-লাইন চার্টঃ শুটিং স্টার).

রিটার্ন মানtalib.CDLSHOOTINGSTAR()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.সি.ডি.এস. শুটিংস্টার ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLSHOOTINGSTAR(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLSHOOTINGSTAR(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLSHOOTINGSTAR(records);
    Log(ret);
}

দ্যCDLSHOOTINGSTAR()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLSHOOTINGSTAR(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLSHORTLINE

দ্যtalib.CDLSHORTLINE()ফাংশন গণনা করতে ব্যবহৃত হয়শর্ট লাইন মোমবাতি (কে-লাইন চার্টঃ শর্ট লাইন).

রিটার্ন মানtalib.CDLSHORTLINE()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLSSHORTLINE ((InPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLSHORTLINE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLSHORTLINE(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLSHORTLINE(records);
    Log(ret);
}

দ্যCDLSHORTLINE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLSHORTLINE(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLSPINNINGTOP

দ্যtalib.CDLSPINNINGTOP()ফাংশন গণনা করতে ব্যবহৃত হয়স্পিনিং টপ (কে-লাইন চার্টঃ স্পিনিং টপ).

রিটার্ন মানtalib.CDLSPINNINGTOP()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সি.ডি.এল. স্পিনিংটপ ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLSPINNINGTOP(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLSPINNINGTOP(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLSPINNINGTOP(records);
    Log(ret);
}

দ্যCDLSPINNINGTOP()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLSPINNINGTOP(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLSTALLEDPATTERN

দ্যtalib.CDLSTALLEDPATTERN()ফাংশন গণনা করতে ব্যবহৃত হয়স্টলড প্যাটার্ন (কে-লাইন চার্টঃ স্টলড প্যাটার্ন).

রিটার্ন মানtalib.CDLSTALLEDPATTERN()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLSTALLEDPATTERN ((inPriceOHLC) -এর সাথে যুক্ত)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLSTALLEDPATTERN(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLSTALLEDPATTERN(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLSTALLEDPATTERN(records);
    Log(ret);
}

দ্যCDLSTALLEDPATTERN()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLSTALLEDPATTERN(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLSTICKSANDWICH

দ্যtalib.CDLSTICKSANDWICH()ফাংশন গণনা করতে ব্যবহৃত হয়স্টিক স্যান্ডউইচ (কে-লাইন চার্টঃ স্টিক স্যান্ডউইচ).

রিটার্ন মানtalib.CDLSTICKSANDWICH()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.সিডিএলস্টিকসএন্ডওয়াইচ ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLSTICKSANDWICH(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLSTICKSANDWICH(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLSTICKSANDWICH(records);
    Log(ret);
}

দ্যCDLSTICKSANDWICH()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLSTICKSANDWICH(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLTAKURI

দ্যtalib.CDLTAKURI()ফাংশন গণনা করতে ব্যবহৃত হয়টাকুরি (অত্যন্ত দীর্ঘ নীচের ছায়ার রেখা সহ ড্রাগনফ্লাই ডোজি) (কে-লাইন চার্টঃ টাকুরি).

রিটার্ন মানtalib.CDLTAKURI()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.CDLTAKURI ((inPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLTAKURI(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLTAKURI(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLTAKURI(records);
    Log(ret);
}

দ্যCDLTAKURI()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLTAKURI(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLTASUKIGAP

দ্যtalib.CDLTASUKIGAP()ফাংশন গণনা করতে ব্যবহৃত হয়তাসুকি গ্যাপ (কে-লাইন চার্টঃ তাসুকি গ্যাপ).

রিটার্ন মানtalib.CDLTASUKIGAP()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.CDLTASUKIGAP ((InPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLTASUKIGAP(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLTASUKIGAP(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLTASUKIGAP(records);
    Log(ret);
}

দ্যCDLTASUKIGAP()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLTASUKIGAP(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLTHRUSTING

দ্যtalib.CDLTHRUSTING()ফাংশন গণনা করতে ব্যবহৃত হয়ধাক্কা মডেল (কে-লাইন চার্টঃ ধাক্কা মডেল).

রিটার্ন মানtalib.CDLTHRUSTING()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সিডিএলথ্রাস্টিং ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLTHRUSTING(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLTHRUSTING(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLTHRUSTING(records);
    Log(ret);
}

দ্যCDLTHRUSTING()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLTHRUSTING(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLTRISTAR

দ্যtalib.CDLTRISTAR()ফাংশন গণনা করতে ব্যবহৃত হয়ট্রিস্টার প্যাটার্ন (কে-লাইন চার্টঃ ট্রিস্টার প্যাটার্ন).

রিটার্ন মানtalib.CDLTRISTAR()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLTRISTAR ((InPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLTRISTAR(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLTRISTAR(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLTRISTAR(records);
    Log(ret);
}

দ্যCDLTRISTAR()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLTRISTAR(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLUNIQUE3RIVER

দ্যtalib.CDLUNIQUE3RIVER()ফাংশন গণনা করতে ব্যবহৃত হয়ইউনিক ৩ নদী (কে-লাইন চার্টঃ ইউনিক ৩ নদী).

রিটার্ন মানtalib.CDLUNIQUE3RIVER()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সিডি লুনিকিউ3রিভার ((ইনপ্রাইসওএইচএলসি)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLUNIQUE3RIVER(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLUNIQUE3RIVER(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLUNIQUE3RIVER(records);
    Log(ret);
}

দ্যCDLUNIQUE3RIVER()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLUNIQUE3RIVER(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLUPSIDEGAP2CROWS

দ্যtalib.CDLUPSIDEGAP2CROWS()ফাংশন গণনা করতে ব্যবহৃত হয়আপসাইড গ্যাপ টু ক্রাউস (কে-লাইন চার্টঃ আপসাইড গ্যাপ টু ক্রাউস).

রিটার্ন মানtalib.CDLUPSIDEGAP2CROWS()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLUPSIDEGAP2CROWS ((InPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLUPSIDEGAP2CROWS(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLUPSIDEGAP2CROWS(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLUPSIDEGAP2CROWS(records);
    Log(ret);
}

দ্যCDLUPSIDEGAP2CROWS()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLUPSIDEGAP2CROWS(Records[Open,High,Low,Close]) = Array(outInteger)

talib.CDLXSIDEGAP3METHODS

দ্যtalib.CDLXSIDEGAP3METHODS()ফাংশন গণনা করতে ব্যবহৃত হয়আপসাইড/ডাউনসাইড গ্যাপ থ্রি মেথড (কে-লাইন চার্টঃ আপসাইড/ডাউনসাইড গ্যাপ থ্রি মেথড).

রিটার্ন মানtalib.CDLXSIDEGAP3METHODS()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.CDLXSIDEGAP3METHODS ((inPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CDLXSIDEGAP3METHODS(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CDLXSIDEGAP3METHODS(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CDLXSIDEGAP3METHODS(records);
    Log(ret);
}

দ্যCDLXSIDEGAP3METHODS()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCDLXSIDEGAP3METHODS(Records[Open,High,Low,Close]) = Array(outInteger)

talib.AD

দ্যtalib.AD()ফাংশন গণনা করতে ব্যবহৃত হয়Chaikin A/D লাইন (লাইন স্টোকাস্টিক সূচক).

রিটার্ন মানtalib.AD()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.AD(inPriceHLCV)

দ্যinPriceHLCVপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLCV সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.AD(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.AD(records.High, records.Low, records.Close, records.Volume)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.AD(records);
    Log(ret);
}

দ্যAD()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃAD(Records[High,Low,Close,Volume]) = Array(outReal)

talib.ADOSC

দ্যtalib.ADOSC()ফাংশন গণনা করতে ব্যবহৃত হয়চৈকিন এ/ডি দোলক (চৈকিন দোলক).

রিটার্ন মানtalib.ADOSC()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.ADOSC ((inPriceHLCV) talib.ADOSC ((inPriceHLCV, optInFastPeriod, optInSlowPeriod)

দ্যinPriceHLCVপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLCV সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInFastPeriodপ্যারামিটার দ্রুত সময়ের সেট করতে ব্যবহৃত হয়. optInFastPeriod মিথ্যা সংখ্যা দ্যoptInSlowPeriodপ্যারামিটার ব্যবহার করা হয় ধীর সময়ের সেট করতে। optInSlowPeriod মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.ADOSC(records, 3, 10)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.ADOSC(records.High, records.Low, records.Close, records.Volume, 3, 10)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.ADOSC(records, 3, 10);
    Log(ret);
}

দ্যADOSC()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃADOSC(Records[High,Low,Close,Volume],Fast Period = 3,Slow Period = 10) = Array(outReal)

talib.OBV

দ্যtalib.OBV()ফাংশন গণনা করতে ব্যবহৃত হয়ব্যালেন্স ভলিউম (শক্তির তরঙ্গ).

রিটার্ন মানtalib.OBV()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.OBV ((inReal) talib.OBV ((inReal, inPriceV)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যinPriceVপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceV মিথ্যা {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.OBV(records, records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.OBV(records.Close, records.Volume)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.OBV(records);
    Log(ret);
}

দ্যOBV()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃOBV(Records[Close],Records[Volume]) = Array(outReal)

talib.ACOS

দ্যtalib.ACOS()ফাংশন গণনা করতে ব্যবহৃত হয়ভেক্টর ত্রিভুজ ACos (বিপরীত কোসিনস ফাংশন).

রিটার্ন মানtalib.ACOS()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.ACOS ((inReal)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var data = [-1, 0, 1]
    var ret = talib.ACOS(data)
    Log(ret)
}
import talib
import numpy as np
def main():
    data = [-1.0, 0, 1.0]
    ret = talib.ACOS(np.array(data))
    Log(ret)
void main() {
    std::vector<double> data = {-1, 0, 1};
    auto ret = talib.ACOS(data);
    Log(ret);
}

দ্যACOS()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃACOS(Records[Close]) = Array(outReal)

talib.ASIN

দ্যtalib.ASIN()ফাংশন গণনা করতে ব্যবহৃত হয়ভেক্টর ত্রিভুজবিজ্ঞান ASin (বিপরীত সাইন ফাংশন).

রিটার্ন মানtalib.ASIN()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.এ.এন.আই.এন. ((ইনরিয়াল))

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var data = [-1, 0, 1]
    var ret = talib.ASIN(data)
    Log(ret)
}
import talib
import numpy as np
def main():
    data = [-1.0, 0, 1.0]
    ret = talib.ASIN(np.array(data))
    Log(ret)
void main() {
    std::vector<double> data = {-1, 0, 1};
    auto ret = talib.ASIN(data);
    Log(ret);
}

দ্যASIN()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃASIN(Records[Close]) = Array(outReal)

talib.ATAN

দ্যtalib.ATAN()ফাংশন গণনা করতে ব্যবহৃত হয়ভেক্টর ত্রিভুজবিদ্যা ATan (বিপরীত স্পর্শকাতর ফাংশন).

রিটার্ন মানtalib.ATAN()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.ATAN ((inReal)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var data = [-3.14/2, 0, 3.14/2]
    var ret = talib.ATAN(data)
    Log(ret)
}
import talib
import numpy as np
def main():
    data = [-3.14/2, 0, 3.14/2]
    ret = talib.ATAN(np.array(data))
    Log(ret)
void main() {
    std::vector<double> data = {-3.14/2, 0, 3.14/2};
    auto ret = talib.ATAN(data);
    Log(ret);
}

দ্যATAN()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃATAN(Records[Close]) = Array(outReal)

talib.CEIL

দ্যtalib.CEIL()ফাংশন গণনা করতে ব্যবহৃত হয়ভেক্টর সিল (বৃত্তাকার ফাংশন).

রিটার্ন মানtalib.CEIL()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.CEIL ((inReal)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CEIL(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CEIL(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CEIL(records);
    Log(ret);
}

দ্যCEIL()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCEIL(Records[Close]) = Array(outReal)

talib.COS

দ্যtalib.COS()ফাংশন গণনা করতে ব্যবহৃত হয়ভেক্টর ত্রিভুজীয় কোস (কোসিনাস ফাংশন).

রিটার্ন মানtalib.COS()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.COS ((inReal)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var data = [-3.14, 0, 3.14]
    var ret = talib.COS(data)
    Log(ret)
}
import talib
import numpy as np
def main():
    data = [-3.14, 0, 3.14]
    ret = talib.COS(np.array(data))
    Log(ret)
void main() {
    std::vector<double> data = {-3.14, 0, 3.14};
    auto ret = talib.COS(data);
    Log(ret);
}

দ্যCOS()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCOS(Records[Close]) = Array(outReal)

talib.COSH

দ্যtalib.COSH()ফাংশন গণনা করতে ব্যবহৃত হয়ভেক্টর ত্রিভুজমিথিক কোশ (হাইপারবলিক কোসিনাস মান).

রিটার্ন মানtalib.COSH()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.COSH ((inReal)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var data = [-1, 0, 1]
    var ret = talib.COSH(data)
    Log(ret)
}
import talib
import numpy as np
def main():
    data = [-1.0, 0, 1.0]
    ret = talib.COSH(np.array(data))
    Log(ret)
void main() {
    std::vector<double> data = {-1, 0, 1};
    auto ret = talib.COSH(data);
    Log(ret);
}

দ্যCOSH()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCOSH(Records[Close]) = Array(outReal)

talib.EXP

দ্যtalib.EXP()ফাংশন গণনা করতে ব্যবহৃত হয়ভেক্টর অ্যারিথমেটিক এক্সপ (উপমানীয় ফাংশন).

রিটার্ন মানtalib.EXP()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.EXP ((inReal)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var data = [0, 1, 2]
    var ret = talib.EXP(data)    // e^0, e^1, e^2
    Log(ret)
}
import talib
import numpy as np
def main():
    data = [0, 1.0, 2.0]
    ret = talib.EXP(np.array(data))
    Log(ret)
void main() {
    std::vector<double> data = {0, 1.0, 2.0};
    auto ret = talib.EXP(data);
    Log(ret);
}

দ্যEXP()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃEXP(Records[Close]) = Array(outReal)

talib.FLOOR

দ্যtalib.FLOOR()ফাংশন গণনা করতে ব্যবহৃত হয়ভেক্টর ফ্লোর (নীচে গোলাকার).

রিটার্ন মানtalib.FLOOR()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.ফ্লোর ((ইনরিয়াল)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.FLOOR(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.FLOOR(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.FLOOR(records);
    Log(ret);
}

দ্যFLOOR()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃFLOOR(Records[Close]) = Array(outReal)

talib.LN

দ্যtalib.LN()ফাংশন গণনা করতে ব্যবহৃত হয়ভেক্টর লোগ প্রাকৃতিক (প্রাকৃতিক লগারিদম).

রিটার্ন মানtalib.LN()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.LN ((inReal)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var data = [1, 2, 3]
    var ret = talib.LN(data)
    Log(ret)
}
import talib
import numpy as np
def main():
    data = [1.0, 2.0, 3.0]
    ret = talib.LN(np.array(data))
    Log(ret)
void main() {
    std::vector<double> data = {1, 2, 3};
    auto ret = talib.LN(data);
    Log(ret);
}

দ্যLN()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃLN(Records[Close]) = Array(outReal)

talib.LOG10

দ্যtalib.LOG10()ফাংশন গণনা করতে ব্যবহৃত হয়ভেক্টর লগ১০ (লোগারিথমিক ফাংশন).

রিটার্ন মানtalib.LOG10()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.LOG10 ((inReal)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var data = [10, 100, 1000]
    var ret = talib.LOG10(data)
    Log(ret)
}
import talib
import numpy as np
def main():
    data = [10.0, 100.0, 1000.0]
    ret = talib.LOG10(np.array(data))
    Log(ret)
void main() {
    std::vector<double> data = {10, 100, 1000};
    auto ret = talib.LOG10(data);
    Log(ret);
}

দ্যLOG10()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃLOG10(Records[Close]) = Array(outReal)

talib.SIN

দ্যtalib.SIN()ফাংশন গণনা করতে ব্যবহৃত হয়ভেক্টর ত্রিভুজীয় সিন (সাইন মান).

রিটার্ন মানtalib.SIN()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.সিন ((ইনরিয়াল)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var data = [-3.14/2, 0, 3.14/2]
    var ret = talib.SIN(data)
    Log(ret)
}
import talib
import numpy as np
def main():
    data = [-3.14/2, 0, 3.14/2]
    ret = talib.SIN(np.array(data))
    Log(ret)
void main() {
    std::vector<double> data = {-3.14/2, 0, 3.14/2};
    auto ret = talib.SIN(data);
    Log(ret);
}

দ্যSIN()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃSIN(Records[Close]) = Array(outReal)

talib.SINH

দ্যtalib.SINH()ফাংশন গণনা করতে ব্যবহৃত হয়ভেক্টর ত্রিভুজীয় সিন (হাইপারবলিক সিন ফাংশন).

রিটার্ন মানtalib.SINH()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সি.এন.এইচ. ((ইনরিয়াল))

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var data = [-1, 0, 1]
    var ret = talib.SINH(data)
    Log(ret)
}
import talib
import numpy as np
def main():
    data = [-1.0, 0, 1.0]
    ret = talib.SINH(np.array(data))
    Log(ret)
void main() {
    std::vector<double> data = {-1, 0, 1};
    auto ret = talib.SINH(data);
    Log(ret);
}

দ্যSINH()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃSINH(Records[Close]) = Array(outReal)

talib.SQRT

দ্যtalib.SQRT()ফাংশন গণনা করতে ব্যবহৃত হয়ভেক্টর বর্গমূল (বর্গমূল).

রিটার্ন মানtalib.SQRT()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.SQRT ((inReal)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var data = [4, 64, 100]
    var ret = talib.SQRT(data)
    Log(ret)
}
import talib
import numpy as np
def main():
    data = [4.0, 64.0, 100.0]
    ret = talib.SQRT(np.array(data))
    Log(ret)
void main() {
    std::vector<double> data = {4, 64, 100};
    auto ret = talib.SQRT(data);
    Log(ret);
}

দ্যSQRT()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃSQRT(Records[Close]) = Array(outReal)

talib.TAN

দ্যtalib.TAN()ফাংশন গণনা করতে ব্যবহৃত হয়ভেক্টর ত্রিভুজ তান (ট্যাঞ্জেন্ট).

রিটার্ন মানtalib.TAN()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.TAN ((inReal)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var data = [-1, 0, 1]
    var ret = talib.TAN(data)
    Log(ret)
}
import talib
import numpy as np
def main():
    data = [-1.0, 0, 1.0]
    ret = talib.TAN(np.array(data))
    Log(ret)
void main() {
    std::vector<double> data = {-1, 0, 1};
    auto ret = talib.TAN(data);
    Log(ret);
}

দ্যTAN()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃTAN(Records[Close]) = Array(outReal)

talib.TANH

দ্যtalib.TANH()ফাংশন গণনা করতে ব্যবহৃত হয়ভেক্টর ত্রিভুজীয় তান (হাইপারবলিক ট্যাঞ্জেন্ট ফাংশন).

রিটার্ন মানtalib.TANH()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.টানহ ((ইনরিয়াল)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var data = [-1, 0, 1]
    var ret = talib.TANH(data)
    Log(ret)
}
import talib
import numpy as np
def main():
    data = [-1.0, 0, 1.0]
    ret = talib.TANH(np.array(data))
    Log(ret)
void main() {
    std::vector<double> data = {-1, 0, 1};
    auto ret = talib.TANH(data);
    Log(ret);
}

দ্যTANH()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃTANH(Records[Close]) = Array(outReal)

talib.MAX

দ্যtalib.MAX()ফাংশন একটি জন্য সর্বোচ্চ (সর্বোচ্চ) মান গণনা করতে ব্যবহৃত হয়নির্দিষ্ট সময়কাল.

রিটার্ন মানtalib.MAX()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.MAX ((inReal) talib.MAX ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 30 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MAX(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MAX(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MAX(records);
    Log(ret);
}

দ্যMAX()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMAX(Records[Close],Time Period = 30) = Array(outReal)

talib.MAXINDEX

দ্যtalib.MAXINDEX()ফাংশন গণনা করতে ব্যবহৃত হয়নির্দিষ্ট সময়ের মধ্যে সর্বোচ্চ মানের সূচক (সর্বোচ্চ সূচক).

রিটার্ন মানtalib.MAXINDEX()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.MAXINDEX ((inReal) talib.MAXINDEX ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 30 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MAXINDEX(records, 5)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MAXINDEX(records.Close, 5)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MAXINDEX(records, 5);
    Log(ret);
}

দ্যMAXINDEX()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMAXINDEX(Records[Close],Time Period = 30) = Array(outInteger)

talib.MIN

দ্যtalib.MIN()ফাংশনটি নির্দিষ্ট সময়ের জন্য সর্বনিম্ন মান (সর্বনিম্ন মান) ** গণনা করতে ব্যবহৃত হয়।

রিটার্ন মানtalib.MIN()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.মিন.ইন রিয়েল. talib.MIN ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 30 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MIN(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MIN(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MIN(records);
    Log(ret);
}

দ্যMIN()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMIN(Records[Close],Time Period = 30) = Array(outReal)

talib.MININDEX

দ্যtalib.MININDEX()ফাংশন গণনা করতে ব্যবহৃত হয়সর্বনিম্ন মানের সূচক (ন্যূনতম মানের সূচক)নির্দিষ্ট সময়ের জন্য।

রিটার্ন মানtalib.MININDEX()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.MININDEX ((inReal) talib.MININDEX ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 30 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MININDEX(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MININDEX(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MININDEX(records);
    Log(ret);
}

দ্যMININDEX()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMININDEX(Records[Close],Time Period = 30) = Array(outInteger)

talib.MINMAX

দ্যtalib.MINMAX()ফাংশন গণনা করতে ব্যবহৃত হয়নির্দিষ্ট সময়ের জন্য সর্বনিম্ন এবং সর্বোচ্চ (ন্যূনতম এবং সর্বোচ্চ) মান.

রিটার্ন মানtalib.MINMAX()ফাংশন একটি দ্বি-মাত্রিক অ্যারে। এই দ্বি-মাত্রিক অ্যারের প্রথম উপাদান হল সর্বনিম্ন মানের অ্যারে, এবং দ্বিতীয় উপাদান হল সর্বোচ্চ মানের অ্যারে। অ্যারে

তালেব.MINMAX ((ইনরিয়াল) talib.MINMAX ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 30 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MINMAX(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MINMAX(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MINMAX(records);
    Log(ret);
}

দ্যMINMAX()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMINMAX(Records[Close],Time Period = 30) = [Array(outMin),Array(outMax)]

talib.MINMAXINDEX

দ্যtalib.MINMAXINDEX()ফাংশন গণনা করতে ব্যবহৃত হয়নির্দিষ্ট সময়ের মধ্যে সর্বনিম্ন এবং সর্বোচ্চ (ন্যূনতম এবং সর্বোচ্চ সূচক) মানের সূচক.

রিটার্ন মানtalib.MINMAXINDEX()ফাংশন হলঃ একটি দ্বি-মাত্রিক অ্যারে। এই দ্বি-মাত্রিক অ্যারে প্রথম উপাদান ন্যূনতম সূচিবদ্ধ অ্যারে, এবং দ্বিতীয় উপাদান সর্বোচ্চ সূচিবদ্ধ অ্যারে। অ্যারে

talib.MINMAXINDEX ((inReal) talib.MINMAXINDEX ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 30 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MINMAXINDEX(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MINMAXINDEX(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MINMAXINDEX(records);
    Log(ret);
}

দ্যMINMAXINDEX()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMINMAXINDEX(Records[Close],Time Period = 30) = [Array(outMinIdx),Array(outMaxIdx)]

talib.SUM

দ্যtalib.SUM()ফাংশন গণনা করতে ব্যবহৃত হয়সংক্ষিপ্তসার.

রিটার্ন মানtalib.SUM()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.SUM ((inReal) talib.SUM ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 30 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.SUM(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.SUM(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.SUM(records);
    Log(ret);
}

দ্যSUM()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃSUM(Records[Close],Time Period = 30) = Array(outReal)

talib.HT_DCPERIOD

দ্যtalib.HT_DCPERIOD()ফাংশন গণনা করতে ব্যবহৃত হয়হিলবার্টের রূপান্তর - প্রভাবশালী চক্রকাল (হিলবার্টের রূপান্তর, প্রভাবশালী সময়কাল).

রিটার্ন মানtalib.HT_DCPERIOD()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.HT_DCPERIOD ((inReal)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.HT_DCPERIOD(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.HT_DCPERIOD(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.HT_DCPERIOD(records);
    Log(ret);
}

দ্যHT_DCPERIOD()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃHT_DCPERIOD(Records[Close]) = Array(outReal)

talib.HT_DCPHASE

দ্যtalib.HT_DCPHASE()ফাংশন গণনা করতে ব্যবহৃত হয়হিলবার্টের রূপান্তর - প্রভাবশালী চক্রের ধাপ (হিলবার্টের রূপান্তর, প্রভাবশালী চক্রের ধাপ).

রিটার্ন মানtalib.HT_DCPHASE()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.HT_DCPHASE ((inReal)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.HT_DCPHASE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.HT_DCPHASE(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.HT_DCPHASE(records);
    Log(ret);
}

দ্যHT_DCPHASE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃHT_DCPHASE(Records[Close]) = Array(outReal)

talib.HT_PHASOR

দ্যtalib.HT_PHASOR()ফাংশন গণনা করতে ব্যবহৃত হয়হিলবার্ট ট্রান্সফর্ম - ফ্যাসর উপাদান (হিলবার্ট ট্রান্সফর্ম, ফেজ উপাদান).

রিটার্ন মানtalib.HT_PHASOR()ফাংশন একটি দ্বি-মাত্রিক অ্যারে। অ্যারে

talib.HT_PHASOR ((inReal)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.HT_PHASOR(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.HT_PHASOR(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.HT_PHASOR(records);
    Log(ret);
}

দ্যHT_PHASOR()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃHT_PHASOR(Records[Close]) = [Array(outInPhase),Array(outQuadrature)]

talib.HT_SINE

দ্যtalib.HT_SINE()ফাংশন গণনা করতে ব্যবহৃত হয়হিলবার্ট রূপান্তর - সাইনওয়েভ (হিলবার্ট রূপান্তর, সাইনওয়েভ).

রিটার্ন মানtalib.HT_SINE()ফাংশন হল: একটি দ্বি-মাত্রিক অ্যারে। অ্যারে

talib.HT_SINE ((inReal)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.HT_SINE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.HT_SINE(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.HT_SINE(records);
    Log(ret);
}

দ্যHT_SINE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃHT_SINE(Records[Close]) = [Array(outSine),Array(outLeadSine)]

talib.HT_TRENDMODE

দ্যtalib.HT_TRENDMODE()ফাংশন গণনা করতে ব্যবহৃত হয়হিলবার্টের রূপান্তর - প্রবণতা এবং চক্র মোড.

রিটার্ন মানtalib.HT_TRENDMODE()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.HT_TRENDMODE ((inReal)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.HT_TRENDMODE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.HT_TRENDMODE(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.HT_TRENDMODE(records);
    Log(ret);
}

দ্যHT_TRENDMODE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃHT_TRENDMODE(Records[Close]) = Array(outInteger)

talib.ATR

দ্যtalib.ATR()ফাংশন গণনা করতে ব্যবহৃত হয়গড় প্রকৃত পরিসীমা.

রিটার্ন মানtalib.ATR()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.ATR ((inPriceHLC) talib.ATR ((inPriceHLC, optInTimePeriod)

দ্যinPriceHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.ATR(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.ATR(records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.ATR(records);
    Log(ret);
}

দ্যATR()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃATR(Records[High,Low,Close],Time Period = 14) = Array(outReal)

talib.NATR

দ্যtalib.NATR()ফাংশন গণনা করতে ব্যবহৃত হয়স্বাভাবিক গড় প্রকৃত পরিসীমা.

রিটার্ন মানtalib.NATR()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.NATR ((inPriceHLC) talib.NATR ((inPriceHLC, optInTimePeriod)

দ্যinPriceHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.NATR(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.NATR(records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.NATR(records);
    Log(ret);
}

দ্যNATR()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃNATR(Records[High,Low,Close],Time Period = 14) = Array(outReal)

talib.TRANGE

দ্যtalib.TRANGE()ফাংশন গণনা করতে ব্যবহৃত হয়প্রকৃত পরিসীমা.

রিটার্ন মানtalib.TRANGE()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.TRANGE ((inPriceHLC)

দ্যinPriceHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.TRANGE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.TRANGE(records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.TRANGE(records);
    Log(ret);
}

দ্যTRANGE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃTRANGE(Records[High,Low,Close]) = Array(outReal)

talib.BBANDS

দ্যtalib.BBANDS()ফাংশন গণনা করতে ব্যবহৃত হয়বোলিংজার ব্যান্ড.

রিটার্ন মানtalib.BBANDS()ফাংশন হলঃ একটি দ্বি-মাত্রিক অ্যারে। অ্যারেতে তিনটি উপাদান রয়েছে যা হলঃ উপরের লাইন অ্যারে, মাঝের লাইন অ্যারে এবং নিম্ন লাইন অ্যারে। অ্যারে

তালেব.বি.বি.এন.ডি.এস. ((ইনরিয়াল)) talib.BBANDS ((inReal, optInTimePeriod) talib.BBANDS ((inReal, optInTimePeriod, optInNbDevUp) talib.BBANDS ((inReal, optInTimePeriod, optInNbDevUp, optInNbDevDn) talib.BBANDS ((inReal, optInTimePeriod, optInNbDevUp, optInNbDevDn, optInMAType)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 5 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা দ্যoptInNbDevUpপ্যারামিটারটি আপলাইন মাল্টিপ্লাইয়ার সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 2 হয়। optInNbDevUp মিথ্যা সংখ্যা দ্যoptInNbDevDnনিম্ন লাইন গুণক সেট করতে প্যারামিটার ব্যবহার করা হয়, ডিফল্ট মান 2 হয়। optInNbDevDn মিথ্যা সংখ্যা দ্যoptInMATypeপ্যারামিটার গড় টাইপ সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0 হয়। optInMAType মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.BBANDS(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.BBANDS(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.BBANDS(records);
    Log(ret);
}

দ্যBBANDS()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃBBANDS(Records[Close],Time Period = 5,Deviations up = 2,Deviations down = 2,MA Type = 0) = [Array(outRealUpperBand),Array(outRealMiddleBand),Array(outRealLowerBand)]

talib.DEMA

দ্যtalib.DEMA()ফাংশন গণনা করতে ব্যবহৃত হয়ডাবল এক্সপোনেনশিয়াল মুভিং মিডিয়া.

রিটার্ন মানtalib.DEMA()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.ডি.এ.এম.এ. ((ইনরিয়াল)) talib.DEMA ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 30 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.DEMA(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.DEMA(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.DEMA(records);
    Log(ret);
}

দ্যDEMA()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃDEMA(Records[Close],Time Period = 30) = Array(outReal)

talib.EMA

দ্যtalib.EMA()ফাংশন গণনা করতে ব্যবহৃত হয়এক্সপোনেনশিয়াল মুভিং মিডিয়া.

রিটার্ন মানtalib.EMA()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.ইএমএ ((ইনরিয়াল) talib.EMA ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 30 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.EMA(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.EMA(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.EMA(records);
    Log(ret);
}

দ্যEMA()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃEMA(Records[Close],Time Period = 30) = Array(outReal)

talib.HT_TRENDLINE

দ্যtalib.HT_TRENDLINE()ফাংশন গণনা করতে ব্যবহৃত হয়হিলবার্ট ট্রান্সফর্ম - তাত্ক্ষণিক ট্রেন্ডলাইন (হিলবার্ট ট্রান্সফর্ম, তাত্ক্ষণিক ট্রেন্ড).

রিটার্ন মানtalib.HT_TRENDLINE()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.HT_TRENDLINE ((inReal)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.HT_TRENDLINE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.HT_TRENDLINE(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.HT_TRENDLINE(records);
    Log(ret);
}

দ্যHT_TRENDLINE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃHT_TRENDLINE(Records[Close]) = Array(outReal)

talib.KAMA

দ্যtalib.KAMA()ফাংশন গণনা করতে ব্যবহৃত হয়কাফম্যান অভিযোজিত চলমান গড়.

রিটার্ন মানtalib.KAMA()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.কামা ((ইনরিয়াল) talib.KAMA ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 30 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.KAMA(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.KAMA(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.KAMA(records);
    Log(ret);
}

দ্যKAMA()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃKAMA(Records[Close],Time Period = 30) = Array(outReal)

talib.MA

দ্যtalib.MA()ফাংশন গণনা করতে ব্যবহৃত হয়চলমান গড়.

রিটার্ন মানtalib.MA()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.MA(অবাস্তব)talib.MA(inReal, optInTimePeriod)talib.MA(inReal, optInTimePeriod, optInMAType)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 30 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা দ্যoptInMATypeপ্যারামিটার গড় টাইপ সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0 হয়। optInMAType মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MA(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MA(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MA(records);
    Log(ret);
}

দ্যMA()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMA(Records[Close],Time Period = 30,MA Type = 0) = Array(outReal)

talib.MAMA

দ্যtalib.MAMA()ফাংশন গণনা করতে ব্যবহৃত হয়মেসা অ্যাডাপ্টিভ মুভিং এভারেজ.

রিটার্ন মানtalib.MAMA()ফাংশন হল: একটি দ্বি-মাত্রিক অ্যারে। অ্যারে

তালেব.মামা ((ইনরিয়াল) Talib.MAMA ((InReal, optInFastLimit) talib.MAMA ((inReal, optInFastLimit, optInSlowLimit)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInFastLimitফাস্ট লিমিট সেট করতে প্যারামিটার ব্যবহার করা হয়, ডিফল্ট মান 0.5 হয়। optInFastLimit মিথ্যা সংখ্যা দ্যoptInSlowLimitপ্যারামিটার ধীর সীমা সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0.05 হয়। optInSlowLimit মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MAMA(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MAMA(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MAMA(records);
    Log(ret);
}

দ্যMAMA()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMAMA(Records[Close],Fast Limit = 0.5,Slow Limit = 0.05) = [Array(outMAMA),Array(outFAMA)]

talib.MIDPOINT

দ্যtalib.MIDPOINT()ফাংশন গণনা করতে ব্যবহৃত হয়সময়কালের মাঝামাঝি সময় (মধ্য সময়).

রিটার্ন মানtalib.MIDPOINT()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.মিডপয়েন্ট ((ইনরিয়াল) talib.MIDPOINT ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MIDPOINT(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MIDPOINT(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MIDPOINT(records);
    Log(ret);
}

দ্যMIDPOINT()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMIDPOINT(Records[Close],Time Period = 14) = Array(outReal)

talib.MIDPRICE

দ্যtalib.MIDPRICE()ফাংশন গণনা করতে ব্যবহৃত হয়সময়কালের মধ্যবর্তী মূল্য (মধ্যবর্তী মূল্য).

রিটার্ন মানtalib.MIDPRICE()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.MIDPRICE ((inPriceHL) talib.MIDPRICE ((inPriceHL, optInTimePeriod)

দ্যinPriceHLপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHL সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MIDPRICE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MIDPRICE(records.High, records.Low)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MIDPRICE(records);
    Log(ret);
}

দ্যMIDPRICE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMIDPRICE(Records[High,Low],Time Period = 14) = Array(outReal)

talib.SAR

দ্যtalib.SAR()ফাংশন গণনা করতে ব্যবহৃত হয়প্যারাবোলিক এসএআর.

রিটার্ন মানtalib.SAR()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.SAR ((inPriceHL) talib.SAR ((inPriceHL, optInAcceleration) talib.SAR ((inPriceHL, optInAcceleration, optInMaximum)

দ্যinPriceHLপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHL সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInAccelerationপ্যারামিটারটি ত্বরণ ফ্যাক্টর সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0.02 হয়। অপ্ট ইনঅ্যাক্সেলেশন মিথ্যা সংখ্যা দ্যoptInMaximumপ্যারামিটারটি এএফ সর্বোচ্চ সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0.2 হয়। optInMaximum মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.SAR(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.SAR(records.High, records.Low)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.SAR(records);
    Log(ret);
}

দ্যSAR()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃSAR(Records[High,Low],Acceleration Factor = 0.02,AF Maximum = 0.2) = Array(outReal)

talib.SAREXT

দ্যtalib.SAREXT()ফাংশন গণনা করতে ব্যবহৃত হয়প্যারাবলিক SAR - প্রসারিত (উন্নত প্যারাবলিক স্টিয়ারিং).

রিটার্ন মানtalib.SAREXT()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.SAREXT ((inPriceHL) talib.SAREXT ((inPriceHL, optInStartValue) talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse) talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong) talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong, optInAccelerationLong) talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong, optInAccelerationLong, optInAccelerationMaxLong) talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong, optInAccelerationLong, optInAccelerationMaxLong, optInAccelerationInitShort) talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong, optInAccelerationLong, optInAccelerationMaxLong, optInAccelerationInitShort, optInAccelerationShort) talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong, optInAccelerationLong, optInAccelerationMaxLong, optInAccelerationInitShort, optInAccelerationShort, optInAccelerationMaxShort)

দ্যinPriceHLপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHL সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInStartValueপ্যারামিটার স্টার্ট মান সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0. optInStartValue নির্বাচন করুন মিথ্যা সংখ্যা দ্যoptInOffsetOnReverseপ্যারামিটার রিভার্স উপর অফসেট সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0 হয়. অপ্ট-ইন-অফসেট-অন-রিভার্স মিথ্যা সংখ্যা দ্যoptInAccelerationInitLongপ্যারামিটার AF Init Long সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0.02 হয়। optInAccelerationInitLong মিথ্যা সংখ্যা দ্যoptInAccelerationLongএএফ লং সেট করতে প্যারামিটার ব্যবহার করা হয়, ডিফল্ট মান 0.02 হয়। optInAccelerationলং মিথ্যা সংখ্যা দ্যoptInAccelerationMaxLongএএফ ম্যাক্স লং সেট করতে প্যারামিটার ব্যবহার করা হয়, ডিফল্ট মান 0.2 হয়। optInAccelerationMaxLong মিথ্যা সংখ্যা দ্যoptInAccelerationInitShortপ্যারামিটার AF Init Short সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0.02 হয়। অপ্ট-ইন-এক্সিলারেশন-ইন-ইট-শর্ট মিথ্যা সংখ্যা দ্যoptInAccelerationShortএএফ শর্ট সেট করতে প্যারামিটার ব্যবহার করা হয়, ডিফল্ট মান 0.02 হয়। অপ্ট-ইন অ্যাক্সেলেশন শর্ট মিথ্যা সংখ্যা দ্যoptInAccelerationMaxShortএএফ ম্যাক্স শর্ট সেট করতে প্যারামিটার ব্যবহার করা হয়, ডিফল্ট মান 0.2 হয়। optInAccelerationMaxShort (অ্যাক্সেলেশন ম্যাক্স শর্ট) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.SAREXT(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.SAREXT(records.High, records.Low)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.SAREXT(records);
    Log(ret);
}

দ্যSAREXT()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃSAREXT(Records[High,Low],Start Value = 0,Offset on Reverse = 0,AF Init Long = 0.02,AF Long = 0.02,AF Max Long = 0.2,AF Init Short = 0.02,AF Short = 0.02,AF Max Short = 0.2) = Array(outReal)

talib.SMA

দ্যtalib.SMA()ফাংশন গণনা করতে ব্যবহৃত হয়সরল চলমান গড়.

রিটার্ন মানtalib.SMA()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.এসএমএ ((ইনরিয়াল) talib.SMA ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 30 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.SMA(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.SMA(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.SMA(records);
    Log(ret);
}

দ্যSMA()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃSMA(Records[Close],Time Period = 30) = Array(outReal)

talib.T3

দ্যtalib.T3()ফাংশন গণনা করতে ব্যবহৃত হয়ট্রিপল এক্সপেনসিয়াল মুভিং মিডিয়ার (টি৩) (ট্রিপল এক্সপেনসিয়াল মুভিং মিডিয়ার).

রিটার্ন মানtalib.T3()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.টি3 ((ইনরিয়াল) talib.T3 ((inReal, optInTimePeriod) talib.T3 ((inReal, optInTimePeriod, optInVFactor)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 5 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা দ্যoptInVFactorভলিউম ফ্যাক্টর সেট করতে প্যারামিটার ব্যবহার করা হয়, ডিফল্ট মান 0.7 হয়। optInVFactor মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.T3(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.T3(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.T3(records);
    Log(ret);
}

দ্যT3()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃT3(Records[Close],Time Period = 5,Volume Factor = 0.7) = Array(outReal)

talib.TEMA

দ্যtalib.TEMA()ফাংশন গণনা করতে ব্যবহৃত হয়ট্রিপল এক্সপোনেনশিয়াল মুভিং মিডিয়ার.

রিটার্ন মানtalib.TEMA()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.TEMA ((inReal) talib.TEMA ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 30 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.TEMA(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.TEMA(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.TEMA(records);
    Log(ret);
}

দ্যTEMA()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃTEMA(Records[Close],Time Period = 30) = Array(outReal)

talib.TRIMA

দ্যtalib.TRIMA()ফাংশন গণনা করতে ব্যবহৃত হয়ত্রিভুজীয় চলমান গড় (ত্রি-বিস্তারিত চলমান গড়).

রিটার্ন মানtalib.TRIMA()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.টিআরআইএমএ ((ইনরিয়াল) talib.TRIMA ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 30 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.TRIMA(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.TRIMA(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.TRIMA(records);
    Log(ret);
}

দ্যTRIMA()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃTRIMA(Records[Close],Time Period = 30) = Array(outReal)

talib.WMA

দ্যtalib.WMA()ফাংশন গণনা করতে ব্যবহৃত হয়ওজনযুক্ত চলমান গড় (WMA).

রিটার্ন মানtalib.WMA()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.WMA ((inReal) talib.WMA ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 30 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.WMA(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.WMA(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.WMA(records);
    Log(ret);
}

দ্যWMA()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃWMA(Records[Close],Time Period = 30) = Array(outReal)

talib.LINEARREG

দ্যtalib.LINEARREG()ফাংশন গণনা করতে ব্যবহৃত হয়লিনিয়ার রিগ্রেশন.

রিটার্ন মানtalib.LINEARREG()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.LINEARREG ((ইনরিয়াল) talib.LINEARREG ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.LINEARREG(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.LINEARREG(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.LINEARREG(records);
    Log(ret);
}

দ্যLINEARREG()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃLINEARREG(Records[Close],Time Period = 14) = Array(outReal)

talib.LINEARREG_ANGLE

দ্যtalib.LINEARREG_ANGLE()ফাংশন গণনা করতে ব্যবহৃত হয়লিনিয়ার রিগ্রেশন এঙ্গেল.

রিটার্ন মানtalib.LINEARREG_ANGLE()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.LINEARREG_ANGLE ((inReal) talib.LINEARREG_ANGLE ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.LINEARREG_ANGLE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.LINEARREG_ANGLE(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.LINEARREG_ANGLE(records);
    Log(ret);
}

দ্যLINEARREG_ANGLE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃLINEARREG_ANGLE(Records[Close],Time Period = 14) = Array(outReal)

talib.LINEARREG_INTERCEPT

দ্যtalib.LINEARREG_INTERCEPT()ফাংশন গণনা করতে ব্যবহৃত হয়লিনিয়ার রিগ্রেশন ইন্টারসেপ্ট.

রিটার্ন মানtalib.LINEARREG_INTERCEPT()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.LINEARREG_INTERCEPT ((inReal) talib.LINEARREG_INTERCEPT ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.LINEARREG_INTERCEPT(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.LINEARREG_INTERCEPT(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.LINEARREG_INTERCEPT(records);
    Log(ret);
}

দ্যLINEARREG_INTERCEPT()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃLINEARREG_INTERCEPT(Records[Close],Time Period = 14) = Array(outReal)

talib.LINEARREG_SLOPE

দ্যtalib.LINEARREG_SLOPE()ফাংশন গণনা করতে ব্যবহৃত হয়লিনিয়ার রিগ্রেশন স্লিপ.

রিটার্ন মানtalib.LINEARREG_SLOPE()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.LINEARREG_SLOPE ((inReal) talib.LINEARREG_SLOPE ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.LINEARREG_SLOPE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.LINEARREG_SLOPE(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.LINEARREG_SLOPE(records);
    Log(ret);
}

দ্যLINEARREG_SLOPE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃLINEARREG_SLOPE(Records[Close],Time Period = 14) = Array(outReal)

talib.STDDEV

দ্যtalib.STDDEV()ফাংশন গণনা করতে ব্যবহৃত হয়স্ট্যান্ডার্ড ডিভিয়েশন.

রিটার্ন মানtalib.STDDEV()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.এস.টি.ডি.ডি.ই.ভি. ((ইনরিয়াল)) talib.STDDEV ((inReal, optInTimePeriod) talib.STDDEV ((inReal, optInTimePeriod, optInNbDev)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 5 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা দ্যoptInNbDevপ্যারামিটার ডিভিয়েশন সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 1 হয়. optInNbDev মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.STDDEV(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.STDDEV(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.STDDEV(records);
    Log(ret);
}

দ্যSTDDEV()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃSTDDEV(Records[Close],Time Period = 5,Deviations = 1) = Array(outReal)

talib.TSF

দ্যtalib.TSF()ফাংশন গণনা করতে ব্যবহৃত হয়টাইম সিরিজ পূর্বাভাস.

রিটার্ন মানtalib.TSF()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.TSF ((inReal) talib.TSF ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.TSF(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.TSF(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.TSF(records);
    Log(ret);
}

দ্যTSF()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃTSF(Records[Close],Time Period = 14) = Array(outReal)

talib.VAR

দ্যtalib.VAR()ফাংশন গণনা করতে ব্যবহৃত হয়বৈচিত্র্য.

রিটার্ন মানtalib.VAR()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.VAR ((inReal) talib.VAR ((inReal, optInTimePeriod) talib.VAR ((inReal, optInTimePeriod, optInNbDev)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 5 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা দ্যoptInNbDevপ্যারামিটার ডিভিয়েশন সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 1 হয়. optInNbDev মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.VAR(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.VAR(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.VAR(records);
    Log(ret);
}

দ্যVAR()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃVAR(Records[Close],Time Period = 5,Deviations = 1) = Array(outReal)

talib.ADX

দ্যtalib.ADX()ফাংশন গণনা করতে ব্যবহৃত হয়গড় দিকনির্দেশক আন্দোলন সূচক.

রিটার্ন মানtalib.ADX()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.ADX ((inPriceHLC) talib.ADX ((inPriceHLC, optInTimePeriod)

দ্যinPriceHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.ADX(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.ADX(records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.ADX(records);
    Log(ret);
}

দ্যADX()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃADX(Records[High,Low,Close],Time Period = 14) = Array(outReal)

talib.ADXR

দ্যtalib.ADXR()ফাংশন গণনা করতে ব্যবহৃত হয়গড় দিকনির্দেশক আন্দোলনের সূচক রেটিং (মূল্যায়ন সূচক).

রিটার্ন মানtalib.ADXR()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.ADXR ((inPriceHLC) talib.ADXR ((inPriceHLC, optInTimePeriod)

দ্যinPriceHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.ADXR(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.ADXR(records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.ADXR(records);
    Log(ret);
}

দ্যADXR()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃADXR(Records[High,Low,Close],Time Period = 14) = Array(outReal)

talib.APO

দ্যtalib.APO()ফাংশন গণনা করতে ব্যবহৃত হয়পরম মূল্য দোলক.

রিটার্ন মানtalib.APO()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.এ.পি.ও. ((ইনরিয়াল) talib.APO ((inReal, optInFastPeriod) talib.APO ((inReal, optInFastPeriod, optInSlowPeriod) talib.APO ((inReal, optInFastPeriod, optInSlowPeriod, optInMAType)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInFastPeriodপ্যারামিটার দ্রুত সময়ের সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 12 হয়। optInFastPeriod মিথ্যা সংখ্যা দ্যoptInSlowPeriodপ্যারামিটার ধীর সময়ের সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 26 হয়। optInSlowPeriod মিথ্যা সংখ্যা দ্যoptInMATypeপ্যারামিটার গড় টাইপ সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0 হয়। optInMAType মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.APO(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.APO(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.APO(records);
    Log(ret);
}

দ্যAPO()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃAPO(Records[Close],Fast Period = 12,Slow Period = 26,MA Type = 0) = Array(outReal)

talib.AROON

দ্যtalib.AROON()ফাংশন গণনা করতে ব্যবহৃত হয়Aroon (Aroon সূচক).

রিটার্ন মানtalib.AROON()ফাংশন একটি দ্বি-মাত্রিক অ্যারে। অ্যারে

তালেব.আরুন ((ইনপ্রাইসএইচএল) talib.AROON ((inPriceHL, optInTimePeriod)

দ্যinPriceHLপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHL সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.AROON(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.AROON(records.High, records.Low)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.AROON(records);
    Log(ret);
}

দ্যAROON()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃAROON(Records[High,Low],Time Period = 14) = [Array(outAroonDown),Array(outAroonUp)]

talib.AROONOSC

দ্যtalib.AROONOSC()ফাংশন গণনা করতে ব্যবহৃত হয়অ্যারুন দোলক.

রিটার্ন মানtalib.AROONOSC()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.AROONOSC ((inPriceHL) talib.AROONOSC ((PriceHL, optInTimePeriod)

দ্যinPriceHLপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHL সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.AROONOSC(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.AROONOSC(records.High, records.Low)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.AROONOSC(records);
    Log(ret);
}

দ্যAROONOSC()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃAROONOSC(Records[High,Low],Time Period = 14) = Array(outReal)

talib.BOP

দ্যtalib.BOP()ফাংশন গণনা করতে ব্যবহৃত হয়শক্তির ভারসাম্য.

রিটার্ন মানtalib.BOP()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.BOP ((inPriceOHLC)

দ্যinPriceOHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceOHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.BOP(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.BOP(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.BOP(records);
    Log(ret);
}

দ্যBOP()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃBOP(Records[Open,High,Low,Close]) = Array(outReal)

talib.CCI

দ্যtalib.CCI()ফাংশন গণনা করতে ব্যবহৃত হয়কমোডিটি চ্যানেল ইনডেক্স (হোমিওপ্যাথিক সূচক).

রিটার্ন মানtalib.CCI()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.CCI ((inPriceHLC) talib.CCI ((inPriceHLC, optInTimePeriod)

দ্যinPriceHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CCI(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CCI(records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CCI(records);
    Log(ret);
}

দ্যCCI()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCCI(Records[High,Low,Close],Time Period = 14) = Array(outReal)

talib.CMO

দ্যtalib.CMO()ফাংশন গণনা করতে ব্যবহৃত হয়চ্যান্ডে মম্পটাম অ্যাসিললেটর (সিএমও).

রিটার্ন মানtalib.CMO()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

তালেব.সিএমও ((ইনরিয়াল) talib.CMO ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.CMO(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.CMO(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.CMO(records);
    Log(ret);
}

দ্যCMO()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃCMO(Records[Close],Time Period = 14) = Array(outReal)

talib.DX

দ্যtalib.DX()ফাংশন গণনা করতে ব্যবহৃত হয়দিকনির্দেশক আন্দোলন সূচক.

রিটার্ন মানtalib.DX()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.DX ((inPriceHLC) talib.DX ((inPriceHLC, optInTimePeriod)

দ্যinPriceHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.DX(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.DX(records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.DX(records);
    Log(ret);
}

দ্যDX()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃDX(Records[High,Low,Close],Time Period = 14) = Array(outReal)

talib.MACD

দ্যtalib.MACD()ফাংশন গণনা করতে ব্যবহৃত হয়চলমান গড় ঘনিষ্ঠতা/বিচ্যুতি (উপমানীয়ভাবে মসৃণ চলমান গড়).

রিটার্ন মানtalib.MACD()ফাংশন হল: একটি দ্বি-মাত্রিক অ্যারে। অ্যারে

talib.MACD ((inReal) talib.MACD ((inReal, optInFastPeriod) talib.MACD ((inReal, optInFastPeriod, optInSlowPeriod) talib.MACD ((inReal, optInFastPeriod, optInSlowPeriod, optInSignalPeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInFastPeriodপ্যারামিটার দ্রুত সময়ের সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 12 হয়। optInFastPeriod মিথ্যা সংখ্যা দ্যoptInSlowPeriodপ্যারামিটার ধীর সময়ের সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 26 হয়। optInSlowPeriod মিথ্যা সংখ্যা দ্যoptInSignalPeriodপ্যারামিটার সংকেত সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 9 হয়। সিগন্যাল পেরিওড মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MACD(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MACD(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MACD(records);
    Log(ret);
}

দ্যMACD()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMACD(Records[Close],Fast Period = 12,Slow Period = 26,Signal Period = 9) = [Array(outMACD),Array(outMACDSignal),Array(outMACDHist)]

talib.MACDEXT

দ্যtalib.MACDEXT()ফাংশন গণনা করতে ব্যবহৃত হয়নিয়ন্ত্রণযোগ্য এমএ টাইপ সহ এমএসিডি.

রিটার্ন মানtalib.MACDEXT()ফাংশন একটি দ্বি-মাত্রিক অ্যারে। অ্যারে

তালেব.ম্যাকডেক্সট (অবাস্তব) talib.MACDEXT ((inReal, optInFastPeriod) talib.MACDEXT ((inReal, optInFastPeriod, optInFastMAType) talib.MACDEXT ((inReal, optInFastPeriod, optInFastMAType, optInSlowPeriod) talib.MACDEXT ((inReal, optInFastPeriod, optInFastMAType, optInSlowPeriod, optInSlowMAType) talib.MACDEXT ((inReal, optInFastPeriod, optInFastMAType, optInSlowPeriod, optInSlowMAType, optInSignalPeriod) talib.MACDEXT ((inReal, optInFastPeriod, optInFastMAType, optInSlowPeriod, optInSlowMAType, optInSignalPeriod, optInSignalMAType)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInFastPeriodপ্যারামিটার দ্রুত সময়ের সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 12 হয়। optInFastPeriod মিথ্যা সংখ্যা দ্যoptInFastMATypeপ্যারামিটার দ্রুত গড় টাইপ সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0 হয়। optInFastMAType মিথ্যা সংখ্যা দ্যoptInSlowPeriodপ্যারামিটার ধীর সময়ের সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 26 হয়। optInSlowPeriod মিথ্যা সংখ্যা দ্যoptInSlowMATypeপ্যারামিটার ধীর গড় টাইপ সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0 হয়। optInSlowMAType মিথ্যা সংখ্যা দ্যoptInSignalPeriodপ্যারামিটার সংকেত সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 9 হয়। সিগন্যাল পেরিওড মিথ্যা সংখ্যা দ্যoptInSignalMATypeপ্যারামিটারটি সিগন্যালের গড় টাইপ সেট করতে ব্যবহৃত হয়, ডিফল্ট মান হল ০। optInSignalMAType মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MACDEXT(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MACDEXT(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MACDEXT(records);
    Log(ret);
}

দ্যMACDEXT()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMACDEXT(Records[Close],Fast Period = 12,Fast MA = 0,Slow Period = 26,Slow MA = 0,Signal Period = 9,Signal MA = 0) = [Array(outMACD),Array(outMACDSignal),Array(outMACDHist)]

talib.MACDFIX

দ্যtalib.MACDFIX()ফাংশন গণনা করতে ব্যবহৃত হয়চলমান গড় কনভার্জেন্স/ডিভার্জেন্স ফিক্স 12/26.

রিটার্ন মানtalib.MACDFIX()ফাংশন একটি দ্বি-মাত্রিক অ্যারে। অ্যারে

তালেব.ম্যাকডিফিক্স (অনুষ্ঠানিক) talib.MACDFIX ((inReal, optInSignalPeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInSignalPeriodপ্যারামিটার সংকেত সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 9 হয়। সিগন্যাল পেরিওড মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MACDFIX(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MACDFIX(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MACDFIX(records);
    Log(ret);
}

দ্যMACDFIX()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMACDFIX(Records[Close],Signal Period = 9) = [Array(outMACD),Array(outMACDSignal),Array(outMACDHist)]

talib.MFI

দ্যtalib.MFI()ফাংশন গণনা করতে ব্যবহৃত হয়নগদ প্রবাহ সূচক.

রিটার্ন মানtalib.MFI()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.MFI ((inPriceHLCV) talib.MFI ((inPriceHLCV, optInTimePeriod)

দ্যinPriceHLCVপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLCV সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MFI(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MFI(records.High, records.Low, records.Close, records.Volume)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MFI(records);
    Log(ret);
}

দ্যMFI()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMFI(Records[High,Low,Close,Volume],Time Period = 14) = Array(outReal)

talib.MINUS_DI

দ্যtalib.MINUS_DI()ফাংশন গণনা করতে ব্যবহৃত হয়বিয়োগ দিকনির্দেশক (নেগেটিভ নির্দেশক).

রিটার্ন মানtalib.MINUS_DI()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.MINUS_DI ((inPriceHLC) talib.MINUS_DI ((inPriceHLC, optInTimePeriod)

দ্যinPriceHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MINUS_DI(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MINUS_DI(records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MINUS_DI(records);
    Log(ret);
}

দ্যMINUS_DI()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMINUS_DI(Records[High,Low,Close],Time Period = 14) = Array(outReal)

talib.MINUS_DM

দ্যtalib.MINUS_DM()ফাংশন গণনা করতে ব্যবহৃত হয়বিয়োগ দিকনির্দেশক আন্দোলন (নেতিবাচক আন্দোলন).

রিটার্ন মানtalib.MINUS_DM()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.MINUS_DM ((inPriceHL) talib.MINUS_DM ((inPriceHL, optInTimePeriod)

দ্যinPriceHLপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHL সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MINUS_DM(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MINUS_DM(records.High, records.Low)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MINUS_DM(records);
    Log(ret);
}

দ্যMINUS_DM()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMINUS_DM(Records[High,Low],Time Period = 14) = Array(outReal)

talib.MOM

দ্যtalib.MOM()ফাংশন গণনা করতে ব্যবহৃত হয়গতি.

রিটার্ন মানtalib.MOM()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

তালেব.মোম ((ইনরিয়াল) তালেব.মোম ((ইনরিয়াল, অপ্টইনটাইমপেরিওড)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 10 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MOM(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MOM(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MOM(records);
    Log(ret);
}

দ্যMOM()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMOM(Records[Close],Time Period = 10) = Array(outReal)

talib.PLUS_DI

দ্যtalib.PLUS_DI()ফাংশন গণনা করতে ব্যবহৃত হয়প্লাস দিকনির্দেশক.

রিটার্ন মানtalib.PLUS_DI()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.PLUS_DI ((inPriceHLC) talib.PLUS_DI ((inPriceHLC, optInTimePeriod)

দ্যinPriceHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.PLUS_DI(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.PLUS_DI(records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.PLUS_DI(records);
    Log(ret);
}

দ্যPLUS_DI()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃPLUS_DI(Records[High,Low,Close],Time Period = 14) = Array(outReal)

talib.PLUS_DM

দ্যtalib.PLUS_DM()ফাংশন গণনা করতে ব্যবহৃত হয়প্লাস দিকনির্দেশক আন্দোলন.

রিটার্ন মানtalib.PLUS_DM()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.PLUS_DM ((inPriceHL) talib.PLUS_DM ((inPriceHL, optInTimePeriod)

দ্যinPriceHLপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHL সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.PLUS_DM(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.PLUS_DM(records.High, records.Low)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.PLUS_DM(records);
    Log(ret);
}

দ্যPLUS_DM()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃPLUS_DM(Records[High,Low],Time Period = 14) = Array(outReal)

talib.PPO

দ্যtalib.PPO()ফাংশন গণনা করতে ব্যবহৃত হয়পারসেন্ট প্রাইস ওসিলেটর.

রিটার্ন মানtalib.PPO()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.PPO ((inReal) talib.PPO ((inReal, optInFastPeriod) talib.PPO ((inReal, optInFastPeriod, optInSlowPeriod) talib.PPO ((inReal, optInFastPeriod, optInSlowPeriod, optInMAType)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInFastPeriodপ্যারামিটার দ্রুত সময়ের সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 12 হয়। optInFastPeriod মিথ্যা সংখ্যা দ্যoptInSlowPeriodপ্যারামিটার ধীর সময়ের সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 26 হয়। optInSlowPeriod মিথ্যা সংখ্যা দ্যoptInMATypeপ্যারামিটার গড় টাইপ সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0 হয়। optInMAType মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.PPO(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.PPO(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.PPO(records);
    Log(ret);
}

দ্যPPO()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃPPO(Records[Close],Fast Period = 12,Slow Period = 26,MA Type = 0) = Array(outReal)

talib.ROC

দ্যtalib.ROC()ফাংশন গণনা করতে ব্যবহৃত হয়পরিবর্তনের হারঃ ((মূল্য/পূর্ববর্তী মূল্য) -১) * ১০০ (পরিবর্তনের হার).

রিটার্ন মানtalib.ROC()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.ROC ((inReal) talib.ROC ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 10 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.ROC(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.ROC(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.ROC(records);
    Log(ret);
}

দ্যROC()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃROC(Records[Close],Time Period = 10) = Array(outReal)

talib.ROCP

দ্যtalib.ROCP()ফাংশন গণনা করতে ব্যবহৃত হয়পরিবর্তনের হার শতাংশঃ (মূল্য-prevPrice) /prevPrice (মূল্য পরিবর্তনের হার).

রিটার্ন মানtalib.ROCP()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.ROCP ((inReal) talib.ROCP ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 10 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.ROCP(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.ROCP(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.ROCP(records);
    Log(ret);
}

দ্যROCP()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃROCP(Records[Close],Time Period = 10) = Array(outReal)

talib.ROCR

দ্যtalib.ROCR()ফাংশন গণনা করতে ব্যবহৃত হয়পরিবর্তনের হার অনুপাতঃ (মূল্য/পূর্বমূল্য) (মূল্য পরিবর্তনের অনুপাত).

রিটার্ন মানtalib.ROCR()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.ROCR ((inReal) talib.ROCR ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 10 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.ROCR(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.ROCR(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.ROCR(records);
    Log(ret);
}

দ্যROCR()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃROCR(Records[Close],Time Period = 10) = Array(outReal)

talib.ROCR100

দ্যtalib.ROCR100()ফাংশন গণনা করতে ব্যবহৃত হয়পরিবর্তনের হার অনুপাত ১০০ স্কেলঃ (মূল্য/পূর্বমূল্য) *১০০ (মূল্য পরিবর্তনের অনুপাত).

রিটার্ন মানtalib.ROCR100()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.ROCR100 ((inReal) talib.ROCR100 ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 10 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.ROCR100(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.ROCR100(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.ROCR100(records);
    Log(ret);
}

দ্যROCR100()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃROCR100(Records[Close],Time Period = 10) = Array(outReal)

talib.RSI

দ্যtalib.RSI()ফাংশন গণনা করতে ব্যবহৃত হয়আপেক্ষিক শক্তি সূচক.

রিটার্ন মানtalib.RSI()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.RSI ((inReal) talib.RSI ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.RSI(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.RSI(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.RSI(records);
    Log(ret);
}

দ্যRSI()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃRSI(Records[Close],Time Period = 14) = Array(outReal)

talib.STOCH

দ্যtalib.STOCH()ফাংশন গণনা করতে ব্যবহৃত হয়স্টোক্যাস্টিক (STOCH সূচক).

রিটার্ন মানtalib.STOCH()ফাংশন একটি দ্বি-মাত্রিক অ্যারে। অ্যারে

talib.STOCH ((inPriceHLC) talib.STOCH ((inPriceHLC, optInFastK_Period) talib.STOCH ((inPriceHLC, optInFastK_Period, optInSlowK_Period) talib.STOCH ((inPriceHLC, optInFastK_Period, optInSlowK_Period, optInSlowK_MAType) talib.STOCH ((inPriceHLC, optInFastK_Period, optInSlowK_Period, optInSlowK_MAType, optInSlowD_Period) talib.STOCH ((inPriceHLC, optInFastK_Period, optInSlowK_Period, optInSlowK_MAType, optInSlowD_Period, optInSlowD_MAType)

দ্যinPriceHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInFastK_Periodপ্যারামিটার Fast-K সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 5 হয়। optInFastK_Period মিথ্যা সংখ্যা দ্যoptInSlowK_Periodপ্যারামিটার Slow-K সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 3 হয়। optInSlowK_Period মিথ্যা সংখ্যা দ্যoptInSlowK_MATypeপ্যারামিটার Slow-K গড় টাইপ সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0 হয়। optInSlowK_MAType মিথ্যা সংখ্যা দ্যoptInSlowD_Periodপ্যারামিটার Slow-D সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 3 হয়। optInSlowD_Period নির্বাচন করুন মিথ্যা সংখ্যা দ্যoptInSlowD_MATypeপ্যারামিটার Slow-D গড় টাইপ সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 0 হয়। optInSlowD_MAType মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.STOCH(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.STOCH(records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.STOCH(records);
    Log(ret);
}

দ্যSTOCH()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃSTOCH(Records[High,Low,Close],Fast-K Period = 5,Slow-K Period = 3,Slow-K MA = 0,Slow-D Period = 3,Slow-D MA = 0) = [Array(outSlowK),Array(outSlowD)]

talib.STOCHF

দ্যtalib.STOCHF()ফাংশন গণনা করতে ব্যবহৃত হয়স্টোকাস্টিক ফাস্ট (দ্রুত স্টোক সূচক).

রিটার্ন মানtalib.STOCHF()ফাংশন একটি দ্বি-মাত্রিক অ্যারে। অ্যারে

talib.STOCHF ((inPriceHLC) talib.STOCHF ((inPriceHLC, optInFastK_Period) talib.STOCHF ((inPriceHLC, optInFastK_Period, optInFastD_Period) talib.STOCHF ((inPriceHLC, optInFastK_Period, optInFastD_Period, optInFastD_MAType)

দ্যinPriceHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInFastK_Periodপ্যারামিটার Fast-K সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 5 হয়। optInFastK_Period মিথ্যা সংখ্যা দ্যoptInFastD_Periodফাস্ট-ডি সময়কাল সেট করতে প্যারামিটার ব্যবহার করা হয়, ডিফল্ট মান 3 হয়। optInFastD_Period মিথ্যা সংখ্যা দ্যoptInFastD_MATypeপ্যারামিটারটি ফাস্ট-ডি গড় টাইপ সেট করতে ব্যবহৃত হয়, ডিফল্ট মান হল ০। optInFastD_MAType মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.STOCHF(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.STOCHF(records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.STOCHF(records);
    Log(ret);
}

দ্যSTOCHF()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃSTOCHF(Records[High,Low,Close],Fast-K Period = 5,Fast-D Period = 3,Fast-D MA = 0) = [Array(outFastK),Array(outFastD)]

talib.STOCHRSI

দ্যtalib.STOCHRSI()ফাংশন গণনা করতে ব্যবহৃত হয়স্টোকাস্টিক রিলেটিভ স্ট্রেনথ ইনডেক্স.

রিটার্ন মানtalib.STOCHRSI()ফাংশন হল: একটি দ্বি-মাত্রিক অ্যারে। অ্যারে

তালেব.স্টোচআরসি ((ইনরিয়েল) talib.STOCHRSI ((inReal, optInTimePeriod) talib.STOCHRSI ((inReal, optInTimePeriod, optInFastK_Period) talib.STOCHRSI ((inReal, optInTimePeriod, optInFastK_Period, optInFastD_Period) talib.STOCHRSI ((inReal, optInTimePeriod, optInFastK_Period, optInFastD_Period, optInFastD_MAType)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা দ্যoptInFastK_Periodপ্যারামিটার Fast-K সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 5 হয়। optInFastK_Period মিথ্যা সংখ্যা দ্যoptInFastD_Periodফাস্ট-ডি সময়কাল সেট করতে প্যারামিটার ব্যবহার করা হয়, ডিফল্ট মান 3 হয়। optInFastD_Period মিথ্যা সংখ্যা দ্যoptInFastD_MATypeপ্যারামিটারটি ফাস্ট-ডি গড় টাইপ সেট করতে ব্যবহৃত হয়, ডিফল্ট মান হল ০। optInFastD_MAType মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.STOCHRSI(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.STOCHRSI(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.STOCHRSI(records);
    Log(ret);
}

দ্যSTOCHRSI()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃSTOCHRSI(Records[Close],Time Period = 14,Fast-K Period = 5,Fast-D Period = 3,Fast-D MA = 0) = [Array(outFastK),Array(outFastD)]

talib.TRIX

দ্যtalib.TRIX()ফাংশন গণনা করতে ব্যবহৃত হয়ট্রিপল স্মুথ ইএমএর ১ দিনের রেট অফ চেঞ্জ (আরওসি).

রিটার্ন মানtalib.TRIX()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.TRIX ((inReal) talib.TRIX ((inReal, optInTimePeriod)

দ্যinRealপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। বাস্তব সত্য {@struct/Record Record} কাঠামো অ্যারে, সংখ্যাসূচক অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 30 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.TRIX(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.TRIX(records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.TRIX(records);
    Log(ret);
}

দ্যTRIX()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃTRIX(Records[Close],Time Period = 30) = Array(outReal)

talib.ULTOSC

দ্যtalib.ULTOSC()ফাংশন গণনা করতে ব্যবহৃত হয়চূড়ান্ত দোলক.

রিটার্ন মানtalib.ULTOSC()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.ULTOSC ((inPriceHLC) talib.ULTOSC ((inPriceHLC, optInTimePeriod1) talib.ULTOSC ((inPriceHLC, optInTimePeriod1, optInTimePeriod2) talib.ULTOSC ((inPriceHLC, optInTimePeriod1, optInTimePeriod2, optInTimePeriod3)

দ্যinPriceHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriod1প্যারামিটারটি প্রথম প্যারামিটার সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 7 হয়। optInTimePeriod1 মিথ্যা সংখ্যা দ্যoptInTimePeriod2প্যারামিটারটি দ্বিতীয় সময়সীমা সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod2 মিথ্যা সংখ্যা দ্যoptInTimePeriod3প্যারামিটারটি তৃতীয় সময়ের সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 28 হয়। optInTimePeriod3 মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.ULTOSC(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.ULTOSC(records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.ULTOSC(records);
    Log(ret);
}

দ্যULTOSC()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃULTOSC(Records[High,Low,Close],First Period = 7,Second Period = 14,Third Period = 28) = Array(outReal)

talib.WILLR

দ্যtalib.WILLR()ফাংশন গণনা করতে ব্যবহৃত হয়উইলিয়ামস %R.

রিটার্ন মানtalib.WILLR()ফাংশন হল: এক মাত্রিক অ্যারে। অ্যারে

talib.WILLR ((inPriceHLC) talib.WILLR ((inPriceHLC, optInTimePeriod)

দ্যinPriceHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে দ্যoptInTimePeriodপ্যারামিটারটি সময়কাল সেট করতে ব্যবহৃত হয়, ডিফল্ট মান 14 হয়। optInTimePeriod (সময়সীমা) মিথ্যা সংখ্যা

function main() {
    var records = exchange.GetRecords()
    var ret = talib.WILLR(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.WILLR(records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.WILLR(records);
    Log(ret);
}```

The ```WILLR()``` function is described in the talib library documentation as: ```WILLR(Records[High,Low,Close],Time Period = 14) = Array(outReal)```

### talib.AVGPRICE

The ```talib.AVGPRICE()``` function is used to calculate **Average Price**.

The return value of the ```talib.AVGPRICE()``` function is a one-dimensional array.
array

talib.AVGPRICE(inPriceOHLC)

The ```inPriceOHLC``` parameter is used to specify the K-line data.
inPriceOHLC
true
{@struct/Record Record} structure array

```javascript
function main() {
    var records = exchange.GetRecords()
    var ret = talib.AVGPRICE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.AVGPRICE(records.Open, records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.AVGPRICE(records);
    Log(ret);
}

দ্যAVGPRICE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃAVGPRICE(Records[Open,High,Low,Close]) = Array(outReal)

talib.MEDPRICE

দ্যtalib.MEDPRICE()ফাংশন গণনা করতে ব্যবহৃত হয়মধ্যম মূল্য.

রিটার্ন মানtalib.MEDPRICE()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.MEDPRICE ((inPriceHL)

দ্যinPriceHLপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHL সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.MEDPRICE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.MEDPRICE(records.High, records.Low)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.MEDPRICE(records);
    Log(ret);
}

দ্যMEDPRICE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃMEDPRICE(Records[High,Low]) = Array(outReal)

talib.TYPPRICE

দ্যtalib.TYPPRICE()ফাংশন গণনা করতে ব্যবহৃত হয়সাধারণ মূল্য.

রিটার্ন মানtalib.TYPPRICE()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.TYPPRICE ((inPriceHLC)

দ্যinPriceHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.TYPPRICE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.TYPPRICE(records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.TYPPRICE(records);
    Log(ret);
}

দ্যTYPPRICE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃTYPPRICE(Records[High,Low,Close]) = Array(outReal)

talib.WCLPRICE

দ্যtalib.WCLPRICE()ফাংশন গণনা করতে ব্যবহৃত হয়ওজনযুক্ত বন্ধের মূল্য.

রিটার্ন মানtalib.WCLPRICE()ফাংশন একটি এক-মাত্রিক অ্যারে। অ্যারে

talib.WCLPRICE ((inPriceHLC)

দ্যinPriceHLCপ্যারামিটারটি কে-লাইন ডেটা নির্দিষ্ট করতে ব্যবহৃত হয়। inPriceHLC সত্য {@struct/Record Record} স্ট্রাকচার অ্যারে

function main() {
    var records = exchange.GetRecords()
    var ret = talib.WCLPRICE(records)
    Log(ret)
}
import talib
def main():
    records = exchange.GetRecords()
    ret = talib.WCLPRICE(records.High, records.Low, records.Close)
    Log(ret)
void main() {
    auto records = exchange.GetRecords();
    auto ret = talib.WCLPRICE(records);
    Log(ret);
}

দ্যWCLPRICE()ফাংশনটি তালিব লাইব্রেরির ডকুমেন্টেশনে বর্ণনা করা হয়েছেঃWCLPRICE(Records[High,Low,Close]) = Array(outReal)

গঠন