Java bindings for the OANDA v20 REST API enabling programmatic access to forex trading, account management, market data, and transaction history
Track and manage positions by instrument. Positions aggregate all open trades for an instrument.
List all positions (including zero units).
list(accountID: string, responseHandler: (response: Response) => void): void;Response: { positions: Position[], lastTransactionID: string }
List only open positions (non-zero units).
listOpen(accountID: string, responseHandler: (response: Response) => void): void;Response: { positions: Position[], lastTransactionID: string }
Get position for specific instrument.
get(accountID: string, instrument: string, responseHandler: (response: Response) => void): void;Response: { position: Position, lastTransactionID: string }
Close position (long, short, or both).
close(
accountID: string,
instrument: string,
bodyParams: {
longUnits?: string; // "ALL" or specific amount
longClientExtensions?: ClientExtensions;
shortUnits?: string; // "ALL" or specific amount
shortClientExtensions?: ClientExtensions;
},
responseHandler: (response: Response) => void
): void;Response: { longOrderCreateTransaction?: Transaction, longOrderFillTransaction?: Transaction, shortOrderCreateTransaction?: Transaction, shortOrderFillTransaction?: Transaction, lastTransactionID: string }
Example:
// Close entire long position
ctx.position.close(accountID, 'EUR_USD', { longUnits: 'ALL' }, callback);
// Close both sides
ctx.position.close(accountID, 'EUR_USD', {
longUnits: 'ALL',
shortUnits: 'ALL'
}, callback);Complete position for an instrument.
class Position extends Definition {
instrument: string;
pl: string;
unrealizedPL: string;
marginUsed: string;
resettablePL: string;
financing: string;
commission: string;
guaranteedExecutionFees: string;
long?: PositionSide;
short?: PositionSide;
summary(): string;
name(): string;
}One side (long or short) of a position.
class PositionSide extends Definition {
units: string;
averagePrice: string;
tradeIDs: string[];
pl: string;
unrealizedPL: string;
resettablePL: string;
financing: string;
guaranteedExecutionFees: string;
summary(): string;
}Real-time calculated position metrics.
class CalculatedPositionState extends Definition {
instrument: string;
netUnrealizedPL: string;
longUnrealizedPL: string;
shortUnrealizedPL: string;
marginUsed: string;
}ctx.position.close(accountID, 'EUR_USD', { longUnits: 'ALL' }, (response) => {
if (response.isSuccess()) {
console.log('Position closed');
} else if (response.statusCode === '400') {
console.error('Bad request:', response.body.errorMessage);
} else if (response.statusCode === '404') {
console.error('Position not found');
}
});Install with Tessl CLI
npx tessl i tessl/maven-oanda--v20