客服热线:18391752892

版主看看这个EA

   日期:2019-01-12     浏览:759    
马上注册,结交更多好友,下载更多资源

您需要 登录 才可以下载或查看,没有帐号?注册 俺看不懂EA源码,试了一下,感觉这个EA还是有一点点的用处的,发出来源码和大家一起分享,
 还得请求版主给解决一个问题,源码我是看不明白,问题如下:
 
 问题1:我想给这个EA问题1:我想给这个EA在交易的时候(比如:买单,卖单,平仓的时候),添加一个发邮件的功能,原程序不知道有没有编写进去,(因为我看不明白所以不知道)如果没有的话请版主帮忙写进去,
 
 问题2:我在测试这个EA的时候为什么每次交易的时候总是重复的连下3单,我只想让他下一单,请版主给我改成美次只下一单的。
 
     谢谢版主   谢谢版主// div > //+------------------------------------------------------------------+
//|                                       ssss.mq4 |
//|                                       sss |
//|                             http://www.ssss.net |
//+------------------------------------------------------------------+
#property copyright sdf
#property link      http://www.ssss.net


 
#define OrderStr

extern double Lots = 200;//
extern int StopLoss = 0;//
extern int   TakeProfit = 0;
extern bool TradeAtCloseBar = true;
extern int   TrailingStop = 0;
extern int   TrailingStep = 1;     //Trailing step
extern int   BreakEven = 0;
extern int    MagicNumber=0;
//For alerts:
extern int   Repeat=3;
extern int   Periods=5;
extern bool    Usealert=false;
extern bool    SendEmail=true;
extern string
    TradeLog= MasterMind3
 

extern int Slippage = 3;//滑点
 
int       mm = -1;
double       Risk = 1;
int       Crepeat=0;
int         alertTime=0;
double       AheadTradeSec = 0;
double       AheadExitSec = 0;
int     TradeBar = 0;
double       MaxTradeTime = 300;
 
extern string 
        Indicator_Setting = ---------- Indicator Setting
extern   bool   Crash = false;
extern   int     Timeframe = 0;
extern   int     Length = 5;
extern   int     Method = 3;
extern   int     Smoothing = 1;
extern   int     Filter = 5;
 
extern   bool   RealTime = true;
extern   bool   Steady = false;
extern   bool   Color = true;
extern   bool   alerts = true;
extern   bool   EmailON = false;
extern   bool   SignalPrice = true;
extern   color    SignalPriceBUY = Yellow;
extern   color    SignalPriceSELL = Aqua;
extern   int     CountBars = 1485;
 
int
     NumberOfTries = 5, //Number of tries to set, close orders;
     RetryTime   = 1;
 
 
 
double
    Ilo   = 0;
 
int DotLoc=7;
static int TradeLast=0;
 
string sound= alert.wav
 
double sig_buy=0, sig_sell=0, sig_high=0, sig_low=0;
 
int Spread=0;
string filename=
 
//+------------------------------------------------------------------+
//| expert initialization function                       |
//+------------------------------------------------------------------+
int init()
   {
//----
 

Crepeat=Repeat;   
//----
    return(0);
   }
//+------------------------------------------------------------------+
//| expert deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
   {
//----
   
//----
    return(0);
   }
