Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

price feed websocket 2.0 #1

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
418 changes: 416 additions & 2 deletions README.md

Large diffs are not rendered by default.

29 changes: 29 additions & 0 deletions pom.xml
Expand Up @@ -21,13 +21,17 @@

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>5.8.1</junit.version>
<mockito.version>3.10.0</mockito.version>
<assertj.version>3.19.0</assertj.version>
</properties>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
Expand Down Expand Up @@ -85,6 +89,31 @@
<artifactId>gson</artifactId>
<version>2.6.2</version>
</dependency>

<!-- to test code with -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>

<!-- To mock an object -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>

<!-- Used in assertions while testing -->
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>${assertj.version}</version>
<scope>test</scope>
</dependency>

</dependencies>

</project>
5 changes: 5 additions & 0 deletions src/main/java/com/angelbroking/smartapi/Routes.java
Expand Up @@ -16,6 +16,7 @@ public class Routes {
private static String _rootUrl = "https://apiconnect.angelbroking.com";
private static String _loginUrl = "https://apiconnect.angelbroking.com/rest/auth/angelbroking/user/v1/loginByPassword";
private static String _wsuri = "wss://wsfeeds.angelbroking.com/NestHtml5Mobile/socket/stream";
private static String _smartStreamWSURI = "ws://smartapisocket.angelone.in/smart-stream";
private static String _swsuri = "wss://smartapisocket.angelbroking.com/websocket";

// Initialize all routes,
Expand Down Expand Up @@ -63,4 +64,8 @@ public String getWsuri() {
public String getSWsuri() {
return _swsuri;
}

public String getSmartStreamWSURI() {
return _smartStreamWSURI;
}
}
@@ -0,0 +1,24 @@
package com.angelbroking.smartapi.smartstream.models;

public enum ExchangeType {
NSE_CM(1), NSE_FO(2), BSE_CM(3), BSE_FO(4), MCX_FO(5), NCX_FO(7), CDE_FO(13);

private int val;

private ExchangeType(int val) {
this.val = val;
}

public int getVal() {
return this.val;
}

public static ExchangeType findByValue(int val) {
for(ExchangeType entry : ExchangeType.values()) {
if(entry.getVal() == val) {
return entry;
}
}
return null;
}
}
@@ -0,0 +1,43 @@
package com.angelbroking.smartapi.smartstream.models;

public class LTP {
public static final int PACKET_SIZE_IN_BYTES = 51;

private TokenID token;
private long sequenceNumber;
private long exchangeFeedTimeEpochMillis;
private long lastTradedPrice;

public TokenID getToken() {
return token;
}

public void setToken(TokenID token) {
this.token = token;
}

public long getSequenceNumber() {
return sequenceNumber;
}

public void setSequenceNumber(long sequenceNumber) {
this.sequenceNumber = sequenceNumber;
}

public long getExchangeFeedTimeEpochMillis() {
return exchangeFeedTimeEpochMillis;
}

public void setExchangeFeedTimeEpochMillis(long exchangeFeedTimeEpochMillis) {
this.exchangeFeedTimeEpochMillis = exchangeFeedTimeEpochMillis;
}

public long getLastTradedPrice() {
return lastTradedPrice;
}

public void setLastTradedPrice(long lastTradedPrice) {
this.lastTradedPrice = lastTradedPrice;
}

}
124 changes: 124 additions & 0 deletions src/main/java/com/angelbroking/smartapi/smartstream/models/Quote.java
@@ -0,0 +1,124 @@
package com.angelbroking.smartapi.smartstream.models;

public class Quote {
public static final int PACKET_SIZE_IN_BYTES = 123;

private TokenID token;
private long sequenceNumber;
private long exchangeFeedTimeEpochMillis;
private long lastTradedPrice;
private long lastTradedQty;
private long avgTradedPrice;
private long volumeTradedToday;
private double totalBuyQty;
private double totalSellQty;
private long openPrice;
private long highPrice;
private long lowPrice;
private long closePrice;

public TokenID getToken() {
return token;
}

public void setToken(TokenID token) {
this.token = token;
}

public long getSequenceNumber() {
return sequenceNumber;
}

public void setSequenceNumber(long sequenceNumber) {
this.sequenceNumber = sequenceNumber;
}

public long getExchangeFeedTimeEpochMillis() {
return exchangeFeedTimeEpochMillis;
}

public void setExchangeFeedTimeEpochMillis(long exchangeFeedTimeEpochMillis) {
this.exchangeFeedTimeEpochMillis = exchangeFeedTimeEpochMillis;
}

public long getLastTradedPrice() {
return lastTradedPrice;
}

public void setLastTradedPrice(long lastTradedPrice) {
this.lastTradedPrice = lastTradedPrice;
}

public long getLastTradedQty() {
return lastTradedQty;
}

public void setLastTradedQty(long lastTradedQty) {
this.lastTradedQty = lastTradedQty;
}

public long getAvgTradedPrice() {
return avgTradedPrice;
}

public void setAvgTradedPrice(long avgTradedPrice) {
this.avgTradedPrice = avgTradedPrice;
}

public long getVolumeTradedToday() {
return volumeTradedToday;
}

public void setVolumeTradedToday(long volumeTradedToday) {
this.volumeTradedToday = volumeTradedToday;
}

public double getTotalBuyQty() {
return totalBuyQty;
}

public void setTotalBuyQty(double totalBuyQty) {
this.totalBuyQty = totalBuyQty;
}

public double getTotalSellQty() {
return totalSellQty;
}

public void setTotalSellQty(double totalSellQty) {
this.totalSellQty = totalSellQty;
}

public long getOpenPrice() {
return openPrice;
}

public void setOpenPrice(long openPrice) {
this.openPrice = openPrice;
}

public long getHighPrice() {
return highPrice;
}

public void setHighPrice(long highPrice) {
this.highPrice = highPrice;
}

public long getLowPrice() {
return lowPrice;
}

public void setLowPrice(long lowPrice) {
this.lowPrice = lowPrice;
}

public long getClosePrice() {
return closePrice;
}

public void setClosePrice(long closePrice) {
this.closePrice = closePrice;
}

}
@@ -0,0 +1,45 @@
package com.angelbroking.smartapi.smartstream.models;

public class SmartApiBBSInfo {
public static final int BYTES = (2 * Short.BYTES) + (2 * Long.BYTES);

// siBbBuySellFlag = 1 buy
// siBbBuySellFlag = 0 sell
private short siBbBuySellFlag = -1;
private long lQuantity = -1;
private long lPrice = -1;
private short siNumberOfOrders = -1;

public short getSiBbBuySellFlag() {
return siBbBuySellFlag;
}

public void setSiBbBuySellFlag(short siBbBuySellFlag) {
this.siBbBuySellFlag = siBbBuySellFlag;
}

public long getlQuantity() {
return lQuantity;
}

public void setlQuantity(long lQuantity) {
this.lQuantity = lQuantity;
}

public long getlPrice() {
return lPrice;
}

public void setlPrice(long lPrice) {
this.lPrice = lPrice;
}

public short getSiNumberOfOrders() {
return siNumberOfOrders;
}

public void setSiNumberOfOrders(short siNumberOfOrders) {
this.siNumberOfOrders = siNumberOfOrders;
}

}
@@ -0,0 +1,24 @@
package com.angelbroking.smartapi.smartstream.models;

public enum SmartStreamAction {
SUBS(1), UNSUBS(0);

private int val;

private SmartStreamAction(int val) {
this.val = val;
}

public static SmartStreamAction findByVal(int val) {
for(SmartStreamAction entry : SmartStreamAction.values()) {
if(entry.getVal() == val) {
return entry;
}
}
return null;
}

public int getVal() {
return this.val;
}
}
@@ -0,0 +1,14 @@
package com.angelbroking.smartapi.smartstream.models;

public class SmartStreamError {
private Throwable exception;

public Throwable getException() {
return exception;
}

public void setException(Throwable exception) {
this.exception = exception;
}

}
@@ -0,0 +1,31 @@
package com.angelbroking.smartapi.smartstream.models;

public enum SmartStreamSubsMode {
LTP(1), QUOTE(2), SNAP_QUOTE(3);

private static final int SIZE = SmartStreamSubsMode.values().length;

private int val;

private SmartStreamSubsMode(int val) {
this.val = val;
}

public static SmartStreamSubsMode findByVal(int val) {
for(SmartStreamSubsMode entry : SmartStreamSubsMode.values()) {
if(entry.getVal() == val) {
return entry;
}
}
return null;
}

public static int size() {
return SIZE;
}

public int getVal() {
return this.val;
}

}