4
ফোকাস
1271
অনুসারী

পরিমাণগত ট্রেডিংয়ে দক্ষ গ্রুপ নিয়ন্ত্রণ ব্যবস্থাপনার সুবিধা উপলব্ধি করতে FMZ এর বর্ধিত API ব্যবহার করুন

তৈরি: 2023-11-19 20:57:18, আপডেট করা হয়েছে: 2025-05-16 16:49:59
comments   0
hits   954

পরিমাণগত ট্রেডিংয়ে দক্ষ গ্রুপ নিয়ন্ত্রণ ব্যবস্থাপনার সুবিধা উপলব্ধি করতে FMZ এর বর্ধিত API ব্যবহার করুন

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

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

কেন্দ্রীভূত পর্যবেক্ষণ

FMZ এর বর্ধিত API এর মাধ্যমে, আপনি কেন্দ্রীয়ভাবে ট্রেডিং কার্যক্রম এবং সমস্ত আসল অ্যাকাউন্টের সম্পদের অবস্থা পর্যবেক্ষণ করতে পারেন। এটি প্রতিটি অ্যাকাউন্টের অবস্থানের অবস্থা, ঐতিহাসিক লেনদেনের রেকর্ড, বা রিয়েল টাইমে অ্যাকাউন্টের লাভ-ক্ষতির স্থিতি পর্যবেক্ষণ করা কিনা তা উপলব্ধি করা যেতে পারে।

// 全局变量
var isLogMsg = true   // 控制日志是否打印
var isDebug = false   // 调试模式
var arrIndexDesc = ["all", "running", "stop"]
var descRobotStatusCode = ["空闲中", "运行中", "停止中", "已退出", "被停止", "策略有错误"]
var dicRobotStatusCode = {
    "all" : -1,
    "running" : 1,
    "stop" : 4,
}

// 扩展的日志函数
function LogControl(...args) {
    if (isLogMsg) {
        Log(...args)
    }
}

// FMZ扩展API调用函数
function callFmzExtAPI(accessKey, secretKey, funcName, ...args) {
    var params = {
        "version" : "1.0",
        "access_key" : accessKey,
        "method" : funcName,
        "args" : JSON.stringify(args),
        "nonce" : Math.floor(new Date().getTime())
    }

    var data = `${params["version"]}|${params["method"]}|${params["args"]}|${params["nonce"]}|${secretKey}`
    params["sign"] = Encode("md5", "string", "hex", data)
    
    var arrPairs = []
    for (var k in params) {
        var pair = `${k}=${params[k]}`
        arrPairs.push(pair)
    }
    var query = arrPairs.join("&")
    
    var ret = null
    try {
        LogControl("url:", baseAPI + "/api/v1?" + query)
        ret = JSON.parse(HttpQuery(baseAPI + "/api/v1?" + query))
        if (isDebug) {
            LogControl("Debug:", ret)
        }
    } catch(e) {
        LogControl("e.name:", e.name, "e.stack:", e.stack, "e.message:", e.message)
    }
    Sleep(100)  // 控制频率
    return ret 
}

// 获取指定策略Id的所有运行中的实盘信息
function getAllRobotByIdAndStatus(accessKey, secretKey, strategyId, robotStatusCode, maxRetry) {
    var retryCounter = 0
    var length = 100
    var offset = 0
    var arr = []

    if (typeof(maxRetry) == "undefined") {
        maxRetry = 10
    }

    while (true) {
        if (retryCounter > maxRetry) {
            LogControl("超过最大重试次数", maxRetry)
            return null
        }
        var ret = callFmzExtAPI(accessKey, secretKey, "GetRobotList", offset, length, robotStatusCode)
        if (!ret || ret["code"] != 0) {
            Sleep(1000)
            retryCounter++
            continue
        }

        var robots = ret["data"]["result"]["robots"]
        for (var i in robots) {
            if (robots[i].strategy_id != strategyId) {
                continue
            }
            arr.push(robots[i])
        }

        if (robots.length < length) {
            break
        }
        offset += length
    }

    return arr 
}

function main() {
    var robotStatusCode = dicRobotStatusCode[arrIndexDesc[robotStatus]]
    var robotList = getAllRobotByIdAndStatus(accessKey, secretKey, strategyId, robotStatusCode)
    if (!robotList) {
        Log("获取实盘数据失败")
    }
    
    var robotTbl = {"type": "table", "title": "实盘列表", "cols": [], "rows": []}
    robotTbl.cols = ["实盘Id", "实盘名称", "实盘状态", "策略名称", "实盘收益"]

    _.each(robotList, function(robotInfo) {
        robotTbl.rows.push([robotInfo.id, robotInfo.name, descRobotStatusCode[robotInfo.status], robotInfo.strategy_name, robotInfo.profit])
    })

    LogStatus(_D(), "`" + JSON.stringify(robotTbl) + "`")
}

কৌশলগত পরামিতি নকশা:

পরিমাণগত ট্রেডিংয়ে দক্ষ গ্রুপ নিয়ন্ত্রণ ব্যবস্থাপনার সুবিধা উপলব্ধি করতে FMZ এর বর্ধিত API ব্যবহার করুন

