初学者的问题 MQL5 MT5 MetaTrader 5 - 页 747 1...740741742743744745746747748749750751752753754...1503 新评论 Vitaly Muzichenko 2017.05.12 17:18 #7461 Sergey Gritsay: 维塔利,查看https://www.mql5.com/ru/docs/series/timeseries_access#synchronized, 有一个加载历史的样本脚本,它可能会有所帮助谢谢你,我会努力处理的。现在已经出现了一个问题。下一个重要的检查是检查调用该函数的程序的类型。回顾一下,发送刷新时间序列的请求与调用刷新的指标的周期相同是非常不可取的。由于历史数据的更新是在指标工作的同一线程中进行的,因此,请求提供与指标相同的符号周期的数据是不可取的。因此,发生冲突的概率很高。为了检查它,我们使用带有 MQL5_PROGRAM_TYPE修改器的MQL5InfoInteger() 函数。如果(MQL5InfoInteger(MQL5_PROGRAM_TYPE)==PROGRAM_INDICATOR&&Period()==period&&Symbol()==symbol)返回(-4)。它应该在我的指标中起作用。 Vladimir M. 2017.05.14 00:17 #7462 先生们,与ZigZag斗争。我需要得到四个顶点的确切数据。结果是第一个,最必要的顶点iCustom给的不正确。从图形图像上看,它是滞后的,后面三个是正确的。类似的事情已经被发现了 -https://www.mql5.com/ru/forum/100123 我已经尝试了一切可能的方法,我甚至创建了一个单独的专家顾问,专门用于检查ZigZag的数据。自己看吧,也许我在什么地方犯了错?只需安装并启用开盘价格的可视化。得到这个-- //+------------------------------------------------------------------+ //| data_ZigZag.mq5 | //| Copyright 2017, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" input string data_Zig_Zag_IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII; input int ExtDepth=12; input int ExtDeviation=5; input int ExtBackstep =3; input int n_zz=100;//n_zz =100; double pd_1,pd_2,pd_3,pd_4; int pn_1,pn_2,pn_3,pn_4; int zz_Handle; double zz_buf[]; datetime time[]; string this_sym; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- this_sym=Symbol(); //+------------------------------------------------------------------+ //--- сохраним текущий символ графика для дальнейшей работы советника именно на этом символе zz_Handle=iCustom(this_sym,0,"Examples\\Zigzag", ExtDepth, ExtDeviation, ExtBackstep ); Print(__FUNCTION__,"__LINE__",__LINE__," . . . . . ", "zz_Handle = ",zz_Handle," error = ",GetLastError()); //--- проверяем наличие хендла индикатора if(zz_Handle==INVALID_HANDLE) { //--- хендл не получен, выводим сообщение в лог об ошибке, завершаем работу с ошибкой Print(__FUNCTION__,"__LINE__",__LINE__," ----- ", "Не удалось получить хендл индикатора zz_Handle"," error = ",GetLastError()); return(-1); } //--- добавляем индикатор на ценовой график ChartIndicatorAdd(ChartID(),0,zz_Handle); //--- устанавливаем индексацию для массива zz_buf как в таймсерии ArraySetAsSeries(zz_buf,true); ArraySetAsSeries(time,true); //--- //+------------------------------------------------------------------+ return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { IndicatorRelease(zz_Handle); ArrayFree(zz_buf); ArrayFree(time); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //+------------------------------------------------------------------+ int zz_copy=0; //--- копируем данные из индикаторного массива в динамический массив zz_copy=CopyBuffer(zz_Handle,0,0,n_zz,zz_buf); //--- если есть ошибки, то выводим сообщение в лог об ошибке и выходим из функции if(zz_copy<0) { Print("Не удалось скопировать данные из индикаторного буфера zz_buf. error = ", GetLastError()); return; } //+------------------------------------------------------------------+ pd_1 =0; pd_2 =0; pd_3 =0; pd_4 =0; pn_1 =0; pn_2 =0; pn_3 =0; pn_4 =0; int zz_q=ArraySize(zz_buf); int q=0; for(q=0; q<zz_q; q++) { if(zz_buf[q]!=0 && zz_buf[q]!=EMPTY_VALUE) { if(pd_1==0) { pn_1=q; pd_1=zz_buf[q]; } else if(pd_2==0) { pn_2=q; pd_2=zz_buf[q]; } else if(pd_3==0) { pn_3=q; pd_3=zz_buf[q]; } else if(pd_4==0) { pn_4=q; pd_4=zz_buf[q]; } } if(pn_4>0)break; } //+------------------------------------------------------------------+ CopyTime(this_sym,Period(),0,n_zz,time); //+------------------------------------------------------------------+ ObjectDelete(0,"name1"); string name1="name1"; if(!ObjectCreate(0,name1,OBJ_ARROW_UP,0,time[pn_1],pd_1)) { Print(__FUNCTION__,"__LINE__",__LINE__, ": не удалось создать знак \"Стрелка вверх\"! Код ошибки = ",GetLastError()); } //--- установим размер знака ObjectSetInteger(0,name1,OBJPROP_WIDTH,6); //+------------------------------------------------------------------+ ObjectDelete(0,"name2"); string name2="name2"; if(!ObjectCreate(0,name2,OBJ_ARROW_UP,0,time[pn_2],pd_2)) { Print(__FUNCTION__,"__LINE__",__LINE__, ": не удалось создать знак \"Стрелка вверх\"! Код ошибки = ",GetLastError()); } //--- установим размер знака ObjectSetInteger(0,name2,OBJPROP_WIDTH,6); //+------------------------------------------------------------------+ ObjectDelete(0,"name3"); string name3="name3"; if(!ObjectCreate(0,name3,OBJ_ARROW_UP,0,time[pn_3],pd_3)) { Print(__FUNCTION__,"__LINE__",__LINE__, ": не удалось создать знак \"Стрелка вверх\"! Код ошибки = ",GetLastError()); } //--- установим размер знака ObjectSetInteger(0,name3,OBJPROP_WIDTH,6); //+------------------------------------------------------------------+ ObjectDelete(0,"name4"); string name4="name4"; if(!ObjectCreate(0,name4,OBJ_ARROW_UP,0,time[pn_4],pd_4)) { Print(__FUNCTION__,"__LINE__",__LINE__, ": не удалось создать знак \"Стрелка вверх\"! Код ошибки = ",GetLastError()); } //--- установим размер знака ObjectSetInteger(0,name4,OBJPROP_WIDTH,6); //+------------------------------------------------------------------+ ///* if(pd_1!=0 && pd_2!=0 && pd_3!=0 && pd_4!=0) Alert(__FUNCTION__,"__LINE__",__LINE__, " q =",q, " pd_1 =",pd_1, " pd_2 =",pd_2, " pd_3 =",pd_3, " pd_4 =",pd_4, " pn_1 =",pn_1, " pn_2 =",pn_2, " pn_3 =",pn_3, " pn_4 =",pn_4, " TimeCurrent()=",TimeCurrent() ); //*/ //+------------------------------------------------------------------+ } //+------------------------------------------------------------------+ 如何获得准确的数据? Как получить значение индикатора ZigZag в точках... 2006.04.09www.mql5.com Уважаемые гуру и другие адепты MQ4 Я прикрепил схемку. Это стандартный ZigZag... antonsinichkin 2017.05.15 06:54 #7463 你好。前天我开始学习MQL。测试仪给出了这样的结果。我想不出其中的奥妙。亲爱的专业人士请指点迷津,我将不胜感激。 fxtz 2017.05.23 21:23 #7464 问题 我能否在Metatrader 4中编写一个程序,在设定了止损和利润的情况下,一键开启2至250个我选择的头寸?这样我就不必每次都手动打开一个了 Artyom Trishkin 2017.05.23 22:55 #7465 fxtz:问题 我能否在Metatrader 4中编写一个程序,在设定了止损和利润的情况下,一键开启2至250个我选择的头寸?你不需要逐一打开是的,你可以。但你在错误的地方问这个问题--在MT5上。有几个关于MT4的新手的主题。例如--这里。 Aleksey Vyazmikin 2017.05.23 22:58 #7466 antonsinichkin: 你好。前天我开始学习MQL。测试仪给出了这样的结果。我想不明白的是,哪里有陷阱。尊敬的专业人士请给我指点迷津,我将非常感激。 在打印前将其翻译成字符串。或者解释什么是错的。 Vladimir Karputov 2017.05.27 07:56 #7467 与本主题无关的评论已被移至 "MQL4 MT4 MetaTrader 4初学者的问题"。 Agat 2017.06.02 04:27 #7468 下午好。在MT5最新更新到1604版本后,我的指标不再正常工作。我正在使用 所谓的 "液体 "指标。例如,我在一个窗口里有几个多期随机指标。好了,现在短的都画好了 和以前一样,稍长的只画几条,最长的则完全不画。 我的印象是,他们突然开始缺乏历史。你能告诉我可能出了什么问题吗? RogozaIV 2017.06.02 09:01 #7469 我刚刚从mql4切换到mql5.我正在测试一个关于RTS指数的专家顾问,现在我有一个问题,它打开了几个交易,但打开交易的一个条件如下:如果(...OrdersTotal()==0)。为什么这个条件不起作用?如何才能只开一个仓位? Artyom Trishkin 2017.06.02 09:04 #7470 RogozaIV: 我刚刚从mql4切换到mql5.我正在测试一个关于RTS指数的专家顾问,现在我有以下问题:它打开了几个交易,但打开一个交易的条件之一被指定为:如果(...OrdersTotal()==0)。为什么这个条件不起作用?我怎样才能只开一个交易?PositionsTotal() 1...740741742743744745746747748749750751752753754...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
维塔利,查看https://www.mql5.com/ru/docs/series/timeseries_access#synchronized, 有一个加载历史的样本脚本,它可能会有所帮助
谢谢你,我会努力处理的。
现在已经出现了一个问题。
下一个重要的检查是检查调用该函数的程序的类型。回顾一下,发送刷新时间序列的请求与调用刷新的指标的周期相同是非常不可取的。由于历史数据的更新是在指标工作的同一线程中进行的,因此,请求提供与指标相同的符号周期的数据是不可取的。因此,发生冲突的概率很高。为了检查它,我们使用带有 MQL5_PROGRAM_TYPE修改器的MQL5InfoInteger() 函数。
如果(MQL5InfoInteger(MQL5_PROGRAM_TYPE)==PROGRAM_INDICATOR&&Period()==period&&Symbol()==symbol)
返回(-4)。
它应该在我的指标中起作用。
先生们,与ZigZag斗争。
我需要得到四个顶点的确切数据。结果是第一个,最必要的顶点iCustom给的不正确。从图形图像上看,它是滞后的,后面三个是正确的。类似的事情已经被发现了 -https://www.mql5.com/ru/forum/100123
我已经尝试了一切可能的方法,我甚至创建了一个单独的专家顾问,专门用于检查ZigZag的数据。自己看吧,也许我在什么地方犯了错?只需安装并启用开盘价格的可视化。得到这个--
测试仪给出了这样的结果。
我想不出其中的奥妙。亲爱的专业人士请指点迷津,我将不胜感激。
问题 我能否在Metatrader 4中编写一个程序,在设定了止损和利润的情况下,一键开启2至250个我选择的头寸?这样我就不必每次都手动打开一个了
问题 我能否在Metatrader 4中编写一个程序,在设定了止损和利润的情况下,一键开启2至250个我选择的头寸?你不需要逐一打开
是的,你可以。但你在错误的地方问这个问题--在MT5上。
有几个关于MT4的新手的主题。
例如--这里。
你好。前天我开始学习MQL。
测试仪给出了这样的结果。
我想不明白的是,哪里有陷阱。尊敬的专业人士请给我指点迷津,我将非常感激。
在打印前将其翻译成字符串。或者解释什么是错的。
所谓的 "液体 "指标。例如,我在一个窗口里有几个多期随机指标。好了,现在短的都画好了
和以前一样,稍长的只画几条,最长的则完全不画。
我的印象是,他们突然开始缺乏历史。你能告诉我可能出了什么问题吗?
我刚刚从mql4切换到mql5.我正在测试一个关于RTS指数的专家顾问,现在我有以下问题:它打开了几个交易,但打开一个交易的条件之一被指定为:如果(...OrdersTotal()==0)。为什么这个条件不起作用?我怎样才能只开一个交易?
PositionsTotal()