voidOnTick() { Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме { Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале //Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно // пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры") //что то не выходит } }
voidOnTick() { Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме { Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале //Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно // пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры") //что то не выходит } }
在帮助中的某处,开发人员说,不保证排序。
票面上总是有一个排序。后期订单的票数永远不会小于前期订单的票数(按开票时间)。
如果我们在挂单中搜索,那么按顺序,编号为0的订单是最古老的订单,编号为OrdersTotal()-1的订单将是最近的订单(同样,按开放时间),不考虑类型。
在已关闭订单的历史中,仍然取决于终端窗口的历史标签中的排序。
我不得不去查了一下。我在MQL5参考资料中没有发现,但我在MQL4的OrderSelect 参考资料中发现了它。
"当使用SELECT_BY_POS参数时,信息将按照从交易服务器收到的 顺序返回。不保证对收到的订单清单进行排序"。
实际上,我系统地检查了我使用的列表是否有按票号排序的功能。还没有出现过它不存在的情况。但你也不能反驳参考,没有争论。恰恰相反,它不是...
我不得不去查了一下。我在MQL5参考资料中没有发现,但我在MQL4的OrderSelect 参考资料中发现了它。
"当使用SELECT_BY_POS参数时,信息将按照从交易服务器收到的 顺序返回。不保证对收到的订单清单进行排序"。
实际上,我系统地检查了我使用的列表是否有按票号排序的功能。还没有出现过它不存在的情况。但你也不能反驳参考,没有争论。恰好这也是......。
你说的 "不分类 "是什么意思?按票据排序--总是会有顺序的,与文件没有矛盾,它说的是按票据号排序,而不是按票据排序,这些是不同的事情。
运行这段代码,并阅读日志
void OnTick()
{
//--
if(flag)
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
Print(i," = ",OrderOpenTime());
}
}
flag=false;
}
//-
}
我遇到的另一个问题!不要评判,我已经学习了2-3个星期的语言,也许我只是哑巴!
专家顾问的任务是每4小时通过电子邮件通知交易者,如果账户上的自由保证金增加了一定的价值。
在信息的主题中,你必须写上经纪人的名字和交易的货币对,并在信息的正文中写上 "危险!"。缩减的幅度超过了极限。采取必要的措施"。
编译器出了故障,我的英语不好,我也搞不清楚错误是什么!
double Sag;
void OnTick()
{
Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака
if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме
{
Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
//Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно
// пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры")
//что то не выходит
}
}
PS:也许在一般情况下,这种问题有一个更简单的解决方案,但到目前为止,我只看到了这种方式)
我遇到的另一个问题!不要评判,我已经学习了2-3个星期的语言,也许我就是个哑巴!
专家顾问的任务是每4小时通过电子邮件通知交易者,如果账户上的自由保证金增加了一定的价值。
在信息的主题中,你必须写上经纪人的名字和交易的货币对,并在信息的正文中写上 "危险!"。缩减的幅度超过了极限。采取必要的措施"。
编译器出现了故障,我的英语不好,我无法理解错误是什么!
double Sag;
void OnTick()
{
Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака
if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме
{
Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
//Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно
// пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры")
//что то не выходит
}
}
PS:也许在一般情况下,这样的问题有一个更简单的解决方案,但到目前为止,我只看到了这种方式)
我不知道是什么原因。
什么是编译器错误
尊敬的客户:您好!我是您的客户,请问您为什么要在演示计划中加入您的名字?