新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 689 1...682683684685686687688689690691692693694695696...1953 新评论 Ghabo 2018.11.08 23:27 #6881 我怎么知道N条上没有OBJ_RECTANGLE? Vitaly Muzichenko 2018.11.08 23:33 #6882 neverness:在MT5中真的有什么变化吗?在MT4或MT5中都没有这样的东西。 在mt5中,甚至有一个错误,就是在当前时段显示分隔符,在H2的时间上显示分隔符。 Vitaly Muzichenko 2018.11.08 23:39 #6883 Ghabo: 我怎么知道N条上没有OBJ_RECTANGLE? 也许可以这样试一试? int n = Bars(Symbol(), PERIOD_CURRENT, ObjectGetInteger(0,"Rectangle",OBJPROP_TIME,1), TimeCurrent()); Print(n); [删除] 2018.11.09 10:44 #6884 Vitaly Muzichenko:在MT4或MT5中都没有这样的东西。 在mt5中,甚至出现了一个错误,即在当前时间段内显示分离器,在H2的时间段内显示分离器。最后我看到了在整个 "讨论 "中对我的问题的唯一 "建设性的回答"。 至于错误,它们存在于MT4和MT5的当前(最后)框架的所有分离器周上。 上周分离器MT4/MT5在任何地方都画出了分离器7天而不是5天。 但这并不是重点。错误一直存在,也将一直存在。如果有一个绘制分隔符的程序代码,所有这些都可能被纠正。 让我吃惊的不是错误,完全是别的东西。 在MT4/MT5存在的所有时间里,难道没有人想过写一个程序 来在预测区域画出分隔线吗? 毕竟,这个方案是最简单的。 你只需要知道最后一个分割线的位置和沿X轴的时间 "解决方案"(即什么时间间隔需要1个像素)。 而到目前为止,还没有人曾? 现在这真的让我感到惊讶。 我又得自己做所有的事情了。 [删除] 2018.11.09 10:52 #6885 Igor Makanu:这并不复杂,但你似乎不明白指标在MT中是如何工作的,它们的优势是什么。你可能是对的。 有一个数学上的轶事。 有人问一位数学家:"你如何在水壶中烧水? 数学家回答:--取一个空的水壶,把水倒进去,放在灶台上,把灶台打开,等水烧开。 - 好的。但如果水壶已经满了怎么办?- 这位数学家问道。 - 把水从水壶里倒出来,用上面的方法解决问题。- 数学家回答说。 所以,你去那里。 这个笑话是关于你的。 Igor Makanu 2018.11.09 13:02 #6886 neverness: 这个笑话是关于你的。嗯,不知道是笑还是....。如果你知道有一个交易终端 可以满足你所有的奇思妙想,那还有什么意义呢?我对MT4/5百分之百满意,我可以用它做任何事情,保留在图表上画D1周期的指标,如果你对编程感兴趣,可以修改它以满足你的需要...我不认为你能做到 .... #property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://www.mql5.com/ru/users/igorm" #property version "1.00" #property strict #property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 2 //--- plot line1 #property indicator_label1 "Period" #property indicator_type1 DRAW_HISTOGRAM #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 #property indicator_label2 "Period" #property indicator_type2 DRAW_HISTOGRAM #property indicator_color2 clrRed #property indicator_style2 STYLE_SOLID #property indicator_width2 1 //--- input parameters input int Days=3; //--- indicator buffers double Pmax[],Pmin[]; bool run=true; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,Pmax); SetIndexBuffer(1,Pmin); run=true; switch(_Period) { case PERIOD_M1: SetIndexShift(0,1440*Days);SetIndexShift(1,1440*Days); break; case PERIOD_M5: SetIndexShift(0,288*Days); SetIndexShift(1,288*Days); break; case PERIOD_M15: SetIndexShift(0,96*Days); SetIndexShift(1,96*Days); break; case PERIOD_M30: SetIndexShift(0,48*Days); SetIndexShift(1,48*Days); break; case PERIOD_H1: SetIndexShift(0,24*Days); SetIndexShift(1,24*Days); break; case PERIOD_H4: SetIndexShift(0,6*Days); SetIndexShift(1,6*Days); break; default: run=false; SetIndexShift(0,0); SetIndexShift(1,0);ArrayInitialize(Pmax,EMPTY_VALUE);ArrayInitialize(Pmin,EMPTY_VALUE); break; } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- if(prev_calculated==0) { run=true; ArrayInitialize(Pmax,EMPTY_VALUE); ArrayInitialize(Pmin,EMPTY_VALUE); } if(run) { int i=0,lastperiod=TimeDay(time[0]); double maxvalue; if(!ChartGetDouble(ChartID(),CHART_PRICE_MAX,0,maxvalue)) maxvalue=1000.0; maxvalue*=10.0; while(i<rates_total) { if(TimeDay(time[i])!=lastperiod) { lastperiod=TimeDay(time[i]); Pmax[i-1]=maxvalue; Pmin[i-1]=0.0; } else { Pmax[i]=EMPTY_VALUE; Pmin[i]=EMPTY_VALUE; } i++; } run=false; } //--- return(rates_total); } //+------------------------------------------------------------------+ 我已经试过了,我不知道为什么,我不知道为什么,这是我第一次看到这样的情况,似乎我在切换时间段时初始化了缓冲器。 Taras Slobodyanik 2018.11.09 13:48 #6887 neverness:最后我看到了在整个 "讨论 "中对我的问题的唯一 "建设性的回答"。 至于错误,它们存在于MT4和MT5的当前(最后)框架的所有分离器周上。 上周分离器MT4/MT5在任何地方都画出了分离器7天而不是5天。 但这并不是重点。错误一直存在,也将一直存在。如果有一个绘制分隔符的程序代码,所有这些都可能被纠正。 让我吃惊的不是错误,完全是别的东西。 在MT4/MT5存在的所有时间里,难道没有人想过写一个程序 来在预测区域画出分隔线吗? 毕竟,这个方案是最简单的。 你只需要知道最后一个分割线的位置和沿X轴的时间 "解决方案"(即什么时间间隔需要1个像素)。 而到目前为止,还没有人曾? 现在这真的让我感到惊讶。 再一次,你必须自己做所有事情。我告诉你--我已经做了不止一次。(以及在市场上,并在一个以上的指标中) 而你说你已经写了代码,你会再写吗?) [删除] 2018.11.09 14:59 #6888 Igor Makanu:嗯,我不知道是要笑还是要....。如果你知道一个交易终端 可以满足你所有的奇思妙想,那还有什么意义呢? 我对MT4/5百分之百满意,我可以用它做任何事情,保留在图表上画D1周期的指标,对编程感兴趣,修改它以满足你的需要......我不认为你能做到 .... 我不知道为什么,这是我第一次看到这样的错误。当然了,谢谢。 正如我所怀疑的,在不完整的日子里,你的月经分隔符与标准分隔符不一致。 但这并不十分重要,因为我认为你不应该尝试重新绘制标准分隔符,而是将预测区域分隔符与历史分隔符对接。 那么,不完整的历史日定界符的位置将不会影响预测定界符。 你的指标和标准定界符之间的另一个重要区别是,标准定界符是在图表本身的每个事件中更新,但你的指标是在每个OnCalculate()事件中更新。我以为这一点会很明显--但事实上,它几乎不明显。 当然,这个指标应该重新设计,但还是要感谢。看到这一点很有意思。 Taras Slobodyanik 2018.11.09 15:01 #6889 Ghabo:这原来是具有指定名称的对象的条形索引。有一个以上的对象,其名称是 "QUADRO "+Time[i+1] 我怎么知道十条上没有这样的对象? 缓冲区很清楚,如果值是空的,图表上就不会显示任何东西,但对象呢?if (ObjectFind(0,"QUADRO"+Time[10])<0) { //объекта нет на 10 баре } Ghabo 2018.11.09 15:02 #6890 Vitaly Muzichenko: 我可以用这种方式试试吗? int n = Bars(Symbol(), PERIOD_CURRENT, ObjectGetInteger(0,"Rectangle",OBJPROP_TIME,1), TimeCurrent());谢谢你。结果是具有指定名称的对象的条形索引(120983)。有一个以上的对象,其名称是 "QUADRO "+Time[i+1] 我怎么知道十条上没有这样的对象?缓冲区我明白了,如果值是空的,图表上就不会显示任何东西,但对象呢? 1...682683684685686687688689690691692693694695696...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
在MT5中真的有什么变化吗?
在MT4或MT5中都没有这样的东西。
在mt5中,甚至有一个错误,就是在当前时段显示分隔符,在H2的时间上显示分隔符。
我怎么知道N条上没有OBJ_RECTANGLE?
在MT4或MT5中都没有这样的东西。
在mt5中,甚至出现了一个错误,即在当前时间段内显示分离器,在H2的时间段内显示分离器。
最后我看到了在整个 "讨论 "中对我的问题的唯一 "建设性的回答"。
至于错误,它们存在于MT4和MT5的当前(最后)框架的所有分离器周上。
上周分离器MT4/MT5在任何地方都画出了分离器7天而不是5天。
但这并不是重点。错误一直存在,也将一直存在。如果有一个绘制分隔符的程序代码,所有这些都可能被纠正。
让我吃惊的不是错误,完全是别的东西。
在MT4/MT5存在的所有时间里,难道没有人想过写一个程序 来在预测区域画出分隔线吗?
毕竟,这个方案是最简单的。
你只需要知道最后一个分割线的位置和沿X轴的时间 "解决方案"(即什么时间间隔需要1个像素)。
而到目前为止,还没有人曾?
现在这真的让我感到惊讶。
我又得自己做所有的事情了。
这并不复杂,但你似乎不明白指标在MT中是如何工作的,它们的优势是什么。
你可能是对的。
有一个数学上的轶事。
有人问一位数学家:"你如何在水壶中烧水?
数学家回答:--取一个空的水壶,把水倒进去,放在灶台上,把灶台打开,等水烧开。
- 好的。但如果水壶已经满了怎么办?- 这位数学家问道。
- 把水从水壶里倒出来,用上面的方法解决问题。- 数学家回答说。
所以,你去那里。
这个笑话是关于你的。
这个笑话是关于你的。
嗯,不知道是笑还是....。如果你知道有一个交易终端 可以满足你所有的奇思妙想,那还有什么意义呢?我对MT4/5百分之百满意,我可以用它做任何事情,保留在图表上画D1周期的指标,如果你对编程感兴趣,可以修改它以满足你的需要...我不认为你能做到 ....
我已经试过了,我不知道为什么,我不知道为什么,这是我第一次看到这样的情况,似乎我在切换时间段时初始化了缓冲器。
最后我看到了在整个 "讨论 "中对我的问题的唯一 "建设性的回答"。
至于错误,它们存在于MT4和MT5的当前(最后)框架的所有分离器周上。
上周分离器MT4/MT5在任何地方都画出了分离器7天而不是5天。
但这并不是重点。错误一直存在,也将一直存在。如果有一个绘制分隔符的程序代码,所有这些都可能被纠正。
让我吃惊的不是错误,完全是别的东西。
在MT4/MT5存在的所有时间里,难道没有人想过写一个程序 来在预测区域画出分隔线吗?
毕竟,这个方案是最简单的。
你只需要知道最后一个分割线的位置和沿X轴的时间 "解决方案"(即什么时间间隔需要1个像素)。
而到目前为止,还没有人曾?
现在这真的让我感到惊讶。
再一次,你必须自己做所有事情。
我告诉你--我已经做了不止一次。(以及在市场上,并在一个以上的指标中)
而你说你已经写了代码,你会再写吗?)
嗯,我不知道是要笑还是要....。如果你知道一个交易终端 可以满足你所有的奇思妙想,那还有什么意义呢? 我对MT4/5百分之百满意,我可以用它做任何事情,保留在图表上画D1周期的指标,对编程感兴趣,修改它以满足你的需要......我不认为你能做到 ....
我不知道为什么,这是我第一次看到这样的错误。
当然了,谢谢。
正如我所怀疑的,在不完整的日子里,你的月经分隔符与标准分隔符不一致。
但这并不十分重要,因为我认为你不应该尝试重新绘制标准分隔符,而是将预测区域分隔符与历史分隔符对接。
那么,不完整的历史日定界符的位置将不会影响预测定界符。
你的指标和标准定界符之间的另一个重要区别是,标准定界符是在图表本身的每个事件中更新,但你的指标是在每个OnCalculate()事件中更新。我以为这一点会很明显--但事实上,它几乎不明显。
当然,这个指标应该重新设计,但还是要感谢。看到这一点很有意思。
这原来是具有指定名称的对象的条形索引。有一个以上的对象,其名称是 "QUADRO "+Time[i+1] 我怎么知道十条上没有这样的对象?
缓冲区很清楚,如果值是空的,图表上就不会显示任何东西,但对象呢?
我可以用这种方式试试吗?
谢谢你。结果是具有指定名称的对象的条形索引(120983)。有一个以上的对象,其名称是 "QUADRO "+Time[i+1] 我怎么知道十条上没有这样的对象?
缓冲区我明白了,如果值是空的,图表上就不会显示任何东西,但对象呢?