通过BatchVBScript启动交易
Results 1 to 7 of 7

Thread: 通过BatchVBScript启动交易

  1. #1
    是否可以通过批处理或vbs脚本开始交易?我有一个不与MetaTrader交互的外部应用程序,但我想根据它的信号自动交易系统。

    仅供参考:这不是我可以访问的基于Web的系统(即无法构建与其通信的DLL或组件应用程序)。

  2. #2
    应该有可能,如果两个应用程序(MT4 外部系统)位于同一台PC上。您的外部系统应该在MT4expertsfiles文件夹中放置一个文件。您在MT4中创建一个正在扫描该文件的EA。如果发现它,请阅读文件并处理订单。完成后,EA会每隔一分钟左右删除一次文件并再次扫描另一个文件。 GL,

  3. #3
    这听起来像一个计划。我想让我的外部系统创建一个名为trade.txt的0字节测试文件会更容易,并且当EA看到该文件将开始交易时。是否有任何文章或文档显示如何从外部文件中分配变量?

  4. #4
    我正在查看kernel32文件功能。这是一个有效的语句:string ReadFile(string path){int handle = _lopen(path,OF_READ); if(handlelt; 0){variable = 0/0 for do not trade} else {variable = 1/1 for trade}

  5. #5
    所以,我已经完成了一个脚本,它将执行我期望的操作,除了监视更改。如何添加时间元素,以便该脚本可以持续运行?另外,我不希望它在目前正在进行交易时进行交易。插入代码#include lt; stdlib.mqhgt; #include <; WinUser32.mqhgt; int filetrade;/lopen #define OF_READ 0 #define OF_WRITE 1 #define OF_READWRITE 2 #define OF_SHARE_COMPAT 3 #define OF_SHARE_DENY_NONE 4 #define OF_SHARE_DENY_READ 5 #define OF_SHARE_DENY_WRITE 6 #define OF_SHARE_EXCLUSIVE 7 #import kernel32.dll int _lopen(string path,int of); int _lcreat(string path,int attrib); int _llseek(int handle,int offset,int origin); int _lread(int handle,string buffer,int bytes); int _lwrite(int handle,string buffer,int bytes); int _lclose(int handle); #import/ --------------------------------------------- --------------------- /|脚本程序启动功能|/ ----------------------------------------------- ------------------- string start(string path){//---- int handle = _lopen(C:trade.txt,OF_READ);如果(handlegt; 0){if(MessageBox(你确实想要以ASK价格买入1.00 Symbol() ,Script,MB_YESNO | MB_ICONQUESTION)!= IDYES)return(1); int ticket = OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0,0,专家评论,255,0,CLR_NONE);如果(ticketlt; 1){int error = GetLastError();打印(Error =,ErrorDescription(error));返回; } OrderPrint(); }其他{打印(错误打开文件,路径); return(); } int result = _llseek(handle,0,0);结果= _lclose(句柄);返回(0); }

  6. #6
    我怀疑,如果我将它作为EA运行,它会持续检查该文件(只要没有公开交易)。这是一个正确的假设吗?此外,由于某些原因,该脚本未关闭该文件。这里是我更新的脚本:插入的代码#include lt; stdlib.mqhgt; #include <; WinUser32.mqhgt; extern string filetrade = C:\ trade.txt;/lopen #define OF_READ 0 #import kernel32.dll int _lopen(string path,int of); int _llseek(int handle,int offset,int origin); int _lclose(int handle); #import/ --------------------------------------------- --------------------- /|脚本程序启动功能|/ ----------------------------------------------- ------------------- string start(string path){//---- int handle = _lopen(filetrade,OF_READ); int result = _llseek(handle,0,0); int total = OrdersTotal(); if(handlegt; 0){if(totallt; 1){if(MessageBox(你确实想要以ASK价格买入1.00 Symbol() ,Script,MB_YESNO | MB_ICONQUESTION)!= IDYES)return(1); int ticket = OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0,0,专家评论,255,0,CLR_NONE);如果(ticketlt; 1){int error = GetLastError();打印(Error =,ErrorDescription(error));返回; } OrderPrint();结果= _lclose(句柄); }} else {打印(错误打开文件,路径);结果= _lclose(句柄); return(); } result = _lclose(handle);返回(0); }

  7. #7
    我想出了如何解决脚本没有关闭文件,尽管我没有完全理解逻辑。事后看来,我认为这是有道理的,因为只要文件可以打开,句柄的值就不会是0.我不得不将close语句直接放在open语句之后:插入代码int total = OrdersTotal(); int handle = _lopen(filetrade,OF_READ); int fclose = _lclose(handle);如果(handlegt; 0).....

發布權限

  • 您不可發布新主題
  • 您不可回复
  • 您不可發布附件
  • 您不可編輯您的帖子
  •  
  • BB代碼是打開的
  • 表情符號是打開的
  • [IMG]代碼是打開的
  • [視頻]代碼是打開的
  • HTML代碼是關閉的
forex-pedia網站使用cookie 文字跟蹤
forex-pedia.com網站使用cookie 文字跟蹤,某些設定已經固定。您可以點擊此處閱讀我們的Cookie使用說明。 請點擊右鍵接受我們的cookies。如果您選擇繼續使用forex-pedia.com網站,我們將認為您接受我們的cookies。