//+------------------------------------------------------------------+
//| expert start function                             |
//+------------------------------------------------------------------+
int start()
   {
if (TradeAtCloseBar) TradeBar=1;
else TradeBar=0;
 
filename=Symbol() + TradeLog + - + Month() + - + Day() + .log
 

Spread=MarketInfo(Symbol(),MODE_SPREAD);
 

//----
int   i=0;
 
double   BuyValue=0, SellValue=0;
BuyValue=0; SellValue=0;
 

if (CntOrd(OP_BUY,MagicNumber) 0) TradeLast=1;
if (CntOrd(OP_SELL,MagicNumber) 0) TradeLast=-1;
 
sig_buy=iWPR(NULL,0,11,0);
sig_sell=iWPR(NULL,0,12,0);
sig_high=iWPR(NULL,0,13,0);
sig_low=iWPR(NULL,0,14,0);
 
 
//Comment( sig_buy= ,sig_buy, sig_sell= ,sig_sell);
 

if (sig_buy-0.01) {   
 SellValue=1;
}
 
 
 
int cnt=0,OpenPos=0,OpenSell=0,OpenBuy=0,CloseSell=0,CloseBuy=0;
double mode=0,Stop=0,NewBarTime=0;
 
//Here we found if new bar has just opened
static int prevtime=0; 
int NewBar=0,FirstRun=1;
 
if (FirstRun==1) {
FirstRun=0;
prevtime=Time[0];
}
if ((prevtime == Time[0])  (CurTime()-prevtime) MaxTradeTime) {
NewBar=0;
}
else {
prevtime = Time[0];
NewBar=1;
}
 

int   AllowTrade=0,AllowExit=0;
//Trade before bar current bar closed
if (CurTime() = Time[0]+Period()*60-AheadTradeSec) AllowTrade=1; else AllowTrade=0;
if (CurTime() = Time[0]+Period()*60-AheadExitSec) AllowExit=1; else AllowExit=0;
if (AheadTradeSec==0) AllowTrade=1;
if (AheadExitSec==0) AllowExit=1;

Ilo=Lots;
if (mm1) Ilo=MathCeil(Ilo);
   if (Ilo0.1) Ilo=0.1;
 
OpenPos=0;
for(cnt=0; cnt=1) {
   OpenSell=0; OpenBuy=0;
}
 
 
 
OpenBuy=0; OpenSell=0;
CloseBuy=0; CloseSell=0;
 
//Conditions to open the position
//
if (SellValue 0) {
 OpenSell=1;
 OpenBuy=0;
}
 
if (BuyValue 0) {
 OpenBuy=1;
 OpenSell=0;
 
}
 
//Print( OpenSell= ,OpenSell, OpenBuy= ,OpenBuy);
 

//Conditions to close the positions
if (SellValue 0) {
 CloseBuy=1;
}
 

if (BuyValue 0) {
 CloseSell=1;
}
 
subPrintDetails();
 

for(cnt=0; cnt0)
   {
     SetText(Time[0],High[0]+1*DotLoc*Point,( CloseBuy +DoubleToStr(Time[0],0)),CharToStr(251),Magenta);
     PlaySound( alert.wav
     OrdClose(OrderTicket(),OrderLots(),Bid,Slippage,Red); 
     alerts(0, 0, CloseBuy, CloseSell,Bid,0,0,OrderTicket());
     return(0);
   }
   if (TradeBar==0)
   { 
     SetText(Time[0],High[0]+1*DotLoc*Point,( CloseBuy +DoubleToStr(Time[0],0)),CharToStr(251),Magenta);
     PlaySound( alert.wav
     OrdClose(OrderTicket(),OrderLots(),Bid,Slippage,Red);
     alerts(0, 0, CloseBuy, CloseSell,Bid,0,0,OrderTicket());
     return(0);
   }
   
   }
 }
 
 if (OrderType()==OP_SELL OrderSymbol()==Symbol() ((OrderMagicNumber () == MagicNumber) || MagicNumber==0)) {
   if (CloseSell==1 AllowExit==1) {
    if (NewBar==1 TradeBar 0)
    {
     SetText(Time[0],High[0]-0.3*DotLoc*Point,( CloseSell +DoubleToStr(Time[0],0)),CharToStr(251),Magenta);
     PlaySound( alert.wav
     OrdClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
     alerts(0, 0, CloseBuy, CloseSell,Ask,0,0,OrderTicket());
     return(0);
    }
    if (TradeBar==0)
    {
            SetText(Time[0],High[0]-0.3*DotLoc*Point,( CloseSell +DoubleToStr(Time[0],0)),CharToStr(251),Magenta);     
     PlaySound( alert.wav
     OrdClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
     alerts(0, 0, CloseBuy, CloseSell,Ask,0,0,OrderTicket());
     return(0);
    }
 

   }
 }
 
}
 
double MyStopLoss=0, MyTakeProfit=0;
int ticket=0;
 
 
 
//Should we open a position?
if (OpenPos0)
   {
      SetText(Time[0],High[0]+1*DotLoc*Point,( Sell +DoubleToStr(Time[0],0)),CharToStr(234),Red);
      if (TakeProfit==0) MyTakeProfit=0; else MyTakeProfit=Bid-TakeProfit*Point;
    if (StopLoss==0) MyStopLoss=0; else MyStopLoss=Bid+StopLoss*Point; 
      PlaySound( alert.wav
      ticket=OrdSend(Symbol(),OP_SELL,Ilo,Bid,Slippage,MyStopLoss,MyTakeProfit,OrderStr,MagicNumber,0,Red);
   alerts(OpenBuy, OpenSell, 0, 0,Bid,MyStopLoss,MyTakeProfit,ticket);
   OpenSell=0;
   return(0);
   }
   if (TradeBar==0)
   {
   SetText(Time[0],High[0]+1*DotLoc*Point,( Sell +DoubleToStr(Time[0],0)),CharToStr(234),Red); 
      if (TakeProfit==0) MyTakeProfit=0; else MyTakeProfit=Bid-TakeProfit*Point;
    if (StopLoss==0) MyStopLoss=0; else MyStopLoss=Bid+StopLoss*Point; 
      PlaySound( alert.wav
      ticket=OrdSend(Symbol(),OP_SELL,Ilo,Bid,Slippage,MyStopLoss,MyTakeProfit,OrderStr,MagicNumber,0,Red); 
   alerts(OpenBuy, OpenSell, 0, 0,Bid,MyStopLoss,MyTakeProfit,ticket);
   OpenSell=0;
   return(0); 
   }
 }
 if (OpenBuy==1 AllowTrade==1) {
   if (NewBar==1 TradeBar 0)
   {
      SetText(Time[0],Low[0]-0.3*DotLoc*Point,( Buy +DoubleToStr(Time[0],0)),CharToStr(233),Lime);
      if (TakeProfit==0) MyTakeProfit=0; else MyTakeProfit=Ask+TakeProfit*Point;
      if (StopLoss==0) MyStopLoss=0; else MyStopLoss=Ask-StopLoss*Point;     
      PlaySound( alert.wav
      ticket=OrdSend(Symbol(),OP_BUY,Ilo,Ask,Slippage,MyStopLoss,MyTakeProfit,OrderStr,MagicNumber,0,Lime);
   alerts(OpenBuy, OpenSell, 0, 0,Ask,MyStopLoss,MyTakeProfit,ticket);
   OpenBuy=0;
   return(0);
   }
   if (TradeBar==0)
   {
      SetText(Time[0],Low[0]-0.3*DotLoc*Point,( Buy +DoubleToStr(Time[0],0)),CharToStr(233),Lime);
      if (TakeProfit==0) MyTakeProfit=0; else MyTakeProfit=Ask+TakeProfit*Point;
      if (StopLoss==0) MyStopLoss=0; else MyStopLoss=Ask-StopLoss*Point;     
      PlaySound( alert.wav
      ticket=OrdSend(Symbol(),OP_BUY,Ilo,Ask,Slippage,MyStopLoss,MyTakeProfit,OrderStr,MagicNumber,0,Lime);
   alerts(OpenBuy, OpenSell, 0, 0,Ask,MyStopLoss,MyTakeProfit,ticket);
   OpenBuy=0;
   return(0);
   }
   
 }
 
}
 
 
 
for (i=0; i0 (CurTime()-alertTime) Periods)
    {
    if (_buy==1) {
    alertStr=alertStr+ Buy @ +DoubleToStr(_op,Digits)+ SL: +DoubleToStr(_sl,Digits)+ TP: +DoubleToStr(_tp,Digits)+ at +CurDate+ Order: +DoubleToStr(_ticket,0)+ .
    alert(Symbol(), ,Period(), : ,alertStr);
    if (SendEmail)
    {
      SendMail(Symbol()+ +Period()+ : ,Symbol()+ +Period()+ : +alertStr);
    }
 

      Crepeat=Crepeat-1;
      alertTime=CurTime();
    }
 
    }
}
 
if (_sell==1)
{
    if (Crepeat==Repeat)
    {
      alertTime=0;
    }
    if (Crepeat 0 (CurTime()-alertTime) Periods)
    {
    if (_sell==1) {
      alertStr=alertStr+ Sell @ +DoubleToStr(_op,Digits)+ SL: +DoubleToStr(_sl,Digits)+ TP: +DoubleToStr(_tp,Digits)+ at +CurDate+ Order: +DoubleToStr(_ticket,0)+ .
    alert(Symbol(), ,Period(), : ,alertStr);
    if (SendEmail)
    {
      SendMail(Symbol()+ +Period()+ : ,Symbol()+ +Period()+ : +alertStr);
    }
 

      Crepeat=Crepeat-1;
      alertTime=CurTime();
    }
 
    }
}
 
if (_exitsell==1)
{
    if (Crepeat==Repeat)
    {
    alertTime=0;
    }
 
if (Crepeat 0 (CurTime()-alertTime) Periods)
{
    if (_exitsell==1) {
    alertStr=alertStr+ Close Sell @ +DoubleToStr(_op,Digits)+ at +CurDate+ Order: +DoubleToStr(_ticket,0)+ .
    alert(Symbol(), ,Period(), : , alertStr);
    if (SendEmail)
    {
      SendMail(Symbol()+ +Period()+ : ,Symbol()+ +Period()+ : +alertStr);
    }
 

    Crepeat=Crepeat-1;
    alertTime=CurTime();
    }
 
}
 
}
 

if (_exitbuy==1)
{
    if (Crepeat==Repeat)
    {
      alertTime=0;
    }
    if (Crepeat 0 (CurTime()-alertTime) Periods)
    {
    if (_exitbuy==1) {
    alertStr=alertStr+ Close Buy @ +DoubleToStr(_op,Digits)+ at +CurDate+ Order: +DoubleToStr(_ticket,0)+ .
    alert(Symbol(), ,Period(), : ,alertStr);
    if (SendEmail)
    {
      SendMail(Symbol()+ +Period()+ : ,Symbol()+ +Period()+ : +alertStr);
    }
 

      Crepeat=Crepeat-1;
      alertTime=CurTime();
    }
 
    }
}
 
if (_exitbuy==0 _exitsell==0 _buy==0 _sell==0) 
{
    Crepeat=Repeat;
    alertTime=0;
}
 
}
//
 
 
 

//----
return;
}
 

//----------------------- PRINT COMMENT FUNCTION
void subPrintDetails()
{
    string sComment   =
    string sp       = ----------------------------------------n
    string NL       = n
 string sDirection =
    sComment = ccccccc + NL;
    sComment = sComment + StopLoss= + DoubleToStr(StopLoss,0) + |
    sComment = sComment + TakeProfit= + DoubleToStr(TakeProfit,0) + |
    sComment = sComment + TrailingStop= + DoubleToStr(TrailingStop,0) + NL;   
    sComment = sComment + sp;   
    sComment = sComment + Lots= + DoubleToStr(Ilo,2) + |
    sComment = sComment + LastTrade= + DoubleToStr(TradeLast,0) + NL;
    sComment = sComment + sig_buy= + DoubleToStr(sig_buy,Digits) + NL;
    sComment = sComment + sig_sell= + DoubleToStr(sig_sell,Digits) + NL;
    sComment = sComment + sp; 
    Comment(sComment);
}
 
 
 

int CntOrd(int Type, int Magic) {
//return number of orders with specific parameters
int _CntOrd;
_CntOrd=0;
for(int i=0;i
外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!


特别提示:本信息由相关企业自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关行情
推荐行情
点击排行