মিথস্ক্রিয়া নকশা:

পরিমাণগত ট্রেডিংয়ে দক্ষ গ্রুপ নিয়ন্ত্রণ ব্যবস্থাপনার সুবিধা উপলব্ধি করতে FMZ এর বর্ধিত API ব্যবহার করুন

বাস্তব অপারেশন:

পরিমাণগত ট্রেডিংয়ে দক্ষ গ্রুপ নিয়ন্ত্রণ ব্যবস্থাপনার সুবিধা উপলব্ধি করতে FMZ এর বর্ধিত API ব্যবহার করুন

এক ক্লিকে এক্সিকিউশন

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

আসল অফার তালিকার তথ্য পাওয়ার পর, আমরা পূর্বনির্ধারিত ক্রিয়াকলাপগুলির একটি সিরিজ সম্পাদন করার জন্য আসল অফারে নির্দেশাবলী পাঠাতে পারি। যেমন: রিয়েল অফার ক্লিয়ারেন্স, রিয়েল অফার সাসপেনশন প্রোটেকশন, রিয়েল অফার মোড স্যুইচিং। এগুলি FMZ এর এক্সটেনশন API এর মাধ্যমে অ্যাক্সেস করা যেতে পারেCommandRobotসম্পন্ন করা

আমরা কোড লিখতে চালিয়ে যাচ্ছি এবং শুধুমাত্র কিছু মিথস্ক্রিয়া যোগ করতে হবে এবং প্রধান ফাংশনে API ইন্টারফেস প্রসারিত করতে হবেCommandRobotকল:

function main() {
    var robotStatusCode = dicRobotStatusCode[arrIndexDesc[robotStatus]]
    var robotList = getAllRobotByIdAndStatus(accessKey, secretKey, strategyId, robotStatusCode)
    if (!robotList) {
        Log("获取实盘数据失败")
    }
    
    var robotTbl = {"type": "table", "title": "实盘列表", "cols": [], "rows": []}
    robotTbl.cols = ["实盘Id", "实盘名称", "实盘状态", "策略名称", "实盘收益"]

    _.each(robotList, function(robotInfo) {
        robotTbl.rows.push([robotInfo.id, robotInfo.name, descRobotStatusCode[robotInfo.status], robotInfo.strategy_name, robotInfo.profit])
    })

    LogStatus(_D(), "`" + JSON.stringify(robotTbl) + "`")

    while(true) {
        LogStatus(_D(), ", 等待接收交互命令", "\n", "`" + JSON.stringify(robotTbl) + "`")

        var cmd = GetCommand()
        if (cmd) {
            var arrCmd = cmd.split(":")
            if (arrCmd.length == 1 && cmd == "coverAll") {
                _.each(robotList, function(robotInfo) {
                    var strCmd = "清仓"               // 可以定义所需的消息格式
                    if (robotInfo.status != 1) {     // 只有”活着“的实盘才能接收命令
                        return 
                    }
                    var ret = callFmzExtAPI(accessKey, secretKey, "CommandRobot", parseInt(robotInfo.id), strCmd)
                    LogControl("向id:", robotInfo.id, "的实盘发送命令:", strCmd, ", 执行结果:", ret)
                })
            }
        }
        Sleep(1000)
    }
}

পরিমাণগত ট্রেডিংয়ে দক্ষ গ্রুপ নিয়ন্ত্রণ ব্যবস্থাপনার সুবিধা উপলব্ধি করতে FMZ এর বর্ধিত API ব্যবহার করুন

গ্রুপ কন্ট্রোল কৌশলটি “টেস্ট 1 এ” এবং “টেস্ট 1 বি” তে নির্দেশনা পাঠিয়েছে।

পরিমাণগত ট্রেডিংয়ে দক্ষ গ্রুপ নিয়ন্ত্রণ ব্যবস্থাপনার সুবিধা উপলব্ধি করতে FMZ এর বর্ধিত API ব্যবহার করুন

পরিমাণগত ট্রেডিংয়ে দক্ষ গ্রুপ নিয়ন্ত্রণ ব্যবস্থাপনার সুবিধা উপলব্ধি করতে FMZ এর বর্ধিত API ব্যবহার করুন

নীতি সিঙ্ক্রোনাইজেশন

FMZ এর বর্ধিত API ব্যবহার করে, আপনি সহজেই ব্যাচগুলিতে কৌশল পরামিতিগুলি পরিবর্তন করতে পারেন, ব্যাচে প্রকৃত ট্রেডিং শুরু করতে এবং বন্ধ করতে পারেন। বিষয়বস্তুর দৈর্ঘ্যের পরিপ্রেক্ষিতে, আমরা পরবর্তী নিবন্ধে কৌশল রিয়েল-টাইম প্যারামিটার এবং স্টার্টআপের ব্যাচ পরিবর্তন সম্পর্কে বিস্তারিতভাবে ব্যাখ্যা করব।

উপসংহার

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