Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

68
LINES

< > BotCompany Repo | #1036219 // IFuturesMarket - interface to a single market (e.g. ETHUSDT)

JavaX fragment (include) [tags: use-pretranspiled]

Libraryless. Click here for Pure Java version (11485L/65K).

interface IFuturesMarket {
  // all open/close orders are market right now (not limit)
  
  sclass OpenOrCloseOrder {
    // input parameters
    
    settable S clientOrderID; // optional
    
    settable HoldSide holdSide;
    settable double cryptoAmount;
    
    settable double leverage = 1;
    
    // Limit order if set. Otherwise market order.
    // Limit orders are good-until-cancel.
    // (unimplemented)
    settable double limitPrice = Double.NaN;
    
    // output parameters
    
    // order ID returned by platform
    settable S orderID;
  }
  
  macro ExtendingOpenOrCloseOrder {
    public selfType clientOrderID(S clientOrderID) { super.clientOrderID(clientOrderID); this; }
    public selfType holdSide(HoldSide holdSide) { super.holdSide(holdSide); this; }
    public selfType cryptoAmount(double cryptoAmount) { super.cryptoAmount(cryptoAmount); this; }
    public selfType leverage(double leverage) { super.leverage(leverage); this; }
    public selfType limitPrice(double limitPrice) { super.limitPrice(limitPrice); this; }
  }
  
  sclass OpenOrder extends OpenOrCloseOrder {
    ExtendingOpenOrCloseOrder
    settable bool isCross;
    
    settable double takeProfitPrice = Double.NaN;
    settable double stopLossPrice = Double.NaN;
  }
  
  sclass CloseOrder extends OpenOrCloseOrder {
    ExtendingOpenOrCloseOrder
  }
  
  // throws exception if order failed
  void openPosition(OpenOrder order);
  
  // throws exception if order failed
  void closePosition(CloseOrder order);
  
  sclass SwappableImplementation is IFuturesMarket {
    public swappable void openPosition(OpenOrder order) {}
    public swappable void closePosition(CloseOrder order) {}
    public swappable double drift() { unimplemented(); }
    public swappable FutureCoinParameters getCoinParameters() { unimplemented(); }
    public swappable bool anyOpenPositions() { unimplemented(); }
    public swappable void cancelOrder(S orderID) { unimplemented(); }
  }
  
  // Get current drift (sum of longs+shorts in crypto units)
  double drift();
  
  FutureCoinParameters getCoinParameters();
  
  bool anyOpenPositions();
  
  void cancelOrder(S orderID);
}

download  show line numbers  debug dex  old transpilations   

Travelled to 2 computer(s): elmgxqgtpvxh, mqqgnosmbjvj

102 comment(s) hidden. show

Snippet ID: #1036219
Snippet name: IFuturesMarket - interface to a single market (e.g. ETHUSDT)
Eternal ID of this version: #1036219/23
Text MD5: 628e55ba4980216df1dc5b890ae7e2a0
Transpilation MD5: 8e02e6b2340ead5a0f66d4df4f05c420
Author: stefan
Category: javax / trading
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2026-02-15 14:15:07
Source code size: 2234 bytes / 68 lines
Pitched / IR pitched: No / No
Views / Downloads: 2202 / 2496
Version history: 22 change(s)
Referenced in: [show references]