新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1534 1...152715281529153015311532153315341535153615371538153915401541...1953 新评论 Tretyakov Rostyslav 2021.07.07 08:00 #15331 Eugen8519:这就是订单的结束方式 按我上面写的做... 或者发布OnTick()代码 Tretyakov Rostyslav 2021.07.07 08:20 #15332 Eugen8519:这就是订单的结束方式 这个结构应该是 //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- if(UseTimeLimit) { YesStop=true; MqlDateTime str1; TimeToStruct(TimeCurrent() , str1); if(str1.hour > startHour && str1.hour < stopHour) YesStop=false; } if(YesStop==false) { if(EMA0...) { ..... OPENORDER("Sell"); } if(EMA0...) { ..... OPENORDER("Buy"); } } //--- if(EMA0...) { ..... CLOSEORDER("Sell"); } if(EMA0...) { ..... CLOSEORDER("Buy"); } } //+------------------------------------------------------------------+ void CLOSEORDER(string ord) { ..... } //--- void OPENORDER(string ord) { ..... } Eugen8519 2021.07.07 08:30 #15333 谢谢你的提示,我今晚会去看看,以后再向你报告。 Vitaly Muzichenko 2021.07.07 08:30 #15334 MakarFX:这个结构应该是 如果我没有弄错的话,可以写成以下的样子 if(UseTimeLimit) { YesStop=true; MqlDateTime str1; TimeCurrent(str1); if(str1.hour > startHour && str1.hour < stopHour) YesStop=false; } Tretyakov Rostyslav 2021.07.07 08:40 #15335 Eugen8519: 好吧,谢谢你的建议,我今晚就去看看,以后再报告。 如果启动猫头鹰时在设置中设置了UseTimeLimit,那么 这个函数最好放在OnInit()而不是 OnTick()中。 Tretyakov Rostyslav 2021.07.07 08:44 #15336 Vitaly Muzichenko:如果我没有弄错,你可以这样写 实际上我是这样写的。 if(TimeHour(time[i])>=Time_Start&&TimeHour(time[i])<TimeFinish) 或更简单 if(Hour()>=Time_Start&&Hour()<TimeFinish) Oleksandr Nozemtsev 2021.07.07 08:54 #15337 下午好,请您告诉我如何正确地平均化指标线?周期为Per_1的基本曲线被正常绘制(Buffer_1[]),直到我用Buffer_2[] 添加一个简单的平均化块,平均化周期 为 Per_2。 int OnCalculate(默认参数) { int i, j, limit; 如果( rates_total <= Per_1) return(0); //最后计算的条形图将被重新计算 limit = rates_total - prev_calculated - Per_1; 如果(prev_calculated > 0) 限制++。 //计算并填入指标缓冲区 for(i=0; i < limit; i++) { //计算指标的主线 Buffer_1[i] = 曲线的公式 double Sum = 0; for(j = i; j < Per_2 + i; j++) { //计算平均线 Sum += Buffer_1[j]; Buffer_2[i] = Sum / Per_2。 } } return(rate_total)。 } Any questions from newcomers 来自一个 "傻瓜 "的问题 编码帮助 Tretyakov Rostyslav 2021.07.07 08:58 #15338 Oleksandr Nozemtsev:下午好!插入代码这里似乎是你问题的答案 Vitaly Muzichenko 2021.07.07 09:03 #15339 Eugen8519: 这就是问题所在,它只打开和关闭了starthour->stophour订单 而未平仓的订单在停盘后不会被平仓。 因为你不能在停止时间后进行交易 我已经写了很久的先开后关、拖网和其他位置维护的逻辑。大多数情况下是这样的,在你打开其他东西之前,你必须检查已经打开的东西。 你的逻辑是正确的,你只需要调换区块。 MqlDateTime str; void OnTick() { // Close Positions TrailingStop(); if(условие_закрытия) { ClosePos(); } // Open Positions if(UseTimeLimit) { TimeCurrent(str); if(str.hour > startHour && str.hour < stopHour) { OpesPos(...); ... } } // end } Oleksandr Nozemtsev 2021.07.07 09:22 #15340 MakarFX:插入代码这里似乎是你问题的答案 酷!它的作用,谢谢你 1...152715281529153015311532153315341535153615371538153915401541...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这就是订单的结束方式
按我上面写的做...
或者发布OnTick()代码
这就是订单的结束方式
这个结构应该是
这个结构应该是
如果我没有弄错的话,可以写成以下的样子
好吧,谢谢你的建议,我今晚就去看看,以后再报告。
如果启动猫头鹰时在设置中设置了UseTimeLimit,那么
这个函数最好放在OnInit()而不是 OnTick()中。
如果我没有弄错,你可以这样写
实际上我是这样写的。
if(TimeHour(time[i])>=Time_Start&&TimeHour(time[i])<TimeFinish)
或更简单
if(Hour()>=Time_Start&&Hour()<TimeFinish)
下午好,请您告诉我如何正确地平均化指标线?周期为Per_1的基本曲线被正常绘制(Buffer_1[]),直到我用Buffer_2[] 添加一个简单的平均化块,平均化周期 为 Per_2。
int OnCalculate(默认参数)
{
int i, j, limit;
如果( rates_total <= Per_1)
return(0);
//最后计算的条形图将被重新计算
limit = rates_total - prev_calculated - Per_1;
如果(prev_calculated > 0)
限制++。
//计算并填入指标缓冲区
for(i=0; i < limit; i++)
{
//计算指标的主线
Buffer_1[i] = 曲线的公式
double Sum = 0;
for(j = i; j < Per_2 + i; j++)
{
//计算平均线
Sum += Buffer_1[j];
Buffer_2[i] = Sum / Per_2。
}
}
return(rate_total)。
}
下午好!
插入代码
这里似乎是你问题的答案这就是问题所在,它只打开和关闭了starthour->stophour订单
因为你不能在停止时间后进行交易
我已经写了很久的先开后关、拖网和其他位置维护的逻辑。大多数情况下是这样的,在你打开其他东西之前,你必须检查已经打开的东西。
你的逻辑是正确的,你只需要调换区块。
插入代码
这里似乎是你问题的答案酷!它的作用,谢谢你