كود:
//+------------------------------------------------------------------+
//| Byu_Sell_Day.mq4 |
//| Copyright © 2007, www.****forex.net |
//| http://www.****forex.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, www.****forex.net"
#property link "http://www.****forex.net"
extern double LotSize=0.01;
extern double StopLossPips=30;
extern double TakeProfitPips=30;
extern int MagicNumber = 55558;
extern int breakEven = 20 ;
extern int TrailingStop = 30;
extern int matimeframe = 240;
extern int maperiod = 8;
extern int mashift = 0;
extern int mamethod = 0;
extern int maappliedprice=0;
extern int sartimeframe=240;
extern double sarstep=0.02;
extern double sarmaximum=0.2;
extern int sarshift=0;
double buySL,buyTP,selSl,selTP;
double ma1,ma2,sma1,sma2,sar1,sar2;
void Indicators(){
ma1 = iMA(NULL,matimeframe,maperiod,mashift,mamethod,maappliedprice,1);
ma2 = iMA(NULL,matimeframe,maperiod,mashift,mamethod,maappliedprice,2);
sar1 = iSAR (NULL,sartimeframe,sarstep,sarmaximum,1);
sar2 = iSAR (NULL,sartimeframe,sarstep,sarmaximum,2);
}
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
double t;
int init()
{
//----
double tik=MarketInfo(Symbol(),MODE_TICKSIZE);
if(tik==0.00001 || tik==0.001)
t=tik*10;
else t=tik;
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
Indicators();
if(count(1)==0&&count(2)==0){
if(sar1 < ma1 && sar2 > ma2) {
if (StopLossPips ==0)buySL =0 ;
else buySL =Ask - (StopLossPips*t);
if(TakeProfitPips==0)buyTP=0;
else buyTP = Ask +(TakeProfitPips*t);
bool x = OrderSend
(Symbol(),OP_BUY,LotSize,Ask,5,buySL,buyTP,NULL,MagicNumber,0,Green);
}
}
if(count(2)==0&&count(1)==0){
if(sar1 > ma1 && sar2 < ma2){
if(StopLossPips ==0)selSl=0;
else selSl= Bid+(StopLossPips*t);
if(TakeProfitPips==0)selTP=0;
else selTP=Bid -(TakeProfitPips*t);
bool xx = OrderSend
(Symbol(),OP_SELL,LotSize,Bid,5,selSl,selTP,NULL,MagicNumber,0,Red);
}
}
if (sar1 > ma1 && sar2 < ma2)
bool g = OrderClose(OrderTicket() ,LotSize ,Bid,5,Red);
if (sar1 < ma1 && sar2 > ma2)
bool gg= OrderClose(OrderTicket() ,LotSize ,Ask,5,Red);
if (breakEven > 0)breakeven();
if (TrailingStop > 0) Trailingstop ();
//----
return(0);
}
//+------------------------------------------------------------------+
void breakeven ()
{
for (int i= OrdersTotal ()-1; i >=0;i--)
{
if (OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol ())
if (OrderMagicNumber() == MagicNumber )
if (OrderType() == OP_BUY)
if (Bid - OrderOpenPrice ()> breakEven*t )
if (OrderOpenPrice() > OrderStopLoss ())
bool xx= OrderModify (OrderTicket(),OrderOpenPrice (),OrderOpenPrice (),OrderTakeProfit(),0,Pink);
}
for (int ii= OrdersTotal()-1; ii >=0;ii--)
{
if (OrderSelect (ii,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol ())
if (OrderMagicNumber() == MagicNumber )
if (OrderType() == OP_SELL)
if (OrderOpenPrice() - Ask > breakEven*t )
if (OrderOpenPrice() < OrderStopLoss ())
bool x= OrderModify (OrderTicket(),OrderOpenPrice (),OrderOpenPrice (),OrderTakeProfit(),0,Pink);
}
}
void Trailingstop ()
{
for (int i= OrdersTotal ()-1; i >=0;i--)
{
if (OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol ())
if (OrderMagicNumber() == MagicNumber )
if (OrderType() == OP_BUY)
if (Bid - OrderOpenPrice ()> TrailingStop*t )
if (OrderStopLoss()< Bid- TrailingStop*t )
bool xx= OrderModify (OrderTicket(),OrderOpenPrice (), Bid - (TrailingStop*t),OrderTakeProfit(),0,CLR_NONE);
}
for (int ii= OrdersTotal ()-1; ii >=0;i--)
{
if (OrderSelect (ii,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol ())
if (OrderMagicNumber() == MagicNumber )
if (OrderType() == OP_SELL)
if (OrderOpenPrice()-Ask> TrailingStop*t )
if (OrderStopLoss()> Ask+ TrailingStop*t )
bool x =OrderModify (OrderTicket(),OrderOpenPrice (), Ask + (TrailingStop*t),OrderTakeProfit(),0,CLR_NONE);
}
}
int count(int t){
int T=0;
for (int i = 0; i < OrdersTotal(); i++) {
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if (OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber) {
if(OrderType() == OP_BUY&&t==1)T++;
if(OrderType() == OP_SELL&&t==2)T++;
}
}
}
return(T);
}