protected void processTradeEvent(TRADE_EVENT e) { log("processTradeEvent trade.pending="+trade.pending); if(trade.pending) return; switch(e){ case TRADE_EVENT.BOUNCE_LONG: case TRADE_EVENT.KICKASS_LONG: trade.dir=1; trade.type="KICKASS"; if(Historical) enterLongMarket(); else enterLong(tick.ask); logState("TRADE EVENT "+e); break; case TRADE_EVENT.BOUNCE_SHORT: case TRADE_EVENT.KICKASS_SHORT: trade.dir=-1; trade.type="KICKASS"; if(Historical) enterShortMarket(); else enterShort(tick.bid); logState("TRADE EVENT "+e); break; case TRADE_EVENT.EXIT_ON_EOD: if(getPos()>0) exitLongMarket(); else exitShortMarket(); logState("TRADE EVENT "+e); break; case TRADE_EVENT.SWING_OUT_LONG: if(range.bias==-1){ log("RANGE BIAS IN CONFLICT, NO TRADE"); return; } trade.dir=1; trade.type="SWING_OUT"; trade.target=range.breakoutTarget; trade.stop=19;//(tick.ask-range.low)*tf+tm*2; trade.signal="LongSwingOut"; if(Historical) enterLongMarket(); else enterLong(tick.ask); //enterLong(tick.bid); logState("TRADE EVENT "+e); break; case TRADE_EVENT.SWING_OUT_SHORT: if(range.bias==1){ log("RANGE BIAS IN CONFLICT, NO TRADE"); return; } trade.dir=-1; trade.type="SWING_OUT"; trade.target=range.breakoutTarget; trade.stop=19;//(range.high-tick.bid)*tf+tm*2; trade.signal="ShortSwingOut"; if(Historical) enterShortMarket(); else enterShort(tick.bid); //enterShort(tick.ask); logState("TRADE EVENT "+e); break; case TRADE_EVENT.SWING_IN_LONG: if(range.lastSwingInDir<=0){ trade.dir=1; trade.type="SWING_IN"; trade.signal="LongSwingIn"; //double t=Math.Max((range.high-range.median)/4,0.25); double t=0.25; trade.target=(int)(Math.Round(range.median-tick.bid+t,0)*tf); //if(tick.bid+trade.target/tf>=range.high) // trade.target=(int)(range.high-tick.bid)*tf-tm; trade.target=2;Math.Max(trade.target,tm); trade.stop=(int)((tick.bid-range.low)*tf+tm+2); enterLong(tick.bid); range.lastSwingInDir=1; logState("TRADE EVENT "+e); } break; case TRADE_EVENT.SWING_IN_SHORT: if(range.lastSwingInDir<=0){ trade.dir=-1; trade.type="SWING_IN"; trade.signal="ShortSwingIn"; //logState("DEBUG: tick.ask-range.median="+(tick.ask-range.median)+";tgt="+((tick.ask-range.median)*tf)+";target="+((tick.ask-range.median)*tf+tm)); //double t=Math.Max((range.median-range.low)/4,0.25); double t=0.25; trade.target=(int)(Math.Round(tick.ask-range.median+t,0)*tf); //if(tick.ask-trade.target/tf<=range.low) // trade.target=(int)(tick.ask-range.low)*tf-tm; trade.target=2;//Math.Max(trade.target,tm); trade.stop=(int)((range.high-tick.ask)*tf+tm+2); enterShort(tick.ask); range.lastSwingInDir=-1; logState("TRADE EVENT "+e); } break; case TRADE_EVENT.EXIT_LONG_LONG_TRADE: case TRADE_EVENT.EXIT_LONG: case TRADE_EVENT.STOP_LONG: exitLongMarket(); logState("TRADE EVENT "+e); break; case TRADE_EVENT.EXIT_LONG_SHORT_TRADE: case TRADE_EVENT.EXIT_SHORT: case TRADE_EVENT.STOP_SHORT: exitShortMarket(); logState("TRADE EVENT "+e); break; } }
protected void processTradeEvent(TRADE_EVENT e) { switch(e){ case TRADE_EVENT.EXIT_ON_EOD: if(getPos()>0) exitLongMarket(); else exitShortMarket(); logState("TRADE EVENT "+e); break; case TRADE_EVENT.LONG_ON_TOUCHCROSS: trade.type=TRADE_TYPE.TOUCHCROSS; trade.target=3; trade.stop=range.amplitude; enterLong(tick.ask); //enterLong(tick.bid); logState("TRADE EVENT "+e); break; case TRADE_EVENT.SWING_OUT_LONG: trade.type=TRADE_TYPE.SWING_OUT; trade.target=range.breakoutTarget; trade.stop=(tick.ask-range.low)*tf+tm*2; enterLongMarket(); //enterLong(tick.bid); logState("TRADE EVENT "+e); break; case TRADE_EVENT.SHORT_ON_TOUCHCROSS: trade.type=TRADE_TYPE.TOUCHCROSS; trade.target=3; trade.stop=range.amplitude; enterShort(tick.bid); //enterLong(tick.bid); logState("TRADE EVENT "+e); break; case TRADE_EVENT.SWING_OUT_SHORT: trade.type=TRADE_TYPE.SWING_OUT; trade.target=range.breakoutTarget; trade.stop=(range.high-tick.bid)*tf+tm*2; enterShortMarket(); //enterShort(tick.ask); logState("TRADE EVENT "+e); break; case TRADE_EVENT.SWING_IN_LONG: if(range.lastSwingInDir<=0){ trade.type=TRADE_TYPE.SWING_IN; //double t=Math.Max((range.high-range.median)/4,0.25); double t=0.25; trade.target=(int)(Math.Round(range.median-tick.bid+t,0)*tf); //if(tick.bid+trade.target/tf>=range.high) // trade.target=(int)(range.high-tick.bid)*tf-tm; trade.target=2;Math.Max(trade.target,tm); trade.stop=(int)((tick.bid-range.low)*tf+tm+2); enterLong(tick.bid); range.lastSwingInDir=1; logState("TRADE EVENT "+e); } break; case TRADE_EVENT.SWING_IN_SHORT: if(range.lastSwingInDir<=0){ trade.type=TRADE_TYPE.SWING_IN; //logState("DEBUG: tick.ask-range.median="+(tick.ask-range.median)+";tgt="+((tick.ask-range.median)*tf)+";target="+((tick.ask-range.median)*tf+tm)); //double t=Math.Max((range.median-range.low)/4,0.25); double t=0.25; trade.target=(int)(Math.Round(tick.ask-range.median+t,0)*tf); //if(tick.ask-trade.target/tf<=range.low) // trade.target=(int)(tick.ask-range.low)*tf-tm; trade.target=2;//Math.Max(trade.target,tm); trade.stop=(int)((range.high-tick.ask)*tf+tm+2); enterShort(tick.ask); range.lastSwingInDir=-1; logState("TRADE EVENT "+e); } break; case TRADE_EVENT.EXIT_LONG_LONG_TRADE: case TRADE_EVENT.EXIT_LONG: case TRADE_EVENT.STOP_LONG: exitLongMarket(); logState("TRADE EVENT "+e); break; case TRADE_EVENT.EXIT_LONG_SHORT_TRADE: case TRADE_EVENT.EXIT_SHORT: case TRADE_EVENT.STOP_SHORT: exitShortMarket(); logState("TRADE EVENT "+e); break; } }
protected void processTradeEvent(TRADE_EVENT e) { switch (e) { case TRADE_EVENT.EXIT_ON_EOD: if (getPos() > 0) { exitLongMarket(); } else { exitShortMarket(); } logState("TRADE EVENT " + e); break; case TRADE_EVENT.LONG_ON_TOUCHCROSS: trade.type = TRADE_TYPE.TOUCHCROSS; trade.target = 3; trade.stop = range.amplitude; enterLong(tick.ask); //enterLong(tick.bid); logState("TRADE EVENT " + e); break; case TRADE_EVENT.SWING_OUT_LONG: trade.type = TRADE_TYPE.SWING_OUT; trade.target = range.breakoutTarget; trade.stop = (tick.ask - range.low) * tf + tm * 2; enterLongMarket(); //enterLong(tick.bid); logState("TRADE EVENT " + e); break; case TRADE_EVENT.SHORT_ON_TOUCHCROSS: trade.type = TRADE_TYPE.TOUCHCROSS; trade.target = 3; trade.stop = range.amplitude; enterShort(tick.bid); //enterLong(tick.bid); logState("TRADE EVENT " + e); break; case TRADE_EVENT.SWING_OUT_SHORT: trade.type = TRADE_TYPE.SWING_OUT; trade.target = range.breakoutTarget; trade.stop = (range.high - tick.bid) * tf + tm * 2; enterShortMarket(); //enterShort(tick.ask); logState("TRADE EVENT " + e); break; case TRADE_EVENT.SWING_IN_LONG: if (range.lastSwingInDir <= 0) { trade.type = TRADE_TYPE.SWING_IN; //double t=Math.Max((range.high-range.median)/4,0.25); double t = 0.25; trade.target = (int)(Math.Round(range.median - tick.bid + t, 0) * tf); //if(tick.bid+trade.target/tf>=range.high) // trade.target=(int)(range.high-tick.bid)*tf-tm; trade.target = 2; Math.Max(trade.target, tm); trade.stop = (int)((tick.bid - range.low) * tf + tm + 2); enterLong(tick.bid); range.lastSwingInDir = 1; logState("TRADE EVENT " + e); } break; case TRADE_EVENT.SWING_IN_SHORT: if (range.lastSwingInDir <= 0) { trade.type = TRADE_TYPE.SWING_IN; //logState("DEBUG: tick.ask-range.median="+(tick.ask-range.median)+";tgt="+((tick.ask-range.median)*tf)+";target="+((tick.ask-range.median)*tf+tm)); //double t=Math.Max((range.median-range.low)/4,0.25); double t = 0.25; trade.target = (int)(Math.Round(tick.ask - range.median + t, 0) * tf); //if(tick.ask-trade.target/tf<=range.low) // trade.target=(int)(tick.ask-range.low)*tf-tm; trade.target = 2; //Math.Max(trade.target,tm); trade.stop = (int)((range.high - tick.ask) * tf + tm + 2); enterShort(tick.ask); range.lastSwingInDir = -1; logState("TRADE EVENT " + e); } break; case TRADE_EVENT.EXIT_LONG_LONG_TRADE: case TRADE_EVENT.EXIT_LONG: case TRADE_EVENT.STOP_LONG: exitLongMarket(); logState("TRADE EVENT " + e); break; case TRADE_EVENT.EXIT_LONG_SHORT_TRADE: case TRADE_EVENT.EXIT_SHORT: case TRADE_EVENT.STOP_SHORT: exitShortMarket(); logState("TRADE EVENT " + e); break; } }