উদ্ভাবক API নথিপত্রের পরিমাণ

লেখক:ছোট্ট স্বপ্ন, তৈরিঃ 2017-11-27 09:05:08, আপডেটঃ 2023-07-12 16:47:31

ইভেন্টলুপের নজরদারি প্রক্রিয়া শুরু হওয়ার পরই আমরা এই ঘটনাগুলি মিস করেছি। // প্রথম লাইন কোড এ EventLoop ((-1) কল করা শুরু না করা পর্যন্ত, ইভেন্টলুপের শোনার প্রক্রিয়াটি প্রথমে ইনস্টল না করা পর্যন্ত এই ইভেন্টগুলি মিস করা হবে না।

// Log("GetDepth:", routine_getDepth.wait()) 如果这里提前调用wait函数取出GetDepth函数并发调用的结果,此次GetDepth函数收到请求结果的事件便不会在EventLoop函数返回
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("第1个并发任务完成的为:", _D(ts1), ret1)
Log("第2个并发任务完成的为:", _D(ts2), ret2)
Log("第3个并发任务完成的为:", _D(ts3), ret3)

Log("GetTicker:", routine_getTicker.wait())
Log("GetDepth:", routine_getDepth.wait())
Log("GetTrades:", routine_getTrades.wait())

}


```python
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("第1个并发任务完成的为:", _D(ts1), ret1)
    Log("第2个并发任务完成的为:", _D(ts2), ret2)
    Log("第3个并发任务完成的为:", _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("第1个并发任务完成的为:", _D(ts1), ret1);
    Log("第2个并发任务完成的为:", _D(ts2), ret2);
    Log("第3个并发任务完成的为:", _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);
}

অন্তর্নির্মিত ফাংশন

_G(K, V)

_G(K, V)এই ফাংশনটি একটি সংরক্ষণযোগ্য গ্লোবাল ডিকশনারি ফাংশন বাস্তবায়ন করে, যা পুনরায় পরীক্ষা এবং ভার্চুয়াল ডিস্ক উভয়ই সমর্থন করে। পুনরায় পরীক্ষা শেষ হওয়ার পরে, সংরক্ষিত ডেটা মুছে ফেলা হয়। ডাটা কাঠামোKVটেবিল, স্থায়ীভাবে স্থানীয়ভাবে সংরক্ষিত ফাইল, প্রতিটি ডিস্কের জন্য একটি পৃথক ডাটাবেস, পুনরায় চালু বা হোস্ট লগ আউট পরে বিদ্যমান।Kএটি একটি স্ট্রিং হিসাবে লিখতে হবে, ছোট বা বড় কোন পার্থক্য নেই।Vযে কোন কিছুর জন্যJSONক্রমিক বিষয়বস্তু._G()ফাংশনটি যখন কোন প্যারামিটার পাঠায় না, তখন_G()ফাংশনটি বর্তমান ডিস্ককে ফেরত দেয়ID

function main(){
    // 设置一个全局变量num,值为1
    _G("num", 1)     
    // 更改一个全局变量num,值为字符串ok
    _G("num", "ok")    
    // 删除全局变量num
    _G("num", null)
    // 返回全局变量num的值
    Log(_G("num"))
    // 删除所有全局变量
    _G(null)
    // 返回实盘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);
    // 不支持 auto robotId = _G();
}

সতর্কতাঃ ব্যবহার_Gফাংশনাল স্থায়ী স্টোরেজ ডেটা হার্ডওয়্যার ডিভাইসের মেমরি, হার্ড ডিস্কের জায়গার যুক্তিসঙ্গত ব্যবহারের ভিত্তিতে ব্যবহার করা উচিত এবং অপব্যবহার করা উচিত নয়; অন্যথায় ক্ষতি হতে পারে।মেমরির ফাঁকপ্রশ্নটি হলো-

_D ((টাইমস্ট্যাম্প, Fmt)

_D(Timestamp, Fmt), নির্দিষ্ট টাইমিং প্যাডের সাথে সংশ্লিষ্ট টাইমিং স্ট্রিং ফেরত দেয়.Timestampমান টাইপ করার জন্য, মানটি হবে মিলিসেকেন্ডের সংখ্যা ।Fmtস্ট্রিং টাইপ করার জন্য,Fmt"এটি একটি দুর্ভাগ্যজনক ঘটনা।yyyy-MM-dd hh:mm:ss, ফিরে আসে মানঃ স্ট্রিং টাইপ । নির্দিষ্ট সময় বিন্দু ((মিলিসেকেন্ড) এর সাথে সংশ্লিষ্ট স্ট্রিং ফেরত দেয়, কোন পরামিতি পাস না করে বর্তমান সময় ফেরত দেয়; উদাহরণস্বরূপঃ_D()অথবা_D(1478570053241)ডিফল্ট ফরম্যাট হলyyyy-MM-dd hh:mm:ss

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

সতর্কতাঃPythonকৌশলগত ব্যবহার_D()আপনি যদি এই প্যারামিটারটি সেকেন্ডের স্তরের টাইমলাইনে ব্যবহার করতে চান তবে আপনি অবশ্যই এটির জন্য নোট করতে হবে।JavaScriptC++কৌশলটি মিলিসেকেন্ড স্তরের টাইমস্কেপ হিসাবে ব্যবহৃত হয়। ১ সেকেন্ড = ১০০০ মিলিসেকেন্ড) । বাস্তব সময়ে ব্যবহার করা_D()ফাংশনটি একটি টাইমল্যাগকে পাঠযোগ্য টাইম স্ট্রিং হিসাবে বিশ্লেষণ করার সময়, হোস্ট প্রোগ্রামটি অবস্থিত অপারেটিং সিস্টেমের সময় অঞ্চল, সময় সেটিংসে মনোযোগ দিতে হবে।_D()ফাংশনটি একটি টাইমলাইন বিশ্লেষণ করে যা একটি পাঠযোগ্য টাইম স্ট্রিং যা হোস্ট সিস্টেমের সময় অনুযায়ী নির্ধারিত হয়।

উদাহরণস্বরূপ, একটি টাইমলাইন1574993606000কোড বিশ্লেষণঃ

function main() {
    Log(_D(1574993606000))
}
def main():
    # 北京时间的服务器上运行:2019-11-29 10:13:26 ,另一台其它地区的服务器上的托管者运行此代码结果则为:2019-11-29 02:13:26
    Log(_D(1574993606))
void main() {
    Log(_D(1574993606000));
}

_N ((Num, সঠিকতা)

_N(Num, Precision), একটি ফ্লোটিং পয়েন্ট ফরম্যাট করুন.Numএটি একটি অ্যাক্সেসযোগ্য ডিভাইস।Precisionপুরো টাইপ জন্য ⇒ রিটার্ন ভ্যালুঃ সংখ্যা টাইপ ⇒

উদাহরণস্বরূপ_N(3.1415, 2)মুছে ফেলা হবে3.1415বিয়োগফলের দুই অঙ্কের পরে, ফাংশনটি ফিরে আসে3.14

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 অঙ্ককে 0 করে দিতে চান, তাহলে আপনি এটি লিখতে পারেনঃ

function main(){
    var i = 1300
    Log(i)
    var ii = _N(i, -3)
    // 查看日志得知为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);
}

_C(...)

_C(function, args...)এই ফাংশনটি একটি পুনরায় চেষ্টা ফাংশন যা ইন্টারফেসগুলির জন্য ত্রুটি গ্রহণের জন্য ব্যবহৃত হয়, যেমন বাজার, অর্ডারগুলি সম্পূর্ণ না হওয়া।

ইন্টারফেসটি নির্দিষ্ট ফাংশনটি কল করে চলেছে যতক্ষণ না এটি সফলভাবে ((parameter) ফেরত দেয়functionএকটি ফাংশন কল করার সময় একটি শূন্য মান ফেরত বাfalseএই ভিডিওতে, আপনি আপনার ফোনটি পুনরায় চেষ্টা করতে পারেন।_C(exchange.GetTicker)ডিফল্ট পুনরায় পরীক্ষা করার জন্য 3 সেকেন্ডের ব্যবধান, আপনি কল করতে পারেন_CDelay(...)ফাংশনগুলি পুনরায় পরীক্ষা করার সময়সীমা নির্ধারণ করে, যেমন_CDelay(1000)পরিবর্তনের জন্য_Cফাংশন পুনরায় পরীক্ষা করার সময়সীমা 1 সেকেন্ড।

নিম্নলিখিত ফাংশনগুলির জন্যঃ

  • exchange.GetTicker()
  • exchange.GetDepth()
  • exchange.GetTrades()
  • exchange.GetRecords()
  • exchange.GetAccount()
  • exchange.GetOrders()
  • exchange.GetOrder()
  • exchange.GetPosition()

সবগুলোই অনুমোদিত_C(...)ফাংশনটি ত্রুটি গ্রহণের জন্য কল করা হয়।_C(function, args...)ফাংশনগুলি উপরে তালিকাভুক্ত ফাংশনগুলির সাথে সীমাবদ্ধ নয়, প্যারামিটারfunctionএটি ফাংশন কল নয়, ফাংশন রেফারেন্স।_C(exchange.GetTicker)না_C(exchange.GetTicker())

function main(){
    var ticker = _C(exchange.GetTicker)
    // 调整_C()函数重试时间间隔为2秒
    _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);
}

প্যারামিটারযুক্ত ফাংশনের জন্য ব্যবহার_C(...)ভুল করার সময়ঃ

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("符合条件!", "#FF0000")
        return true
    }
    Log("重试!", "#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("符合条件!", "#FF0000")
        return True
    Log("重试!", "#FF0000")
    return False

def main():
    ret = _C(test, 1, 5)
    Log(ret)
// C++ 不支持这种方式对于自定义函数容错

_ক্রস ((Arr1, Arr2)

_Cross(Arr1, Arr2)এবং অ্যারেটি ফেরত দেয়arr1এবংarr2এর ক্রস চক্রের সংখ্যা. পজিটিভ সংখ্যাটি হল আপ ট্যুর চক্র, নেতিবাচক সংখ্যাটি হল ডাউন ট্যুর চক্র, এবং 0 হল বর্তমান মূল্য। প্যারামিটার মানঃ সংখ্যা টাইপ অ্যারে।

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

// 快线指标
var arr1 = [1,2,3,4,5,6,8,8,9]
// 慢线指标
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));
}

img

সিমুলেটেড ডেটা ভিজ্যুয়ালাইজ করুন

img

ব্যবহারের জন্য নির্দিষ্ট নির্দেশাবলীঃবিল্ট-ইন ফাংশন_ক্রস বিশ্লেষণ এবং ব্যবহারের নির্দেশাবলী

JSONParse ((strJson)

JSONParse(strJson), যা JSON স্ট্রিং পার্সল করার জন্য ব্যবহৃত হয়। এটি JSON স্ট্রিংগুলির সঠিকভাবে পার্সল করতে পারে যা বৃহত্তর সংখ্যাযুক্ত।

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));   // 不支持该函数
    
    auto s2 = "{\"num\":123}";
    Log("json::parse:", json::parse(s2));
    // Log("JSONParse:", JSONParse(s2));   // 不支持该函数
}

কাস্টম রঙ

প্রতিটি বার্তা স্ট্রিং ব্যবহার করা যেতে পারে#ff0000এই RGB মানটি শেষে, প্রদর্শিত হওয়া প্রাকদর্শনের প্রতিনিধিত্ব করে।#ff0000112233এই ফরম্যাটে, শেষ ছয়টি শব্দ ব্যাকগ্রাউন্ডের রঙের প্রতিনিধিত্ব করে।

function main() {
    Log("红色", "#FF0000")
}
def main():
    Log("红色", "#FF0000")
void main() {
    Log("红色", "#FF0000");
}

ডায়েরি তথ্য

ডিস্ক চলাকালীন লগ তথ্য ডিস্কের ডাটাবেসে রেকর্ড করা হয়, ডিস্কের ডাটাবেস ব্যবহার করেsqlite3ডাটাবেস, ডিস্কের ডাটাবেস ফাইলগুলি হোস্ট প্রোগ্রামের ডিভাইসে, ডাটাবেস ফাইলগুলি হোস্ট প্রোগ্রামের ((robotএক্সিকিউটেবল প্রোগ্রাম) ডিরেক্টরিতে। উদাহরণস্বরূপঃ130350ডিস্ক ডাটাবেস ফাইল../logs/storage/130350এই ক্যাটালগটি ((..অর্থাৎrobotঅ্যাডমিনিস্ট্রেটর প্রোগ্রামের ডাইরেক্টরি), ডাটাবেস ফাইলের নাম130350.db3❖ পুনর্বিবেচনার সিস্টেমের লগগুলি পুনর্বিবেচনার পরে, পৃষ্ঠার নীচে ডানদিকে নীচের কোণে ক্লিক করুন।লগ ডাউনলোড করুন] বোতামটি ডাউনলোড করুন। যখন অন্য সার্ভারে ডিস্ক স্থানান্তর করার প্রয়োজন হয়, তখন ডিস্কের ডাটাবেস ফাইলগুলি (এক্সটেনশনটি ডিবি 3 নামে পরিচিত ডাটাবেস ফাইলগুলি) স্থানান্তরিত লক্ষ্য সার্ভারে স্থানান্তরিত করা যেতে পারে এবং ফাইলের নামটি প্ল্যাটফর্মের সাথে সামঞ্জস্যপূর্ণ ডিস্ক আইডি হিসাবে সেট করা যেতে পারে। এইভাবে পূর্ববর্তী ডিস্কের সমস্ত লগ তথ্য নতুন ডিভাইসে স্থানান্তরিত হওয়ার কারণে হারিয়ে যায় না।

লোগো ((...)

Log(message), একটি বার্তা লগ তালিকায় সংরক্ষণ করুন.messageএটি যেকোনো ধরনের হতে পারে। যদি তারের পরে যোগ করা হয়@অক্ষরের বার্তাটি ধাক্কা দেওয়ার সারিতে প্রবেশ করে এবং বর্তমান উদ্ভাবকের কুইন্টিফাইড ট্রেডিং প্ল্যাটফর্ম অ্যাকাউন্টের ধাক্কা দেওয়ার সেটিংসে কনফিগার করা মেইল, টেলিগ্রাম, ওয়েবহুক ইত্যাদিতে ধাক্কা দেওয়া হয়।নিয়ন্ত্রণ কেন্দ্রপাতা, উপরের ডানদিকেঅ্যাকাউন্ট সেটিংএই পৃষ্ঠাটিধাক্কা সেটিংপাতা সেটিং আবদ্ধ) ⇒

সতর্কতাঃ

  • "ডিবাগিং টুল" এ ধাক্কা দেওয়া সমর্থিত নয়।
  • "রিট্র্যাক্ট সিস্টেম" এ ধাক্কা দেওয়া সমর্থিত নয়।
function main() {
    Log("发明者量化你好 !@")
    Sleep(1000 * 5)
    // 字符串内加入#ff0000,打印日志显示为红色,并且推送消息
    Log("你好, #ff0000@")
}
def main():
    Log("发明者量化你好 !@")
    Sleep(1000 * 5)
    Log("你好, #ff0000@")
void main() {
    Log("发明者量化你好 !@");
    Sleep(1000 * 5);
    Log("你好, #ff0000@");
}

ওয়েবহুকধাক্কাঃ

ব্যবহার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)
}

সেটিংWebHookhttp://XXX.XX.XXX.XX:9090/data?data=Hello_FMZ

একটি সার্ভিস প্রোগ্রাম চালানোর পরে, একটি নীতি সম্পাদন করুন, একটি নীতি বার্তা প্রেরণ করুনঃ

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

এই পোস্টটি পোস্ট করা হয়েছে, এবং এটি পোস্ট করা হয়েছে, এবং পোস্ট করা হয়েছে।

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}

মুদ্রণbase64কোড করা ছবি Logফাংশন মুদ্রণ সমর্থন করেbase64এই ছবিগুলো কোড করা হয়েছে।`প্রথমত,`এই ভিডিওটি ভিডিও কনফারেন্সে প্রকাশিত হয়েছে।

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সরাসরি মুদ্রণ সমর্থনPythonএরmatplotlib.pyplotবস্তুর সাথে, যদি বস্তুর অন্তর্ভুক্তsavefigপদ্ধতিটি সরাসরি হতে পারেLogপ্রিন্ট করুন, উদাহরণস্বরূপঃ

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

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

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

লোগপ্রফিট (LogProfit)

LogProfit(Profit), লাভ ও ক্ষতির মান রেকর্ড করুন, লাভ ও ক্ষতির মান মুদ্রণ করুন এবং লাভ ও ক্ষতির মান অনুযায়ী আয় কার্ভ আঁকুন; পরামিতি মানঃমুনাফাএকটি সংখ্যাগত মানের জন্য।

এই ফাংশনটি যদি অক্ষরে লেখা হয়&অবশেষে, কেবলমাত্র আয় চার্ট আঁকুন, আয় লগ প্রিন্ট করবেন না, যেমনঃLogProfit(10, '&')

LogProfitReset (()

LogProfitReset(), সমস্ত আয় লগ খালি করুন, একটি পূর্ণসংখ্যার মান পরামিতি দিয়ে সংরক্ষিত রেকর্ডগুলি নির্দিষ্ট করতে পারেন।

function main() {
    // 在收益图表上打印30个点,然后重置,只保留最后10个点
    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);
}

LogStatus ((Msg)

LogStatus(Msg)এই তথ্যটি লগ তালিকায় সংরক্ষণ করা হয় না, শুধুমাত্র বর্তমান ডিস্কের অবস্থা তথ্য আপডেট করা হয়।Msgআপনি যেকোনো টাইপ ব্যবহার করতে পারেন।

function main() {
    LogStatus('这是一个普通的状态提示')
    LogStatus('这是一个红色字体的状态提示#ff0000')
    LogStatus('这是一个多行的状态信息\n我是第二行')
}
def main():
    LogStatus('这是一个普通的状态提示')
    LogStatus('这是一个红色字体的状态提示#ff0000')
    LogStatus('这是一个多行的状态信息\n我是第二行')
void main() {
    LogStatus("这是一个普通的状态提示");
    LogStatus("这是一个红色字体的状态提示#ff0000");
    LogStatus("这是一个多行的状态信息\n我是第二行");
}

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

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

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

function main() {
    var table = {type: 'table', title: '持仓信息', cols: ['列1', '列2'], rows: [ ['abc', 'def'], ['ABC', 'support color #ff0000']]}
    // JSON序列化后两边加上`字符,视为一个复杂消息格式(当前支持表格)
    LogStatus('`' + JSON.stringify(table) + '`')                    
    // 表格信息也可以在多行中出现
    LogStatus('第一行消息\n`' + JSON.stringify(table) + '`\n第三行消息')
    // 支持多个表格同时显示,将以TAB显示到一组里
    LogStatus('`' + JSON.stringify([table, table]) + '`')
    
    // 也可以构造一个按钮在表格中,策略用GetCommand接收cmd属性的内容                                
    var table = { 
        type: 'table', 
        title: '持仓操作', 
        cols: ['列1', '列2', 'Action'], 
        rows: [ 
            ['abc', 'def', {'type':'button', 'cmd': 'coverAll', 'name': '平仓'}]
        ]
    }
    LogStatus('`' + JSON.stringify(table) + '`') 
    // 或者构造一单独的按钮
    LogStatus('`' + JSON.stringify({'type':'button', 'cmd': 'coverAll', 'name': '平仓'}) + '`') 
    // 可以自定义按钮风格(bootstrap的按钮属性)
    LogStatus('`' + JSON.stringify({'type':'button', 'class': 'btn btn-xs btn-danger', 'cmd': 'coverAll', 'name': '平仓'}) + '`')
}
import json
def main():
    table = {"type": "table", "title": "持仓信息", "cols": ["列1", "列2"], "rows": [["abc", "def"], ["ABC", "support color #ff0000"]]}
    LogStatus('`' + json.dumps(table) + '`')
    LogStatus('第一行消息\n`' + json.dumps(table) + '`\n第三行消息')
    LogStatus('`' + json.dumps([table, table]) + '`')

    table = {
        "type" : "table", 
        "title" : "持仓操作", 
        "cols" : ["列1", "列2", "Action"], 
        "rows" : [
            ["abc", "def", {"type": "button", "cmd": "coverAll", "name": "平仓"}]
        ] 
    }
    LogStatus('`' + json.dumps(table) + '`')
    LogStatus('`' + json.dumps({"type": "button", "cmd": "coverAll", "name": "平仓"}) + '`')
    LogStatus('`' + json.dumps({"type": "button", "class": "btn btn-xs btn-danger", "cmd": "coverAll", "name": "平仓"}) + '`')
