В процессе загрузки ресурсов... загрузка...

TradingViewWebHook Сигналы выполнения стратегии (урок)

Автор:Изобретатели количественного измерения - мечты, Дата: 28 апреля 2020 года 17:01:35
Тэги:ИзучениеПомощь в торговле

Ссылки:https://www.fmz.com/bbs-topic/5533Ссылка на видео с B-станции:https://www.bilibili.com/video/BV1Wk4y1k7zz/

  • Обновлено 29.7.2020 Добавить SPK, BPK два указания, соответственно: продать пустую позицию после продажи плоской позиции, купить пустую позицию после покупки плоской позиции.

/*
- 交互命令字符串格式
  action:amount
  action: buy , sell , long , short , cover_long , cover_short, spk , bpk
- 交易所类型
  eType变量取值: 0 spot , 1 futures

- TV文档链接
  https://www.tradingview.com/pine-script-docs/en/v4/Quickstart_guide.html
  https://cn.tradingview.com/chart/8xfTuX7F/

- TV webhook 发送请求
  https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"action:amount"]

- 引用类库
  引用数字货币交易类库
*/

// 参数
// var IsMarketOrder = false 
// var QuotePrecision = 2
// var BasePrecision = 2

// 期货参数
// var Ct = ""


// 全局变量
var BUY = "buy"
var SELL = "sell"
var LONG = "long"
var SHORT = "short"
var COVER_LONG = "cover_long"
var COVER_SHORT = "cover_short"
var SPK = "spk"
var BPK = "bpk"


function main() {
    // 清空日志,如不需要,可以删除
    LogReset(1)

	// 设置精度
    exchange.SetPrecision(QuotePrecision, BasePrecision)

    // 识别期货还是现货
    var eType = 0
    var eName = exchange.GetName()
    var patt = /Futures_/
    if (patt.test(eName)) {
        Log("添加的交易所为期货交易所:", eName, "#FF0000")
        eType = 1
        if (Ct == "") {
            throw "Ct 合约设置为空"
        } else {
        	Log(exchange.SetContractType(Ct), "设置合约:", Ct, "#FF0000")
        }
    } else {
    	Log("添加的交易所为现货交易所:", eName, "#32CD32")
    }
    
    var lastMsg = ""
    var acc = _C(exchange.GetAccount)
    while(true) {
        var cmd = GetCommand()
        if (cmd) {
            // 检测交互命令
            lastMsg = "命令:" + cmd + "时间:" + _D()
            var arr = cmd.split(":")
            if (arr.length != 2) {
                Log("cmd信息有误:", cmd, "#FF0000")
                continue
            }

            var action = arr[0]
            var amount = parseFloat(arr[1])

            if (eType == 0) {
                if (action == BUY) {               
                    var buyInfo = IsMarketOrder ? exchange.Buy(-1, amount) : $.Buy(amount)
                    Log("buyInfo:", buyInfo)
                } else if (action == SELL) {        
                    var sellInfo = IsMarketOrder ? exchange.Sell(-1, amount) : $.Sell(amount)
                    Log("sellInfo:", sellInfo)
                } else {
                	Log("现货交易所不支持!", "#FF0000")
                }
            } else if (eType == 1) {
            	var tradeInfo = null
            	var ticker = _C(exchange.GetTicker)
                if (action == LONG) {
                	exchange.SetDirection("buy")
                    tradeInfo = IsMarketOrder ? exchange.Buy(-1, amount) : exchange.Buy(ticker.Sell, amount)
                } else if (action == SHORT) {        
                    exchange.SetDirection("sell")
                    tradeInfo = IsMarketOrder ? exchange.Sell(-1, amount) : exchange.Sell(ticker.Buy, amount)
                } else if (action == COVER_LONG) {        
                    exchange.SetDirection("closebuy")
                    tradeInfo = IsMarketOrder ? exchange.Sell(-1, amount) : exchange.Sell(ticker.Buy, amount)
                } else if (action == COVER_SHORT) {        
                	exchange.SetDirection("closesell")
                	tradeInfo = IsMarketOrder ? exchange.Buy(-1, amount) : exchange.Buy(ticker.Sell, amount)
                } else if (action == SPK) {   // 卖出平多仓,卖出开空仓
                    exchange.SetDirection("closebuy")
                    var tradeInfo1 = IsMarketOrder ? exchange.Sell(-1, amount) : exchange.Sell(ticker.Buy, amount)
                    exchange.SetDirection("sell")
                    var tradeInfo2 = IsMarketOrder ? exchange.Sell(-1, amount) : exchange.Sell(ticker.Buy, amount)
                    tradeInfo = [tradeInfo1, tradeInfo2]
                } else if (action == BPK) {   // 买入平空仓,买入开多仓
                    exchange.SetDirection("closesell")
                    var tradeInfo1 = IsMarketOrder ? exchange.Buy(-1, amount) : exchange.Buy(ticker.Sell, amount)
                    exchange.SetDirection("buy")
                    var tradeInfo2 = IsMarketOrder ? exchange.Buy(-1, amount) : exchange.Buy(ticker.Sell, amount)
                    tradeInfo = [tradeInfo1, tradeInfo2]
                } else {
                	Log("期货交易所不支持!", "#FF0000")
                }
                if (tradeInfo) {
                    Log("tradeInfo:", tradeInfo)
                }
            } else {
            	throw "eType error, eType:" + eType
            }
            acc = _C(exchange.GetAccount)
        }
        var tbl = {
        	type : "table", 
        	title : "状态信息", 
        	cols : ["数据"], 
        	rows : []
        }
        tbl.rows.push([JSON.stringify(acc)])
        LogStatus(_D(), eName, "上次接收到的命令:", lastMsg, "\n", "`" + JSON.stringify(tbl) + "`")
    	Sleep(1000)
    }
}



