MMQLEngine/specifications/0001_LanguageSyntax.md

149 lines
3.0 KiB
Markdown
Raw Normal View History

# Table of Contents
* [Action Statements](#action-statements)
* [SELL](#sell-statement)
* [BUY](#buy-statement)
* [Functions](#functions)
* [PURCHASING_POWER](#purchasing_power)
2022-10-19 11:51:35 +00:00
* [CURRENT_PRICE](#current_price)
2022-10-18 08:48:56 +00:00
# Action Statements
## SELL Statement
```
[SELL] [Units] OF [Product]
2022-10-19 11:51:35 +00:00
FOR [Amount]
2022-10-18 08:48:56 +00:00
FROM [Exchange]
WITH LIMIT OF [Units]
2022-10-18 08:48:56 +00:00
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'
2022-10-18 08:48:56 +00:00
```
### Examples
#### Simple Sell
```
SELL 1 SHARES OF QQQ FROM "MyBrokerAccount"
```
#### Sell Trigger
2022-10-18 08:48:56 +00:00
```
SELL 1 SHARES OF QQQ
2022-10-19 11:51:35 +00:00
FOR 10 USD
2022-10-18 08:48:56 +00:00
FROM "MyBrokerAccount"
WITH LIMIT OF 100 SHARES
2022-10-18 08:48:56 +00:00
FOR EVERY
2 SHARES OF QQQ_TOKEN SOLD
FROM "CoinBase"
AS 'My Hedge Trigger'
2022-10-18 08:48:56 +00:00
```
## BUY Statement
```
[BUY] [Units] OF [Product]
2022-10-19 11:51:35 +00:00
FOR [Amount]
2022-10-18 08:48:56 +00:00
FROM [Exchange]
WITH LIMIT OF [Units]
2022-10-18 08:48:56 +00:00
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
2022-10-19 11:51:35 +00:00
FOR 10 USD
2022-10-18 08:48:56 +00:00
FROM "MyBrokerAccount"
WITH LIMIT OF PURCHASING_POWER( "MyBrokerAccount", "QQQ" )
2022-10-18 08:48:56 +00:00
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]
2022-10-18 08:48:56 +00:00
2022-10-19 11:51:35 +00:00
## CURRENT_PRICE
2022-10-18 08:48:56 +00:00
2022-10-19 11:51:35 +00:00
`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 |
|-----------------|----------------|
2022-10-19 11:51:35 +00:00
| 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 |
|-----------------|----------------|
2022-10-19 11:51:35 +00:00
| 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 |
|-----------------|----------------|
2022-10-19 11:51:35 +00:00
| 10shares@$95 | |
| ($1000 of Qetf) | |
### SELL Order
2022-10-18 08:48:56 +00:00
```
2022-10-19 11:51:35 +00:00
SELL 10 SHARES OF "QQQ_TOKEN"
FOR CURRENT_PRICE( "CryptoExchange", "QQQ_TOKEN" ) + 5 USD
WITH LIMIT OF 1000 USD
FROM "CryptoExchange"
```
2022-10-18 08:48:56 +00:00
2022-10-19 11:51:35 +00:00
### BUY Order
```
BUY 10 SHARES OF "QQQ_TOKEN"
FOR CURRENT_PRICE( "CryptoExchange", "QQQ_TOKEN" ) - 5 USD
WITH LIMIT OF 1000 USD
FROM "CryptoExchange"
```
2022-10-18 08:48:56 +00:00
2022-10-19 12:04:00 +00:00
## Hedging
### BUY Trigger for the above examples
2022-10-18 08:48:56 +00:00
```
2022-10-19 11:51:35 +00:00
BUY 1 SHARES OF "QQQ"
FOR CURRENT_PRICE( "StockExchange", "QQQ" )
FROM "StockExchange"
FOR EVERY 1 SHARES OF "QQQ_TOKEN" SOLD FROM "CryptoExchange"
```
2022-10-19 12:04:00 +00:00
### SELL Trigger for the above examples
2022-10-18 08:48:56 +00:00
```
2022-10-19 12:04:00 +00:00
???
2022-10-18 08:48:56 +00:00
```