void main() {
    json table = R"({"type": "table", "title": "持仓信息", "cols": ["列1", "列2"], "rows": [["abc", "def"], ["ABC", "support color #ff0000"]]})"_json;
    LogStatus("`" + table.dump() + "`");
    LogStatus("第一行消息\n`" + table.dump() + "`\n第三行消息");
    json arr = R"([])"_json;
    arr.push_back(table);
    arr.push_back(table);
    LogStatus("`" + arr.dump() + "`");

    table = R"({
        "type" : "table", 
        "title" : "持仓操作", 
        "cols" : ["列1", "列2", "Action"], 
        "rows" : [
            ["abc", "def", {"type": "button", "cmd": "coverAll", "name": "平仓"}]
        ] 
    })"_json;
    LogStatus("`" + table.dump() + "`");
    LogStatus("`" + R"({"type": "button", "cmd": "coverAll", "name": "平仓"})"_json.dump() + "`");
    LogStatus("`" + R"({"type": "button", "class": "btn btn-xs btn-danger", "cmd": "coverAll", "name": "平仓"})"_json.dump() + "`");
}

স্ট্যাটাস বোতামটি নিষ্ক্রিয় করুন, বৈশিষ্ট্য বর্ণনাঃ

img

function main() {
    var table = {
        type: "table",
        title: "状态栏按钮的禁用、描述功能测试",
        cols: ["列1", "列2", "列3"], 
        rows: []
    }
    var button1 = {"type": "button", "name": "按钮1", "cmd": "button1", "description": "这是第一个按钮"}
    var button2 = {"type": "button", "name": "按钮2", "cmd": "button2", "description": "这是第二个按钮,设置为禁用", "disabled": true}
    var button3 = {"type": "button", "name": "按钮3", "cmd": "button3", "description": "这是第三个按钮,设置为启用", "disabled": false}
    table.rows.push([button1, button2, button3])
    LogStatus("`" + JSON.stringify(table) + "`")
}
import json
def main():
    table = {
        "type": "table",
        "title": "状态栏按钮的禁用、描述功能测试",
        "cols": ["列1", "列2", "列3"], 
        "rows": []
    }
    button1 = {"type": "button", "name": "按钮1", "cmd": "button1", "description": "这是第一个按钮"}
    button2 = {"type": "button", "name": "按钮2", "cmd": "button2", "description": "这是第二个按钮,设置为禁用", "disabled": True}
    button3 = {"type": "button", "name": "按钮3", "cmd": "button3", "description": "这是第三个按钮,设置为启用", "disabled": False}
    table["rows"].append([button1, button2, button3])
    LogStatus("`" + json.dumps(table) + "`")
