The resource loading... loading...

FMZ mobile app trading terminal that empowers you to quantify your trading experience

Author: Inventors quantify - small dreams, Created: 2023-10-27 16:06:15, Updated: 2023-10-30 15:43:08

[TOC]

img

In the field of quantitative trading, simple and easy-to-use quantitative trading tools have always been one of the keys to achieving wealth growth and risk management. However, as the market becomes more competitive, traditional trading tools are no longer sufficient to meet the rapidly changing market demands. To help a large number of traders maintain a competitive edge in this evolving world of digital assets, FMZ Mobile APP has added a major new feature: a trading terminal. This feature will not only improve your trading efficiency, but also empower you to assist trading with custom plugins, injecting new vitality into your trading career.

This is a guide to trading terminals:

What is the FMZ mobile app trading terminal?

In addition, the FMZ Quantitative Trading Platform has a number of free and open-source trading platforms.Mobile app download pageYou can download the FMZ Quantified Mobile Application. After downloading and installing, open the FMZ Mobile Application and log in to the FMZ account.

img

Please note that FMZ quantification is divided into FMZ.COM International Station, FMZ.CN Domestic Station (supported markets vary), where the corresponding site needs to be selected at the time of login, the different site accounts are independent and not universal.

The FMZ Quantitative Trading Platform Mobile APP Trading Terminal is a centralized quantitative trading tool that encapsulates the APIs of the major exchanges. It can be quickly switched on various exchanges, relying on the various functions of the FMZ platform to achieve data capture, analysis, real-time data monitoring, programmatic assisted trading, semi-automated, manual trading, etc.


How to access and enable the transaction terminal?

After logging into the FMZ Quantum Mobile APP, you can see the "transaction terminal" function on the main interface, which can be accessed by clicking on the transaction terminal interface.

Before FMZ launched the mobile APP trading terminal, FMZ's web side had already launched the trading terminal feature.Deploy at least one host programI'm not going to lie. Since all interaction requests actually sent to an exchange are executed from the host, rather than on a mobile app, it is more secure. It also avoids the API KEY binding IP address, which is a pain point that mobile IP changes cannot use.

img


Details of the transaction terminal interface

The main interface of the transaction terminal:

After opening the trading terminal, the main interface of the trading terminal can be seen, and clicking on the red box area can open the "Custodian", "Exchange", "Trading Pair" configuration interface.

  • Host: All host programs deployed on the current FMZ account will be listed, and you can choose which host to use.
  • Exchange: Exchange objects configured to be created in the current FMZ account (configuration information such as API KEY) will also appear in the corresponding list, allowing you to select the specific exchange (account) you want to operate.
  • Transaction pair: Set the transaction pair, contract, to be operated by the current transaction terminal. The transaction matches the selected transaction pair, contract, based on the information entered in the transaction input box control.

img


2nd, the trading area:

The trading area shows market depth data. The trading controller can set the order price, order quantity, order direction, leverage, etc.

img

The tab at the bottom of the main interface displays information such as "Orders", "Holdings" and "Assets" to show your funds, positions and orders at a glance.


3 K line graph:

If you would like to see a K-line chart while you are ordering, here is a carefully designed folding display control to unfold a mini K-line chart of the current variety.

img


If you want a larger area to display K-line charts, market transaction records, depth, etc., you can click on this K-line icon to jump to the professional K-line chart page.

img


This is a professional K-line graph interface:

img


A professional K-line graph interface can also be displayed across the screen:

img


Trading plugins

What can a transaction terminal plugin do?

  • Real-time market data is calculated and displayed.
  • Order and order management.
  • This is the first time I have seen this kind of thing.
  • Semi-automated assisted trading strategies.

What programming languages and tools are used to develop plugins?

  • python
  • javascript
  • c++

What can you get?

  • Share your plug-in to the community and developers to learn together.
  • Learn from and be inspired by other developers.
  • Interact with other quantitative traders.

Let me give you an example of a practical application scenario.

In the FMZ community, a user made a request:

Use js to traverse all the U-contract coins on the Binance exchange, and each coin is trading 10u (or more), please ask how this code is written.

This demand scenario can be fully implemented with a trading terminal plug-in, and the trading terminal running the plug-in strategy is free of charge, which is undoubtedly a good option compared to the long-term running real-time strategy of trading terminal plug-in auxiliary trading.

Let's see how we can design to meet this user demand.

The first step is to create a transaction terminal plugin and add 3 parameters to the plugin policy:

img

Then start writing 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("切换基地址:", 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) {
        // /*
        // 这里为了测试,只开仓10个品种,如果要全品种,这段注释内容可以删除
        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)
    }

    // 获取所有持仓
    let pos = exchange.IO("api", "GET", "/fapi/v2/positionRisk")
    if (!pos) {
        return 
    }
    
    // 查看持仓
    return pos.filter(item => Number(item.positionAmt) != 0)
}

After the transaction terminal plugin is written, you can test:

In the mobile app's trading terminal, clicking on the "..." button opens the list of trading terminal plugins, and all the trading terminal plugins in the current FMZ account policy library are displayed in this list, which can be used.

img

After completing the operation on the mobile APP, we use the following code to query the holdings of the binance analogue disk:

function main() {
    let apiBase = "https://testnet.binancefuture.com"
    exchange.SetBase(apiBase)

    let pos = exchange.IO("api", "GET", "/fapi/v2/positionRisk")
    if (!pos) {
        return 
    }

    // 查看持仓
    return pos.filter(item => Number(item.positionAmt) != 0)
}

This is the first time I've seen this video.

[{
	"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"
}]

You can see that 6 positions are opened, because it is easy to trigger the limit price when the actual order is placed because it is an analogue disk; and because it is easy to trigger the minimum order amount limit of the transaction pair because it is 10U. If the actual use requires more consideration of the actual situation to optimize the plugin for better use, the code here is for teaching purposes only.


Other interesting built-in FMZ plugins

FMZ Quantitative Trading Platform Mobile APP Trading Terminal There are lots of fun plugins, come and explore with us!

/upload/asset/16b436307a4ce5c246c2.mp4


THE END

FMZ Mobile App's new trading terminal features will be your best friend in the digital asset market, enabling you to respond more flexibly to market fluctuations and opportunities. No longer limited to traditional trading strategies, you can create smarter, more efficient and more market-friendly trading strategies with custom plugins. Let's start this exciting new chapter in quantitative trading together, boosting your trading skills and earnings.


More

weix1aoThe dream is to have a mobile phone, which is convenient.

Inventors quantify - small dreamsThanks to the support, the platform development engineers are very good, and the follow-up will add more practical features, which users can mention despite their needs.