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 на стороне ТВ.