MMQLEngine/specifications/0001_LanguageSyntax.md

4.2 KiB

Table of Contents

Action Statements

CREATE EXCHANGE Statement

CREATE EXCHANGE [Name] TYPE [ExchangeType]
    URI [API CALLBACK URI]
    [...Exchange type-specific PARAMS]

Examples

CREATE EXCHANGE 'IB' TYPE IB_API
    URI 'https://127.0.0.1:11590/'

CREATE PRODUCT Statement

CREATE PRODUCT [Name] AS [Exchange].[Product]

Examples

CREATE PRODUCT 'QQQ' AS "IB"."QQQ"

SELL Statement

[SELL] [Units] OF [Product]
    FOR [Amount]
    FROM [Exchange]
    WITH LIMIT OF [Units]
AND
[Other Action Statements]
    FOR EVERY
        [Units] OF [Product] [SOLD]
            FROM [Exchange]/ANYWHERE
        AND/OR
        [Units] OF [Product] [BOUGHT]
            FROM [Exchange]/ANYWHERE
AS 'ACTION_NAME'

Examples

Simple Sell

SELL 1 SHARES OF QQQ FROM "MyBrokerAccount"

Sell Trigger

SELL 1 SHARES OF QQQ
  FOR 10 USD
  FROM "MyBrokerAccount"
  WITH LIMIT OF 100 SHARES
  FOR EVERY
    2 SHARES OF QQQ_TOKEN SOLD
        FROM "CoinBase"
AS 'My Hedge Trigger'

BUY Statement

[BUY] [Units] OF [Product]
    FOR [Amount]
    FROM [Exchange]
    WITH LIMIT OF [Units]
AND
[Other Action Statements]
    FOR EVERY
        [Units] OF [Product] [SOLD]
            FROM [Exchange]/ANYWHERE
        AND/OR
        [Units] OF [Product] [BOUGHT]
            FROM [Exchange]/ANYWHERE

Examples

BUY 1 SHARES OF BTC_ETF
  FOR 10 USD
  FROM "MyBrokerAccount"
  WITH LIMIT OF PURCHASING_POWER( "MyBrokerAccount", "QQQ" )
  FOR EVERY
    1 BTC OF USD_BTC SOLD
        FROM "CoinBase"

functions

PURCHASING_POWER

PURCHASING_POWER( Exchange, Product )

Returns the maximum [Units] of [Product] can purchase from [Exchange]

CURRENT_PRICE

CURRENT_PRICE( Exchange, Product )

Returns the current price of a product from exchange

Examples

Creating a spread

  • Max position: $1000
  • Spread: $10
  • QQQ etf price(Qetf): $100
Bid Ask
10shares@$95 10shares@$105
($1000 of Qetf) ($800 of Qetf)

If a trader hit ur ASK by bidding 2 shares of QQQ token

Bid Ask
10shares@$95 8shares@$105
($1000 of Qetf) ($800 of Qetf)

If another trader hit ur ASK with a 20 shares of bid, then only 8 shares of his order can be filled.

  • No need to handle his remaining 12 shares , its not ur responsibility, its his "broker/app/program" to deal with unfilled order.
Bid Ask
10shares@$95
($1000 of Qetf)

SELL Order

SELL 10 SHARES OF "QQQ_TOKEN"
    FOR CURRENT_PRICE( "CryptoExchange", "QQQ_TOKEN" ) + 5 BTC
    WITH LIMIT OF 1000 BTC
    FROM "CryptoExchange"

BUY Order

BUY 10 SHARES OF "QQQ_TOKEN"
    FOR CURRENT_PRICE( "CryptoExchange", "QQQ_TOKEN" ) - 5 BTC
    WITH LIMIT OF 1000 BTC
    FROM "CryptoExchange"

Hedging

BUY Trigger for every QQQToken handed out

BUY 1 SHARES OF "QQQ"
    FOR CURRENT_PRICE( "StockExchange", "QQQ" )
    FROM "StockExchange"
    FOR EVERY 1 SHARES OF "QQQ_TOKEN" SOLD FROM "CryptoExchange"

SELL Trigger for every QQQToken received

SELL 1 SHARES OF "QQQ"
    FOR CURRENT_PRICE( "StockExchange", "QQQ" )
    FROM "StockeExchange"
    FOR EVERY 1 SHARES OF "QQQ_TOKEN" BOUGHT FROM "CryptoExchange"

BUY Trigger for every BTC handed out

BUY 1 BTC OF BTC
    FOR CURRENT_PRICE( "CryptoExchange", "USD.BTC" )
    FROM "CryptoExchange"
    FOR EVERY 1 BTC OF BTC SOLD FROM "CryptoExchange"

SELL Trigger for every BTC received

SELL 1 BTC OF BTC
    FOR CURRENT_PRICE( "CryptoExchange", "USD.BTC" )
    FROM "CryptoExchange"
    FOR EVERY 1 BTC OF BTC BOUGHT FROM "CryptoExchange"