Мы продолжаем предыдущий пост:Дизайн синхронной системы управления заказами на базе FMZ (1)Позже, после обсуждения, мы приступили к разработке стратегии синхронизации списков.
Посмотрите на несколько вопросов, связанных с дизайном:
1, если вы не хотите синхронизировать счета временно, можно ли приостановить. После приостановки запрещается запуск с расширения API, использование пароля проверки. Для реализации этой функции добавлены две глобальные переменные:
var isStopFollow = false // 用于标记当前是否跟单
var reStartPwd = null // 用于记录重启密码
Затем на странице редактирования политики добавляется интерактивный контроллер, используемый для приостановки/перезагрузки политики ((не приостанавливает этот диск, просто логический приостановка, не следит за списком, ничего не делает)); приостановка может быть настроена как пароль приостановки, так что даже если у вас есть расширение API KEY订单同步管理系统类库(Single Server)
Диск также не может пробудить вашу политику. При перезагрузке списка вводите пароль, установленный по умолчанию, чтобы пробудить функции списка.
Код реализации соответствующих функций:
...
// 判断交互指令
if (arr.length == 2) {
// 带控件的按钮
if (arr[0] == "stop/restart") {
// 暂停/重启跟单
if (!isStopFollow) {
isStopFollow = true
reStartPwd = arr[1]
Log("已经停止跟单,", "设置的重启密码为:", reStartPwd, "#FF0000")
} else if (isStopFollow && arr[1] == reStartPwd) {
isStopFollow = false
reStartPwd = null
Log("已经重启跟单,", "清空重启密码。", "#FF0000")
} else if (isStopFollow && arr[1] != reStartPwd) {
Log("重启密码错误!")
}
}
continue
}
2, можно указать количество подписных листов или увеличить их по множественным числам Добавить параметры в стратегию:
specifiedAmount: указывает количество последовательностей, по умолчанию -1, то есть не указывает.
zoomAmountRatio: масштабирование меньшей величины передаваемого сигнала, например:ETH_USDT,swap,buy,1
, то мы умножим значение нижней единицы на zoomAmountRatio.
var amount = specifiedAmount == -1 ? action.amount : specifiedAmount
amount = zoomAmountRatio == -1 ? amount : amount * zoomAmountRatio
Здесь реализовано меньшее количество потребностей в полученном сигнале.УвеличениеИлиУкажите конкретные значения。
3, Код максимально упрощенный, сделанный с использованием других библиотек шаблонов.
Например, вы можете использовать следующие файлы:https://www.fmz.com/strategy/10989Фьючерсные заказы используют следующие классы:https://www.fmz.com/strategy/203258
function trade(action) {
// 切换交易对,设置合约
exchange.SetCurrency(action.symbol)
if (action.ct != "spot") {
exchange.SetContractType(action.ct)
}
var retTrade = null
var amount = specifiedAmount == -1 ? action.amount : specifiedAmount
amount = zoomAmountRatio == -1 ? amount : amount * zoomAmountRatio
if (action.direction == "buy") {
retTrade = action.ct == "spot" ? $.Buy(amount) : $.OpenLong(exchange, action.ct, amount)
} else if (action.direction == "sell") {
retTrade = action.ct == "spot" ? $.Sell(amount) : $.OpenShort(exchange, action.ct, amount)
} else if (action.direction == "closebuy") {
retTrade = action.ct == "spot" ? $.Sell(amount) : $.CoverLong(exchange, action.ct, amount)
} else if (action.direction == "closesell") {
retTrade = action.ct == "spot" ? $.Buy(amount) : $.CoverShort(exchange, action.ct, amount)
}
return retTrade
}
В этом случае, если вы хотите, чтобы ваш ребенок был здоровым, вы должны быть готовы к этому.$.Sell(amount)
、$.Buy(amount)
、 $.OpenLong(exchange, action.ct, amount)
... и так далее.
Предыдущий订单同步管理系统(Synchronous Server)
Временный код выглядит так:
Сейчас начинается перепроектирование.订单同步管理系统(Synchronous Server)
:
// 全局变量
var isStopFollow = false
var reStartPwd = null
function trade(action) {
// 切换交易对,设置合约
exchange.SetCurrency(action.symbol)
if (action.ct != "spot") {
exchange.SetContractType(action.ct)
}
var retTrade = null
var amount = specifiedAmount == -1 ? action.amount : specifiedAmount
amount = zoomAmountRatio == -1 ? amount : amount * zoomAmountRatio
if (action.direction == "buy") {
retTrade = action.ct == "spot" ? $.Buy(amount) : $.OpenLong(exchange, action.ct, amount)
} else if (action.direction == "sell") {
retTrade = action.ct == "spot" ? $.Sell(amount) : $.OpenShort(exchange, action.ct, amount)
} else if (action.direction == "closebuy") {
retTrade = action.ct == "spot" ? $.Sell(amount) : $.CoverLong(exchange, action.ct, amount)
} else if (action.direction == "closesell") {
retTrade = action.ct == "spot" ? $.Buy(amount) : $.CoverShort(exchange, action.ct, amount)
}
return retTrade
}
function parseCmd(cmd) {
var objAction = {}
// 解析cmd ,例如:ETH_USDT,swap,buy,1
var arr = cmd.split(",")
if (arr.length != 4) {
return null
}
objAction.symbol = arr[0]
objAction.ct = arr[1]
objAction.direction = arr[2]
objAction.amount = arr[3]
return objAction
}
function main() {
// 清除所有日志
LogReset(1)
if (isSimulateOKEX) {
exchange.IO("simulate", true)
Log("切换到OKEX模拟盘!")
}
// 设置精度
exchange.SetPrecision(pricePrecision, amountPrecision)
// 检查缩放、指定不能同时设置
if (specifiedAmount != -1 && zoomAmountRatio != -1) {
throw "不能同时指定同步量和缩放量"
}
while (true) {
var cmd = GetCommand()
if (cmd) {
Log("cmd: ", cmd)
var arr = cmd.split(":")
// 判断交互指令
if (arr.length == 2) {
// 带控件的按钮
if (arr[0] == "stop/restart") {
// 暂停/重启跟单
if (!isStopFollow) {
isStopFollow = true
reStartPwd = arr[1]
Log("已经停止跟单,", "设置的重启密码为:", reStartPwd, "#FF0000")
} else if (isStopFollow && arr[1] == reStartPwd) {
isStopFollow = false
reStartPwd = null
Log("已经重启跟单,", "清空重启密码。", "#FF0000")
} else if (isStopFollow && arr[1] != reStartPwd) {
Log("重启密码错误!")
}
}
continue
}
// 允许跟单
if (!isStopFollow) {
// 解析跟单信号交互指令
var objAction = parseCmd(cmd)
if (objAction) {
// 解析正确
var ret = trade(objAction)
} else {
Log("错误的信号指令 cmd:", cmd)
}
}
}
// 显示跟单情况
LogStatus(_D(), isStopFollow ? "停止同步" : "保持同步", "\n")
Sleep(1000)
}
}
На данный раз учетная запись использует Binance на диске, а учетная запись использует учетную запись OKEX.订单同步管理系统类库(Single Server)
В шаблонеmain
Функция) ⋅
Но мы изменили направление сделки на пустое, и количество сделок было изменено на 0.003 ((Биньян USDT) новые контракты могут быть заказаны с целым числом прописок). Но учетная запись ОКЕКС должна быть целым числом ((ОКЕКС) учетная запись должна быть целым числом прописок, поэтому параметры Я указываю параметры политикиspecifiedAmount
Это 1⁄4.
订单同步管理系统类库(Single Server)
Процесс тестирования функций на диске запускает транзакции.
Политики на диске получают сигнал и выполняют следующие действия:
Например, в 2010 году в Нью-Йорке появилась одна из крупнейших торговых площадок в мире, а в 2012 году - в Нью-Йорке.
Затем проверьте равновесие, изменив направление нижнего ряда в тестовой функции main на равновесие 0.003 пустого положения.
И затем снова запустить этот диск, который отвечает за ленту.订单同步管理系统类库(Single Server)
)。
Поскольку он не имеет никакого отношения к работе с компьютером, он не имеет никакого отношения к работе с компьютером, и не имеет никакого отношения к работе с компьютером.
Политический адрес:Классификация систем синхронного управления заказами (Single Server) Система синхронного управления заказами (Synchronous Server)
Стратегический дизайн предназначен только для обмена знаниями, фактическое производство требует собственных изменений, корректировок и оптимизации.