Orders - rapmd73/JackrabbitRelay GitHub Wiki

JackrabbitRelay Order Payloads

This document details the various types of order payloads or messages with example. These messages are what help platforms like TradingView talk to Jackrabbit Relay. Jackrabbit Relay converts this information into an orer for your desired exchange.

Payload Synopsis

Description of the payload items

Property Name Description
Identity The identity string from the main Identity.cfg or the one from the exchange config file, if one is used. This element is REQUIRED for all orders.
Exchange This is one or more of the supported exchanges Relay supports virtual exchanges/brokers, like the DSR, so they can be supplied here. for example, "dsr,kucoin". A virtual exchange is an order modifier process to enhance or provide extra analysis.
Market This is the market you are trading. Spot, Future, Margin. Only applies to cryptocurrency markets.
Account All main accounts must be called MAIN. Subaccounts can be used (if your exchange supports them) and must be exactly as listed on the exchange. If you use multiple exchanges, accounts must be listed in the same order as the exchanges. See the DSR for am example.
OrderType This is one of the allowed order types
Action This is one of the supported actions
Asset The asset you are trading. Must be exactly as the exchange lists it. Hint: Use ListMarkets to confirm
USD / Base / Quote / Units Choose only one to set the amount to be purchased/sold:
  • USD will only work if the asset has a corresponding USD pair to do a proper base conversion on.
  • Base is the asset itself value, ie BTC, ADA, AAVE, so one. A base of 1 for BTC is to purchase 1 BTC.
  • Quote is the value of the asset in its quote currency. For example, if you want to purchase BCH/BTC using the price value of BTC, then you specify your amount in the quote currency.

  • The amount can be expressed in percentage form, which will reflct the percentage ofthe balance of the account.

    Values expressed in percentage form can also denote base or quote currency volumes:
  • For base currency volume (12%b), the base value is kept consistent throught the trade cycle while the quote currwency volume depreciates.
  • For quote currency volume (12%q), the quote currency value is kept consistent while the base currency value appreciates.
  • Units is the number of units you want to purchase. Only applies to Forex and must be whole numbers
  • Price For limit orders. This value can be bid, ask, or a value. If this is not present, the current closing price is used.
    Leverage For binanceusdm and ftx, this sets the leverage amount
    Margin For binanceusdm, this sets the margin to Crossed or Isolated.
    ReduceOnly Prevents position flipping on exchanges/brokers that allow it.
    Reduction The amount to reduce your position to all your exchange to close it. This is a percentage. Do NOT put a percent (%) sign. Use this ONLY if you receive errors closing a position. Finding the amount of the reduction is strictly trial and error.
    Spread This evaluate the difference between the bid and ask prices. Trades are only places if the spread is under this value
    OverridePCTtable Overrides thew PCT table and forces a balance percentage based upon the immediate current balance of the account
    OverrideMaxAssets Override the MaxAssets setting from the account configuration for THIS order only.
    RemapSymbol For use with the TradingView {{ticker}} macro. Only this order is remapped. Applies to THIS order only.
    CloseOnSell For use with the TradingView, particularly strategies. Closes the enire position of a sell action. Applies to THIS order only.
    Orphan Uses OliverTwist to manage and track limit orders. Applies to THIS order only.
    Conditional Designates THIS order on this account is conditional. Any value is accepted as its presence is all that matters.
    ConditionalOneShot THIS conditional order is allowed only ONE position. Subsequent purchases are ignored.
    LedgerNotes This is a note about this trade that is recorded in the ledger once the trade is filled. Can be any text you want, as long as it doesn't break the JSON format.

    Order Types

    Type Description
    Market Market Orders. You pay taker fees on both sides of the trade and this order completes immediately. This is the default if order type is not present and the exchange supports market orders.
    Limit Limit Orders. You will pay either a maker fee or a taker fee based upon how long this order sits on the books. This is the default for exchanges that do not support market orders.
    LimitMaker Limit Orders with a request to hold this order on the book for a maker fee.
    LimitTaker Limit Orders with a fill or kill request. You will pay a taker fee. This order type is a simulated effect of a market order for exchanges that only support limit orders.

    Actions

    Action Description
    Buy Purchase an asset.
    Sell Sell a portion of asset. If amount is more than balance, the full position will be closed.
    Close Sell all of the asset.
    Long (Perpetuals) Opens a long position, and can flip a short to long (if ReduceOnly is not included in configuration).
    Short (Perpetuals) Opens a short position, and can flip a long to short (if ReduceOnly is not included in configuration).

    Examples

    Here are examples of the payload. Payloads can be on a single line or spread acros multiple lines. The format below is multiple lines for readability.

    This example of a gewneralized payload for TradingView that uses the {{ticker}} macro and requires the SymbolRemap to tell Relay to look up the asset from the TV2Exchange remap file.

    { 
      "Exchange":"binance",
      "Market":"Spot",
      "Account":"MAIN",
      "Action":"Buy",
      "Asset":"{{ticker}}",
      "SymbolRemap":"Yes",
      "USD":"30",
      "Identity":"YourIdentityString"
    }

    This example purchased $30 of AAVE on the FTX US exchange.

    { 
      "Exchange":"ftxus",
      "Market":"Spot",
      "Account":"MAIN",
      "Action":"Buy",
      "Asset":"AAVE/USD",
      "USD":"30",
      "Identity":"YourIdentityString"
    }

    This example purchases the minimum amount of AAVE in USD. The minimum amount is defined by the exchange.

    { 
      "Exchange":"ftxus",
      "Market":"Spot",
      "Account":"MAIN",
      "Action":"Buy",
      "Asset":"AAVE/USD",
      "Identity":"YourIdentityString"
    }

    This example sells $7 of AAVE

    { 
      "Exchange":"ftxus",
      "Market":"Spot",
      "Account":"MAIN",
      "Action":"Sell",
      "Asset":"AAVE/USD",
      "USD":"7",
      "Identity":"YourIdentityString"
    }

    This example sells th exchange minimum of AAVE

    { 
      "Exchange":"ftxus",
      "Market":"Spot",
      "Account":"MAIN",
      "Action":"Sell",
      "Asset":"AAVE/USD",
      "Identity":"YourIdentityString"
    }

    This example close out or sells all of AAVE

    { 
      "Exchange":"ftxus",
      "Market":"Spot",
      "Account":"MAIN",
      "Action":"Close",
      "Asset":"AAVE/USD",
      "Identity":"YourIdentityString"
    }

    This example purchases AAVE using its base value, in this case, 1 AAVE

    { 
      "Exchange":"kraken",
      "Market":"Spot",
      "Account":"MAIN",
      "Action":"Buy",
      "Asset":"AAVE/USD",
      "Base":"1",
      "Identity":"YourIdentityString"
    }

    This example purchases BCH by the value of BTC

    { 
      "Exchange":"ftx",
      "Market":"Spot",
      "Account":"MAIN",
      "Action":"Buy",
      "Asset":"BCH/BTC",
      "Quote":"1",
      "Identity":"YourIdentityString"
    }

    This example purchases BCH by the value of BTC using a limit MAKER order

    {
      "Exchange":"ftx",
      "Market":"Spot",
      "Account":"MAIN",
      "Action":"Buy",
      "Asset":"BCH/BTC",
      "Quote":"1",
      "OrderType":
      "LimitMaker",
      "Close":"ASK",
      "Identity":"YourIdentityString"
    }

    This example purchase of a perpetual contract of AAVE with a leverage of 5

    { 
      "Exchange":"ftx",
      "Market":"Future",
      "Account":"MAIN",
      "Action":"Buy",
      "Asset":"AAVE/USD:USD",
      "Base":"1",
      "Leverage":"5",
      "Identity":"YourIdentityString"
    }

    This example purchase of a perpetual contract of AAVE with a leverage of 20, using an isolated margin.

    { 
      "Exchange":"ftx",
      "Market":"Future",
      "Account":"MAIN",
      "Action":"Buy",
      "Asset":"AAVE/USD:USD",
      "Base":"1",
      "Leverage":"20",
      "Margin":"Isolated",
      "Identity":"YourIdentityString"
    }

    This example will purchase 1% of the total value of the account using the USD conversion amount. Market order is assumed.

    { 
      "Exchange":"kucoin",
      "Market":"Spot",
      "Account":"MAIN",
      "Action":"Buy",
      "Asset":"ADA/USDT",
      "USD":"1%",
      "Identity":"YourIdentityString"
    }

    This example closes the above. It is important to remember to maintain the percentage reference in closing a position. Relay only checks its internal tables as needed to retain maximum effecincy. That means you must explicitly tell it what tables to check.

    { 
      "Exchange":"kucoin",
      "Market":"Spot",
      "Account":"MAIN",
      "Action":"Close",
      "Asset":"ADA/USDT",
      "USD":"1%",
      "Identity":"YourIdentityString"
    }
    ⚠️ **GitHub.com Fallback** ⚠️