I attached this EA with 4XP 8 digits demo account but no trade is opening while I have not change any inputs. However, back test is ok. means it opens trades.
//+------------------------------------------------------------------+//| LotScalp.mq4 v2 EurUsd 1H |//+------------------------------------------------------------------+externint TakeProfit_L = 92; // Take Profit in pointsexternint StopLoss_L = 1500; // Stop Loss in pointsexternint TakeProfit_S = 218; // Take Profit in pointsexternint StopLoss_S = 1500; // Stop Loss in points//-------------------------------------------------+essaiexternint volume1=1;
externint volume0=0;
//--------------------------------------------------+essaidouble TP = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
//"EURUSD" or other currency pairs on chart = Symbol()double SL_L = (TP*StopLoss_L)*Point;
double SL_S = (TP*StopLoss_S)*Point;
//---------------------------------------------------+essaiexternbool trail = True;
externdouble TrailingStop = 110;
externint TradeTime =7; // Time to enter the marketexternint t1=12;
externint t2=14;
externint delta_L=21;
externint delta_S=1;
externdouble lot = 1.594; // Lot sizeexternint Orders=1; // maximal number of positions opened at a time }externint MaxOpenTime=101;
externdouble BigLotSize = 15; // By how much lot size is multiplicated in Big lot... No more 3externbool AutoLot=false;
externbool cantrade = true;
int ticket,total,cnt;
double closeprice;
double tmp;
int LotSize()
// The function opens a short position with lot size=volume
{
if (AccountBalance()>=50) lot=0.02;
if (AccountBalance()>=75) lot=0.03;
if (AccountBalance()>=100) lot=0.04;
if (AccountBalance()>=125) lot=0.05;
if (AccountBalance()>=150) lot=0.06;
if (AccountBalance()>=175) lot=0.07;
if (AccountBalance()>=200) lot=0.08;
if (AccountBalance()>=225) lot=0.09;
if (AccountBalance()>=250) lot=0.1;
if (AccountBalance()>=275) lot=0.11;
if (AccountBalance()>=300) lot=0.12;
if (AccountBalance()>=325) lot=0.13;
if (AccountBalance()>=350) lot=0.14;
if (AccountBalance()>=375) lot=0.15;
if (AccountBalance()>=400) lot=0.16;
if (AccountBalance()>=425) lot=0.17;
if (AccountBalance()>=450) lot=0.18;
if (AccountBalance()>=475) lot=0.19;
if (AccountBalance()>=500) lot=0.2;
if (AccountBalance()>=550) lot=0.24;
if (AccountBalance()>=600) lot=0.26;
if (AccountBalance()>=650) lot=0.28;
if (AccountBalance()>=700) lot=0.3;
if (AccountBalance()>=750) lot=0.32;
if (AccountBalance()>=800) lot=0.34;
if (AccountBalance()>=850) lot=0.36;
if (AccountBalance()>=900) lot=0.38;
if (AccountBalance()>=1000) lot=0.4;
if (AccountBalance()>=1500) lot=0.6;
if (AccountBalance()>=2000) lot=0.8;
if (AccountBalance()>=2500) lot=1.0;
if (AccountBalance()>=3000) lot=1.2;
if (AccountBalance()>=3500) lot=1.4;
if (AccountBalance()>=4000) lot=1.6;
if (AccountBalance()>=4500) lot=1.8;
if (AccountBalance()>=5000) lot=2.0;
if (AccountBalance()>=5500) lot=2.2;
if (AccountBalance()>=6000) lot=2.4;
if (AccountBalance()>=7000) lot=2.8;
if (AccountBalance()>=8000) lot=3.2;
if (AccountBalance()>=9000) lot=3.6;
if (AccountBalance()>=10000) lot=4.0;
if (AccountBalance()>=15000) lot=6.0;
if (AccountBalance()>=20000) lot=8.0;
if (AccountBalance()>=30000) lot=12;
if (AccountBalance()>=40000) lot=16;
if (AccountBalance()>=50000) lot=20;
if (AccountBalance()>=60000) lot=24;
if (AccountBalance()>=70000) lot=28;
if (AccountBalance()>=80000) lot=32;
if (AccountBalance()>=90000) lot=36;
if (AccountBalance()>=100000) lot=40;
if (AccountBalance()>=200000) lot=80;
return(0);
}
int globPos()
// the function calculates big lot size
{
int v1=GlobalVariableGet("globalPosic");
GlobalVariableSet("globalPosic",v1+1);
return(0);
}
int OpenLong(double volume=0.1)
// the function opens a long position with lot size=volume
{
int slippage=10;
string comment="20/200 expert v2 (Long)";
color arrow_color=Red;
int magic=0;
if (GlobalVariableGet("globalBalans")>AccountBalance()) volume=lot*BigLotSize;
// if (GlobalVariableGet("globalBalans")>AccountBalance()) if (AutoLot) LotSize();
ticket=OrderSend(Symbol(),OP_BUY,volume,Ask,slippage,Ask-StopLoss_L*Point,
Ask+TakeProfit_L*Point,comment,magic,0,arrow_color);
GlobalVariableSet("globalBalans",AccountBalance());
globPos();
// if (GlobalVariableGet("globalPosic")>25)// {GlobalVariableSet("globalPosic",0);
if (AutoLot) LotSize();
// }if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
return(0);
}
else
{
Print("OpenLong(),OrderSelect() - returned an error : ",GetLastError());
return(-1);
}
}
else
{
Print("Error opening Buy order : ",GetLastError());
return(-1);
}
}
int OpenShort(double volume=0.1)
// The function opens a short position with lot size=volume
{
int slippage=10;
string comment="Gabriel Eze Junior >>>SHORT";
color arrow_color=Red;
int magic=0;
if (GlobalVariableGet("globalBalans")>AccountBalance()) volume=lot*BigLotSize;
ticket=OrderSend(Symbol(),OP_SELL,volume,Bid,slippage,Bid+StopLoss_S*Point,
Bid-TakeProfit_S*Point,comment,magic,0,arrow_color);
GlobalVariableSet("globalBalans",AccountBalance());
globPos();
// if (GlobalVariableGet("globalPosic")>25)// {GlobalVariableSet("globalPosic",0);
if (AutoLot) LotSize();
// }if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
return(0);
}
else
{
Print("OpenShort(),OrderSelect() - returned an error : ",GetLastError());
return(-1);
}
}
else
{
Print("Error opening Sell order : ",GetLastError());
return(-1);
}
}
void trail()
{
for (int i = 0; i < OrdersTotal(); i++) {
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true)
if ( OrderSymbol()==Symbol() )
{
if (OrderType() == OP_BUY) {
if (Bid - OrderOpenPrice() > TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT)) {
if (OrderStopLoss() < Bid - TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT)) {
bool modify1=OrderModify(OrderTicket(), OrderOpenPrice(), Bid - TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);
}
}
} elseif (OrderType() == OP_SELL) {
if (OrderOpenPrice() - Ask > TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT)) {
if ((OrderStopLoss() > Ask + TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT)) ||
(OrderStopLoss() == 0)) {
bool modify2=OrderModify(OrderTicket(), OrderOpenPrice(),
Ask + TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);
}
}
}
}
}
}
int init()
{
// control of a variable before usingif (AutoLot) LotSize();
if(!GlobalVariableCheck("globalBalans"))
GlobalVariableSet("globalBalans",AccountBalance());
if(!GlobalVariableCheck("globalPosic"))
GlobalVariableSet("globalPosic",0);
return(0);
}
int deinit()
{
return(0);
}
int start()
{
double booster = Volume[volume1]> Volume[volume0];
if (trail) trail();
if((TimeHour(TimeCurrent())>TradeTime)) cantrade=true;
// check if there are open orders ...
total=OrdersTotal();
if(total<Orders)
{
// ... if no open orders, go further// check if it's time for tradeif((TimeHour(TimeCurrent())==TradeTime)&&(cantrade))
{
// ... if it isif (((Open[t1]-Open[t2])>delta_S*Point) &&(booster)) //if it is
{
//condition is fulfilled, enter a short position:// check if there is free money for opening a short positionif(AccountFreeMarginCheck(Symbol(),OP_SELL,lot)<=0 || GetLastError()==134)
{
Print("Not enough money");
return(0);
}
OpenShort(lot);
cantrade=false; //prohibit repeated trade until the next barreturn(0);
}
if (((Open[t2]-Open[t1])>delta_L*Point) &&(booster)) //if the price increased by delta
{
// condition is fulfilled, enter a long position// check if there is free moneyif(AccountFreeMarginCheck(Symbol(),OP_BUY,lot)<=0 || GetLastError()==134)
{
Print("Not enough money");
return(0);
}
OpenLong(lot);
cantrade=false;
return(0);
}
}
}
// block of a trade validity time checking, if MaxOpenTime=0, do not check.if(MaxOpenTime>0)
{
for(cnt=0;cnt<total;cnt++)
{
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
{
tmp = (TimeCurrent()-OrderOpenTime())/3600.0;
if (((NormalizeDouble(tmp,8)-MaxOpenTime)>=0))
{
RefreshRates();
if (OrderType()==OP_BUY)
closeprice=Bid;
else
closeprice=Ask;
if (OrderClose(OrderTicket(),OrderLots(),closeprice,10,Green))
{
Print("Forced closing of the trade - ¹",OrderTicket());
OrderPrint();
}
elsePrint("OrderClose() in block of a trade validity time checking returned an error - ",GetLastError());
}
}
elsePrint("OrderSelect() in block of a trade validity time checking returned an error - ",GetLastError());
}
}
return(0);
}
TP = 5
SL = 5
lot = 0.01
orders = 1
max OpenTime = 504
my Broker is:
Digits = 5
spread = 1.6-2.2 pips
Which settings one must take?
Just started this on a live cent account, will report back on how it performs each week. I'll try to get it up on as well.
Does this mean that the leverage in this code is 1:40? thx!
Hi,
I attached this EA with 4XP 8 digits demo account but no trade is opening while I have not change any inputs. However, back test is ok. means it opens trades.
Kindly help me,
Regards,
Ramsharan
ramsharan_kmr@yahoo.com
It's based on the Minimum TP and SL of the server, @ClickPaypal, for the Takeprofit and stop loss better use,
double TP = MarketInfo("USDJPY",MODE_STOPLEVEL)*Point;
double SL = (TP*STOPLOSS)*Point;
extern int STOPLOSS = 10;
in this case when the minimum TP is 4 pips, the SL is 40 pips.
Greetz Wtrader1
This kills accounts very quickly in multiple 99% backtests I tried on multiple pairs.
-Joe
ForexFBI Forex Robot Testing
i can't understand how can it make buy or sell order ?
what's the algorithm ?
I made some changes to the programs.
Thanks to those who will improve it again.
Historical http://urlz.fr/7q36