如何为多个交易对运行EA?

 
你好
我是外汇和MetaTrader的新手,想弄清楚一些基础知识。
假设我有一个附在欧元兑美元图表上的EA,但我想从该EA中找到多个货币对的设置。但EA只在欧元兑美元的新刻度线出现时运行。对吗?现在我认为这是MT的限制性功能,因为我的EA可以处理许多货币对,但只在所附货币对(本例中为欧元兑美元)的新刻度线时启动。这可能会导致遗漏未加入的货币对的点数。因此,我有一个问题--

EA能否在不连接到图表的情况下运行多个货币对?如果不能,那么上述问题的解决方法是什么?请告知。

谢谢
Pankaj
 

这只是mt4的工作方式。我想这是没有办法的。但现在我想到了一件事。如果你在新蜡烛前至少1-2分钟得到欧元兑美元的刻度线(假设它是H1蜡烛),你可以运行while loop来寻找其他货币对的新蜡烛。在这种情况下,如果欧元兑美元的新刻度线甚至在5分钟或更长时间内没有出现,那么while循环已经在运行,你会得到其他货币对上的所有新蜡烛。希望你能理解这一点。

但问题是,你为什么需要这个?最好是在不同的图表上运行EA,因为在欧元兑美元上运行的EA将无法在另一个货币对上执行交易。

 

嗨,你们好。

我更愿意记住我们仍然是在实时处理中工作,所以我只是忘记了使用while循环或等待函数 来保持手的沟通

将您的EA附加到像欧元兑美元这样的货币对上,可以为您提供足够的信号来管理所有其他的货币对,而刻度是非常频繁的。这不是分的问题,而是秒的问题(运行一个循环2分钟对我来说听起来很疯狂)。如果这不是一秒钟的问题,那就想想为什么,或者看看其他经纪商。

如果你真的需要比将你的EA附加到eurusd上所得到的更多,可以考虑将你的EA单独运行到每种货币上。对不起,我倾向于认为 "或重新考虑你的系统"。

如果觉得这个帖子有点唐突,请原谅。我想与你分享我的观点。

祝您好运。

 
wrm:

最好在不同的图表上运行EA,因为在欧元兑美元上运行的EA将无法在另一个货币对上执行交易。

这是不正确的。OrderSend()函数 可以对你指定为第一个参数的任何符号执行,与图表无关。

你可以通过使用MarketInfo()函数检索当前图表以外的符号的最新卖出和买入价格。

因此,你有如下的选择。

- 将同一个EA连接到许多图表上,并为每个图表的本地符号进行操作(使用Ask和Bid内置变量)。

- 将一个EA连接到一个特定的图表上,对所有选择的符号进行操作(对非本地符号使用MarketInfo()函数)--只是使用本地符号的ticks作为触发装置

- 在不同的图表上有主从EA,其中一个由另一个触发(例如,一个将数值写入文件,另一个不断读取文件,直到找到该数据,然后进行交易)。

 
cloudbreaker:

这是不正确的。OrderSend()函数可以对你指定为第一个参数的任何符号执行,与图表无关。

你可以通过使用MarketInfo()函数检索当前图表以外的符号的最新卖出和买入价格。

因此,你有如下的选择。

- 将同一个EA连接到许多图表上,并为每个图表的本地符号进行操作(使用Ask和Bid内置变量)。

- 将一个EA连接到一个特定的图表上,对所有选择的符号进行操作(对非本地符号使用MarketInfo()函数)--只是使用本地符号的ticks作为触发装置

- 在不同的图表上有主从EA,其中一个由另一个触发(例如,一个将一个值写入文件,另一个不断读取文件,直到找到这个数据,然后进行交易)。


非常有见地。谢谢你们所有人。我将采用第二种方案,因为这与我之前的想法一致。


皱纹。我想让事情尽可能的少。如果技术上可行,我将只保留一个EA。保留单独的EA的唯一原因是为了防止我需要绘制图表,但我不需要。


当然,一旦有了EA,我将进行测试。如果它不能按照我想要的方式工作,那么我将改变它。

 
//+------------------------------------------------------------------+
//|                                                          jkh.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

