一切都很好,文章、图形用户界面和 C# 的无限可能性,但为什么没有表格呢,瓦西里?使用表格有什么困难吗?
Реter Konow:
一切都很好,文章、图形用户界面和 C# 的无限可能性,但为什么没有表格呢,瓦西里?有什么困难吗?
一切都很好,文章、图形用户界面和 C# 的无限可能性,但为什么没有表格呢,瓦西里?有什么困难吗?
材料量太大了,而 C# 中的表格是一个非常复杂的元素。这就像三级跳。你需要通过实现基本元素来加速,然后再尝试复杂的表格。
Vasiliy Sokolov:
好的
材料量太大,而 C# 中的表格是一个非常复杂的元素。这就像三级跳远。你需要通过实现基本要素来加速,然后再向复杂的表格发起冲击。
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Не удается найти указанный файл. (Exception from HRESULT: 0x80070002)
at System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)
at System.Reflection.Assembly.LoadFile(String path)
at MtGuiController.GuiController.GetGuiController(String assembly_path, String form_name)
at MtGuiController.GuiController.ShowForm(String assembly_path, String form_name)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Wrapper.Wrapper.Call(MethodInfo method, Int64 owner, Int64 parameters, Int64 result)
.Net runtime error从文章中启动智能交易系统时出错。
fxsaber:
运行文章中的智能交易系统时出错。
程序文件的路径是绝对路径,因此需要将其更改为实际路径。无法像在 MT 中那样制作通用目录。
Vasiliy Sokolov:
程序文件的路径是绝对路径,因此需要将其改为实际路径。不可能像 MT 那样制作通用目录。
string assembly = "c:\\Users\\Bazil\\source\\repos\\DemoForm\\DemoForm\\bin\\Debug\\DemoForm.exe";
我没有在任何地方找到这个文件。也无法从提供的 C# 源码中编译它。
fxsaber:
我没有在任何地方找到这个文件。我也无法从提供的 C# 源码中编译它。
奇怪,我可能忘了把它附加到存档中。我过几个小时再把它贴上去。
Vasiliy Sokolov:
附在档案中
附在档案中
谢谢,成功了。
// 我把 DemoForm.exe 放到了库中 string assembly = TerminalInfoString(TERMINAL_PATH) + "\\MQL5\\Libraries\\DemoForm.exe";
我发现了使用 C# 窗口时的一个非常严重的错误。如果连续移动 C# 窗口,终端会在几秒钟后从屏幕上消失,而且 terminal64.exe 的 CPU 核心负载会超过 100%。我有 8 个内核,因此任务管理器中 CPU 的全内核负载为 12%-13%。当 C# 窗口移动时,则为 19%。
我有一块 CPU 内置显卡,没有显卡。我认为问题出在显示器上。这就是我测试顾问的原因。
int handle = INVALID_HANDLE; void OnInit() { if (EventSetTimer(1)) handle = FileOpen(__FILE__, FILE_WRITE | FILE_TXT); } void OnDeinit( const int ) { if (handle != INVALID_HANDLE) FileClose(handle); } void OnTimer() { if (handle != INVALID_HANDLE) FileWriteString(handle, (string)TimeCurrent() + "\n"); }
它每秒从市场观察中写入时间。这是它移动 C# 窗口时的记录。
2019.06.11 16:22:09 2019.06.11 16:22:11 2019.06.11 16:22:11 2019.06.11 16:22:19 2019.06.11 16:22:23 2019.06.11 16:22:24 2019.06.11 16:22:26 2019.06.11 16:22:28 2019.06.11 16:22:31 2019.06.11 16:22:33 2019.06.11 16:22:34 2019.06.11 16:22:36 2019.06.11 16:22:37 2019.06.11 16:22:45 2019.06.11 16:22:45 2019.06.11 16:22:48 2019.06.11 16:22:51 2019.06.11 16:23:07 2019.06.11 16:23:08 2019.06.11 16:23:10
您可以清楚地看到,OnTimer 在几秒钟内都没有执行。也就是说,移动 C# 窗口会导致终端中的智能交易系统停止执行。
这个问题不仅涉及本文中的 C# 窗口。
Vasiliy Sokolov:
通过终端菜单手动移除GuiControllerElementsDemo 会导致几秒钟的冻结。
新文章 基于 .Net 框架和 C# 开发图形界面(第二部分):另外的图形元素已发布:
本文是之前发表的“基于.NET框架和C为EA交易和指标开发图形界面”的后续部分,它引入了新的图形元素来创建图形界面。
从第二个版本开始,控制器支持消息框,这是一个标准的用户信息元素。它还向用户提供多个选项,并以所选选项的形式接收响应。
要启动消息窗口的演示,请在启动EA时选择 Windows 窗体元素类型参数中的“按钮和消息框(Buttons and MessageBox)”选项。启动EA后,会出现一个表单,提示您选择以下选项之一:
图 3. 调用消息框的示例窗体
这个窗体以及随后的所有窗体都是示范形式,因此不具备交易逻辑。但是,按下任何按钮后,EA会发送一条警告消息,请求确认所选操作。例如,单击“卖出(SELL)”时将显示以下消息窗口:
图 4. 交易EA要求确认开立新的空头头寸
作者:Vasiliy Sokolov