hai, i need help to finish my EA. i have trying to wrote some simple EA. The main idea is follow the trend. we have a target and stoploss. when market goes to stoploss point we can open new position in another direction.
the problem is i can`t stop EA to open many position. all i need is 1 position. i am not good in english ...... just try this EA and plz tell me what should i add.
thx.
//--------------------------------------------------------
#define skode 353571
extern int profit = 30;
extern int ST = 50;
extern int SL = 75;
double Lots = 0.1;
double MaximumRisk = 0.02;
double DecreaseFactor = 3;
int res;
int hitorder(string symbol)
{
int buys=0,sells=0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==skode)
{
if(OrderType()==OP_BUY) buys++;
if(OrderType()==OP_SELL) sells++;
}
}
if(buys>0) return(buys);
else return(-sells);
}
void buka()
{
double rata, trend, now, take1, sar;
rata = iMA(NULL,0,100,6,MODE_SMA,PRICE_MEDIAN,0);
trend = iMA(NULL,0,12,5,MODE_SMA,PRICE_MEDIAN,0);
if(trend < rata)
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Ask+(Point*SL)),(Ask-(Point*profit)),"",skode,0,Red);
if(trend > rata)
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,(Bid-(Point*SL)),(Bid+(Point*profit)),"",skode,0,Blue);
return;
}
void tutup()
{
double rata, trend, now, take1, sar;
int jual = 0;
int beli = 0;
trend = iMA(NULL,0,12,5,MODE_SMA,PRICE_MEDIAN,0);
rata = iMA(NULL,0,100,6,MODE_SMA,PRICE_MEDIAN,0);
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=skode || OrderSymbol()!=Symbol()) continue;
if(Volume[0]>1) return;
if(OrderType()==OP_BUY)
{
if((OrderOpenPrice()-Point*ST) < Bid)
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Ask+(Point*SL)),(Ask-(Point*profit)),"",skode,0,Red);
}
if(OrderType()==OP_SELL)//short
{
if((OrderOpenPrice()+Point*ST) < Ask)
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,(Bid-(Point*SL)),(Bid+(Point*profit)),"",skode,0,Yellow);
}
}
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if(Bars<100 || IsTradeAllowed()==false) return;
if(hitorder(Symbol())==0) buka();
else tutup();
return(0);
}
//+------------------------------------------------------------------+
the problem is i can`t stop EA to open many position. all i need is 1 position. i am not good in english ...... just try this EA and plz tell me what should i add.
thx.
//--------------------------------------------------------
#define skode 353571
extern int profit = 30;
extern int ST = 50;
extern int SL = 75;
double Lots = 0.1;
double MaximumRisk = 0.02;
double DecreaseFactor = 3;
int res;
int hitorder(string symbol)
{
int buys=0,sells=0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==skode)
{
if(OrderType()==OP_BUY) buys++;
if(OrderType()==OP_SELL) sells++;
}
}
if(buys>0) return(buys);
else return(-sells);
}
void buka()
{
double rata, trend, now, take1, sar;
rata = iMA(NULL,0,100,6,MODE_SMA,PRICE_MEDIAN,0);
trend = iMA(NULL,0,12,5,MODE_SMA,PRICE_MEDIAN,0);
if(trend < rata)
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Ask+(Point*SL)),(Ask-(Point*profit)),"",skode,0,Red);
if(trend > rata)
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,(Bid-(Point*SL)),(Bid+(Point*profit)),"",skode,0,Blue);
return;
}
void tutup()
{
double rata, trend, now, take1, sar;
int jual = 0;
int beli = 0;
trend = iMA(NULL,0,12,5,MODE_SMA,PRICE_MEDIAN,0);
rata = iMA(NULL,0,100,6,MODE_SMA,PRICE_MEDIAN,0);
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=skode || OrderSymbol()!=Symbol()) continue;
if(Volume[0]>1) return;
if(OrderType()==OP_BUY)
{
if((OrderOpenPrice()-Point*ST) < Bid)
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Ask+(Point*SL)),(Ask-(Point*profit)),"",skode,0,Red);
}
if(OrderType()==OP_SELL)//short
{
if((OrderOpenPrice()+Point*ST) < Ask)
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,(Bid-(Point*SL)),(Bid+(Point*profit)),"",skode,0,Yellow);
}
}
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if(Bars<100 || IsTradeAllowed()==false) return;
if(hitorder(Symbol())==0) buka();
else tutup();
return(0);
}
//+------------------------------------------------------------------+