#property copyright "Wall-khi" extern double Lots=1; //---- input parameters int init() { return(0); } int deinit() { return(0); } int start() { int ticket; double noopen; double CloseBuyStrong, CloseSellStrong, BuyCancel, SellCancel; double CloseBuyMedium, CloseSellMedium; double CloseBuyWeak, CloseSellWeak; double stop=1000; //no definite stop yet double profit=1000; //no definite limit either datetime t; //Various Ichimokus double a=9; double b=26; double c=52; double dp=13; double KumoHigh,KumoLow; double StrongBuyCross1, StrongBuyPrice1, StrongBuySwap1, StrongSellCross1, StrongSellPrice1, StrongSellSwap1; double MediumBuyCross1, MediumBuyPrice1, MediumBuySwap1, MediumSellCross1, MediumSellPrice1, MediumSellSwap1; double WeakBuyCross1, WeakBuyPrice1, WeakBuySwap1, WeakSellCross1, WeakSellPrice1, WeakSellSwap1; double StrongBuyCross2, StrongBuyPrice2, StrongBuySwap2, StrongSellCross2, StrongSellPrice2, StrongSellSwap2; double MediumBuyCross2, MediumBuyPrice2, MediumBuySwap2, MediumSellCross2, MediumSellPrice2, MediumSellSwap2; double WeakBuyCross2, WeakBuyPrice2, WeakBuySwap2, WeakSellCross2, WeakSellPrice2, WeakSellSwap2; double tenkan = iIchimoku(NULL, 0, a, b, c, MODE_TENKANSEN, 1); double pretenkan = iIchimoku(NULL, 0, a, b, c, MODE_TENKANSEN, 2); double expretenkan = iIchimoku(NULL, 0, a, b, c, MODE_TENKANSEN,3); double kijun = iIchimoku(NULL, 0, a, b, c, MODE_KIJUNSEN, 1); double prekijun = iIchimoku(NULL, 0, a, b, c, MODE_KIJUNSEN, 2); double exprekijun = iIchimoku(NULL, 0, a, b, c, MODE_KIJUNSEN, 3); double senkouA = iIchimoku(NULL, 0, a, b, c, MODE_SENKOUSPANA, 1); double senkouB = iIchimoku(NULL, 0, a, b, c, MODE_SENKOUSPANB, 1); double presenkouA = iIchimoku(NULL, 0, a, b, c, MODE_SENKOUSPANA, 2); double presenkouB = iIchimoku(NULL, 0, a, b, c, MODE_SENKOUSPANB, 2); double expresenkouA = iIchimoku(NULL, 0, a, b, c, MODE_SENKOUSPANA, 3); double expresenkouB = iIchimoku(NULL, 0, a, b, c, MODE_SENKOUSPANB, 3); double chinkou = iIchimoku(NULL, 0, a, b, c, MODE_CHINKOUSPAN, 27); double senkouA26 = iIchimoku(NULL, 0, a, b, c, MODE_SENKOUSPANA, -25); double senkouB26 = iIchimoku(NULL, 0, a, b, c, MODE_SENKOUSPANB, -25); double senkouA25 = iIchimoku(NULL, 0, a, b, c, MODE_SENKOUSPANA, -24); double senkouB25 = iIchimoku(NULL, 0, a, b, c, MODE_SENKOUSPANB, -24); double senkouA24 = iIchimoku(NULL, 0, a, b, c, MODE_SENKOUSPANA, -20); double senkouB24 = iIchimoku(NULL, 0, a, b, c, MODE_SENKOUSPANB, -20); //KUMO if (senkouA>senkouB) KumoHigh=senkouA; if (senkouA<=senkouB) KumoHigh=senkouB; if (senkouA>senkouB) KumoLow=senkouB; if (senkouA<=senkouB) KumoLow=senkouA; //STRONG LONG SIGNALS if (expretenkan<=exprekijun && pretenkan>prekijun && iLow(NULL,0,1)>KumoHigh && tenkan>kijun) {StrongBuyCross1=1; StrongBuyCross2=1; } if (iLow(NULL,0,2)<=exprekijun && iLow(NULL,0,1)>prekijun && prekijun>KumoHigh && tenkan>kijun && iClose(NULL,0,1)>KumoHigh) {StrongBuyPrice1=1; StrongBuyPrice2=1; } if (senkouA24senkouB26 && senkouA25senkouB26 && senkouA26+10*Point>=senkouA24 && tenkan>kijun) {StrongBuySwap1=1; StrongBuySwap2=1; } //STRONG SHORT SIGNALS if (expretenkan>=exprekijun && pretenkan=prekijun && iHigh(NULL,0,1)senkouB24 && senkouA26senkouA26 && senkouA26prekijun && iClose(NULL,0,1)>KumoLow && iClose(NULL,0,1)prekijun && iClose(NULL,0,1)>KumoLow && iClose(NULL,0,1)=exprekijun && pretenkanKumoLow && iClose(NULL,0,1)=exprekijun && iHigh(NULL,0,1)KumoLow && iClose(NULL,0,1)prekijun && iHigh(NULL,0,1)prekijun && iHigh(NULL,0,1)=exprekijun && pretenkanKumoHigh) {WeakSellCross1=1; WeakSellCross2=1; } if (iHigh(NULL,0,2)>=exprekijun && iHigh(NULL,0,1)KumoHigh) {WeakSellPrice1=1; WeakSellPrice2=1; } //CHINKOU CONFIRMATION if (chinkou<=iHigh(NULL,0,b)) BuyCancel=1; if (chinkou>=iLow(NULL,0,b)) SellCancel=1; //DeMARKER CONFIRMATION if (iDeMarker(NULL,0,dp,1) <0.5) BuyCancel=1; if (iDeMarker(NULL,0,dp,1) >0.5) SellCancel=1; //DIFFERENCE CONFIRMATION if (iLow(NULL,0,1)-KumoHigh>100*Point) BuyCancel=1; if (KumoLow-iHigh(NULL,0,1)>100*Point) SellCancel=1; //CLOSING Conditions if (tenkankijun || iClose(NULL,0,1)>KumoLow) CloseSellStrong=1; if (tenkankijun) CloseSellMedium=1; if (tenkankijun) CloseSellWeak=1; //No repeat order in the same bar OrderSelect(OrdersHistoryTotal(),SELECT_BY_TICKET,MODE_HISTORY); t=OrderOpenTime(); if (t>=Time[0]) noopen=1; //if (noopen==1) return(0); //If the order is alive, don't execute a new one with the same kind. int ot = OrdersTotal(); for(int say=ot-1;say>=0;say--) { OrderSelect(say, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==1) StrongBuyCross1=0; if (OrderMagicNumber()==2) StrongBuyCross2=0; if (OrderMagicNumber()==3) StrongBuyPrice1=0; if (OrderMagicNumber()==4) StrongBuyPrice2=0; if (OrderMagicNumber()==5) StrongBuySwap1=0; if (OrderMagicNumber()==6) StrongBuySwap2=0; if (OrderMagicNumber()==7) StrongSellCross1=0; if (OrderMagicNumber()==8) StrongSellCross2=0; if (OrderMagicNumber()==9) StrongSellPrice1=0; if (OrderMagicNumber()==10) StrongSellPrice2=0; if (OrderMagicNumber()==11) StrongSellSwap1=0; if (OrderMagicNumber()==12) StrongSellSwap2=0; if (OrderMagicNumber()==13) MediumBuyCross1=0; if (OrderMagicNumber()==14) MediumBuyCross2=0; if (OrderMagicNumber()==15) MediumBuyPrice1=0; if (OrderMagicNumber()==16) MediumBuyPrice2=0; if (OrderMagicNumber()==17) MediumBuySwap1=0; if (OrderMagicNumber()==18) MediumBuySwap2=0; if (OrderMagicNumber()==19) MediumSellCross1=0; if (OrderMagicNumber()==20) MediumSellCross2=0; if (OrderMagicNumber()==21) MediumSellPrice1=0; if (OrderMagicNumber()==22) MediumSellPrice2=0; if (OrderMagicNumber()==23) MediumSellSwap1=0; if (OrderMagicNumber()==24) MediumSellSwap2=0; if (OrderMagicNumber()==25) WeakBuyCross1=0; if (OrderMagicNumber()==26) WeakBuyCross1=0; if (OrderMagicNumber()==27) WeakBuyPrice1=0; if (OrderMagicNumber()==28) WeakBuyPrice2=0; if (OrderMagicNumber()==29) WeakBuySwap1=0; if (OrderMagicNumber()==30) WeakBuySwap2=0; if (OrderMagicNumber()==31) WeakSellCross1=0; if (OrderMagicNumber()==32) WeakSellCross1=0; if (OrderMagicNumber()==33) WeakSellPrice1=0; if (OrderMagicNumber()==34) WeakSellPrice2=0; if (OrderMagicNumber()==35) WeakSellSwap1=0; if (OrderMagicNumber()==36) WeakSellSwap2=0; } // LONG ORDERS // if (noopen==0 && StrongBuyCross1 == 1 && KumoHigh-KumoLow>5*Point && iLow(NULL,0,1)>KumoHigh && BuyCancel==0) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Lots,Ask-stop*Point,Ask+profit*Point,"SBC1",1,0,DarkGreen); if (noopen==0 && StrongBuyCross2 == 1 && KumoHigh-KumoLow>5*Point && iLow(NULL,0,1)>KumoHigh && BuyCancel==0) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Lots,Ask-stop*Point,Ask+profit*Point,"SBC2",2,0,DarkGreen); if (noopen==0 && StrongBuyPrice1 == 1 && iLow(NULL,0,1)>KumoHigh && BuyCancel==0) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Lots,Ask-stop*Point,Ask+profit*Point,"SBP1",3,0,ForestGreen); // if (noopen==0 && StrongBuyPrice2 == 1 && iLow(NULL,0,1)>KumoHigh && BuyCancel==0) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Lots,Ask-stop*Point,Ask+profit*Point,"SBP2",4,0,ForestGreen); if (noopen==0 && StrongBuySwap1 == 1 && iLow(NULL,0,1)>KumoHigh) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Lots,Ask-stop*Point,Ask+profit*Point,"SBS1",5,0,Lime); // if (noopen==0 && StrongBuySwap2 == 1 && iLow(NULL,0,1)>KumoHigh && BuyCancel==0) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Lots,Ask-stop*Point,Ask+profit*Point,"SBS2",6,0,Lime); // if (noopen==0 && MediumBuyCross1 == 1 && KumoHigh-KumoLow>5*Point && BuyCancel==0) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Lots,Ask-stop*Point,Ask+profit*Point,"MBC1",13,0,DarkGreen); // if (noopen==0 && MediumBuyCross2 == 1 && KumoHigh-KumoLow>5*Point && BuyCancel==0) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Lots,Ask-stop*Point,Ask+profit*Point,"MBC2",14,0,DarkGreen); // if (noopen==0 && MediumBuyPrice1 == 1 && BuyCancel==0) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Lots,Ask-stop*Point,Ask+profit*Point,"MBP1",15,0,ForestGreen); // if (noopen==0 && MediumBuyPrice2 == 1 && BuyCancel==0) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Lots,Ask-stop*Point,Ask+profit*Point,"MBP2",16,0,ForestGreen); if (noopen==0 && WeakBuyCross1 == 1 && KumoHigh-KumoLow>5*Point && BuyCancel==0) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Lots,Ask-stop*Point,Ask+profit*Point,"WBC1",25,0,DarkGreen); // if (noopen==0 && WeakBuyCross2 == 1 && KumoHigh-KumoLow>5*Point && BuyCancel==0) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Lots,Ask-stop*Point,Ask+profit*Point,"WBC2",26,0,DarkGreen); if (noopen==0 && WeakBuyPrice1 == 1 && BuyCancel==0) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Lots,Ask-stop*Point,Ask+profit*Point,"WBP1",27,0,ForestGreen); // if (noopen==0 && WeakBuyPrice2 == 1 && BuyCancel==0) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Lots,Ask-stop*Point,Ask+profit*Point,"WBP2",28,0,ForestGreen); // SHORT ORDERS // if (noopen==0 && StrongSellCross1 == 1 && KumoHigh-KumoLow>5*Point && iHigh(NULL,0,1)5*Point && iHigh(NULL,0,1)5*Point && iHigh(NULL,0,1)5*Point && iHigh(NULL,0,1)5*Point && iHigh(NULL,0,1)3*Point && iHigh(NULL,0,1)=0;sayb1--) {OrderSelect(sayb1, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==1) OrderClose( OrderTicket(), OrderLots(), Ask, 3, Red ); } } // SBC2 Close if (iLow(NULL,0,0)=0;sayb2--) {OrderSelect(sayb2, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==2) OrderClose( OrderTicket(), OrderLots(), Ask, 3, Red ); } } //SSC1 Close if (CloseSellStrong==1) {int ots1 = OrdersTotal(); for(int says1=ots1-1;says1>=0;says1--) {OrderSelect(says1, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==7) OrderClose( OrderTicket(), OrderLots(), Bid, 3, Red ); } } // SSC2 Close if (iHigh(NULL,0,0)>KumoLow) {int ots2 = OrdersTotal(); for(int says2=ots2-1;says2>=0;says2--) {OrderSelect(says2, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==8) OrderClose( OrderTicket(), OrderLots(), Bid, 3, Red ); } } // SBP1 Close //if (CloseBuyStrong==1 && iClose(NULL,0,1)=0;sayb3--) {OrderSelect(sayb3, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==3) OrderClose( OrderTicket(), OrderLots(), Ask, 3, Red ); } } // SBP2 Close //if (iLow(NULL,0,0)prekijun) {int otb4 = OrdersTotal(); for(int sayb4=otb4-1;sayb4>=0;sayb4--) {OrderSelect(sayb4, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==4) OrderClose( OrderTicket(), OrderLots(), Ask, 3, Red ); } } // SSP1 Close if (CloseSellStrong==1) {int ots3 = OrdersTotal(); for(int says3=ots3-1;says3>=0;says3--) {OrderSelect(says3, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==9) OrderClose( OrderTicket(), OrderLots(), Bid, 3, Red ); } } // SSP2 Close if (exprekijun=0;says4--) {OrderSelect(says4, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==10) OrderClose( OrderTicket(), OrderLots(), Bid, 3, Red ); } } // SBS1 Close if (iLow(NULL,0,1)=0;sayb5--) {OrderSelect(sayb5, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==5) OrderClose( OrderTicket(), OrderLots(), Ask, 3, Red ); } } // SBS2 Close if (senkouA26+10*Point=0;sayb6--) {OrderSelect(sayb6, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==6) OrderClose( OrderTicket(), OrderLots(), Ask, 3, Red ); } } // SSS1 Close //if (tenkan>kijun ) if (iHigh(NULL,0,1)>kijun) {int ots5 = OrdersTotal(); for(int says5=ots5-1;says5>=0;says5--) {OrderSelect(says5, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==11) OrderClose( OrderTicket(), OrderLots(), Bid, 3, Red ); } } // SSS2 Close //if (iHigh(NULL,0,0)>KumoLow) if (senkouA26+10*Point>senkouA24) {int ots6 = OrdersTotal(); for(int says6=ots6-1;says6>=0;says6--) {OrderSelect(says6, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==12) OrderClose( OrderTicket(), OrderLots(), Bid, 3, Red ); } } // MBC1 Close if (CloseBuyMedium==1 && iClose(NULL,0,1)=0;sayb1--) {OrderSelect(sayb1, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==13) OrderClose( OrderTicket(), OrderLots(), Ask, 3, Red ); } } // MBC2 Close if (CloseBuyMedium==1) {otb2 = OrdersTotal(); for(sayb2=otb2-1;sayb2>=0;sayb2--) {OrderSelect(sayb2, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==14) OrderClose( OrderTicket(), OrderLots(), Ask, 3, Red ); } } //MSC1 Close if (CloseSellMedium==1 && iClose(NULL,0,1)>KumoHigh) {ots1 = OrdersTotal(); for(says1=ots1-1;says1>=0;says1--) {OrderSelect(says1, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==19) OrderClose( OrderTicket(), OrderLots(), Bid, 3, Red ); } } // MSC2 Close if (CloseSellMedium==1) {ots2 = OrdersTotal(); for(says2=ots2-1;says2>=0;says2--) {OrderSelect(says2, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==20) OrderClose( OrderTicket(), OrderLots(), Bid, 3, Red ); } } // MBP1 Close if (CloseBuyMedium==1 && iClose(NULL,0,1)=0;sayb3--) {OrderSelect(sayb3, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==15) OrderClose( OrderTicket(), OrderLots(), Ask, 3, Red ); } } // MBP2 Close if (CloseBuyMedium==1) {otb4 = OrdersTotal(); for(sayb4=otb4-1;sayb4>=0;sayb4--) {OrderSelect(sayb4, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==16) OrderClose( OrderTicket(), OrderLots(), Ask, 3, Red ); } } // MSP1 Close if (CloseSellMedium==1 && iClose(NULL,0,1)>KumoHigh) {ots3 = OrdersTotal(); for(says3=ots3-1;says3>=0;says3--) {OrderSelect(says3, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==21) OrderClose( OrderTicket(), OrderLots(), Bid, 3, Red ); } } // MSP2 Close if (CloseSellMedium==1) {ots4 = OrdersTotal(); for(says4=ots4-1;says4>=0;says4--) {OrderSelect(says4, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==22) OrderClose( OrderTicket(), OrderLots(), Bid, 3, Red ); } } // WBC1 Close if (CloseBuyWeak==1 && iClose(NULL,0,1)=0;sayb1--) {OrderSelect(sayb1, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==25) OrderClose( OrderTicket(), OrderLots(), Ask, 3, Red ); } } //// WBC2 Close if (CloseBuyWeak==1) {otb2 = OrdersTotal(); for(sayb2=otb2-1;sayb2>=0;sayb2--) {OrderSelect(sayb2, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==26) OrderClose( OrderTicket(), OrderLots(), Ask, 3, Red ); } } //WSC1 Close if (CloseSellWeak==1) {ots1 = OrdersTotal(); for(says1=ots1-1;says1>=0;says1--) {OrderSelect(says1, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==31) OrderClose( OrderTicket(), OrderLots(), Bid, 3, Red ); } } // WSC2 Close if (CloseSellWeak==1) {ots2 = OrdersTotal(); for(says2=ots2-1;says2>=0;says2--) {OrderSelect(says2, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==32) OrderClose( OrderTicket(), OrderLots(), Bid, 3, Red ); } } // WBP1 Close if (CloseBuyWeak==1) {otb3 = OrdersTotal(); for(sayb3=otb3-1;sayb3>=0;sayb3--) {OrderSelect(sayb3, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==27) OrderClose( OrderTicket(), OrderLots(), Ask, 3, Red ); } } // WBP2 Close if (CloseBuyWeak==1) {otb4 = OrdersTotal(); for(sayb4=otb4-1;sayb4>=0;sayb4--) {OrderSelect(sayb4, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==28) OrderClose( OrderTicket(), OrderLots(), Ask, 3, Red ); } } // WSP1 Close if (CloseSellWeak==1) {ots3 = OrdersTotal(); for(says3=ots3-1;says3>=0;says3--) {OrderSelect(says3, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==33) OrderClose( OrderTicket(), OrderLots(), Bid, 3, Red ); } } // WSP2 Close if (CloseSellWeak==1) {ots4 = OrdersTotal(); for(says4=ots4-1;says4>=0;says4--) {OrderSelect(says4, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber()==34) OrderClose( OrderTicket(), OrderLots(), Bid, 3, Red ); } } CloseBuyStrong=0; CloseSellStrong=0; CloseBuyMedium=0; CloseSellMedium=0; return(0); }