void main() {
    json table = R"({
        "type": "table",
        "title": "状态栏按钮的禁用、描述功能测试",
        "cols": ["列1", "列2", "列3"], 
        "rows": []
    })"_json;
    json button1 = R"({"type": "button", "name": "按钮1", "cmd": "button1", "description": "这是第一个按钮"})"_json;
    json button2 = R"({"type": "button", "name": "按钮2", "cmd": "button2", "description": "这是第二个按钮,设置为禁用", "disabled": true})"_json;
    json button3 = R"({"type": "button", "name": "按钮3", "cmd": "button3", "description": "这是第三个按钮,设置为启用", "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() + "`");
}

স্ট্যাটাস বাটন স্টাইল সেটিংঃ

img

function main() {
    var table = {
        type: "table",
        title: "状态栏按钮样式",
        cols: ["默认", "原始", "成功", "信息", "警告", "危险"], 
        rows: [
            [
                {"type":"button", "class": "btn btn-xs btn-default", "name": "默认"},
                {"type":"button", "class": "btn btn-xs btn-primary", "name": "原始"},
                {"type":"button", "class": "btn btn-xs btn-success", "name": "成功"},
                {"type":"button", "class": "btn btn-xs btn-info", "name": "信息"},
                {"type":"button", "class": "btn btn-xs btn-warning", "name": "告警"},
                {"type":"button", "class": "btn btn-xs btn-danger", "name": "危险"}
            ]
        ]
    }
    LogStatus("`" + JSON.stringify(table) + "`")
}
import json
def main():
    table = {
        "type": "table",
        "title": "状态栏按钮样式",
        "cols": ["默认", "原始", "成功", "信息", "警告", "危险"], 
        "rows": [
            [
                {"type":"button", "class": "btn btn-xs btn-default", "name": "默认"},
                {"type":"button", "class": "btn btn-xs btn-primary", "name": "原始"},
                {"type":"button", "class": "btn btn-xs btn-success", "name": "成功"},
                {"type":"button", "class": "btn btn-xs btn-info", "name": "信息"},
                {"type":"button", "class": "btn btn-xs btn-warning", "name": "告警"},
                {"type":"button", "class": "btn btn-xs btn-danger", "name": "危险"}
            ]
        ]
    }
    LogStatus("`" + json.dumps(table) + "`")
void main() {
    json table = R"({
        "type": "table",
        "title": "状态栏按钮样式",
        "cols": ["默认", "原始", "成功", "信息", "警告", "危险"], 
        "rows": [
            [
                {"type":"button", "class": "btn btn-xs btn-default", "name": "默认"},
                {"type":"button", "class": "btn btn-xs btn-primary", "name": "原始"},
                {"type":"button", "class": "btn btn-xs btn-success", "name": "成功"},
                {"type":"button", "class": "btn btn-xs btn-info", "name": "信息"},
                {"type":"button", "class": "btn btn-xs btn-warning", "name": "告警"},
                {"type":"button", "class": "btn btn-xs btn-danger", "name": "危险"}
            ]
        ]
    })"_json;
    LogStatus("`" + table.dump() + "`");
}

একত্রিতGetCommand()ফাংশন, স্ট্যাটাস বাটন ইন্টারঅ্যাকশন গঠনঃ

function test1() {
    Log("调用自定义函数")
}