Связанные

Больше

суперонЯ смотрю эту ночь и не понимаю, может быть, перепишите?

zz791377920Какие биржи поддерживает это?

zz791377920Например, если вы заполнили 10 операций на месте, то при заказе сумма превратится в 10u.

Фучжи 1.ReferenceError: 'QuotePrecision' is not defined at main (__FILE__:13) - переводчик, переводчик, переводчик, переводчик

Кукерз.Спросите, можно ли установить только количество в контрактной сделке, как написать, если сделка будет заполнена каждый раз?

15937556103Учитель может прислать полную стратегию по контракту?

15937556103/upload/asset/203b175e3c2c22ac9681c.png Почему так всегда?

Тоби2022Здравствуйте, можно ли разместить несколько сделок на одном боте? затем привести предупреждение URL добавить название пары сделок, и бот запустит несколько пары сделок предупреждение

7мр.long,short,cover_long,cover_SHORT, нужно ли добавлять вебхуки по отдельности?

СБВФГ198212Что это значит, фьючерсные биржи не поддерживают, я хочу сделать постоянный контракт на Bitcoin BTC_USDT

СБВФГ198212Что это значит, фьючерсные биржи не поддерживают, я хочу сделать постоянный контракт на Bitcoin BTC_USDT

СБВФГ198212/upload/asset/1cd7a606f646b8c0d32be.png

В обратном направлении КБрат, можно ли выпустить учебный видео о том, как добавлять и настраивать фьючерсные контракты, где лучше будет рассказать подробнее?

суг210/upload/asset/125e8fed0f51ab1f8122e.jpg Ошибка с указанием spk

Ночное небоКак решить проблему с тем, что телевидение высылает сигналы, FMZ иногда не получает сигнал? В частности, две стратегии телевидения указывают на то, что одновременно два робота высылают сигналы FMZ, иногда один робот не получает сигнал.

Нехолодное полуостровSpk, bpk, нужно ли добавлять число после Spk? В случае, если сигналы телевизора имеют многочисленные сигналы тревоги, то общее количество сигналов может быть открыто сразу, как пустой лист.

мело23Контракт множитель где выбрать

Изобретатели количественного измерения - мечтыПосмотрите на параметры стратегии, если вы добавляете объект фьючерсной биржи, вы должны настроить контракт. В противном случае робот не знает, какой контракт работать.

Ричи.Здравствуйте, напоминание об ошибке в установке ct-контракта на пустое место.

Изобретатели количественного измерения - мечтыВсе это возможно, но параметры, настройки вебхука на телевизоре могут быть изменены в зависимости от того, какая разновидность делается.

Изобретатели количественного измерения - мечтыНапример, если вы покупаете товар по рыночной цене, то следующая сумма - это сумма.

Изобретатели количественного измерения - мечтыПолагаю, что вы ошиблись, проверяя документацию по API.

