Hi,
sorry for the delay, I was very busy lately. I also wanted to transfer it
to the most recent version first.
I have now done this (i.e., the patch below is relatively to the most
recent development release..
Klaus
### Eclipse Workspace Patch 1.0
#P JBookTrader-ref
diff --git source/com/jbooktrader/platform/position/PositionManager.java
source/com/jbooktrader/platform/position/PositionManager.java
index 6426ed0..18efdd5 100644
--- source/com/jbooktrader/platform/position/PositionManager.java
+++ source/com/jbooktrader/platform/position/PositionManager.java
@@ -32,6 +32,27 @@
performanceManager = strategy.getPerformanceManager();
}
+
+ // KS 121025: Inserted to support temporary disablement of strategy
+ private Boolean tradeDisabled = false;
+ private Boolean tradeDisabledReported = false;
+
+ public Boolean getTradeDisabled() {
+ return tradeDisabled;
+ }
+
+ public void setTradeDisabled(Boolean tradeDisabled) {
+ this.tradeDisabled = tradeDisabled;
+ }
+
+ public Boolean getTradeDisabledReported() {
+ return tradeDisabledReported;
+ }
+
+ public void setTradeDisabledReported(Boolean tradeDisabled) {
+ this.tradeDisabledReported = tradeDisabled;
+ }
+ // End Temporary disablement of strategies
public LinkedList<Position> getPositionsHistory() {
return positionsHistory;
}
diff --git source/com/jbooktrader/platform/trader/Trader.java
source/com/jbooktrader/platform/trader/Trader.java
index 65f4df4..7941845 100644
--- source/com/jbooktrader/platform/trader/Trader.java
+++ source/com/jbooktrader/platform/trader/Trader.java
@@ -183,6 +183,26 @@
new Thread(new ResubscriberRunner()).start();
}
+ // KS: handle the error: Order rejected 201
+ if (errorCode == 201) {
+// eventReport.report(JBookTrader.APP_NAME, "KS: Handling: Error 201
Strategy");
+ traderAssistant.resetOrderExecutionPending();
+ String reportMsg = "Rejected Order " + id + " because IB
reported error " + errorCode + ". ";
+ if
(traderAssistant.getOpenOrders().get(id).getStrategy().getPositionManager().getCurrentPosition()
== 0) {
+ // we wanted to open a position: only then do we block
the strategy
+ reportMsg += "Strategy " +
traderAssistant.getOpenOrders().get(id).getStrategy().getName() + " will be
blocked ";
+
traderAssistant.getOpenOrders().get(id).getStrategy().getPositionManager().setTradeDisabled(true);
+ traderAssistant.getOpenOrders().remove(id);
+ } else {
+ reportMsg += "Strategy " +
traderAssistant.getOpenOrders().get(id).getStrategy().getName() + " will
not be blocked to enable position closing.";
+ traderAssistant.getOpenOrders().remove(id);
+ }
+
+ eventReport.report(JBookTrader.APP_NAME, reportMsg);
+ }
+ // End: Handle order rejected 201.
+
+
// 200: bad contract
// 309: market depth requested for more than 3 symbols
boolean isInvalidRequest = (errorCode == 200 || errorCode ==
309);
diff --git source/com/jbooktrader/platform/trader/TraderAssistant.java
source/com/jbooktrader/platform/trader/TraderAssistant.java
index ea34632..29008b6 100644
--- source/com/jbooktrader/platform/trader/TraderAssistant.java
+++ source/com/jbooktrader/platform/trader/TraderAssistant.java
@@ -52,6 +52,24 @@
}
+ // KS: 121025 - reenable Strategies
+ public void reenableStrategies() {
+
+ for (Strategy strategy : getAllStrategies()) {
+ PositionManager pm;
+
+ pm = strategy.getPositionManager();
+ if ((pm != null) && pm.getTradeDisabled()){
+ pm.setTradeDisabled(false);
+ pm.setTradeDisabledReported(false);
+ eventReport.report(JBookTrader.APP_NAME, "KS: Enabled Strategy: " +
strategy.getName());
+ }
+ }
+
+ }
+ // End: reenable Strategies
+
+
public Map<Integer, OpenOrder> getOpenOrders() {
return openOrders;
}
@@ -246,8 +264,13 @@
private synchronized void placeOrder(Contract contract, Order order,
Strategy strategy) {
try {
- if (isOrderExecutionPending) {
- return;
+ // KS: 121025: we also do not trade blocked strategies
+ if (isOrderExecutionPending ||
strategy.getPositionManager().getTradeDisabled()) {
+ if (strategy.getPositionManager().getTradeDisabled() &&
!strategy.getPositionManager().getTradeDisabledReported()) {
+ eventReport.report(JBookTrader.APP_NAME, "KS: Skipping
disabled Strategy: " + strategy.getName());
+ strategy.getPositionManager().setTradeDisabledReported(true);
+ }
+ return;
}
Mode mode = dispatcher.getMode();
Am Montag, 22. April 2013 10:42:28 UTC+2 schrieb Borg Alexander:
>
> Klaus,
> I just saw your reply after I have submitted the post regarding error 201
> (order rejected). I certainly would like to see your code.
> Thank you,
> Alexander
>
--
You received this message because you are subscribed to the Google Groups
"JBookTrader" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/jbooktrader?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.