function main() {
    while (true) {
        var table = {
            type: 'table',
            title: '操作',
            cols: ['列1', '列2', 'Action'],
            rows: [
                ['a', '1', {
                    'type': 'button',                       
                    'cmd': "CoverAll",                      
                    'name': '平仓'                           
                }],
                ['b', '1', {
                    'type': 'button',
                    'cmd': 10,                              
                    'name': '发送数值'
                }],
                ['c', '1', {
                    'type': 'button',
                    'cmd': _D(),                          
                    'name': '调用函数'
                }],
                ['d', '1', {
                    'type': 'button',
                    'cmd': 'test1',       
                    'name': '调用自定义函数'
                }]
            ]
        }
        LogStatus(_D(), "\n", '`' + JSON.stringify(table) + '`')

        var str_cmd = GetCommand()
        if (str_cmd) {
            Log("接收到的交互数据 str_cmd:", "类型:", typeof(str_cmd), "值:", str_cmd)
            if(str_cmd == "test1") {
                test1()
            }
        }

        Sleep(500)
    }
}
import json
def test1():
    Log("调用自定义函数")

def main():
    while True:
        table = {
            "type": "table", 
            "title": "操作", 
            "cols": ["列1", "列2", "Action"],
            "rows": [
                ["a", "1", {
                    "type": "button", 
                    "cmd": "CoverAll",
                    "name": "平仓"
                }],
                ["b", "1", {
                    "type": "button",
                    "cmd": 10,
                    "name": "发送数值" 
                }], 
                ["c", "1", {
                    "type": "button",
                    "cmd": _D(),
                    "name": "调用函数" 
                }],
                ["d", "1", {
                    "type": "button",
                    "cmd": "test1",
                    "name": "调用自定义函数" 
                }]
            ]
        }

        LogStatus(_D(), "\n", "`" + json.dumps(table) + "`")
        str_cmd = GetCommand()
        if str_cmd:
            Log("接收到的交互数据 str_cmd", "类型:", type(str_cmd), "值:", str_cmd)
            if str_cmd == "test1":
                test1()
        Sleep(500)
void test1() {
    Log("调用自定义函数");
}

void main() {
    while(true) {
        json table = R"({
            "type": "table", 
            "title": "操作", 
            "cols": ["列1", "列2", "Action"],
            "rows": [
                ["a", "1", {
                    "type": "button", 
                    "cmd": "CoverAll",
                    "name": "平仓"
                }],
                ["b", "1", {
                    "type": "button",
                    "cmd": 10,
                    "name": "发送数值" 
                }], 
                ["c", "1", {
                    "type": "button",
                    "cmd": "",
                    "name": "调用函数" 
                }],
                ["d", "1", {
                    "type": "button",
                    "cmd": "test1",
                    "name": "调用自定义函数" 
                }]
            ]
        })"_json;
        table["rows"][2][2]["cmd"] = _D();
        LogStatus(_D(), "\n", "`" + table.dump() + "`");
        auto str_cmd = GetCommand();
        if(str_cmd != "") {
            Log("接收到的交互数据 str_cmd", "类型:", typeid(str_cmd).name(), "值:", str_cmd);
            if(str_cmd == "test1") {
                test1();
            }
        }
        Sleep(500);
    }
}

কনস্ট্রাক্ট স্টেট বোতামগুলি ইন্টারঅ্যাক্ট করার সময়ও ডেটা ইনপুট সমর্থন করে, ইন্টারঅ্যাকশন নির্দেশগুলি শেষ পর্যন্তGetCommand()ফাংশন ক্যাপচার। স্ট্যাটাস প্যানেলে বোতাম কন্ট্রোলের ডেটা স্ট্রাকচারে যোগ করা হয়েছেinputউদাহরণস্বরূপ{"type": "button", "cmd": "open", "name": "开仓"}বৃদ্ধি"input": {"name": "开仓数量", "type": "number", "defValue": 1}আপনি যদি একটি বোতাম ক্লিক করেন তবে একটি ইনপুট বক্স কন্ট্রোল সহ একটি পপআপ উইন্ডো (ইনপুট বক্সে ডিফল্ট মানটি 1 হয়, অর্থাৎ ডেটা defValue সেট করা হয়) প্রদর্শিত হতে পারে, যা একটি ডেটা এবং বোতাম কমান্ডের সাথে প্রেরণ করা যেতে পারে। উদাহরণস্বরূপ, নিম্নলিখিত পরীক্ষার কোডটি চালানোর সময়, "আনস্টল করুন" বোতামটি ক্লিক করার পরে, একটি ইনপুট বক্স সহ একটি পপআপ উইন্ডো প্রদর্শিত হবে, যা ইনপুট বক্সে প্রবেশ করা হবে।111"নিশ্চিত করুন" ক্লিক করুন।GetCommandফাংশনটি বার্তাটি ক্যাপচার করেঃopen:111

function main() {
    var tbl = {
        type: "table",
        title: "操作",
        cols: ["列1", "列2"],
        rows: [
            ["开仓操作", {"type": "button", "cmd": "open", "name": "开仓", "input": {"name": "开仓数量", "type": "number", "defValue": 1}}],
            ["平仓操作", {"type": "button", "cmd": "coverAll", "name": "全部平仓"}]
        ] 
    }

    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": "操作", 
        "cols": ["列1", "列2"],
        "rows": [
            ["开仓操作", {"type": "button", "cmd": "open", "name": "开仓", "input": {"name": "开仓数量", "type": "number", "defValue": 1}}],
            ["平仓操作", {"type": "button", "cmd": "coverAll", "name": "全部平仓"}]
        ]
    }

    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": "操作", 
        "cols": ["列1", "列2"],
        "rows": [
            ["开仓操作", {"type": "button", "cmd": "open", "name": "开仓", "input": {"name": "开仓数量", "type": "number", "defValue": 1}}],
            ["平仓操作", {"type": "button", "cmd": "coverAll", "name": "全部平仓"}]
        ]
    })"_json;

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

একত্রিতLogStatus(Msg)ফাংশনটি টেবিলের ভিতরে কক্ষগুলি আঁকেঃ

  • অনুভূমিক একীকরণ

    function main() {
        var table = { 
            type: 'table', 
            title: '持仓操作', 
            cols: ['列1', '列2', 'Action'], 
            rows: [ 
                ['abc', 'def', {'type':'button', 'cmd': 'coverAll', 'name': '平仓'}]
            ]
        } 
        var ticker = exchange.GetTicker()
        // 添加一行数据,第一个和第二个单元格合并,并且输出ticker变量在合并后的单元格内
        table.rows.push([{body : JSON.stringify(ticker), colspan : 2}, "abc"])    
        LogStatus('`' + JSON.stringify(table) + '`')
    }
    
    import json
    def main():
        table = {
            "type" : "table",
            "title" : "持仓操作",
            "cols" : ["列1", "列2", "Action"],
            "rows" : [
                ["abc", "def", {"type": "button", "cmd": "coverAll", "name": "平仓"}]
            ]
        }
        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" : "持仓操作",
            "cols" : ["列1", "列2", "Action"],
            "rows" : [
                ["abc", "def", {"type": "button", "cmd": "coverAll", "name": "平仓"}]
            ]
        })"_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() + "`");
    }
    

  • উল্লম্ব সংযোজন

    function main() {
        var table = { 
            type: 'table', 
            title: '表格演示', 
            cols: ['列A', '列B', '列C'], 
            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被上一行第一个单元格合并
        table.rows.push(["B4", "C4"])
        // A2被上一行第一个单元格合并
        table.rows.push(["B5", "C5"])                                            
        table.rows.push(["A6", "B6", "C6"])
        LogStatus('`' + JSON.stringify(table) + '`')
    }
    
    import json
    def main():
        table = {
            "type" : "table", 
            "title" : "表格演示", 
            "cols" : ["列A", "列B", "列C"], 
            "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" : "表格演示", 
            "cols" : ["列A", "列B", "列C"], 
            "rows" : [
                ["A1", "B1", {"type": "button", "cmd": "coverAll", "name": "C1"}]
            ]
        })"_json;
        // 为了测试,代码简短易读,这里使用构造的数据
        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() + "`");
    }
    

স্ট্যাটাস বার ফর্মটি পৃষ্ঠা ভাগ করে দেখায়ঃ

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

img

আপনি বিভিন্ন পৃষ্ঠাগুলিকে উপরে থেকে নীচে সাজিয়ে রাখতে পারেন।