Фучжи 1.Если вы не можете изменить ключ, вам не нужно копировать всю политику, чтобы настроить ее.

Изобретатели количественного измерения - мечтыКод 1 - это неправильный API KEY, проверьте.

Фучжи 1.Сейчас я тестирую, что можно заказать на платформе, но с помощью расширения API я получаю сообщение об ошибке, возвращаю, code:1, data: [], я получаю прямой доступ с помощью ссылки, как если бы браузер открывал ссылку.

Изобретатели количественного измерения - мечтыНе просто копируйте код, копируйте всю стратегию.

Изобретатели количественного измерения - мечтыПолучается, что телевидение не может передавать сигналы, в которых написано, сколько нужно, сколько нужно.

Изобретатели количественного измерения - мечтыЭта стратегия сама по себе является полным примером того, как можно запустить фьючерс, если вы ошиблись командой, проверьте.

Изобретатели количественного измерения - мечтыВы можете запустить фьючерс, но ваша команда в обратном вызове вебхука ошибочна, пожалуйста, внимательно прочитайте код.

Тоби2022 好的,已经在众包板块发布了信息,期望你的成果和合作,thanks.

Изобретатели количественного измерения - мечтыЭто не изменилось, и теперь можно публиковать информацию в блокчейн, где разработчики могут получить заказ.

Тоби2022Может ли кто-то из вас отправить вам изменения прямо сейчас?

Изобретатели количественного измерения - мечтыНа платформе есть брокерская площадка, на которой можно публиковать запросы.

Тоби2022@KaloCollin, можно ли изменить такую стратегию, если это возможно, конечно, можно купить, ожидая ваших результатов и отзывов, спасибо.

Изобретатели количественного измерения - мечтыЭто может быть так, но нужно изменить эту стратегию.

Изобретатели количественного измерения - мечтыЯ не совсем понимаю, что вы имеете в виду.

7мр.Я установил четыре предупреждения: long, short, coverlong, covershort, но поскольку это стратегия, а не исследование, все четыре инструкции всегда запускаются одновременно...

7мр.Как это сделать?

Изобретатели количественного измерения - мечтыНапример, в одном из веб-сайтов, где вы можете найти информацию о том, что происходит, вы можете указать URL веб-хока.

7мр.Была обнаружена проблема, когда можно было получать только трейдинговые предупреждения от индикаторов tradingview, но стратегия, которую я написал, устанавливала четыре различных предупреждения, но, похоже, не могла быть идентифицирована, когда сигналы были созданы, и четыре сигнала были открыты одновременно.

Изобретатели количественного измерения - мечтыТелевизионный запрос на предупреждение `` https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515, "action:amount"] `` Например, в этом месте action вы пишете команду, которую робот получает. `` https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515, "long:1"] ``

Изобретатели количественного измерения - мечтыСначала посмотрите на FMZ начальный учебник, чтобы управлять счетом фьючерсной биржи, сначала настроить фьючерсную биржу; затем добавить объект фьючерсной биржи в бот.

СБВФГ198212/upload/asset/1ccc5603d54593dcba809.png

СБВФГ198212Я просто изменил эти места, и Бог поможет мне увидеть, где это не так, я не добавлю объекты фьючерсных бирж, параметры настройки контрактов, постоянные - это свопы, конечная цена - XXX_USD, U - XXX_USDT.

Изобретатели количественного измерения - мечтыДобавить объект фьючерсного рынка, на параметре которого установлены контракты, постоянный - это swap, конечная величина - XXX_USD, U - XXX_USDT.

Изобретатели количественного измерения - мечтыПроверяется, можно ли вызывать SPK без наличия запасов.

Изобретатели количественного измерения - мечтыТелевизионные прямые каналы, представленные в библиотеке платформы FMZ, доступны по адресу: https://www.fmz.com/digest-topic/5969.

Изобретатели количественного измерения - мечтыУвеличить уровень левериджа можно на биржевых биржах; или настроить уровень левериджа до размещения ордера в коде стратегии exchange.SetMarginLevel() ```

Изобретатели количественного измерения - мечтыЕсли у вас нет денег, вы не знаете, что делать, если вы не знаете, что делать.

Изобретатели количественного измерения - мечты`` https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515, "action:amount"] `` action записывается как spk, bpk

Ночное небоЯ хотел бы знать, как настроить SPK и BPK на стороне ТВ.