upstox-js-sdk
Version:
The official Node Js client for communicating with the Upstox API
118 lines (104 loc) • 5.79 kB
JavaScript
;
/**
* Strategy: Bull Condor (Bullish)
* Buys ATM call, sells ATM+1 call, sells ATM+2 call, buys ATM+3 call for the next weekly expiry.
*/
const UpstoxClient = require('upstox-js-sdk');
const ACCESS_TOKEN = 'your_access_token_here';
let defaultClient = UpstoxClient.ApiClient.instance;
let OAUTH2 = defaultClient.authentications['OAUTH2'];
OAUTH2.accessToken = ACCESS_TOKEN;
const instrumentsApi = new UpstoxClient.InstrumentsApi();
const orderApi = new UpstoxClient.OrderApiV3();
// Step 1: Find ATM call (offset 0)
instrumentsApi.searchInstrument('Nifty 50', {
exchanges: 'NSE', segments: 'FO',
instrumentTypes: 'CE', expiry: 'next_week', atmOffset: 0
}, (error, data) => {
if (error) { console.error('API error:', error); return; }
const leg0 = data.data[0];
console.log('Leg 1 BUY (ATM) - Trading symbol :', leg0.tradingSymbol);
// Step 2: Find ATM+1 call (offset 1)
instrumentsApi.searchInstrument('Nifty 50', {
exchanges: 'NSE', segments: 'FO',
instrumentTypes: 'CE', expiry: 'next_week', atmOffset: 1
}, (error, data) => {
if (error) { console.error('API error:', error); return; }
const leg1 = data.data[0];
console.log('Leg 2 SELL (ATM+1) - Trading symbol :', leg1.tradingSymbol);
// Step 3: Find ATM+2 call (offset 2)
instrumentsApi.searchInstrument('Nifty 50', {
exchanges: 'NSE', segments: 'FO',
instrumentTypes: 'CE', expiry: 'next_week', atmOffset: 2
}, (error, data) => {
if (error) { console.error('API error:', error); return; }
const leg2 = data.data[0];
console.log('Leg 3 SELL (ATM+2) - Trading symbol :', leg2.tradingSymbol);
// Step 4: Find ATM+3 call (offset 3)
instrumentsApi.searchInstrument('Nifty 50', {
exchanges: 'NSE', segments: 'FO',
instrumentTypes: 'CE', expiry: 'next_week', atmOffset: 3
}, (error, data) => {
if (error) { console.error('API error:', error); return; }
const leg3 = data.data[0];
console.log('Leg 4 BUY (ATM+3) - Trading symbol :', leg3.tradingSymbol);
// Step 5: Buy ATM call
const body1 = new UpstoxClient.PlaceOrderV3Request(
leg0.lotSize,
UpstoxClient.PlaceOrderV3Request.ProductEnum.D,
UpstoxClient.PlaceOrderV3Request.ValidityEnum.DAY,
0, leg0.instrumentKey,
UpstoxClient.PlaceOrderV3Request.OrderTypeEnum.MARKET,
UpstoxClient.PlaceOrderV3Request.TransactionTypeEnum.BUY,
0, 0, false
);
orderApi.placeOrder(body1, {}, (error, result1) => {
if (error) { console.error('API error:', error); return; }
console.log('Leg 1 BUY ATM call order placed successfully. Order ID:', result1);
// Step 6: Sell ATM+1 call
const body2 = new UpstoxClient.PlaceOrderV3Request(
leg1.lotSize,
UpstoxClient.PlaceOrderV3Request.ProductEnum.D,
UpstoxClient.PlaceOrderV3Request.ValidityEnum.DAY,
0, leg1.instrumentKey,
UpstoxClient.PlaceOrderV3Request.OrderTypeEnum.MARKET,
UpstoxClient.PlaceOrderV3Request.TransactionTypeEnum.SELL,
0, 0, false
);
orderApi.placeOrder(body2, {}, (error, result2) => {
if (error) { console.error('API error:', error); return; }
console.log('Leg 2 SELL ATM+1 call order placed successfully. Order ID:', result2);
// Step 7: Sell ATM+2 call
const body3 = new UpstoxClient.PlaceOrderV3Request(
leg2.lotSize,
UpstoxClient.PlaceOrderV3Request.ProductEnum.D,
UpstoxClient.PlaceOrderV3Request.ValidityEnum.DAY,
0, leg2.instrumentKey,
UpstoxClient.PlaceOrderV3Request.OrderTypeEnum.MARKET,
UpstoxClient.PlaceOrderV3Request.TransactionTypeEnum.SELL,
0, 0, false
);
orderApi.placeOrder(body3, {}, (error, result3) => {
if (error) { console.error('API error:', error); return; }
console.log('Leg 3 SELL ATM+2 call order placed successfully. Order ID:', result3);
// Step 8: Buy ATM+3 call
const body4 = new UpstoxClient.PlaceOrderV3Request(
leg3.lotSize,
UpstoxClient.PlaceOrderV3Request.ProductEnum.D,
UpstoxClient.PlaceOrderV3Request.ValidityEnum.DAY,
0, leg3.instrumentKey,
UpstoxClient.PlaceOrderV3Request.OrderTypeEnum.MARKET,
UpstoxClient.PlaceOrderV3Request.TransactionTypeEnum.BUY,
0, 0, false
);
orderApi.placeOrder(body4, {}, (error, result4) => {
if (error) { console.error('API error:', error); return; }
console.log('Leg 4 BUY ATM+3 call order placed successfully. Order ID:', result4);
});
});
});
});
});
});
});
});