Orders Execution
1
Views
0
Downloads
0
Favorites
PerkyProNrtr
/*-----------------------------+
| |
| Shared by www.Aptrafx.com |
| |
+------------------------------*/
//+------------------------------------------------------------------+
//| perky.mq4 |
//| perky Aint no turkey (most of the time) |
//+------------------------------------------------------------------+
// Version 1.0
extern double Lots=1;
extern int StopLoss = 40;
extern int TrailingStop = 0;
extern int ProfitTarget = 999;
extern int SignalCandle=1;
extern int Slippage = 3;
extern double BIG_JUMP=30.0; // Check for too-big candlesticks (avoid them)
extern double DOUBLE_JUMP=55.0;
// Check for pairs of big candlesticks
extern int ADXbarrier=24;
double proup,prodown,NRTRup,NRTRdown;
bool trade=false;
bool TradeAllowed=false;
int init()
{
if (Period() != PERIOD_M30)
{
// Alert("Please run on M30 chart");
}
}
// Bar handling
datetime bartime=0; // used to determine when a bar has moved
int bartick=0; //Tick counter
int start()
{
// bar counting
if(bartime!=Time[0])
{
bartime=Time[0];
bartick++;
TradeAllowed=true;
}
proup =iCustom(Symbol(),Period(),"Prosource",0,SignalCandle); //up
prodown=iCustom(Symbol(),Period(),"Prosource",1,SignalCandle);//down
NRTRup =iCustom(Symbol(),Period(),"NRTR_color_line",0,SignalCandle); //up
NRTRdown=iCustom(Symbol(),Period(),"NRTR_color_line",1,SignalCandle);//down
Comment ("UP ",NRTRup,"DN ",NRTRdown,"Proroup ",proup,"Prodown ",prodown);
// Was there a sudden jump? Ignore it...
// if((MathAbs(Open[1]-Open[0])/Point)>=BIG_JUMP) {
// return(0);
// }
// if((MathAbs(Open[2]-Open[1])/Point)>=BIG_JUMP) {
// return(0);
//}
//if((MathAbs(Open[3]-Open[2])/Point)>=BIG_JUMP) {
// return(0);
// }
// if((MathAbs(Open[4]-Open[3])/Point)>=BIG_JUMP) {
// return(0);
// }
// if((MathAbs(Open[5]-Open[4])/Point)>=BIG_JUMP) {
//return(0);
//}
//if((MathAbs(Open[2]-Open[0])/Point)>=DOUBLE_JUMP) {
//return(0);
//}
// if((MathAbs(Open[3]-Open[1])/Point)>=DOUBLE_JUMP) {
//return(0);
// }
//if((MathAbs(Open[4]-Open[2])/Point)>=DOUBLE_JUMP) {
// return(0);
// }
// if((MathAbs(Open[5]-Open[3])/Point)>=DOUBLE_JUMP) {
// return(0);
// }
int NumTrades = 0;
for (int i = 0; i < OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS);
if (OrderSymbol() == Symbol())
{
if (OrderType() == OP_BUY )
{
if( proup >9999 || NRTRup==0)
OrderClose(OrderTicket(), 1, Bid, Slippage); return(0);
}
if (OrderType() == OP_SELL )
{
if( prodown>9999 || NRTRdown==0)
OrderClose(OrderTicket(), 1, Ask, Slippage);
}
NumTrades++;
}
}
if (NumTrades == 0)
{
if( TradeAllowed && proup<9999 && NRTRup>0)
{
OrderSend(Symbol(), OP_BUY, Lots, Ask, 2, Ask - StopLoss * Point, Ask + ProfitTarget * Point, 0,LimeGreen);
trade=false;
return(0);
}
if(TradeAllowed && prodown<9999 && NRTRdown>0)
{
OrderSend(Symbol(), OP_SELL, Lots, Bid, 2, Bid + StopLoss * Point, Bid - ProfitTarget * Point, 0,Red);
trade=false;
return(0);
}
}
if (TrailingStop > 0)
{
for (i = 0; i < OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ((OrderSymbol() == Symbol()) && (OrderType() == OP_BUY) )
{
if (Ask - OrderOpenPrice() > TrailingStop * Point)
{
if (OrderStopLoss() < Ask - TrailingStop * Point)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Ask - TrailingStop * Point, Ask + ProfitTarget * Point, 0);
return(0);
}
}
}
if ((OrderSymbol() == Symbol()) && (OrderType() == OP_SELL))
{
if (OrderOpenPrice() - Bid > TrailingStop * Point)
{
if (OrderStopLoss() > Bid + TrailingStop * Point)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid + TrailingStop * Point, Bid - ProfitTarget * Point, 0);
return(0);
}
}
}
}
}
return(0);
}
//+------------------------------------------------------------------+
Comments