大家好。我需要帮助下面粘贴的代码。这是一个简单的移动平均交叉警报,我调整了一点,并添加了电子邮件警报。我不确定电子邮件警报是否会工作,因为我在编译时遇到1错误。我粘贴了下面的代码
我经历了几次代码,我似乎无法找出问题所在。预先感谢您的帮助。
错误说...'\ end_of_program' - 不平衡的左括号
// ----------------------------------------------- -------------------
//| MACrossEarlyAlert.mq4 |
//|马里亚诺席尔瓦|
//| |
// ----------------------------------------------- -------------------
#property版权Mariano Silva
#property链接
#property indior_chart_window
//----输入参数
extern bool EmailAlert = false;
extern int FastMAPeriod = 50;
外部字符串类型= 0-SMA,1-EMA;
extern int FastMAType = 1;
extern int SlowMAPeriod = 1;
extern int SlowMAType = 0;
extern int EarlyPips = 15;
extern int ResetAlert = 20;
外部颜色LineColor =橙色;
// ----------------------------------------------- -------------------
//|自定义指标初始化函数|
// ----------------------------------------------- -------------------
int init()
{
//----指标
//----
返回(0);
}
// ----------------------------------------------- -------------------
//|自定义指标取消初始化函数|
// ----------------------------------------------- -------------------
int deinit()
{
字符串LineName;
//----
LineName = StringConenate(FastMAPeriod,/,SlowMAPeriod,MA Cross);
ObjectDelete(LineName);
//----
返回(0);
}
// ----------------------------------------------- -------------------
//|自定义指标迭代函数|
// ----------------------------------------------- -------------------
int start()
{
//int counting_bars = IndiorCounted();
double FastMALastBar,SlowMALastBar,PriceToCross,Cross,FastMATest,SlowMATest;
bool AlertEnabled = true;
string LineName = StringConenate(FastMAPeriod,/,SlowMAPeriod,MA Cross);
//LineName = StringConenate(FastMAPeriod,/,SlowMAPeriod,MA Cross);
//----
如果(NewBar())
{
FastMALastBar = IMA(NULL,0,FastMAPeriod,0,FastMAType,PRICE_CLOSE,1);
SlowMALastBar = IMA(NULL,0,SlowMAPeriod,0,SlowMAType,PRICE_CLOSE,1);
PriceToCross =打开[0];
交叉= FastMALastBar-SlowMALastBar;
如果(Crossgt; 0.0)
{
而(Crossgt; 0.0)
{
PriceToCross = PriceToCross点;
FastMATest = CalcMA(FastMAPeriod,FastMAType,PriceToCross,FastMALastBar);
SlowMATest = CalcMA(SlowMAPeriod,SlowMAType,PriceToCross,SlowMALastBar);
交叉= FastMATest-SlowMATest;
}
}
其他
{
而(Crosslt; 0.0)
{
PriceToCross = PriceToCross 点;
FastMATest = CalcMA(FastMAPeriod,FastMAType,PriceToCross,FastMALastBar);
SlowMATest = CalcMA(SlowMAPeriod,SlowMAType,PriceToCross,SlowMALastBar);
交叉= FastMATest-SlowMATest;
}
}
ObjectDelete(LineName);
的drawLine(PriceToCross,LineName,LineColor,0);
}
如果(AlertEnabled)
{
如果(MathAbs(关闭[0] -PriceToCross)LT = EarlyPips *点)
{
警报(接近,FastMAPeriod,/,SlowMAPeriod,MA交叉开启,Symbol(),Period());
如果EmailAlert SendMail(Close,FastMAPeriod,/,SlowMAPeriod,MA Cross on,Symbol(),Period();
AlertEnabled = FALSE;
}
}
其他
{
如果(MathAbs(关闭[0] -PriceToCross)GT = ResetAlert *点)
{
AlertEnabled = TRUE;
}
}
//----
返回(0);
}
// ----------------------------------------------- -------------------
双CalcMA(int MAPeriod,int MAType,double PriceTest,双重LastMA)
{
双MA,PR;
开关(MATYPE)
{
情况0:
{
MA =((LastMA * MAPeriod)-close [MAPeriod] PriceTest)/MAPeriod;
打破;
}
情况1:
{
PR = 2.0(MAPeriod 1);
MA = PriceTest * PR LastMA *(1-PR);
打破;
}
}
返回(MA);
}
void drawLine(double lvl,字符串名称,col col,int类型)
{
ObjectCreate(name,OBJ_HLINE,0,Time [0],lvl);/,Time [0],lvl);
if(type == 1)
ObjectSet(名称,OBJPROP_STYLE,STYLE_SOLID);
其他
ObjectSet(名称,OBJPROP_STYLE,STYLE_DOT);
ObjectSet(名称,OBJPROP_COLOR,Col);
对象集(姓名,OBJPROP_WIDTH,1);
返回;
}
bool NewBar(){
静态日期时间lastbar;
datetime curbar = Time [0];
如果(lastbar!= curbar)
{
lastbar = curbar;
返回(true);
}
else {
返回(假);
}
}