En las estrategias de cobertura, hay varios tipos de cobertura; cobertura cruzada entre mercados, cobertura cruzada entre períodos, etc. Hoy vamos a hablar de cobertura cruzada entre variedades, más exactamente, estrategias de cobertura cruzada entre monedas en transacciones cuantificadas de activos de la cadena de bloques. Los artículos que se muestran en las transacciones de cobertura comúnmente son los mismos, mientras que la cobertura cruzada entre monedas es la compra y venta de artículos diferentes. En la misma variedad de cobertura, podemos usar la diferencia de precio como el precio de compra y venta en las transacciones de cobertura, y con la más simple cobertura cruzada entre variedades, este precio debe oscilar repetidamente en el rango.
Por ejemplo: A es el par de transacciones: LTC_USDT El par de transacciones B es: ETH_USDT
SegúnA交易对的价格/B交易对的价格
Esta proporción de precio es numérica, dispersa. Cuanto mayor es esta proporción, más vendemos A y compramos B. La regla de cambio de proporción inversa es comprar A y vender B. Una cantidad de USDT igual en cada cobertura es en realidad una estrategia para operar en la red con el precio relativo fuerte o débil de LTC/ETH. La estrategia no es compleja. Sin embargo, debe tenerse en cuenta que esta combinación de cobertura, en realidad es con ETH como moneda de precio fijo, para calcular el precio de LTC.
Con la plataforma de intercambio cuantificado de los inventores, es fácil escribir un prototipo de estrategia: Cuando se ejecuta el código de la política, se necesita una referencia.y"La biblioteca de líneas de dibujo":https://www.fmz.com/strategy/27293"Librería de transacciones de divisas digitales": esto es lo que cada usuario lleva consigo en el panel de plantillas cuando crea una nueva estrategia.
/*backtest
start: 2019-05-01 00:00:00
end: 2019-11-04 00:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"LTC_USDT","balance":100000,"stocks":30},{"eid":"OKEX","currency":"ETH_USDT","balance":100000,"stocks":30}]
*/
/*
A exchanges[0] : EOS_USDT
B exchanges[1] : ETH_USDT
*/
var Interval = 500
// 参数
var numPoint = 100 // 节点数
var distance = 0.08 // 比例间距
var amountPoint = 100 // 节点金额,单位USDT
var arrHedgeList = []
function main () {
var isFirst = true
while(true) {
var rA = exchanges[0].Go("GetTicker")
var rB = exchanges[1].Go("GetTicker")
var tickerA = rA.wait()
var tickerB = rB.wait()
if (tickerA && tickerB) {
var priceRatioSell = tickerB.Buy / tickerA.Sell // B sell , A buy
var priceRatioBuy = tickerB.Sell / tickerA.Buy // B buy , A sell
if (isFirst) {
for (var i = 0 ; i < numPoint ; i++) {
var point = {
priceRatio : priceRatioSell + (i + 1) * distance,
coverRatio : priceRatioSell + i * distance,
amount : (0.08 * i + 1) * amountPoint,
isHold : false,
}
arrHedgeList.push(point)
}
isFirst = false
}
for (var j = 0 ; j < arrHedgeList.length; j++) {
if (priceRatioSell > arrHedgeList[j].priceRatio && arrHedgeList[j].isHold == false) {
// B sell , A buy
Log("对冲,价格比", priceRatioSell, "#FF0000")
$.Buy(exchanges[0], arrHedgeList[j].amount / tickerA.Sell)
$.Sell(exchanges[1], arrHedgeList[j].amount / tickerB.Buy)
arrHedgeList[j].isHold = true
LogStatus(_D(), exchanges[0].GetAccount(), "\n", exchanges[1].GetAccount())
$.PlotLine("ratio", (priceRatioSell + priceRatioBuy) / 2)
break
}
if (priceRatioBuy < arrHedgeList[j].coverRatio && arrHedgeList[j].isHold == true) {
// B buy , A sell
Log("对冲,价格比", priceRatioBuy, "#32CD32")
$.Sell(exchanges[0], arrHedgeList[j].amount / tickerA.Buy)
$.Buy(exchanges[1], arrHedgeList[j].amount / tickerB.Sell)
arrHedgeList[j].isHold = false
LogStatus(_D(), exchanges[0].GetAccount(), "\n", exchanges[1].GetAccount())
$.PlotLine("ratio", (priceRatioSell + priceRatioBuy) / 2)
break
}
}
}
Sleep(Interval)
}
}
Usando el ajuste de retroceso por defecto:
Como se puede ver, con solo unas pocas decenas de líneas de código, se construye una estrategia de su propia idea, en la que es muy fácil realizar un prototipo de una idea. Como se ve en el gráfico anterior, esta proporción de precios está oscilando la mayor parte del tiempo, aunque se producirá una cierta tendencia, la dirección de optimización puede ser el control de posiciones al momento de la cobertura o la incorporación de una determinada identificación de tendencias.
En el control de posiciones, se puede incrementar el monto de la cobertura de cada nodo de cobertura, por ejemplo, en el código:
if (isFirst) {
for (var i = 0 ; i < numPoint ; i++) {
var point = {
priceRatio : priceRatioSell + (i + 1) * distance,
coverRatio : priceRatioSell + i * distance,
amount : (0.08 * i + 1) * amountPoint, // 每次递增amountPoint的8%
isHold : false,
}
arrHedgeList.push(point)
}
isFirst = false
}
Esto permite que las posiciones con un peso relativo se concentren en posiciones con una proporción de precios más alta, evitando ocupar posiciones demasiado grandes cuando la proporción de precios es más baja. Por supuesto, este tipo de cobertura es muy arriesgada, y si el precio de una moneda continúa subiendo con respecto a la otra, se producirá un repunte, por lo que la cobertura entre variedades requiere una correlación más fuerte de las dos variedades.
Esta estrategia es sólo una demostración inicial, y puede ser continuamente modificada y optimizada.