//+------------------------------------------------------------------+
//|                                                     Euro Fx2.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2006, Expert Advisors"
#property link "http://forex-soft.netfirms.com"

extern int MaxTrades = 4;
extern int Pips = 5;
extern double TakeProfit = 40;
extern double TrailingStop = 20;
double var_100 = 0;
int var_108 = 10;
int var_112 = 1;
int var_116 = 3;
int var_120 = 0;
double var_124 = 10;
double var_132 = 10;
double var_140 = 10;
double var_148 = 9.715;
int var_156 = 2005;
int var_160 = 1;
int var_164 = 2050;
int var_168 = 12;
int var_172 = 22;
int var_176 = 30;
int var_180 = 0;
int var_184 = 12;
int var_188 = 0;
int var_192 = 0;
int cnt = 0;
int slippage = 5;
double stoploss = 0;
double takeprofit = 0;
double bprice = 0;
double sprice = 0;
double var_236 = 0;
double lots = 0;
int var_252 = 0;
int var_256 = 0;
bool var_260 = true;
double var_264 = 0;
int var_272 = 0;
double var_276 = 0;
int var_284 = 0;
int var_288 = 0;
double var_292 = 0;
double var_300 = 0;
double var_308 = 0;
double var_316 = 0;
string var_324 = "";
string var_332 = "";
double Lots;

//+------------------------------------------------------------------+

double Lots()
{
Lots = NormalizeDouble(AccountFreeMargin() / 5 / 10000,1);
if (Lots < 0.1) Lots = 0.1;
if (Lots > 100.0) Lots = 100;
return(Lots);
}

//+------------------------------------------------------------------+

int init()
{
if (IsTesting())
{
ObjectCreate("text_object",OBJ_LABEL,0,0,0);
ObjectSet("text_object",OBJPROP_XDISTANCE,4);
ObjectSet("text_object",OBJPROP_YDISTANCE,15);
//ObjectSetText("text_object","(c) ExpertAdvisors, http://forex-soft.netfirms.com",8,"Verdana",Gold);
}
else
{
//Alert("Demo-version runs under Strategy Tester,\nnot on account - ON HISTORY ONLY !\n\nSee full version at http://forex-soft.netfirms.com");
}
return(0);
}

//+------------------------------------------------------------------+

int deinit()
{
return(0);
}

//+------------------------------------------------------------------+

