Example #1
0
        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;

            }
        }
Example #2
0
        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;

            }
        }
Example #3
0
        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;
            }
        }