风的传承 发表于 2011-9-15 11:49:57

版主看看这个EA

俺看不懂EA源码,试了一下,感觉这个EA还是有一点点的用处的,发出来源码和大家一起分享,
还得请求版主给解决一个问题,源码我是看不明白,问题如下:

问题1:我想给这个EA问题1:我想给这个EA在交易的时候(比如:买单,卖单,平仓的时候),添加一个发邮件的功能,原程序不知道有没有编写进去,(因为我看不明白所以不知道)如果没有的话请版主帮忙写进去,

问题2:我在测试这个EA的时候为什么每次交易的时候总是重复的连下3单,我只想让他下一单,请版主给我改成美次只下一单的。

      谢谢版主   谢谢版主//<div class=\"blockcode\"><div id=\"code_yEC\"><ol>
//+------------------------------------------------------------------+
//|                                                         ssss.mq4 |
//|                                                         sss |
//|                                          http://www.ssss.net |
//+------------------------------------------------------------------+
#property copyright \"sdf\"
#property link      \"http://www.ssss.net\"



#define OrderStr \"\"

extern doubleLots = 200;//
extern intStopLoss = 0;//
extern int   TakeProfit = 0;
extern boolTradeAtCloseBar = 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 intSlippage = 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;
}



intcnt=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;
}
if ((prevtime == Time) &&(CurTime()-prevtime)>MaxTradeTime) {
NewBar=0;
}
else {
prevtime = Time;
NewBar=1;
}


int   AllowTrade=0,AllowExit=0;
//Trade before bar current bar closed
if (CurTime()>= Time+Period()*60-AheadTradeSec) AllowTrade=1; else AllowTrade=0;
if (CurTime()>= Time+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,High+1*DotLoc*Point,(\"CloseBuy\"+DoubleToStr(Time,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,High+1*DotLoc*Point,(\"CloseBuy\"+DoubleToStr(Time,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,High-0.3*DotLoc*Point,(\"CloseSell\"+DoubleToStr(Time,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,High-0.3*DotLoc*Point,(\"CloseSell\"+DoubleToStr(Time,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,High+1*DotLoc*Point,(\"Sell\"+DoubleToStr(Time,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,High+1*DotLoc*Point,(\"Sell\"+DoubleToStr(Time,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,Low-0.3*DotLoc*Point,(\"Buy\"+DoubleToStr(Time,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,Low-0.3*DotLoc*Point,(\"Buy\"+DoubleToStr(Time,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

川跃k线 发表于 2012-11-22 02:18:00

好困啊

pugongying 发表于 2012-11-22 02:18:00

我的啦嘿嘿

悟空小宝 发表于 2012-11-22 02:18:00

EA交易对平台要求比较高

知足常乐 发表于 2012-11-22 02:18:00

我想要`~

妖怪 发表于 2012-11-22 02:18:00

这年头,分不好赚啊

贞子 发表于 2012-11-22 02:18:00

我好想升级

火凤凰一辉 发表于 2012-11-22 02:18:00

EA没有赚钱的,结局都一样,由多变少,慢慢亏没。

妹子 发表于 2012-11-22 02:18:00

发贴看看自己积分

fucks 发表于 2012-11-23 14:31:00

偶完全没看懂
页: [1] 2 3
查看完整版本: 版主看看这个EA