Многие люди, которые занимаются ручной торговлей, нуждаются в роботах, но для начала программирования требуется больше времени. В этой статье мы разработали простые роботы, которые помогут вам научиться программированию.
Сначала мы анализируем потребности, и робот выполняет эту функцию, когда один аккаунт совершает покупку или продажу, другие аккаунты следуют за ним. Поэтому, прежде всего, мы должны определить два субъекта:
Если мы сначала определим эту потребность, мы продолжим думать о следующем шаге.
Мониторинг справочных счетов очень прост для наличных счетов, мы можем просто сравнить количество монет в последней информации о счете с количеством монет в последней информации о счете, полученной в настоящее время. Если количество монет в данной информации о текущем аккаунте больше, чем было зафиксировано в предыдущей записи, то это свидетельствует о том, что ссылка на аккаунт выполнила одну покупку и покупка была успешной. Если же меньше монет, то ссылка на аккаунт выполнила одну продажу. После того, как мы обнаружили это действие, мы можем попросить другие аккаунты обмена сделать то же самое.
Когда обнаруживается, что ссылка была выполнена после одной сделки, обязательно обновляйте последние записи данных счета для сравнения с информацией счета, полученной в следующий раз, чтобы определить, есть ли новые действия.
В этой статье мы рассмотрим некоторые из них.
// 检测跟单
var amount = (nowAcc.Stocks + nowAcc.FrozenStocks) - (initAcc.Stocks + initAcc.FrozenStocks) // 检测币数发生的变化
var func = null
if (amount > 0) { // 币变多了
func = $.Buy // 买入
} else if (amount < 0) { // 币变少了
func = $.Sell // 卖出
} else {
continue
}
// 执行跟单
Log("跟单!数量:", Math.abs(amount), "#FF0000")
for (var i = 1 ; i < exchanges.length ; i++) { // i 等于 0 时,是参考交易所,不处理,处理其它的跟单交易所
func(exchanges[i], Math.abs(amount)) // 执行具体的交易函数,可能是$.Buy 或者是 $.Sell ,具体看amount 是大于0,还是小于0
}
// 执行跟单之后更新参考交易所账户信息记录
initAcc = nowAcc // 更新参考交易所最近一次的账户信息,用于下次对比
Основная логика обнаружения стратегии - это вышеперечисленный код. Для простоты разработки стратегии используется официальный шаблон библиотеки цифровых валют FMZ.$.Buy
, $.Sell
Все функции этого шаблона выполняют следующие операции.
Полное описание политики: Добавить в политику несколько панелей состояния, чтобы проконтролировать данные отдельных учетных записей.
function test() {
// 测试函数
var ts = new Date().getTime()
if (ts % (1000 * 60 * 60 * 6) > 1000 * 60 * 60 * 5.5) {
Sleep(1000 * 60 * 10)
var x = Math.random()
if (x > 0.5) {
$.Buy(exchange, x / 10)
} else {
$.Sell(exchange, x / 10)
}
}
}
function main() {
LogReset(1)
if (exchanges.length < 2) {
throw "没有跟单的交易所"
}
var exName = exchange.GetName()
// 检测参考交易所
if (exName.includes("Futures_")) {
throw "仅支持现货跟单"
}
Log("开始监控", exName, "交易所", "#FF0000")
// 检测跟单交易所
for (var i = 1 ; i < exchanges.length ; i++) {
if (exchanges[i].GetName().includes("Futures_")) {
throw "不支持期货交易所跟单"
}
}
var initAcc = _C(exchange.GetAccount)
while(1) {
if(IsVirtual()) {
// 测试函数
test()
}
Sleep(5000)
// 更新参考账户当前的账户信息
var nowAcc = _C(exchange.GetAccount)
// 参考交易所账户信息
var refTbl = {
type : "table",
title : "参考交易所",
cols : ["名称", "币", "冻结币", "钱", "冻结钱"],
rows : []
}
refTbl.rows.push([exName, nowAcc.Stocks, nowAcc.FrozenStocks, nowAcc.Balance, nowAcc.FrozenBalance])
// 跟单交易所账户信息
var followTbl = {
type : "table",
title : "跟单交易所",
cols : ["名称", "币", "冻结币", "钱", "冻结钱"],
rows : []
}
for (var i = 1 ; i < exchanges.length ; i++) {
var acc = _C(exchanges[i].GetAccount)
var name = exchanges[i].GetName()
followTbl.rows.push([name, acc.Stocks, acc.FrozenStocks, acc.Balance, acc.FrozenBalance])
}
// 状态栏显示
LogStatus(_D(), "\n`" + JSON.stringify(refTbl) + "`", "\n`" + JSON.stringify(followTbl) + "`")
// 检测跟单
var amount = (nowAcc.Stocks + nowAcc.FrozenStocks) - (initAcc.Stocks + initAcc.FrozenStocks)
var func = null
if (amount > 0) {
func = $.Buy
} else if (amount < 0) {
func = $.Sell
} else {
continue
}
// 执行跟单
Log("跟单!数量:", Math.abs(amount), "#FF0000")
for (var i = 1 ; i < exchanges.length ; i++) {
func(exchanges[i], Math.abs(amount))
}
// 执行跟单之后更新参考交易所账户信息记录
initAcc = nowAcc
}
}
Давайте попробуем это в реальном режиме, используя FMZ, чтобы проверить мыксапп имитационную биржу. Здесь я добавил три учетных записей wexApp, которые являются независимыми друг от друга.
Затем мы используем торговый терминал FMZ, чтобы вручную перевести следующую куплю, чтобы увидеть, будет ли робот автоматически оплачивать покупку.
Как вы можете видеть, робот обнаружил транзакцию и выполнил следующую операцию.
Полная стратегия:https://www.fmz.com/strategy/255182
Эта стратегия предназначена только для обучения, если у вас есть вопросы, спасибо за комментарий.
СиаиЗдравствуйте, вы можете помочь с развертыванием, заплатив за помощь.
СиаиЗдравствуйте, вы можете помочь с развертыванием, заплатив за помощь.
Толстые.Можно ли обнаружить подвеску?
13169222039Здравствуйте, я хотел бы спросить вас, что вы можете сделать с этим кодом на монете.
Изобретатели количественного измерения - мечтыЭта стратегия является открытым исходным кодом и открыта для публики на площади стратегии.
кореньЕсли у вас есть задержка на реальных монетах, возможно, ваша цена значительно отличается от их.