bool wannaBuy = true;
bool wannaBuy1 = true;
extern double LotSize = 0.01;
extern string symbol1 = "EURUSD";
extern string symbol2 = "USDCHF";
extern int MaxDifference = 6;
extern int Slippage = 3;
extern int Magicnumber1 = 786;
extern int Magicnumber2 = 123;
int sendticket = 3;
string pairs[18];

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
pairs[0] = symbol1;
pairs[1] = symbol2;
wannaBuy = true;
wannaBuy1 = true;

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   // Send order for EURUSD & USDCHF
   if ( wannaBuy) {   
   int ticket1;
   RefreshRates();
   ticket1 = OrderSend( symbol1, OP_BUY, LotSize, MarketInfo( symbol1,MODE_ASK), Slippage, 0, 0, 0,0, Magicnumber1,0) & OrderSend( symbol2, OP_BUY, LotSize, MarketInfo( symbol2,MODE_ASK), Slippage, 0, 0, 0,0, Magicnumber2,0);
   if ( ticket1 <0 )
   {
   Print ("OrderSend failed with error #", GetLastError());
   return(0);
   }
   wannaBuy = false;
   }

//----
   return(0);
  }
//+------------------------------------------------------------------+
这里是一个简单的代码,在一个图表上打开欧元兑美元和美元兑瑞郎。即使EA被添加到另一个图表上,它也会打开EURUSD和USDCHF。
 
tigersoft:
这里有一个简单的代码,可以在一个图表上打开欧元兑美元和美元兑瑞郎。甚至EA也被添加到另一个图表上,所以它将打开EURUSD和USDCHF。

相当整洁。谢谢老虎软件

 
cloudbreaker:

这是不正确的。OrderSend()函数可以对你指定为第一个参数的任何符号执行,与图表无关。

你可以通过使用MarketInfo()函数检索当前图表以外的符号的最新卖出和买入价格。

因此,你有如下的选择。

- 将同一个EA连接到许多图表上,并为每个图表的本地符号进行操作(使用Ask和Bid内置变量)。

- 将一个EA连接到一个特定的图表上,对所有选择的符号进行操作(对非本地符号使用MarketInfo()函数)--只是使用本地符号的ticks作为触发装置

- 在不同的图表上有主从EA,其中一个由另一个触发(例如,一个将数值写入文件,另一个不断读取文件,直到找到该数据,然后进行交易)。


你好,你能详细说明一下方案3吗?


还有,使用选项#2,价格/指标的计算如何在非本地符号中进行?我知道向非本地符号发送订单,但不知道如何检查 非本地符号的进入条件。

 
skyhr:

你好,你能详细说明一下选项#3吗?


还有,使用选项#2,价格/指标的计算如何在非本地符号中进行?我理解向非本地符号发送订单,但不知道如何检查非本地符号的进入条件。

使用MarketInfo()函数 处理非本地符号。它是一个朋友 :)

 
skyhr:

你好,你能详细说明一下选项#3吗?


还有,使用选项#2,价格/指标的计算如何在非本地符号中进行?我明白向非本地符号发送订单,但不知道如何检查非本地符号的进入条件。

选项3--简单地从监测特定符号的EA写一个值到一个文件。让另一个EA监控该文件,并在该值出现时执行一个特定的逻辑。

选项2 - 使用MarketInfo()函数 检索非本地符号的卖价和买价,而不是使用仅适用于本地符号的卖价和买价变量。

 
cloudbreaker:

选项3--简单地将一个数值从一个监测特定符号的EA写到一个文件中。让另一个EA监控该文件,并在该值出现时执行一个特定的逻辑。

选项2 - 使用MarketInfo()函数检索非本地符号的卖出和买入价格,而不是使用只适合本地符号的卖出和买入变量。

我认为这两种方法都很好。

我想补充的唯一一点是,由于开销较少,选项2具有性能优势。一切都在内存中,显然比文件操作快。

选项3的一个优势是,如果你想用文件数据做一些MT4无法做到的事情。