Euro Fx2





/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------------------------------------+
//|                                                     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);
}








Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:

MACD Histogram


Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders
It Closes Orders by itself
It can change open orders parameters, due to possible stepping strategy
It automatically opens orders when conditions are reached

Other Features:


BackTest : USDJPY on H1

From 2009-11-01 to 2009-11-30 Profit Factor:0.02 Total Net Profit:-9882.42

BackTest : USDCHF on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.76 Total Net Profit:-1846.12

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:0.31 Total Net Profit:-10158.40

BackTest : USDCAD on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.95 Total Net Profit:-233.43

BackTest : EURUSD on H1

From 2009-08-01 to 2009-10-01 Profit Factor:0.51 Total Net Profit:-9881.25

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:0.42 Total Net Profit:-9852.44

BackTest : EURUSD on H1

From 2010-04-01 to 2010-04-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-05-01 to 2010-05-31 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-06-01 to 2010-06-30 Profit Factor:0.00 Total Net Profit:0.00

Request Backtest for Euro Fx2


From : (yyyy/mm/dd) To: (yyyy/mm/dd)

Pair: Period: