#property copyright "Copyright(C) 2015,Michi" #define INDIVAL_CNT 4 extern double Lots = 0.1; extern int Slippage = 4; extern int Magic= 59872465; double dOrderSet[256][10]; int iOrderSetCnt; string sOrderSetCom[256]; double dPoint; int iCandlCheck[1][2] = {0,1}; datetime tCandlCheckTime[1]; int init(){ ArrayInitialize(dOrderSet,0); HideTestIndicators(true); return(0); } int start(){ int i; int iTicket; int iErrChk; double dSpread; bool MM = true; double Risk = 2.0; int iBuyCnt; int iSellCnt; int iBuyLimitCnt; int iSellLimitCnt; int iBuySetCnt; int iSellSetCnt; static int iSellCntBk; static int iDotenSellSw; static int iDotenBuySw; double dIndiVal[INDIVAL_CNT]; ArrayInitialize(dIndiVal,0); dPoint = Point; if( Digits==3 || Digits==5 ) dPoint = Point * 10; dSpread = DoubleToStr( (MarketInfo(Symbol(),MODE_ASK) - MarketInfo(Symbol(),MODE_BID)) / dPoint ); if( OrdersTotal() > 0){ for( i=0; i= 1 ){ if( tCandlCheckTime[i] != iTime(NULL,0,1) ){ iCandlCheck[i][0]--; tCandlCheckTime[i] = iTime(NULL,0,1); } } } ObjectCreate("EAName",OBJ_LABEL,0,0,0); ObjectSetText("EAName","signal_line_ea", 18, "Arial", 16777215); ObjectSet("EAName", OBJPROP_CORNER, 0); ObjectSet("EAName", OBJPROP_XDISTANCE, 30); ObjectSet("EAName", OBJPROP_YDISTANCE, 20); ObjectCreate("EAPrice",OBJ_LABEL,0,0,0); ObjectSetText("EAPrice","Price "+DoubleToStr(MarketInfo(Symbol(),MODE_BID),Digits), 12, "Arial", White); ObjectSet("EAPrice", OBJPROP_CORNER, 0); ObjectSet("EAPrice", OBJPROP_XDISTANCE, 40); ObjectSet("EAPrice", OBJPROP_YDISTANCE, 55); ObjectCreate("EASpread",OBJ_LABEL,0,0,0); ObjectSetText("EASpread","Spread "+DoubleToStr(dSpread,1), 12, "Arial", White); ObjectSet("EASpread", OBJPROP_CORNER, 0); ObjectSet("EASpread", OBJPROP_XDISTANCE, 40); ObjectSet("EASpread", OBJPROP_YDISTANCE, 80); if( iOrderSetCnt == 0 ){ if( iSellCnt == 0 ){ if( dIndiVal[0] == EMPTY_VALUE || dIndiVal[0] == 0 ){ if( dIndiVal[1] != EMPTY_VALUE && dIndiVal[1] != 0 ){ if( iBuyCnt + iBuyLimitCnt + iBuySetCnt < 1 ){ if( iCandlCheck[0][0] == 0 ){ dOrderSet[iOrderSetCnt][0] = 1; dOrderSet[iOrderSetCnt][1] = 1; dOrderSet[iOrderSetCnt][2] = MarketInfo(Symbol(),MODE_ASK); dOrderSet[iOrderSetCnt][3] = 0; dOrderSet[iOrderSetCnt][6] = 1; dOrderSet[iOrderSetCnt][7] = 0; dOrderSet[iOrderSetCnt][9] = 0; sOrderSetCom[iOrderSetCnt] = ""; iOrderSetCnt++; iBuySetCnt++; } } } } } if( iBuyCnt > 0 || iBuyLimitCnt > 0 ){ if( dIndiVal[2] == EMPTY_VALUE || dIndiVal[2] == 0 ){ if( dIndiVal[3] != EMPTY_VALUE && dIndiVal[3] != 0 ){ if( iBuyCnt > 0 ){ while( !IsStopped() ){ iErrChk = 0; for( i=OrdersTotal()-1; i>=0; i-- ){ if( OrderSelect(i, SELECT_BY_POS) == true ){ if( OrderType() == OP_BUY && OrderMagicNumber() == Magic && OrderSymbol() == Symbol() ){ if( !(OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),Slippage,Green)) ){ iErrChk = 1; } } } } if( iErrChk == 0 ) break; Sleep(500); RefreshRates(); } } while( !IsStopped() ){ iErrChk = 0; for( i=OrdersTotal()-1; i>=0; i-- ){ if( OrderSelect(i, SELECT_BY_POS) == true ){ if( OrderType() == OP_BUY && OrderMagicNumber() == Magic && OrderSymbol() == Symbol() ){ if( !(OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),Slippage,Green)) ){ iErrChk = 1; } } } } if( iErrChk == 0 ) break; Sleep(500); RefreshRates(); } dOrderSet[iOrderSetCnt][0] = 2; dOrderSet[iOrderSetCnt][1] = 1; dOrderSet[iOrderSetCnt][2] = MarketInfo(Symbol(),MODE_BID); dOrderSet[iOrderSetCnt][3] = 0; dOrderSet[iOrderSetCnt][6] = 0; dOrderSet[iOrderSetCnt][7] = 0; dOrderSet[iOrderSetCnt][8] = 0; sOrderSetCom[iOrderSetCnt] = ""; iOrderSetCnt++; iSellSetCnt++; iDotenSellSw = 1; } } } if( iSellCnt > 0 || iSellLimitCnt > 0 ){ if( dIndiVal[2] != EMPTY_VALUE && dIndiVal[2] != 0 ){ if( dIndiVal[1] != EMPTY_VALUE && dIndiVal[1] != 0 ){ if( iSellCnt > 0 ){ while( !IsStopped() ){ iErrChk = 0; for( i=OrdersTotal()-1; i>=0; i-- ){ if( OrderSelect(i, SELECT_BY_POS) == true ){ if( OrderType() == OP_SELL && OrderMagicNumber() == Magic && OrderSymbol() == Symbol() ){ if( !(OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_ASK),Slippage,Green)) ){ iErrChk = 1; } } } } if( iErrChk == 0 ) break; Sleep(500); RefreshRates(); } } } } } } if( iOrderSetCnt > 0 ) OrderFunction(); return(0); } void OrderFunction(){ int i; int iTicket; int iCCheck; int iOrderType; double dOrderRate; double dOrderLimit; double dOrderStop; color cOrderColor; double dSetPrice; static int iCheckCnt; if( dOrderSet[iCheckCnt][8] >= 10 ){ dOrderSet[iCheckCnt][0] = 0; sOrderSetCom[iCheckCnt] = ""; iCheckCnt++; } if( dOrderSet[iCheckCnt][0] >= 1 && dOrderSet[iCheckCnt][0] <= 4 ){ i = dOrderSet[iCheckCnt][0]; switch( i ){ case 1: cOrderColor = Red; iOrderType = 0; dOrderRate = dOrderSet[iCheckCnt][2]; dOrderLimit = 0; dOrderStop = 0; break; case 2: cOrderColor = Blue; iOrderType = 1; dOrderRate = dOrderSet[iCheckCnt][2]; dOrderLimit = 0; dOrderStop = 0; break; case 3: cOrderColor = Red; iOrderType = 2; if( MarketInfo(Symbol(),MODE_ASK) < dOrderSet[iCheckCnt][2] ) iOrderType = 4; dOrderRate = dOrderSet[iCheckCnt][2]; if(dOrderSet[iCheckCnt][3] >= 1){ dOrderLimit = 0; dOrderStop = 0; if( dOrderSet[iCheckCnt][3] != 3 ) dOrderLimit = dOrderSet[iCheckCnt][2]+(dOrderSet[iCheckCnt][4]*dPoint); if( dOrderSet[iCheckCnt][3] != 2 ) dOrderStop = dOrderSet[iCheckCnt][2]+(dOrderSet[iCheckCnt][5]*dPoint); }else{ dOrderLimit = 0; dOrderStop = 0; } break; case 4: cOrderColor = Blue; iOrderType = 3; if( MarketInfo(Symbol(),MODE_ASK) > dOrderSet[iCheckCnt][2] ) iOrderType = 5; dOrderRate = dOrderSet[iCheckCnt][2]; if(dOrderSet[iCheckCnt][3] >= 1){ dOrderLimit = 0; dOrderStop = 0; if( dOrderSet[iCheckCnt][3] != 3 ) dOrderLimit = dOrderSet[iCheckCnt][2]-(dOrderSet[iCheckCnt][4]*dPoint); if( dOrderSet[iCheckCnt][3] != 2 ) dOrderStop = dOrderSet[iCheckCnt][2]-(dOrderSet[iCheckCnt][5]*dPoint); }else{ dOrderLimit = 0; dOrderStop = 0; } break; } iTicket = OrderSend( Symbol(),iOrderType,Lots*dOrderSet[iCheckCnt][1],dOrderRate,Slippage,dOrderStop,dOrderLimit,sOrderSetCom[iCheckCnt],Magic,0,cOrderColor ); if( iTicket < 0 ){ Print( "Error OrderSend :",GetLastError() ); dOrderSet[iCheckCnt][8]++; }else{ if( dOrderSet[iCheckCnt][6] > 0 ){ iCCheck = dOrderSet[iCheckCnt][6] - 1; iCandlCheck[iCCheck][0] = iCandlCheck[iCCheck][1]; tCandlCheckTime[iCCheck] = iTime(NULL,0,1); } if( dOrderSet[iCheckCnt][0] <= 2 ){ if(dOrderSet[iCheckCnt][3] >= 1){ dOrderSet[iCheckCnt][0] = dOrderSet[iCheckCnt][0]+4; dOrderSet[iCheckCnt][2] = 0; dOrderSet[iCheckCnt][7] = iTicket; }else{ sOrderSetCom[iCheckCnt] = ""; iCheckCnt++; } }else{ sOrderSetCom[iCheckCnt] = ""; iCheckCnt++; } } } if( dOrderSet[iCheckCnt][0] == 5 || dOrderSet[iCheckCnt][0] == 6 ){ OrderSelect( dOrderSet[iCheckCnt][7], SELECT_BY_TICKET ); i = dOrderSet[iCheckCnt][0]; if( dOrderSet[iCheckCnt][2] != 0 ){ dSetPrice = dOrderSet[iCheckCnt][2]; }else{ dSetPrice = OrderOpenPrice(); } switch( i ){ case 5: cOrderColor = Red; dOrderLimit = 0; dOrderStop = 0; if( dOrderSet[iCheckCnt][3] != 3 ) dOrderLimit = dSetPrice+(dPoint*dOrderSet[iCheckCnt][4]); if( dOrderSet[iCheckCnt][3] != 2 ) dOrderStop = dSetPrice+(dPoint*dOrderSet[iCheckCnt][5]); break; case 6: cOrderColor = Blue; dOrderLimit = 0; dOrderStop = 0; if( dOrderSet[iCheckCnt][3] != 3 ) dOrderLimit = dSetPrice-(dPoint*dOrderSet[iCheckCnt][4]); if( dOrderSet[iCheckCnt][3] != 2 ) dOrderStop = dSetPrice-(dPoint*dOrderSet[iCheckCnt][5]); break; } if( OrderModify( dOrderSet[iCheckCnt][7],OrderOpenPrice(),dOrderStop,dOrderLimit,0,cOrderColor ) ){ sOrderSetCom[iCheckCnt] = ""; iCheckCnt++; }else{ dOrderSet[iCheckCnt][8]++; } } if( iCheckCnt >= iOrderSetCnt ){ iOrderSetCnt = 0; iCheckCnt = 0; ArrayInitialize(dOrderSet,0); } } int deinit(){ ObjectDelete("EAName"); ObjectDelete("EAPrice"); ObjectDelete("EASpread"); HideTestIndicators(false); return(0); }