脚本如何能以编程方式浏览市场观察窗口中选择的所有工具? - 页 2 1234567 新评论 Владимир 2008.03.09 17:38 #11 KimIV: VBAG。 最近为自己解决了这个问题。 在DC将自己的东西加到对子的名字上的情况下是行不通的。例如,"m"、"!"、"。"或"_"。 是的,当然,我是以研究为目的,但如果想做一些激进的事情--呆呆地搜索所有字符ASCII的组合数,比如说,仪器名称中最大的合理字符数(8-10)。这样的脚本可能需要几个小时的时间来运行,但它是自动的、有保证的。 到Zhunko。 -我记得,当然我是从你的代码中得到这个想法的。用你的装载机工作了几天--这很有趣!谢谢。 Vadim Zhunko 2008.03.10 00:08 #12 KimIV: VBAG。 最近为自己解决了这个问题。 在DC将自己的东西加到对子的名字上的情况下是行不通的。例如,"m"、"!"、"。"或"_"。 这样的职能部门很少,他们使用的字符数量也很少。可以预见的是。 这就是我对莫尼莱恩对的做法。这就是 "迷你 "和 "专业 "的所在。 我认为在Lite中也有一些狗屎。 也就是说,你可以把乐器按DTs分成几组。 我只对以下经纪公司感兴趣:Alpari, ForexBest, MoneyRain, NorthFinance, NWBroker。 这些是拥有最多的工具的经纪公司。他们是为货币指数计算提供报价的必要条件。 脚本 "ZZ_All Quotings 0-0080 "是为他们设计的。 [删除] 2008.03.11 02:09 #13 // Запись в файл названий и торговых условий всех символов из окна "Market Watch" // Во время работы скрипта желательно не производить никаких действий в терминале // NB: Используемая Хэш-функция не является корректной для данной задачи #include <WinUser32.mqh> extern string FileName = "Symbols.txt"; // Имя файла для записи информации по символам extern int Pause = 200; // Техническая пауза в миллисекундах #import "user32.dll" int GetParent( int hWnd ); int GetDlgItem( int hDlg, int nIDDlgItem ); #import #define VK_HOME 0x24 #define VK_DOWN 0x28 // Названия используемых глобальных переменных #define VAR_HASH "Symbol_Hash" #define VAR_HANDLE "Symbol_Handle" // Возвращает хэндл основного окна терминала int Parent() { int hwnd = WindowHandle(Symbol(), Period()); int hwnd_parent = 0; while (!IsStopped()) { hwnd = GetParent(hwnd); if (hwnd == 0) break; hwnd_parent = hwnd; } return(hwnd_parent); } // Открывает окно графика символа, расположенного в строке номер Num окна "Market Watch" void OpenChart( int Num ) { int hwnd = Parent(); if (hwnd != 0) // нашли главное окно { hwnd = GetDlgItem(hwnd, 0xE81C); // нашли "Market Watch" hwnd = GetDlgItem(hwnd, 0x50); hwnd = GetDlgItem(hwnd, 0x8A71); PostMessageA(hwnd, WM_KEYDOWN, VK_HOME,0); // верхняя строчка окна "Market Watch" while (Num > 1) { PostMessageA(hwnd, WM_KEYDOWN,VK_DOWN, 0); // сместились на нужную строчку Num--; } } PostMessageA(Parent(), WM_COMMAND, 33160, 0); // открыли график return; } // Закрывает окно графика void CloseChart( int hwnd ) { PostMessageA(GetParent(hwnd), WM_CLOSE, 0, 0); return; } // Хэш-функция перевода строки в целое число // NB: данная функция не совершенна (приводит к коллизиям) int Hash( string Str ) { int HashRes = 0; int i; i = StringLen(Str) - 1; while (i >= 0) { HashRes += StringGetChar(Str, i); i--; } HashRes %= 101; return(HashRes); } // Запускает выбранный в окне "Navigator" скрипт (индикатор или советник) void RunScript() { PostMessageA(Parent(), WM_COMMAND, 33042, 0); // исполнить скрипт на текущем графике return; } // Записывает характеристика текущего торгового символа в файл void WriteSymbol() { int handle; string Str; Str = "\n" + Symbol() + ":"; Str = Str + "\n Spread = " + DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD), 0); Str = Str + "\n StopLevel = " + DoubleToStr(MarketInfo(Symbol(), MODE_STOPLEVEL), 0); Str = Str + "\n Digits = " + DoubleToStr(MarketInfo(Symbol(), MODE_DIGITS), 0); Str = Str + "\n Price(Example) = " + DoubleToStr(Bid, Digits); handle = FileOpen(FileName, FILE_READ|FILE_WRITE); FileSeek(handle, 0, SEEK_END); FileWrite(handle, Str); FileClose(handle); return; } void start() { int handle, i = 1; if (GlobalVariableCheck(VAR_HASH)) // Запустили не первый раз... { GlobalVariableSet(VAR_HANDLE, WindowHandle(Symbol(), Period())); if (GlobalVariableGet(VAR_HASH) != Hash(Symbol())) // проверка достижения конца списка символов окна "Market Watch" { GlobalVariableSet(VAR_HASH, Hash(Symbol())); WriteSymbol(); } else GlobalVariableDel(VAR_HASH); } else // запустили первый раз { GlobalVariableSet(VAR_HASH, -1); handle = FileOpen(FileName, FILE_WRITE); // обнулили файл с данными FileClose(handle); while(!IsStopped()) { OpenChart(i); // открыли график очередного символа из окна "Market Watch" Sleep(Pause); RunScript(); // запустили на только что открытом графике текущий скрипт Sleep(Pause); CloseChart(GlobalVariableGet(VAR_HANDLE)); // закрыли окно графика Sleep(Pause); if (!GlobalVariableCheck(VAR_HASH)) // Достигнут ли конец списка символов окна "Market Watch"? break; i++; } GlobalVariableDel(VAR_HANDLE); i--; // записали в файл количество символов в окне "Market Watch" handle = FileOpen(FileName, FILE_READ|FILE_WRITE); FileSeek(handle, 0, SEEK_END); FileWrite(handle, "AMOUNT OF SYMBOLS = " + i); FileClose(handle); } return; } Vadim Zhunko 2008.03.11 04:06 #14 这是一个有趣的玩具,但它不能正常工作。我卡在最后一个工具上了。试图停止它导致MT4错误。 让它用每个TF打开每个乐器的窗口。 这就是一开始就缺少的那种程序。 #property show_inputs Владимир 2008.03.11 04:13 #15 哇!这真是太好了 谢谢你!(笑)。 [删除] 2008.03.11 05:07 #16 哦,我会试一试的。 [删除] 2008.03.11 07:42 #17 Zhunko: 这是一个有趣的玩具,但它不能正常工作。我卡在最后一个工具上了。试图停止它导致MT4错误。让它用每个TF打开每个乐器的窗口。这是开始时缺少的程序: #property show_inputs 使之成为extern int Pause = 1000; // Техническая пауза в миллисекундах如果造成错误,在运行前再次删除以下全局变量(F3)。"Symbol_Hash" "Symbol_Handle" 注:剧本只是展示了对当前问题的可能解决方案的想法。 Комарских Александр 2008.03.11 10:12 #18 getch: 注意:剧本只是对手头任务的可能解决方案的想法的演示。 编程经验很好地展示了人类头脑的聪明才智和工具的功能不足......万岁,唉......。 Владимир 2008.03.11 12:50 #19 Shu: 工具的功能缺乏......万岁,唉......。 让我们希望在MQL5中,我们不会被迫做出这种扭曲。 P.S. 另一方面--过程是重要的! [删除] 2008.03.11 22:41 #20 剧本中没有变态的内容。它有点不合常规,就是这样。 思路:该脚本从 "市场观察 "窗口打开每个交易工具的图表窗口,在上面运行自己,然后关闭窗口。它使用自己创建的全局变量进行自我调节(并在操作结束后删除)。这就是全部。 如果满足以下条件,该脚本在99%的情况下会起作用。 - DLL将被允许使用,不需要人工确认。 - 暂停变量的值将被设置为大于1000(技术暂停,取决于计算机的性能和互联网连接。这些特性越好,你就越能设置暂停值,分别减少脚本的运行时间)。 - 在运行脚本之前,删除全局变量(F3)"Symbol_Hash "和 "Symbol_Handle"(如果之前脚本运行失败,可能会出现这种情况)。 完成脚本后,终端看起来和启动前一样。所有的符号数据都在Symbols.txt文件中。 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
最近为自己解决了这个问题。
到Zhunko。
-我记得,当然我是从你的代码中得到这个想法的。用你的装载机工作了几天--这很有趣!谢谢。
最近为自己解决了这个问题。
这就是我对莫尼莱恩对的做法。这就是 "迷你 "和 "专业 "的所在。
我认为在Lite中也有一些狗屎。
也就是说,你可以把乐器按DTs分成几组。
我只对以下经纪公司感兴趣:Alpari, ForexBest, MoneyRain, NorthFinance, NWBroker。
这些是拥有最多的工具的经纪公司。他们是为货币指数计算提供报价的必要条件。
脚本 "ZZ_All Quotings 0-0080 "是为他们设计的。
让它用每个TF打开每个乐器的窗口。
这就是一开始就缺少的那种程序。
谢谢你!(笑)。
这是一个有趣的玩具,但它不能正常工作。我卡在最后一个工具上了。试图停止它导致MT4错误。让它用每个TF打开每个乐器的窗口。这是开始时缺少的程序:
使之成为
如果造成错误,在运行前再次删除以下全局变量(F3)。
注:剧本只是展示了对当前问题的可能解决方案的想法。注意:剧本只是对手头任务的可能解决方案的想法的演示。
编程经验很好地展示了人类头脑的聪明才智和工具的功能不足......万岁,唉......。
工具的功能缺乏......万岁,唉......。
P.S. 另一方面--过程是重要的!
剧本中没有变态的内容。它有点不合常规,就是这样。
思路:该脚本从 "市场观察 "窗口打开每个交易工具的图表窗口,在上面运行自己,然后关闭窗口。它使用自己创建的全局变量进行自我调节(并在操作结束后删除)。这就是全部。
如果满足以下条件,该脚本在99%的情况下会起作用。
- DLL将被允许使用,不需要人工确认。
- 暂停变量的值将被设置为大于1000(技术暂停,取决于计算机的性能和互联网连接。这些特性越好,你就越能设置暂停值,分别减少脚本的运行时间)。
- 在运行脚本之前,删除全局变量(F3)"Symbol_Hash "和 "Symbol_Handle"(如果之前脚本运行失败,可能会出现这种情况)。
完成脚本后,终端看起来和启动前一样。所有的符号数据都在Symbols.txt文件中。