function main(){
    var tab1 = {
        type : "table",
        title : "表格1",
        cols : ["1", "2"],
        rows : []
    }
    var tab2 = {
        type : "table",
        title : "表格2",
        cols : ["1", "2", "3"],
        rows : []
    }
    var tab3 = {
        type : "table",
        title : "表格3",
        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": "表格1", 
        "cols": ["1", "2"], 
        "rows": []
    }
    tab2 = {
        "type": "table", 
        "title": "表格2", 
        "cols": ["1", "2", "3"], 
        "rows": []
    }
    tab3 = {
        "type": "table", 
        "title": "表格3", 
        "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": "表格1", 
        "cols": ["1", "2"], 
        "rows": []
    })"_json;
    json tab2 = R"({
        "type": "table", 
        "title": "表格2", 
        "cols": ["1", "2", "3"], 
        "rows": []
    })"_json;
    json tab3 = R"({
        "type": "table", 
        "title": "表格3", 
        "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() + "`");
}

রানিং এফেক্টঃ

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

EnableLog ((()

EnableLog(IsEnable), যেসব লগ থেকে অর্ডার খোলা বা বন্ধ করা হয়েছে তাদের রেকর্ড করা।isEnableবুল টাইপ করুন।IsEnableসেট করুনfalseএই অ্যাপ্লিকেশানটি ব্যবহার করে আপনি আপনার অর্ডার লিস্টটি মুদ্রণ করতে পারবেন না এবং এটিকে একটি ভার্চুয়াল ডাটাবেসে লিখতে পারবেন না।

চার্ট ((...)

Chart(...), কাস্টম চার্ট অঙ্কন চার্ট ফাংশন ।

Chart({...})প্যারামিটার হলJSONক্রমিকহাইস্টকসএরHighcharts.StockChartপ্যারামিটার.__isStockবৈশিষ্ট্য, যদি নির্দিষ্ট করা হয়__isStock:false, এটি সাধারণ চার্ট হিসেবে প্রদর্শিত হবে।

সতর্কতাঃ যদি সেট করা হয়__isStockবৈশিষ্ট্যfalseএই চার্টটি ব্যবহার করা হয়ঃহাইচার্টএই ছবিতে দেখানো হয়েছেঃ

Highcharts图表

যদি সেট করা হয়__isStockবৈশিষ্ট্যtrueএই চার্টটি ব্যবহার করা হয়ঃহাইস্টক(ডিফল্ট)__isStockজন্যtrueএই ছবিতে দেখা যাচ্ছেঃ

Highstocks图表

ফিরে যান যেহেতু আপনি কল করতে পারেনadd(n, data)nজন্যseriesসূচক (যেমন ০),dataচার্ট লিখতে ডেটা) নির্দিষ্ট সূচকseriesডেটা যোগ করুন, কল করুনreset()এই ভিডিওতে, আপনি দেখতে পারেন যে,resetআপনি একটি সংখ্যাগত প্যারামিটার দিয়ে সংরক্ষিত রেকর্ডের সংখ্যা নির্দিষ্ট করতে পারেন।

কল করতে পারেনadd(n, data, i)iএই তথ্যগুলিseries(এটি একটি সূচক) সংশোধিতseriesএই তথ্যগুলোতে।

এটি একটি নেতিবাচক সংখ্যা হতে পারে, যেখানে -1 হল শেষটি, এবং -2 হল দ্বিতীয়টি, উদাহরণস্বরূপ, যখন একটি লাইন অঙ্কন করা হয়, লাইনটির শেষ বিন্দুতে ডেটা পরিবর্তন করা হয়ঃ

chart.add(0, [1574993606000, 13.5], -1), পরিবর্তনseries[0].dataপ্রথম পয়েন্টের বিয়োগের তথ্য।

একাধিক চার্ট প্রদর্শন করতে সহায়তা করে, কনফিগার করার সময় কেবলমাত্র অ্যারে পরামিতিগুলি পাস করুন যেমনঃvar chart = Chart([{...}, {...}, {...}])উদাহরণস্বরূপ, একটি চার্ট দুই আছে।seriesচার্ট ২-তে একটা আছে।seriesচার্ট ৩-এ একটা আছে।seriesতাহলে,addযখন 0 এবং 1 সিরিয়াল আইডিগুলিকে নির্দিষ্ট করা হয় তখন তারা আপডেট চার্ট 1 এর দুটি সিরিয়ালের ডেটা প্রতিনিধিত্ব করে।addযখন ধারাবাহিক আইডি 2 হিসাবে নির্দিষ্ট করা হয়, তখন চার্ট 2 এর প্রথমটি নির্দেশ করেseriesযদি আপনি এই সংখ্যাটি দেখেন, তাহলে আপনি এই সংখ্যাটি দেখতে পাবেন।seriesএই তথ্যগুলো।

HighStockshttp://api.highcharts.com/highstock

মাল্টি-চার্টগুলি সম্পর্কিত বৈশিষ্ট্যগুলির কিছু সেটিং দেখায়ঃউদাহরণ

উদাহরণস্বরূপ, একটি চার্ট কনফিগারেশন বস্তুঃ

var cfgA = {
    extension: {
        // 不参于分组,单独显示,默认为分组 'group'
        layout: 'single', 
        // 指定高度,可以设置为字符串,"300px",设置数值300会自动替换为"300px"
        height: 300,      
        // 指定宽度占的单元值,总值为12
        col: 8            
    },
    title: {
        text: '盘口图表'
    },
    xAxis: {
        type: 'datetime'
    },
    series: [{
        name: '买一',
        data: []
    }, {
        name: '卖一',
        data: []
    }]
}

var cfgB = {
    title: {
        text: '差价图'
    },
    xAxis: {
        type: 'datetime'
    },
    series: [{
        name: '差价',
        type: 'column',
        data: []
    }]
}

var cfgC = {
    __isStock: false,
    title: {
        text: '饼图'
    },
    series: [{
        type: 'pie',
        name: 'one',
        // 指定初始数据后不需要用add函数更新,直接更改图表配置就可以更新序列
        data: [                    
            ["A", 25],
            ["B", 25],
            ["C", 25],
            ["D", 25]
        ]                
    }]
}

var cfgD = {
    extension: {
        layout: 'single',
        // 指定宽度占的单元值,总值为12
        col: 8,                    
        height: '300px'
    },
    title: {
        text: '盘口图表'
    },
    xAxis: {
        type: 'datetime'
    },
    series: [{
        name: '买一',
        data: []
    }, {
        name: '卖一',
        data: []
    }]
}

var cfgE = {
    __isStock: false,
    extension: {
        layout: 'single',
        col: 4,
        height: '300px'
    },
    title: {
        text: '饼图2'
    },
    series: [{
        type: 'pie',
        name: 'one',
        data: [
            ["A", 25],
            ["B", 25],
            ["C", 25],
            ["D", 25]
        ]
    }]
}
cfgA = {
    "extension" : {
        "layout" : "single", 
        "height" : 300,
        "col" : 8
    }, 
    "title" : {
        "text" : "盘口图表"
    },
    "xAxis" : {
        "type" : "datetime" 
    }, 
    "series" : [{
        "name" : "买一",
        "data" : []
    }, {
        "name" : "卖一", 
        "data" : []
    }]
}    

cfgB = {
    "title" : {
        "text" : "差价图"
    }, 
    "xAxis" : {
        "type" : "datetime"
    }, 
    "series" : [{
        "name" : "差价", 
        "type" : "column", 
        "data" : []
    }]
}    

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

cfgD = {
    "extension" : {
        "layout" : "single",
        "col" : 8,
        "height" : "300px"
    }, 
    "title" : {
        "text" : "盘口图表"
    }, 
    "series" : [{
        "name" : "买一", 
        "data" : []
    }, {
        "name" : "卖一",
        "data" : []
    }]
}    

cfgE = {
    "__isStock" : False, 
    "extension" : {
        "layout" : "single", 
        "col" : 4,
        "height" : "300px"
    }, 
    "title" : {
        "text" : "饼图2"
    },
    "series" : [{
        "type" : "pie",
        "name" : "one", 
        "data" : [
            ["A", 25], 
            ["B", 25], 
            ["C", 25], 
            ["D", 25]
        ]
    }]
}
json cfgA = R"({
    "extension" : {
        "layout" : "single", 
        "height" : 300,
        "col" : 8
    }, 
    "title" : {
        "text" : "盘口图表"
    },
    "xAxis" : {
        "type" : "datetime" 
    }, 
    "series" : [{
        "name" : "买一",
        "data" : []
    }, {
        "name" : "卖一", 
        "data" : []
    }]
})"_json;    

json cfgB = R"({
    "title" : {
        "text" : "差价图"
    }, 
    "xAxis" : {
        "type" : "datetime"
    }, 
    "series" : [{
        "name" : "差价", 
        "type" : "column", 
        "data" : []
    }]
})"_json;    

json cfgC = R"({
    "__isStock" : false,
    "title" : {
        "text" : "饼图"
    }, 
    "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" : "盘口图表"
    }, 
    "series" : [{
        "name" : "买一", 
        "data" : []
    }, {
        "name" : "卖一",
        "data" : []
    }]
})"_json;    

json cfgE = R"({
    "__isStock" : false, 
    "extension" : {
        "layout" : "single", 
        "col" : 4,
        "height" : "300px"
    }, 
    "title" : {
        "text" : "饼图2"
    },
    "series" : [{
        "type" : "pie",
        "name" : "one", 
        "data" : [
            ["A", 25], 
            ["B", 25], 
            ["C", 25], 
            ["D", 25]
        ]
    }]
})"_json;
  • cfgA.extension.layoutবৈশিষ্ট্য

    যদি এই বৈশিষ্ট্যটি "single" হিসাবে সেট করা হয়, তাহলে চার্টগুলি একসাথে দেখাবে না (বিভক্ত পাতা লেবেল পদ্ধতিতে প্রদর্শিত হবে না) ।

  • cfgA.extension.heightবৈশিষ্ট্য

    এই বৈশিষ্ট্যটি চার্টের উচ্চতা সেট করার জন্য ব্যবহৃত হয়, যা একটি সংখ্যা টাইপ বা "300px" হিসাবে সেট করা যেতে পারে।

  • cfgA.extension.colবৈশিষ্ট্য

    এই বৈশিষ্ট্যটি চার্টের প্রস্থ সেট করার জন্য ব্যবহৃত হয়, যেখানে পৃষ্ঠার প্রস্থ মোট ১২টি ইউনিটে বিভক্ত হয় এবং ৮ সেট করা হয় যার অর্থ চার্টটি ৮টি ইউনিটের প্রস্থ ধারণ করে।

    এটি একটি সম্পূর্ণ প্যাটার্ন কৌশল চালায়ঃ

    উপরের উদাহরণে, চার্ট কনফিগারেশন অবজেক্টগুলি প্রভাব দেখায়ঃ

  • চার্ট কনফিগারেশন অবজেক্টের উপর ডেটা, সরাসরি চার্ট কনফিগারেশন পরিবর্তন করুন এবং তারপর চার্ট আপডেট করুন ডেটা আপডেট করতেঃ

    উদাহরণস্বরূপ,JavaScriptউদাহরণস্বরূপ, কিছু কোড অনুচ্ছেদ ((সম্পূর্ণ উদাহরণ):

    cfgC.series[0].data[0][1] = Math.random() * 100
    cfgE.series[0].data[0][1] = Math.random() * 100
    // update实际上等于重置了图表的配置
    chart.update([cfgA, cfgB, cfgC, cfgD, cfgE])
    

    অনুমোদনaddএকটি পদ্ধতি যা ডেটা আপডেট করে, যেমন একটি আইটেম যোগ করা একটি পিষ্টক চার্টে।JavaScriptউদাহরণস্বরূপ, কিছু কোড অনুচ্ছেদ ((সম্পূর্ণ উদাহরণ):

    // 为饼图增加一个数据点,add只能更新通过add方式添加的数据点,内置的数据点无法后期更新
    chart.add(3, {
        name: "ZZ",
        y: Math.random() * 100
    })
    
  • আনুষঙ্গিক ব্যবহারChartফাংশনের উদাহরণ

    একটি সহজ চিত্র উদাহরণঃ

    // 这个chart在JavaScript语言中是对象,在使用Chart函数之前我们需要声明一个配置图表的对象变量chart
    var chart = {                                           
        // 该字段标记图表是否为一般图表,有兴趣的可以改成false运行看看
        __isStock: true,                                    
        // 缩放工具
        tooltip: {xDateFormat: '%Y-%m-%d %H:%M:%S, %A'},    
        // 标题
        title : { text : '差价分析图'},                       
        // 选择范围
        rangeSelector: {                                    
            buttons:  [{type: 'hour',count: 1, text: '1h'}, {typ

আরো

qq89520এখানে একটি প্রশ্ন আছে_C ফাংশনটি কি বারবার চেষ্টা করবে অথবা একবারই?

হা হা হা_C ((function, args...) এর ডিফল্ট 3s? ডিফল্ট পরিবর্তন সরাসরি _CDelay ((1000) _C ((function, args...) এর আগে করা যাবে? একবার সেট করা যাবে?

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

ওয়াংজি১Log ((talib.help (('MACD')); শুধুমাত্র js এ ব্যবহার করা যায়, পাইথনে talib.help বৈশিষ্ট্য নেই...

cjz140_C ((function, args...) এবং Sleep ফাংশনের মধ্যে পার্থক্য কি?

৩২৬৩২৪৩SetErrorFilter এর পরে ErrorFilter কিভাবে খালি করবেন?

qq47898077আপনি যদি তৃতীয় পক্ষের লাইব্রেরি ব্যবহার করতে চান তাহলে কি কোন উপায় আছে?

qq47898077যদি আপনি একটি এক্সচেঞ্জ অবজেক্টের নতুন ক্লাস সংজ্ঞায়িত করার উত্তরাধিকার চান, তাহলে পিতা ক্লাসটি কী পূরণ করবে?

ইথানউস্থানীয় ডিবাগিং সরঞ্জাম আছে কি?

পেংলিহেনগএক্সচেঞ্জ.আইও (exange.IO (("status"))?

পেংলিহেনগকেন sell এর ফাংশনটি ধূসর হয়, এটা কি প্রতিনিধিত্বকারী ফাংশনটি ব্যবহার করা যাবে না?

পেংলিহেনগকেন sell এর ফাংশনটি ধূসর হয়, এটা কি প্রতিনিধিত্বকারী ফাংশনটি ব্যবহার করা যাবে না?

পেংলিহেনগjs ভাষা জানে না, হাহাহাহা, আমি জানতে চাই ES6 সমর্থন করে?

পেংলিহেনগjs ভাষা জানে না, হাহাহাহা, আমি জানতে চাই ES6 সমর্থন করে?

Don.ভলিউম এর গড় রেখা কিভাবে লিখবো?

জুতুর্তিএক্সচেঞ্জ.বায় (১০০০) -এ বাজার মূল্যে কেনাকাটা করুন।

নিং ডেকোনতুন ফন্টটি দেখতে খুব সুন্দর।

হিব্রুবিটমেক্সের টেস্টিং নেটওয়ার্ক ((testnet.bitmex.com) এপিআই ইন্টারফেসও রয়েছে, তবে বর্তমানে এক্সচেঞ্জগুলি কেবল বিটমেক্সের মূল স্টেশনটি বেছে নিতে পারে, এপিআই ডকুমেন্টের ঠিকানাটি https://testnet.bitmex.com/app/apiOverview কিভাবে সমর্থন করবেন?

এক্সজিজিনvar ret1 = exchanges[0].IO (("api", "future_estimated_price", "symbol=btc_usd"); Log (('ok ফিউচার পূর্বাভাস ডেলিভারি মূল্য', ret1); https://dn-filebox.qbox.me/d1ed268c1e75753c5d289447d279aa9d81e41b5f.png আপনি যদি অন্য এক্সচেঞ্জের ফাংশন ইন্টারফেসে কল করেন, তাহলে ভুল রিপোর্ট লিখুন, কেন?

অ্যালেনফ্রস্টলাইনrealTicker এবং Ticker এর মধ্যে পার্থক্য কি জানতে চাই? সাম্প্রতিক সময়ে সুইট কৌশলগুলি পুনর্লিখন করা হচ্ছে এবং উভয়ই একই সাথে উপস্থিত হয়েছে তবে প্রথমটি API তে উল্লেখ করা হয়নি বলে মনে হচ্ছে।

দর্শনহ্যালো, একজন পাইথন ডেভেলপার হিসেবে আপনার মনে হয় আপনার API ডকুমেন্টেশন কি লিখছে? কিছু ফিল্ড ফাংশন ইন্টারফেস অদ্ভুত দেখাচ্ছে, আপনি কি Githubpage এবং readdocs মত একটি ডকুমেন্টেশন লিখতে পারেন?

অ্যালেনফ্রস্টলাইনGetAccount: [EAPI:Rate limit exceeded] আপনি কি জানতে চান কিভাবে এটি সমাধান করা যায়?

zhjx2314স্টোকআরএসআই সমর্থন করে না, যত তাড়াতাড়ি সম্ভব যোগ করা যাবে কিনা

ইহফগpython নীতির বাস্তব সময় স্ক্রিপ্টগুলি তাদের নিজস্ব আলি ক্লাউড সার্ভার বা botvs ক্লাস্টারে?

ইহফগপাইথনের কোন সংস্করণ ব্যবহার করা হয়?

ফকিসলিGetFee এর ব্যাখ্যাটি হল যে এটি একটি ফি স্ট্রাকচারের একটি ট্যাগ ফেরত দেয়, একটি কমপ্যাক্ট শব্দ।

জেকওপJS এর মাধ্যমে তালেবকে কল করার পদ্ধতি কি?

ইহফগপাইথন ডকুমেন্টেশন খুঁজুন

wmjbs123কৌশল সম্পাদক কোড ব্যাকগ্রাউন্ড একটি কালো করতে পারেন? সাদা পিন্ট চোখ, রাতে কোড লেখার, সহজে অদৃশ্য

Don.রোবট উইকএন্ডে সংক্ষিপ্ত বিবরণ কিভাবে সেটআপ করবেন?

গণনাঃ পাগলঅর্ডার কাঠামোর মধ্যে একটি সমান মূল্যের ক্ষেত্র যোগ করা যাবে?

ছোট্ট ছোট্ট জিনিসGetOrders: সমস্ত অসম্পূর্ণ অর্ডার পান, একটি অর্ডার অ্যারে কাঠামো ফিরে আসে, চীনে বিটকয়েন লেনদেন ETH, শুধুমাত্র সাম্প্রতিকতম 10 টি ফিরে আসে। এখানে কি চীনে বিটকয়েন ETH এর সমস্ত অসম্পূর্ণ অর্ডার ফেরত ফাংশন আছে, যার অর্থ অন্যান্য প্ল্যাটফর্মগুলি GetOrders ব্যবহার করে সমস্ত কিছু ফেরত দিতে পারে।

ইহফগযদি আপনি একটি গণিতের ফাংশন ব্যবহার করতে চান যা পরিসংখ্যানগত সম্ভাব্যতা তত্ত্বের সাথে সম্পর্কিত হয়, তাহলে আপনি কোথায় এটি ব্যবহার করবেন?

জিবাং$.Cross ((x, y) ফাংশনের রিটার্ন মান কি?

আমার নানীLogReset সব লগ খালি করে এবং একটি সংখ্যাগত প্যারামিটার দিয়ে সংরক্ষিত রেকর্ডগুলি নির্ধারণ করতে পারে কিভাবে এটি সাম্প্রতিক কয়েকটি লগ মুছে ফেলবে?

এডওয়ার্ড জিউতালেব এর মধ্যে CORRE ফাংশনটি কি এমন মনে হচ্ছে যে এটিকে স্থানান্তরিত করা হয়নি অথবা এটি মিস করা হয়েছে?

দরিদ্র পর্বতমালাআমি মনে করি না যে এটি একটি সূচক রেফারেন্স বৈশিষ্ট্য আছে!

ছোটকিভাবে k-line সময় পড়তে এখন সময় অনুবাদ Ah, বুঝতে পারছি না, খুব দীর্ঘ এক, সমাধান, ধন্যবাদ

ছোটঅ্যারেতে সংখ্যা মুছে ফেলার পদ্ধতি, আমি records.remove ((records[0]) ব্যবহার করি, কিন্তু এটা কাজ করে না।

সাপসাধারণত ঘণ্টার কে লাইন পাওয়া যায়, কিভাবে দিনের কে লাইনের এটিআর কল করা যায়?

সাপসাধারণত ঘণ্টার কে লাইন পাওয়া যায়, কিভাবে দিনের কে লাইনের এটিআর কল করা যায়?

57278863কিভাবে ঐতিহ্যগত ফিউচার মূল্য পেতে এবং অর্ডার, দুঃখিত, পাতলা শিকড় শিখতে

কিরিনএই প্রসঙ্গে, আমি আপনাদেরকে একটি উদাহরণ দেখাতে চাই।

ছোটzero, আপনি কি একটি উদাহরণ লিখতে পারেন ঐতিহ্যগত ফিউচার ট্রেডিং সম্পর্কে?

ছোটএকাধিক শূন্যপদ একই সাথে ধরে রাখার সময়, কীভাবে হোল্ডিং অবস্থা মুদ্রণ করবেন, আমার কীভাবে [object object][object object] মুদ্রণ করবেন, কীভাবে একাধিক এবং শূন্যপদ হোল্ডিং অবস্থা পাবেন, এবং GetTicker (((), কীভাবে সপ্তাহ, পরের সপ্তাহ এবং ত্রৈমাসিকের দাম পাবেন, বন্ধনীতে যে সপ্তাহ, পরের সপ্তাহ এবং ত্রৈমাসিক আমি লিখেছি।

এক্সজিজিনফিউচার এক্সচেঞ্জগুলি কি GetTicker দিয়ে ট্রেডিং পেতে পারে?

বিক্রয়StochRSI এর কোন সূচক যোগ করা যাবে?

মোমোক্সCancelOrder ((orderId) অর্ডার নাম্বার অনুযায়ী একটি অর্ডার বাতিল করুন, true বা false ফেরত দিন, true= সেলটি সফলভাবে বাতিল করা হয়েছে, তাই না?

মোমোক্স_G(K, V) সংরক্ষণযোগ্য গ্লোবাল ডিকশনারি টেবিল। এই পদ্ধতিতে সংরক্ষিত গ্লোবাল ভেরিয়েবলগুলি বিভিন্ন নীতিগুলির মধ্যে ডেটা ভাগ করে নেওয়ার জন্য ব্যবহার করা যেতে পারে?

ফ্লুফাই৩ডিজনপ্রিয়তা

শূন্যআপনি LogProfitReset ব্যবহার করে উপার্জন লগ পুনরায় সেট করতে পারেন। আগের উপার্জন চার্টে ইতিহাস নেই।

xcyআপনি কি সরাসরি ইএ-র অনুলিপি করতে পারবেন?

সিরোনম্যানএই প্ল্যাটফর্মটি দারুণ লাগছে।

ছোটএটা কোন ভাষা, কোন শিক্ষা উপকরণ আছে?

jxhbtcডেটা ত্রুটি এক সপ্তাহের জন্য, রোবট সংযোগ করতে পারে না

ডাইহুআপনি কি মনে করেন যে, ট্যাক্স রিপোর্ট কেবল বন্ধের মূল্যের জন্য?

btcrobotহ্যালো, বিশ্ব

ছোট্ট স্বপ্ন_C ফাংশনটি সফল ফলাফল না পাওয়া পর্যন্ত পুনরায় চেষ্টা করবে।

ছোট্ট স্বপ্নপাইথনের তালিব লাইব্রেরিটি ইনস্টল করা প্রয়োজন।https://www.botvs.com/bbs-topic/669 এই পোস্টটি দেখুন।

ছোট্ট স্বপ্নSleep হল প্রোগ্রামটি কিছু না করার জন্য অপেক্ষা করছে, প্যারামিটার সেট করা আছে, _C হল ফাংশন যা একটি প্যারামিটার পুনরায় কল করে।

ছোট্ট স্বপ্নউত্তরাধিকার ছাড়াই, JS সরাসরি বস্তুর মধ্যে আবৃত হয় {name: "নতুন বস্তু", old_exchange : exchange[0],...... }

ছোট্ট স্বপ্নস্থানীয় সম্পাদক দূরবর্তী সিঙ্ক্রোনাইজেশন প্লাগইন, মূলত স্থানীয় সম্পাদক দূরবর্তী ডিউটি।

ছোট্ট স্বপ্নআপনি কি কিউকিউ গ্রুপে আসতে পারেন, এবং এটি আলোচনা করা সহজ হবে?

ছোট্ট স্বপ্নএপিআই ডকুমেন্টেশনে ধূসর অর্থ হল এই ফাংশনটি খুব বেশি ব্যাখ্যা ছাড়াই ধূসর, নীল প্রতিনিধিত্ব করে।

ছোট্ট স্বপ্নES6 অস্থায়ীভাবে অসমর্থিত, ^^

ছোট্ট স্বপ্নআপনি কি কিউকিউ গ্রুপে যেতে পারেন, আমি প্রশ্নটি বর্ণনা করি, আমি উত্তর দিই ^^

ছোট্ট স্বপ্নএটি সরাসরি একটি ত্রুটি ফেরত দেয় এবং অর্ডারটি বাতিল করে দেয় (বাস্তবে, এটি কিনতে যথেষ্ট নয়!

জুতুর্তিউদাহরণস্বরূপ, OKCoin কেনা হলে কি পরিমাণ টাকা ফিরে আসে, যদি ক্রেতাদের কাছে থাকা মানবাধিকার কয়েন বেশি হয়?

ছোট্ট স্বপ্নআমি একটি অর্ডার নম্বর ফেরত দিতে চাই, কিন্তু আমি কোন এক্সচেঞ্জের কাছে এটি ফেরত দেব?

শূন্যরান-এন্ড স্যুইচিং লেনদেনের জন্য সমর্থন রয়েছে, সর্বশেষতম হোস্ট ডাউনলোড করতে হবে। সমর্থন Bter/Poloniex বিস্তারিত API ডকুমেন্টেশন লেনদেন ফাংশন ট্যাব নীচের বর্ণনা ((ব্রাউজার ক্যাশে খালি করুন এবং যদি না দেখেন তবে আপডেট করুন)

ছোট্ট স্বপ্নQQ আমি, আমি আপনাকে সাহায্য করব আপনার প্রশ্ন খুঁজে বের করতে।

পেশাগত রক্ষকআমি হোস্টের আইপি কি সেট করতে চাই?

ছোট্ট স্বপ্নএটি একটি অন্তর্নিহিত লিঙ্ক যা তৈরি করা হয়নি। সার্ভারটি সাড়া দিচ্ছে না। API KEY অনুরোধ করার সময় কি কোনও আইপি ঠিকানা সেট করা আছে?

পেশাগত রক্ষকএটি বিব্রতকর... আমি ঠিকমত চালাতে পারি এমন কৌশল বিটকয়েন যুগে ব্যর্থ হয়েছে, গেট অ্যাকাউন্টগুলিও গেট অ্যাকাউন্টে অ্যাক্সেস করতে পারে নাঃ পোস্ট http://api.btc38.com/v1/getMyBalance.php: read tcp 192.168.0.227:58596->211.149.148.144:80: wsarecv: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. 2017-05-23 21:08:24 বিটকয়েন যুগ ত্রুটি GetAccount: timeout 2017-05-23 21:08:02 বিটকয়েন যুগ ত্রুটি GetAccount: timeout 2017-05-23 21:07:40 বিটকয়েন যুগ ত্রুটি GetAccount: timeout 2017-05-23 21:07:20 পুনরায় চালু এটা কি আইপি হোয়াইট লিস্টের সমস্যা?

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

পেশাগত রক্ষকA connection attempt failed because the connected party did not properly respond after a period of time. A connection attempt failed because the connected party did not properly respond after a period of time. A connection attempt failed because the connected party did not properly respond after a period of time. একটি সংযোগ প্রচেষ্টা ব্যর্থ হয়েছে কারণ সংযুক্ত পক্ষটি সময়ের পরে সঠিকভাবে সাড়া দেয়নি।

ছোট্ট স্বপ্নহ্যালো! এটি exchange.IO ((api, ApiName, Args) ফাংশনটি সমর্থন করে না, দেখুন https://www.botvs.com/bbs-topic/812

পেশাগত রক্ষকএকটি সংযোগ প্রচেষ্টা ব্যর্থ হয়েছে কারণ সংযুক্ত পক্ষ একটি নির্দিষ্ট সময়ের পরে সঠিকভাবে সাড়া দেয়নি,

পেশাগত রক্ষকবিটকয়েন যুগের সমর্থন নেই?

ছোট্ট স্বপ্নhttps://dn-filebox.qbox.me/a709b30c6cc0a3565234b9e0c99b073f7ba8b454.png আমি মনে করি এটা ঠিক।

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

ছোট্ট স্বপ্নআপনি exchange.IO কল করতে পারেন।

নিং ডেকোঅ্যাকাউন্ট যাচাই করার জন্য API সম্পর্কে কি?

ছোট্ট স্বপ্নযদি অ্যাকাউন্ট যাচাই করার প্রয়োজন না হয় তবে একটি এপিআই httpQuery ব্যবহার করা যেতে পারে (বিস্তারিত BotVS ডকুমেন্টেশন দেখুন), প্রকৃত লেনদেনের জন্য API অ্যাক্সেস করা প্রয়োজন।

ছোট্ট স্বপ্নHttpQuery এপিআই ব্যবহার করে এই প্যারামিটারগুলি প্রেরণ করা যেতে পারেঃ https://www.okcoin.com/api/v1/future_estimated_price.do?symbol=btc_usd, এইভাবে। অ্যাকাউন্ট যাচাই করার প্রয়োজন নেই এমন অ্যাকাউন্টগুলির জন্য এক্সচেঞ্জ এপিআই সরাসরি প্ল্যাটফর্মের এই HttpQuery ফাংশনটি ব্যবহার করে, অ্যাকাউন্টগুলির সাথে সম্পর্কিত ব্যক্তিরা আইওএপিআই ব্যবহার করে (আইও এইগুলি সমর্থন করে না যাচাই করার প্রয়োজন নেই এমন অ্যাকাউন্ট এপিআই) । পোস্টঃ https://www.botvs.com/bbs-topic/850

দর্শনধন্যবাদ, আশা করি আপনার এপিআই ডকুমেন্টেশন ভালো হবে।

ছোট্ট স্বপ্নআপনি কি জানতে চান যে এই realTicker এপিআইটি কোথায় দেখা গেছে?

ছোট্ট স্বপ্নhttps://dn-filebox.qbox.me/fe1a6f5563ed43a5357f858ecf8a50239619228e.png এপিআই ডকুমেন্টেশনটি জাভাস্ক্রিপ্ট ভাষায় বর্ণনা করা হয়েছে, পাইথন সংস্করণ বর্ণনা করা হয়েছে পাতাটির শীর্ষে পাতাটি পাতাটি পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা পাতা

শূন্যহ্যালো, পরামর্শের জন্য ধন্যবাদ, এপিআই ডকুমেন্টেশনটি বর্তমানে পুনর্নির্মাণ করা হচ্ছে।

ছোট্ট স্বপ্নহ্যালো ~ এটি দেখায় যে ভিজিট ফ্রিকোয়েন্সি সীমাবদ্ধতা অতিক্রম করেছে। https://dn-filebox.qbox.me/a09498920d04cac62624b7438a058d2098d8fb00.png আপনি কি আপনার নীতিতে Sleep (1000) ফাংশনটি ব্যবহার করেছেন? এই 1000 হল যে প্রোগ্রামটি প্রতি রাউন্ডে এক সেকেন্ড বিরতি দেয়, যা স্বয়ংক্রিয়ভাবে সেট করা যেতে পারে। এর উদ্দেশ্য হল প্রোগ্রামটি নিয়ন্ত্রণ করা। এপিআই অ্যাক্সেস করার ফ্রিকোয়েন্সি, কারণ কিছু এক্সচেঞ্জ সর্বাধিক অ্যাক্সেস সীমাবদ্ধতা সেট করেছে, একটি নির্দিষ্ট সময়ের জন্য নির্দিষ্ট সংখ্যক অ্যাক্সেস ছাড়িয়ে অ্যাক্সেস প্রত্যাখ্যান করবে, আইপি ঠিকানা ব্লক করবে।

ছোট্ট স্বপ্নhttps://dn-filebox.qbox.me/c29ab7fc279e1b758355f137907cf52dc8257df6.png আমি ব্যক্তিগতভাবে লিখেছি যে, স্টোকআরএসআই সূচকগুলির সাথে তুলনা করা হয়েছে, যা ঠিক আছে, একমত যে, গতি কিছুটা ধীর এবং অপ্টিমাইজ করা হয়েছে, যা সাময়িকভাবে উপলব্ধ।https://www.botvs.com/bbs-topic/392

শূন্যআপনি botvs দ্বারা সরবরাহিত সার্ভারে বা আপনার হোস্টের সার্ভারে পুনরায় পরীক্ষা করতে পারেন, সংস্করণ 2.7.5।

ছোট্ট স্বপ্নএই ছবিটি এখন যোগ করা হয়েছে।

ছোট্ট স্বপ্নএখন আপনি নিজের ব্যাকগ্রাউন্ড স্টাইল কনফিগার করতে পারেন।

ছোট্ট স্বপ্নপাইথন ডকুমেন্টেশন লেখা হচ্ছে।

ছোট্ট স্বপ্নতালেবানের সমর্থনে।

hzzgood48 https://www.botvs.com/bbs-topic/276

ছোট্ট স্বপ্নএটি একটি উদাহরণ, যা কৌশল স্কয়ারে দেখা যাচ্ছে, https://www.botvs.com/strategy/15098

শূন্যঅর্ডারের গড় মূল্য বৈশিষ্ট্যটি অ্যাক্সেস করুন, এক্সচেঞ্জগুলি সমর্থন করে, অ-সমর্থিত এক্সচেঞ্জগুলি 0 এ থাকবে

ইহফগতৃতীয় পক্ষের পুস্তিকা কিভাবে উদ্ধৃতি দেয়?

শূন্যmathjs যদি সন্তুষ্ট না হয়, তবে এটি কেবল তৃতীয় পক্ষের লাইব্রেরী অনুলিপি করার নীতিগুলি সন্ধান করতে পারে। কম্পাইলের গতির জন্য, সিস্টেমটি কেবলমাত্র কয়েকটি লাইব্রেরি অন্তর্নির্মিত করে।

ছোট্ট স্বপ্নআমি অনলাইনে আছি, কিন্তু আমার সাথে যোগাযোগ করতে পারলে আমার সমস্যা হবে।

জিবাংধন্যবাদ।

ছোট্ট স্বপ্নআপনি কি এই গ্রুপের মধ্যে আছেন? আপনি একটি নোটারি সংস্করণ দেখতে পারেন যেখানে আপনি $Cross ফাংশনের জন্য একটি নোটারি দেখতে পারেন।

শূন্যআপনি যদি নতুন কিছু মুছে ফেলতে না পারেন তবে আপনি কেবলমাত্র সাম্প্রতিক কয়েকটি নিবন্ধ সংরক্ষণ করতে পারেন এবং পুরানো সমস্ত মুছে ফেলতে পারেন।

কিরিনপজিশন [i] দিয়ে প্রতিটি হোল্ডিং পেতে, পজিশন একটি অ্যারে।

নিং ডেকোexchange.GetRecords ((PERIOD_D1));

কিরিনআমার ঐতিহ্যগত ফিউচার্স হল GetAccount: not login, "পাসওয়ার্ড ভুল নয়, লগইন করা যাবে না"

শূন্যডিফল্টরূপে সপ্তাহ, সেট কন্ট্রাক্ট টাইপ পেতে নির্দিষ্ট করা প্রয়োজন।

শূন্যআপনি এখন দেখতে পাচ্ছেন যে এই true হল এক্সচেঞ্জের ফিরে আসা cancellation order এর রিটার্ন ভ্যালু, কিন্তু প্রকৃত cancellation cancellation নয়, এটা নির্ভর করে এক্সচেঞ্জের ভিতরে কিভাবে এটি করা হয়।

মোমোক্স3q

শূন্যনা, এটা পৃথক।

শাওয়ানচুয়ানঅবশ্যই না, এটা MT4 এর একচেটিয়া।

শূন্যজাভাস্ক্রিপ্ট তথ্য ইন্টারনেটে সর্বত্র পাওয়া যায়।

বিক্রয়আপনার সমস্যার সমাধান হয়েছে?

শূন্যবেশিরভাগ ক্ষেত্রে, ইনপুট তথ্য সরাসরি রেকর্ড বা একটি বিশুদ্ধ মূল্য অ্যারে হতে পারে।