code
I've written similar EA long time ago. It's obvieusly bad system because it has too big drawdown. I've never used it in real market, I've got better experts to run
here are the code of EA:
//+------------------------------------------------------------------+
//| zrn.mq4 |
//| Copyright © 2008 Mariusz Zarnowski |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Mariusz Zarnowski"
#property link "zarnow@gmail.com"
//---- input parameters
extern int pips=35;
extern double start=0.1;
int pos_count=0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
pos_count=OrdersTotal();
start=NormalizeDouble(start,2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
if(pos_count>OrdersTotal())
CloseOrdersAll();
else
loop();
//----
return(0);
}
//+------------------------------------------------------------------+
int profit()
{
OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);
return(MathRound(OrderProfit()/OrderLots()/
MarketInfo(Symbol(),MODE_TICKVALUE)));
}
void loop()
{
if(OrdersTotal()==0)
{
if(Close[0]<iMA(NULL,0,100,0,3,0,1))
OpenShort(start,Bid-pips*Point);
else
OpenLong(start,Ask+pips*Point);
}
else
{
if(profit()<0-pips)
{
OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);
double lots = OrderLots()*2 ;
if(OrderType()==0)
OpenLong(lots,OrderOpenPrice());
else
OpenShort(lots,OrderOpenPrice());
}
}
}
void OpenLong(double loty,double tp) //NATYCHMIASTOWE OTWIERANIE POZYCJI O ZADANYM LOCIE:
{
while(OrdersTotal()==pos_count)
{
OrderSend(Symbol(), OP_BUY, loty, Ask, 3,0,tp,
"Long GBPJPY willA", 666, 0, Green);
Sleep(7500);
}
pos_count++;
}
void OpenShort(double loty,double tp) //NATYCHMIASTOWE OTWIERANIE POZYCJI O ZADANYM LOCIE:
{
while(OrdersTotal()==pos_count)
{
OrderSend(Symbol(), OP_SELL, loty, Bid, 3,0,tp,
"Short GBPJPY willA", 666, 0, Red);
Sleep(7500);
}
pos_count++;
}
void CloseOrdersAll() // ZMAYKA WSZYSYKO!!
{
while(OrdersTotal()!=0)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if (OrderType()==0)
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Blue);
else if (OrderType()==1)
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,Red);
else OrderDelete(OrderTicket());
Sleep(7500);
}
pos_count=0;
}