[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 272 1...265266267268269270271272273274275276277278279...432 新评论 TarasBY 2013.04.07 19:54 #2711 hoz: 如果这不是一个秘密,那么这个变量是在哪里明确设置的?:)我在库中看到b-PSI@Base.mqh,它只是声明。但基本上没有进一步的内容。事实上,默认情况下是通过Symbol() 返回当前工具的值。那么为什么我们在这里需要一个变量呢?我已经在关于多货币的部分回答了这个问题--当前符号=符号()--这只是一个特殊情况。P.S. 你的方法很有趣:你拿着别人的代码,试图 "适应 "你的逻辑--你有一切权利,但不要问我:"为什么你的逻辑与我的不同!"。 Viktar Dzemikhau 2013.04.07 20:42 #2712 TarasBY:我已经回答了这个问题,关于多币种--当前符号=符号() --这只是一个特殊情况。P.S. 你有一个有趣的方法:你拿别人的代码,并试图 "适应 "你的逻辑 - 你有一切权利,但不要问我:"为什么你的逻辑与我的不同!"。 我不打算调整它。我只是想研究它是如何实施的。但我不会复制任何东西。我很想看看专家是怎么想的。这就是真正的原因。所以,就在这里了。我在看void fGet_MarketInfo (string fs_Symbol, int fi_Ticket = 0) 函数。if (fs_Symbol != bs_Symbol || fi_Ticket < 0)这个变量没有在这个函数中声明。在其他两个基础文件(包含和函数)中也没有声明它。不清楚在哪里可以找到它。这就是我的问题。我想了解它最初是在哪里出现的,即宣布。如果你不介意告诉我...还有一件奇怪的事情,就是另一个变量。bool fCheck_LevelsBLOC 函数中的以下几行。 if (fi_Type == 0) li_cmd = 0; else if (fi_Type == 1) li_cmd = 1; else if (fi_Type % 2 == 0) li_cmd = 1; else li_cmd = 0; ld_Price = bda_Price[li_cmd];bda_Price[li_cmd] 是在b-PSI@Base.mqh 库中首次提到。bda_Price[2];没有指定数组中的元素。所以它们各自等于零。这意味着li_cmd 数组的任何参数的表达式将取值0?ld_Price = bda_Price[li_cmd]; Artyom Trishkin 2013.04.08 02:16 #2713 bikrus13: 大家好。请回复所有能创建一个脚本的人,在开盘时增加手数。你在这里开标是为了满足工作需要吗?通常情况下,让人满意的不是任务,而是...如果你有不明白的地方,可以问我们,我们会帮助你。或者去找工作--那里既满足了你,也满足了工作......。有偿 Dikii 2013.04.08 03:40 #2714 是否可以从EA中按时间找出历史上的价格(Ask和Bid)?例如,Asc 10分钟前或10秒前。有一些已知的功能可以得到一个时间序列的条形图,包括开盘价、收盘价 和某一时期的海低点,但在一个特定的时间点,如何知道卖出价和买入价。 Boris 2013.04.08 07:52 #2715 Dikii:是否可以从EA中按时间找出历史上的价格(Ask和Bid)?例如,Asc 10分钟前或10秒前。有 一些已知的功能可以得到一个时间序列的条形图,包括开盘价、收盘价和某一时期的海低点,但在一个特定的时间点,如何知道卖出价和买入价。 没有Ask,只有Bid!顺便说一句,每个人都会喜欢这样,包括我自己在内!。 Dikii 2013.04.08 08:02 #2716 borilunad: 不可能,只有竞标。顺便说一句,每个人都会喜欢的,包括我自己!"。 解释一下如何找出10秒前的Bid,最好是用代码。 gince 2013.04.08 09:08 #2717 我之前问过关于数组的问题。似乎还是没有弄清楚。当你在测试器上运行时,有一个除以零的 结果。这意味着在某个数组中存在着零。我无法弄清错误在哪里。附录中的代码。WORDe中的评论为俄语。对此我很抱歉。我的Metaeditor不支持俄语。帮助我找到错误的地方。如果你不介意解释一下。Неполучилось сразу и два файла поместить. Вордовский документ неразрешается всавлять. Как иначе проконтировать на русском незнаю , только полностью код скопировать с ворда и поместить сюда //быстры MA extern int MA_Period1 = 8; extern int plius1 = 100; extern int MA_Shift1 = 0; extern int MA_Method1 = 0; //медленый MA extern int MA_Period2 = 13; extern int plius2 = 100; extern int MA_Shift2 = 0; extern int MA_Method2 = 3; //начало флета //поиск флета по сигналу или время extern bool start = true; // true ->по сигналу, false->по времени // по сигналу начинаем с данного времени extern int startHourFlatMA = 16; extern int startMinFlatMA = 00; //сигнал есть, ждем пока закроется BarEnd бар extern int BarEnd = 240; datetime LastTime; //datetime startTime; // по времени начьнем искать флет с extern int startHourFlat = 0; extern int startMinFlat = 0; //конец флета в промежутке времени или по истечению времени //начало промежутка extern int startHourEnd = 4; extern int startMinEnd = 45; //конец промежутка, и истечение времени по времени extern int endHourEnd = 7; extern int endMinEnd = 30; //включение фильтра Volumes extern bool volFiltr = true; //true -> включено, false -> выключено //skirtumas tarp penktadienio uzdarymo ir pirmadienio atidarymo extern int gep = 300; bool susikirtimas = false; //пересечение индикаторных линий bool flat; //массивы double chPriceH[], chPriceL[], chPriceO[], chPriceC[], chTime[]; double avgPriceH[], avgPriceL[], avgPriceO[], avgPriceC[]; int iH, iL ,iO, iC, iT; double C[], T[], y[]; int i = -1; // индекс массива int j = -1; // индекс массива int n = -1; // индекс массива double max; //максимаьная разница между элементами масивов int init () { ArrayResize(chPriceH, 0); ArrayResize(chPriceL, 0); ArrayResize(chPriceO, 0); ArrayResize(chPriceC, 0); ArrayResize(chTime, 0); ArrayResize(avgPriceH, 0); ArrayResize(avgPriceL, 0); ArrayResize(avgPriceO, 0); ArrayResize(avgPriceC, 0); ArrayResize (C, 0); ArrayResize (T, 0); ArrayResize (y, 0); } int start() { double volMA11, volMA12, volMA21, volMA22; double x[], y[]; Print("***старт***"); if(!TF_F_NewBar())return(0); Print("---1-собираем данные индикаторов---"); volMA11 = iCustom(NULL, 15, "volumeMA", 2, 1); volMA12 = iCustom(NULL, 15, "volumeMA", 2, 2); volMA21 = iCustom(NULL, 15, "volumeMA", 3, 1); volMA22 = iCustom(NULL, 15, "volumeMA", 3, 2); Print("volMA11 = "+volMA11); Print("volMA12 = "+volMA12); Print("volMA21 = "+volMA21); Print("volMA22 = "+volMA22); Print("----1 данные собраны---END"); Print("---2 какой день недели--"); if(DayOfWeek()==1 || DayOfWeek()==2 || DayOfWeek()==3 || DayOfWeek()==4) { Print("DayOfWeek = "+DayOfWeek()); Print("----2---END"); if(Hour() >= startHourFlatMA && Minute() >= startMinFlatMA) Print("---3 проверка времени, разрешается ли искать флет---"); { Print("время начала флета >= "+Hour()+":"+Minute()); Print("----3--end"); Print("---4 есть ли пересечение линий индикатора----"); if(volMA21 - volMA11 > 0 && volMA12 - volMA22 > 0) { //если было пересечение susikirtimas = true; Print("пересечение = "+susikirtimas); Print("---4---END"); Print("---5 жшдем окончания M240 свечи--"); LastTime = iTime(NULL, BarEnd, 1); Print("LastTime = "+LastTime); //startTime = Time[1]; } if(susikirtimas == true && iTime(NULL, BarEnd, 1)!= LastTime) { LastTime = iTime(NULL, BarEnd, 1); flat = true; Print("flat = "+flat); } if(flat == true) { Print(-начало флета есть"); Print("-- 6 собираем данные в массивы--"); //увеличиваем число элементов массива на один i++; Print("увеличиваем длину массива в зависимости от i "); ArrayResize(avgPriceH,i); ArrayResize(avgPriceL,i); ArrayResize(avgPriceO,i); ArrayResize(avgPriceC,i); Print("с каждой новой свечой должны получить новые элементы массивов"); avgPriceH[i] = High[1]; Print("AVG элемент avgPriceH["+i+"] = "+avgPriceH[i]); avgPriceL[i] = Low[1]; Print("AVG элемент avgPriceL["+i+"] = "+avgPriceL[i]); avgPriceO[i] = Open[1]; Print("AVG элемент avgPriceO["+i+"] = "+avgPriceO[i]); avgPriceC[i] = Close[1]; Print("AVG mэлементasyvo elementas avgPriceC["+i+"] = "+avgPriceC[i]); j++; Print("индех канальных массивов j = "+j); ArrayResize(chPriceC,j); Print("CH masyvo ilgis chPriceC = "+j); ArrayResize(chTime,j); Print("CH masyvo ilgis chTime = "+j); //включен ли фильтр if(volFiltr) { //да Print("да включен"); Print("volMA11 = "+volMA11, " Volume[1] = "+Volume[1]); if(volMA11 - Volume[1] >= 0)//фильтр { Print("записываем Close[1] ir Time[1] в массивы"); chPriceC[j] = Close[1]; Print("masyvo elementas chPriceC["+j+"] = "+j); chTime[j] = Time[1]; Print("masyvo elementas chTimev["+j+"] = "+j); } else { //renkam chPriceC[j] = 0; Print("masyvo elementas chPriceC["+j+"] = "+j); chTime[j] = 0; Print("masyvo elementas chTimev["+j+"] = "+j); } } Print("получилис отфильтрваные массивы с нулями "); else // jei filtras isjungtas, tada duomenys kanalo skaiciavimui { //renkam Print("если фильтр выключен"); Print("pradedam rinkti Close[1] ir Time[1] duomenis i masyvus po filtracijos"); //chPriceH[j] = High[1]; Print("masyvo elementas chPriceH["+j+"] = "+j); //chPriceL[j] = Low[1]; Print("masyvo elementas chPriceL["+j+"] = "+j); chPriceC[j] = Close[1]; Print("masyvo elementas chPriceC["+j+"] = "+j); //chPriceO[j] = Open[1]; Print("masyvo elementas chPriceO["+j+"] = "+j); chTime[j] = Time[1]; Print("masyvo elementas chTimev["+j+"] = "+j); } //suzinom kokio ilgio masyvai Print("после того как массивы собраны узнаем их длину"); Print("ArrayRange(chPriceC, 0) = "+iC); Print("фильтруем их от нулей, после фильтрции длина массивов меньше чем была до фильтрции"); for(int k = 0; k <= iC; k++) { if(chPriceC[k] > 0) { n++; ArrayResize(C,n); ArrayResize(T,n); C[n] = chPriceC[k]; T[n] = chTime[k]; Print("naujo masyvo elementas C["+n+"] = "+C[n]); Print("naujo masyvo elementas irasytas T["+n+"] = ",T[n]); Print("naujo atfiltruoto masyvo ilgis n = ",n); } } } } } Print("так масивы набирается свеча за свечой пока несработает 7 – ая часть кода"); Print("----------- 6 массивы набирается------------------------end"); Print("----------- 7 массивы набраны------------------------end"); //if(DayOfWeek()==0 || DayOfWeek()==6) return(0); if(((Hour() > startHourEnd && Minute() > startMinEnd) && //jei jau laikas po 6.30 Print("если начялось время начала поиска конца флета"); (volMA11 - volMA21 > 0 && volMA22 - volMA12 > 0)) || //пересечение индикаторных линий (Hour() > endHourEnd && Minute() > endMinEnd)) { // или кончилось время флета susikirtimas = false; //сбрасываем флаг начала пересичения инд. линий на вход во флет flat = false; //сбрасываем флаг начала флета i = -1; //Возвращаем начальные индексы массивов j = -1; //ищем линию регрении ArrayChLR(C, y, max);//ArrayLR(x, y) //ищем точки для фибо уровней double y161Plus_1 = y[1] + max/50 * 161; double y261Plus_1 = y[1] + max/50 * 261; double y361Plus_1 = y[1] + max/50 * 361; double y423Plus_1 = y[1] + max/50 * 423; double y161Minus_1 = y[1] - max/50 * 161; double y261Minus_1 = y[1] - max/50 * 261; double y361Minus_1 = y[1] - max/50 * 361; double y423Minus_1 = y[1] - max/50 * 423; double y161Plus_2 = y[n-1] + max/50 * 161; double y261Plus_2 = y[n-1] + max/50 * 261; double y361Plus_2 = y[n-1] + max/50 * 361; double y423Plus_2 = y[n-1] + max/50 * 423; double y161Minus_2 = y[n-1] - max/50 * 161; double y261Minus_2 = y[n-1] - max/50 * 261; double y361Minus_2 = y[n-1] - max/50 * 361; double y423Minus_2 = y[n-1] - max/50 * 423; //turim po dvi kainos koordinate, o laiko galim paimti is masyvo T[] //galim brezti linijas //y=(y2-y1)/(x2-x1)*(x-x1)+y1 double y161Plus_3 = (y161Plus_2-y161Plus_1)/(T[n]-T[1])*(StrToTime("20:00")-T[1])+y161Plus_1; double y261Plus_3 = (y261Plus_2-y261Plus_1)/(T[n]-T[1])*(StrToTime("20:00")-T[1])+y261Plus_1; double y361Plus_3 = (y361Plus_2-y361Plus_1)/(T[n]-T[1])*(StrToTime("20:00")-T[1])+y361Plus_1; double y423Plus_3 = (y423Plus_2-y423Plus_1)/(T[n]-T[1])*(StrToTime("20:00")-T[1])+y423Plus_1; double y161Minus_3 = (y161Plus_2-y161Plus_1)/(T[n]-T[1])*(StrToTime("20:00")-T[1])+y161Plus_1; double y261Minus_3 = (y261Plus_2-y261Plus_1)/(T[n]-T[1])*(StrToTime("20:00")-T[1])+y261Plus_1; double y361Minus_3 = (y361Plus_2-y361Plus_1)/(T[n]-T[1])*(StrToTime("20:00")-T[1])+y361Plus_1; double y423Minus_3 = (y423Plus_2-y423Plus_1)/(T[n]-T[1])*(StrToTime("20:00")-T[1])+y423Plus_1; //чертим линии SetTLine(Thistle, "", T[1], y161Plus_1, StrToTime("20:00"), y161Plus_3, 0, 1); SetTLine(Thistle, "", T[1], y261Plus_1, StrToTime("20:00"), y261Plus_3, 0, 1); SetTLine(Thistle, "", T[1], y361Plus_1, StrToTime("20:00"), y361Plus_3, 0, 1); SetTLine(Thistle, "", T[1], y423Plus_1, StrToTime("20:00"), y423Plus_3, 0, 1); SetTLine(Thistle, "", T[1], y161Minus_1, StrToTime("20:00"), y161Minus_3, 0, 1); SetTLine(Thistle, "", T[1], y261Minus_1, StrToTime("20:00"), y261Minus_3, 0, 1); SetTLine(Thistle, "", T[1], y361Minus_1, StrToTime("20:00"), y361Minus_3, 0, 1); SetTLine(Thistle, "", T[1], y423Minus_1, StrToTime("20:00"), y423Minus_3, 0, 1); } return(0); } //----------------------------------------------------------------------------------------------------- void ArrayChLR(double& x[], double& y[], double& max) { double a, b, c, sx=0, sx2=0, sxy=0, sy=0; int i, n=ArraySize(x); if (n>1) { for (i=0; i<n; i++) { sx+=i+1; sy+=x[i]; sxy+=(i+1)*x[i]; sx2+=(i+1)*(i+1); } a=sx*sy-n*sxy; c=sx*sx-n*sx2; if (c!=0) a=a/c; else a=0; b=(sy-a*sx)/n; ArrayResize(y, n); max = 0; double dif[]; ArrayResize(dif, n); for (i=0; i<n; i++) { y[i]=a*(i+1)+b; dif[i] = MathAbs(Close[i] - y[i]); if(dif[i] > max) max = dif[i]; } } else Print("ArrayLR(): per mazas x masyvo elementu skaicius! n=", n); } 附加的文件: naktiniskfletas.mq4 22 kb Alexey Subbotin 2013.04.08 09:59 #2718 Dikii:是否可以从EA中按时间找出历史上的价格(Ask和Bid)?例如,Asc 10分钟前或10秒前。有 一些已知的功能,可以在一定时期内获得开盘价、收盘价和海低点的时间序列,但在一个特定的时间点,如何找出卖出价和买入价。 在/history/server/文件夹里有ticks.raw文件,从那里你理论上可以从Market Watch获得当前时刻之前短时间内的符号买入和卖出。在这个方向上做一个论坛搜索...对于该文件中的数据存储机制,我无法从记忆中说出具体的内容。 Alexey Subbotin 2013.04.08 10:01 #2719 gince:我之前问过关于数组的问题。似乎还是没有弄清楚。当你在测试器上运行时,有一个除以零的结果。这意味着在某个数组中存在着零。我无法弄清错误在哪里。附录中的代码。WORDe中的评论为俄语。对此我很抱歉。我的Metaeditor不支持俄语。帮助我找到错误的地方。如果你不介意解释一下。 我建议在每次除法前写上Print(除以什么)--你会马上知道零在哪里。 gince 2013.04.08 10:34 #2720 alsu: 我建议输入Print(到我们除以什么);在每次除法之前,你会立即知道零在哪里 。 只有一个部门。而根据CMM函数(虽然它是满的),它说函数中产生的数组中没有足够的数据。我不能理解为什么。这就是为什么我得到了除以0的 结果。 1...265266267268269270271272273274275276277278279...432 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如果这不是一个秘密,那么这个变量是在哪里明确设置的?:)我在库中看到b-PSI@Base.mqh,它只是声明。
但基本上没有进一步的内容。事实上,默认情况下是通过Symbol() 返回当前工具的值。那么为什么我们在这里需要一个变量呢?
我已经在关于多货币的部分回答了这个问题--当前符号=符号()--这只是一个特殊情况。
P.S. 你的方法很有趣:你拿着别人的代码,试图 "适应 "你的逻辑--你有一切权利,但不要问我:"为什么你的逻辑与我的不同!"。
我已经回答了这个问题,关于多币种--当前符号=符号() --这只是一个特殊情况。
P.S. 你有一个有趣的方法:你拿别人的代码,并试图 "适应 "你的逻辑 - 你有一切权利,但不要问我:"为什么你的逻辑与我的不同!"。
我不打算调整它。我只是想研究它是如何实施的。但我不会复制任何东西。我很想看看专家是怎么想的。这就是真正的原因。所以,就在这里了。
我在看void fGet_MarketInfo (string fs_Symbol, int fi_Ticket = 0) 函数。
这个变量没有在这个函数中声明。在其他两个基础文件(包含和函数)中也没有声明它。不清楚在哪里可以找到它。这就是我的问题。我想了解它最初是在哪里出现的,即宣布。如果你不介意告诉我...
还有一件奇怪的事情,就是另一个变量。bool fCheck_LevelsBLOC 函数中的以下几行。
bda_Price[li_cmd] 是在b-PSI@Base.mqh 库中首次提到。
bda_Price[2];
没有指定数组中的元素。所以它们各自等于零。这意味着li_cmd 数组的任何参数的表达式将取值0?
大家好。请回复所有能创建一个脚本的人,在开盘时增加手数。
你在这里开标是为了满足工作需要吗?通常情况下,让人满意的不是任务,而是...
如果你有不明白的地方,可以问我们,我们会帮助你。
或者去找工作--那里既满足了你,也满足了工作......。有偿
是否可以从EA中按时间找出历史上的价格(Ask和Bid)?例如,Asc 10分钟前或10秒前。有 一些已知的功能可以得到一个时间序列的条形图,包括开盘价、收盘价和某一时期的海低点,但在一个特定的时间点,如何知道卖出价和买入价。
没有Ask,只有Bid!顺便说一句,每个人都会喜欢这样,包括我自己在内!。
不可能,只有竞标。顺便说一句,每个人都会喜欢的,包括我自己!"。
解释一下如何找出10秒前的Bid,最好是用代码。
我之前问过关于数组的问题。似乎还是没有弄清楚。当你在测试器上运行时,有一个除以零的 结果。这意味着在某个数组中存在着零。我无法弄清错误在哪里。附录中的代码。WORDe中的评论为俄语。对此我很抱歉。我的Metaeditor不支持俄语。
帮助我找到错误的地方。如果你不介意解释一下。
是否可以从EA中按时间找出历史上的价格(Ask和Bid)?例如,Asc 10分钟前或10秒前。有 一些已知的功能,可以在一定时期内获得开盘价、收盘价和海低点的时间序列,但在一个特定的时间点,如何找出卖出价和买入价。
在/history/server/文件夹里有ticks.raw文件,从那里你理论上可以从Market Watch获得当前时刻之前短时间内的符号买入和卖出。在这个方向上做一个论坛搜索...对于该文件中的数据存储机制,我无法从记忆中说出具体的内容。
我之前问过关于数组的问题。似乎还是没有弄清楚。当你在测试器上运行时,有一个除以零的结果。这意味着在某个数组中存在着零。我无法弄清错误在哪里。附录中的代码。WORDe中的评论为俄语。对此我很抱歉。我的Metaeditor不支持俄语。
帮助我找到错误的地方。如果你不介意解释一下。
我建议在每次除法前写上Print(除以什么)--你会马上知道零在哪里。
我建议输入Print(到我们除以什么);在每次除法之前,你会立即知道零在哪里
。
只有一个部门。而根据CMM函数(虽然它是满的),它说函数中产生的数组中没有足够的数据。我不能理解为什么。这就是为什么我得到了除以0的 结果。