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.


Reply via email to