int start()
{
if (IsTesting())
{
if (var_188 == 1)
{
if (var_180 != 0)
var_236 = MathCeil(AccountBalance() * var_184 / 10000);
else
var_236 = Lots();
}
else
{
if (var_180 != 0)
var_236 = MathCeil(AccountBalance() * var_184 / 10000) / 10;
else
var_236 = Lots();
}
if (var_236 > 100.0) var_236 = 100;
var_192 = 0;
for (cnt = 0; cnt < OrdersTotal(); cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if ((OrderSymbol() == Symbol())) var_192++;
}
if (var_192 < 1)
{
if (TimeYear(CurTime()) < var_156) return(0);
if (TimeMonth(CurTime()) < var_160) return(0);
if (TimeYear(CurTime()) > var_164) return(0);
if (TimeMonth(CurTime()) > var_168) return(0);
}
if ((Symbol() == "EURUSD")) var_316 = var_124;
if ((Symbol() == "GBPUSD")) var_316 = var_132;
if ((Symbol() == "USDJPY")) var_316 = var_148;
if ((Symbol() == "USDCHF")) var_316 = var_140;
if (var_316 == 0.0) var_316 = 5;
if (var_272 > var_192)
{
for (cnt = OrdersTotal(); cnt >= 0; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
var_252 = OrderType();
if ((OrderSymbol() == Symbol()))
{
if (var_252 == 0) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Blue);
if (var_252 == 1) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Red);
return(0);
}
}
}
var_272 = var_192;
if (var_192 >= MaxTrades) var_260 = false; else var_260 = true;
if (var_264 == 0.0)
{
for (cnt = 0; cnt < OrdersTotal(); cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
var_252 = OrderType();
if ((OrderSymbol() == Symbol()))
{
var_264 = OrderOpenPrice();
if (var_252 == 0) var_256 = 2;
if (var_252 == 1) var_256 = 1;
}
}
}
if (var_192 < 1)
{
var_256 = 3;
if (iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,0) > iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,1)) var_256 = 2;
if (iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,0) < iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,1)) var_256 = 1;
if (var_120 == 1)
{
if (var_256 == 1)
{
var_256 = 2;
}
else
{
if (var_256 == 2)
{
var_256 = 1;
}
}
}
}
for (cnt = OrdersTotal(); cnt >= 0; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if ((OrderSymbol() == Symbol()))
{
if (OrderType() == OP_SELL)
{
if (TrailingStop > 0.0)
{
if (OrderOpenPrice() - Ask >= (TrailingStop + Pips) * Point)
{
if (OrderStopLoss() > Ask + Point * TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask + Point * TrailingStop,OrderClosePrice() - TakeProfit * Point - TrailingStop * Point,800,Purple);
return(0);
}
}
}
}
if (OrderType() == OP_BUY)
{
if (TrailingStop > 0.0)
{
if (Bid - OrderOpenPrice() >= (TrailingStop + Pips) * Point)
{
if (OrderStopLoss() < Bid - Point * TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid - Point * TrailingStop,OrderClosePrice() + TakeProfit * Point + TrailingStop * Point,800,Yellow);
return(0);
}
}
}
}
}
}
var_276 = 0;
var_284 = 0;
var_288 = 0;
var_292 = 0;
var_300 = 0;
for (cnt = 0; cnt < OrdersTotal(); cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if ((OrderSymbol() == Symbol()))
{
var_284 = OrderTicket();
if (OrderType() == OP_BUY) var_288 = 0;
if (OrderType() == OP_SELL) var_288 = 1;
var_292 = OrderClosePrice();
var_300 = OrderLots();
if (var_288 == 0)
{
if (OrderClosePrice() < OrderOpenPrice()) var_276 = var_276 - (OrderOpenPrice() - OrderClosePrice()) * OrderLots() / Point;
if (OrderClosePrice() > OrderOpenPrice()) var_276 = var_276 + (OrderClosePrice() - OrderOpenPrice()) * OrderLots() / Point;
}
if (var_288 == 1)
{
if (OrderClosePrice() > OrderOpenPrice()) var_276 = var_276 - (OrderClosePrice() - OrderOpenPrice()) * OrderLots() / Point;
if (OrderClosePrice() < OrderOpenPrice()) var_276 = var_276 + (OrderOpenPrice() - OrderClosePrice()) * OrderLots() / Point;
}
}
}
var_276 = var_276 * var_316;
var_332 = "Profit: $" + DoubleToStr(var_276,2) + " +/-";
if ((var_192 >= MaxTrades - var_116) && (var_112 == 1))
{
if (var_276 >= var_108)
{
OrderClose(var_284,var_300,var_292,slippage,Yellow );
var_260 = false;
return(0);
}
}
if (!IsTesting())
{
if (var_256 == 3)
var_324 = "No conditions to open trades";
else
var_324 = " ";
}
if ((var_256 == 1) && var_260)
{
if ((Bid - var_264 >= Pips * Point) || (var_192 < 1))
{
sprice = Bid;
var_264 = 0;
if (TakeProfit == 0.0) takeprofit = 0; else takeprofit = sprice - TakeProfit * Point;
if (var_100 == 0.0) stoploss = 0; else stoploss = sprice + var_100 * Point;
if (var_192 != 0)
{
lots = var_236;
cnt = 1;
while (cnt <= var_192)
{
if (MaxTrades > 12)
lots = NormalizeDouble(lots * 1.5,1);
else
lots = NormalizeDouble((lots + lots),1);
cnt++;
}
}
else
{
lots = var_236;
}
if (lots > 100.0) lots = 100;
OrderSend(Symbol(),OP_SELL,lots,sprice,slippage,stoploss,takeprofit,0,0,0,Red);
return(0);
}
}
if ((var_256 == 2) && var_260)
{
if ((var_264 - Ask >= Pips * Point) || (var_192 < 1))
{
bprice = Ask;
var_264 = 0;
if (TakeProfit == 0.0) takeprofit = 0; else takeprofit = bprice + TakeProfit * Point;
if (var_100 == 0.0) stoploss = 0; else stoploss = bprice - var_100 * Point;
if (var_192 != 0)
{
lots = var_236;
cnt = 1;
while (cnt <= var_192)
{
if (MaxTrades > 12)
lots = NormalizeDouble(lots * 1.5,1);
else
lots = NormalizeDouble((lots + lots),1);
cnt++;
}
}
else
{
lots = var_236;
}
if (lots > 100.0) lots = 100;
OrderSend(Symbol(),OP_BUY,lots,bprice,slippage,stoploss,takeprofit,0,0,0,Blue);
return(0);
}
}
}
return(0);
}




