No campo da negociação quantitativa, ferramentas quantitativas simples e fáceis de usar sempre foram uma das chaves para alcançar o crescimento da riqueza e a gestão de riscos. No entanto, com a crescente concorrência no mercado, as ferramentas de negociação tradicionais não são mais suficientes para atender às demandas do mercado em rápida mudança. Para manter uma vantagem competitiva para os comerciantes quantitativos no mundo dos ativos digitais em constante evolução, o FMZ Mobile App adicionou um novo recurso significativo: Terminal de negociação. Este recurso não só melhorará sua eficiência comercial, mas também o capacitará por meio de programas de plug-in personalizados para ajudar na negociação, injetando nova vitalidade em sua carreira de negociação.
Na plataforma de negociação FMZ Quant, você pode baixar o FMZ Quant Mobile APP doPágina de download de aplicativo móvelApós baixar e instalar, abra o aplicativo móvel FMZ e faça login com sua conta FMZ.
Observe que o FMZ Quant está dividido emFMZ.COMsite internacional eFMZ.CNSite doméstico da China (suportando diferentes mercados). Ao fazer login, você precisa escolher o site correspondente. As contas para diferentes sites são independentes e não são intercambiáveis.
O terminal de negociação móvel APP da FMZ Quantitative Trading Platform é uma ferramenta de negociação quantitativa que encapsula APIs de principais exchanges.
Depois de entrar no FMZ Quant Mobile APP, você pode ver a função
Antes da FMZ lançar seu terminal de negociação de aplicativos móveis, a versão web da FMZ já tinha lançado este recurso muito cedo.pelo menos um programa docker deve ser implantado- Não. Isso ocorre porque todas as solicitações reais enviadas para as exchanges são executadas a partir do docker, não no aplicativo móvel, o que é mais seguro.
Interface principal do terminal de negociação:
Depois de abrir o terminal de negociação, você pode ver a interface principal do terminal de negociação.
2. Zona comercial:
A zona de negociação exibe dados de profundidade de mercado; Os widgets de negociação podem ser definidos com preço da ordem, quantidade da ordem, direção da ordem, alavancagem e outras configurações.
As guias inferiores da interface principal exibem informações como
Gráfico de linhas K:
Se desejar ver o gráfico de linhas K ao fazer um pedido, foi implementado aqui um design cuidadoso - um widget de exibição dobrável que desdobra o mini gráfico de linhas K do produto atual.
Se você deseja visualizar o gráfico de linha K em uma área maior, exibir registros de transações de mercado, informações de profundidade e muito mais, você pode clicar neste ícone de linha K para ir para a página do gráfico de linha K profissional.
A interface profissional do gráfico de linhas K:
A interface profissional do gráfico de linhas K também pode ser exibida no modo paisagem:
O que pode fazer um plugin de terminal de negociação?
Que linguagens de programação e ferramentas são usadas para desenvolver plugins?
O que é que consegues?
Na comunidade FMZ, um usuário apresentou um pedido:
Use js para atravessar todas as moedas do contrato U da exchange Binance, e abra uma posição de 10u (longo) para cada moeda.
Este cenário de requisitos pode ser implementado com plugins de terminais de negociação, e executar estratégias de plugins no terminal de negociação é gratuito.
Vamos ver como conceber e implementar a solicitação do utilizador.
Primeiro, precisamos criar um plugin de terminal de negociação e adicionar três parâmetros à sua estratégia:
Então comece a escrever o programa de plugins:
function main() {
let exName = exchange.GetName()
if (exName != "Futures_Binance") {
return "not support!"
}
let apiBase = "https://fapi.binance.com"
if (isSimulate) {
apiBase = "https://testnet.binancefuture.com"
Log("Switch base address:", apiBase)
}
exchange.SetBase(apiBase)
try {
var obj = JSON.parse(HttpQuery(apiBase + "/fapi/v1/exchangeInfo"))
} catch (e) {
Log(e)
}
let pairs = []
for (var i in obj.symbols) {
if (obj.symbols[i]["status"] !== "TRADING" || obj.symbols[i]["quoteAsset"] !== "USDT") {
continue
}
let = pair = obj.symbols[i]["baseAsset"] + "_" + obj.symbols[i]["quoteAsset"]
pairs.push(pair)
}
let markets = _C(exchange.GetMarkets)
for (var i in pairs) {
// /*
// For testing purposes, only 10 varieties are opened here. If all varieties are needed, this comment content can be deleted.
if (i >= 9) {
break
}
// */
let pair = pairs[i]
exchange.SetCurrency(pair)
exchange.SetContractType("swap")
let ticker = exchange.GetTicker()
if (!ticker) {
continue
}
let = amountPrecision = markets[pair + ".swap"]["AmountPrecision"]
exchange.SetDirection("buy")
let amount = _N(qty / ticker.Last, amountPrecision)
if (amount > 0) {
exchange.Buy(-1, amount)
}
Sleep(100)
}
// Obtain all positions
let pos = exchange.IO("api", "GET", "/fapi/v2/positionRisk")
if (!pos) {
return
}
// View positions
return pos.filter(item => Number(item.positionAmt) != 0)
}
Após o plug-in do terminal de negociação ser escrito, ele pode ser testado:
No terminal de negociação do aplicativo móvel, clique no botão
Depois de concluir a operação no aplicativo móvel, usamos o seguinte código para consultar a posição do bot de simulação da Binance
function main() {
let apiBase = "https://testnet.binancefuture.com"
exchange.SetBase(apiBase)
let pos = exchange.IO("api", "GET", "/fapi/v2/positionRisk")
if (!pos) {
return
}
// View positions
return pos.filter(item => Number(item.positionAmt) != 0)
}
Dados encontrados:
[{
"symbol": "ETCUSDT",
"entryPrice": "16.17",
"unRealizedProfit": "0.08567881",
"positionSide": "LONG",
"updateTime": 1698420908103,
"isolated": false,
"breakEvenPrice": "16.176468",
"leverage": "20",
"adlQuantile": 3,
"positionAmt": "0.65",
"markPrice": "16.30181356",
"liquidationPrice": "0",
"maxNotionalValue": "400000",
"marginType": "cross",
"notional": "10.59617881",
"isolatedMargin": "0.00000000",
"isAutoAddMargin": "false",
"isolatedWallet": "0"
}, {
"positionAmt": "105",
"markPrice": "0.09371526",
"liquidationPrice": "0",
"leverage": "20",
"maxNotionalValue": "90000",
"positionSide": "LONG",
"isolatedWallet": "0",
"symbol": "TRXUSDT",
"updateTime": 1698420906668,
"breakEvenPrice": "0.094497784",
"isolatedMargin": "0.00000000",
"isolated": false,
"entryPrice": "0.09446",
"adlQuantile": 1,
"unRealizedProfit": "-0.07819770",
"isAutoAddMargin": "false",
"notional": "9.84010230",
"marginType": "cross"
}, {
"unRealizedProfit": "-0.00974456",
"isAutoAddMargin": "false",
"notional": "9.97449543",
"isolatedWallet": "0.50309216",
"updateTime": 1698420905377,
"markPrice": "67.85371047",
"isolatedMargin": "0.49334760",
"adlQuantile": 2,
"symbol": "LTCUSDT",
"entryPrice": "67.92",
"liquidationPrice": "64.91958163",
"maxNotionalValue": "250000",
"positionSide": "LONG",
"isolated": true,
"positionAmt": "0.147",
"breakEvenPrice": "67.947168",
"leverage": "20",
"marginType": "isolated"
}, {
"liquidationPrice": "1613.23261508",
"marginType": "isolated",
"isolated": true,
"symbol": "ETHUSDT",
"entryPrice": "1784.27",
"markPrice": "1783.35661952",
"isAutoAddMargin": "false",
"positionSide": "LONG",
"notional": "8.91678309",
"leverage": "10",
"maxNotionalValue": "30000000",
"isolatedWallet": "0.89551774",
"adlQuantile": 1,
"positionAmt": "0.005",
"breakEvenPrice": "1784.983708",
"unRealizedProfit": "-0.00456690",
"isolatedMargin": "0.89095084",
"updateTime": 1698420900362
}, {
"positionAmt": "17.1",
"marginType": "cross",
"isolatedWallet": "0",
"adlQuantile": 2,
"liquidationPrice": "0",
"maxNotionalValue": "250000",
"positionSide": "LONG",
"isolated": false,
"symbol": "EOSUSDT",
"breakEvenPrice": "0.6432572",
"updateTime": 1698420904257,
"isolatedMargin": "0.00000000",
"isAutoAddMargin": "false",
"notional": "10.34550000",
"entryPrice": "0.643",
"markPrice": "0.60500000",
"unRealizedProfit": "-0.64980000",
"leverage": "20"
}, {
"isolated": false,
"adlQuantile": 1,
"liquidationPrice": "0",
"maxNotionalValue": "10000000",
"notional": "9.73993328",
"leverage": "20",
"updateTime": 1698420901638,
"symbol": "BCHUSDT",
"entryPrice": "250.0",
"markPrice": "243.49833219",
"isAutoAddMargin": "false",
"positionSide": "LONG",
"positionAmt": "0.040",
"breakEvenPrice": "250.1",
"isolatedMargin": "0.00000000",
"unRealizedProfit": "-0.26006671",
"marginType": "cross",
"isolatedWallet": "0"
}]
Pode-se ver que 6 posições foram abertas, isso porque, ao colocar ordens reais no bot de simulação, é fácil acionar os preços limite; Além disso, devido ao valor da ordem de 10U, é fácil acionar o limite mínimo do valor da ordem dos pares de negociação; portanto, alguns pares de negociação não foram ordenados com sucesso. Se você precisa usar isso na realidade, situações mais práticas devem ser consideradas para otimizar este plugin para melhor uso.
O terminal de negociação de aplicativos móveis da FMZ Quant Trading Platform tem muitos plugins interessantes.
https://www.fmz.com/upload/asset/16b436307a4ce5c246c2.mp4
O novo recurso de terminal de negociação do aplicativo móvel FMZ se tornará seu poderoso assistente no mercado de ativos digitais, permitindo que você responda de forma mais flexível às flutuações e oportunidades do mercado. Não mais limitado a estratégias de negociação tradicionais, através de programas de plug-in personalizados, você pode criar estratégias de negociação mais inteligentes e eficientes que são melhor adaptadas ao mercado.