这只是mt4的工作方式。我想这是没有办法的。但现在我想到了一件事。如果你在新蜡烛前至少1-2分钟得到欧元兑美元的刻度线(假设它是H1蜡烛),你可以运行while loop来寻找其他货币对的新蜡烛。在这种情况下,如果欧元兑美元的新刻度线甚至在5分钟或更长时间内没有出现,那么while循环已经在运行,你会得到其他货币对上的所有新蜡烛。希望你能理解这一点。
但问题是,你为什么需要这个?最好是在不同的图表上运行EA,因为在欧元兑美元上运行的EA将无法在另一个货币对上执行交易。
最好在不同的图表上运行EA,因为在欧元兑美元上运行的EA将无法在另一个货币对上执行交易。
这是不正确的。OrderSend()函数 可以对你指定为第一个参数的任何符号执行,与图表无关。
你可以通过使用MarketInfo()函数检索当前图表以外的符号的最新卖出和买入价格。
因此,你有如下的选择。
- 将同一个EA连接到许多图表上,并为每个图表的本地符号进行操作(使用Ask和Bid内置变量)。
- 将一个EA连接到一个特定的图表上,对所有选择的符号进行操作(对非本地符号使用MarketInfo()函数)--只是使用本地符号的ticks作为触发装置
- 在不同的图表上有主从EA,其中一个由另一个触发(例如,一个将数值写入文件,另一个不断读取文件,直到找到该数据,然后进行交易)。
这是不正确的。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。
这里有一个简单的代码,可以在一个图表上打开欧元兑美元和美元兑瑞郎。甚至EA也被添加到另一个图表上,所以它将打开EURUSD和USDCHF。
相当整洁。谢谢老虎软件
这是不正确的。OrderSend()函数可以对你指定为第一个参数的任何符号执行,与图表无关。
你可以通过使用MarketInfo()函数检索当前图表以外的符号的最新卖出和买入价格。
因此,你有如下的选择。
- 将同一个EA连接到许多图表上,并为每个图表的本地符号进行操作(使用Ask和Bid内置变量)。
- 将一个EA连接到一个特定的图表上,对所有选择的符号进行操作(对非本地符号使用MarketInfo()函数)--只是使用本地符号的ticks作为触发装置
- 在不同的图表上有主从EA,其中一个由另一个触发(例如,一个将数值写入文件,另一个不断读取文件,直到找到该数据,然后进行交易)。
你好,你能详细说明一下方案3吗?
还有,使用选项#2,价格/指标的计算如何在非本地符号中进行?我知道向非本地符号发送订单,但不知道如何检查 非本地符号的进入条件。
选项3--简单地将一个数值从一个监测特定符号的EA写到一个文件中。让另一个EA监控该文件,并在该值出现时执行一个特定的逻辑。
选项2 - 使用MarketInfo()函数检索非本地符号的卖出和买入价格,而不是使用只适合本地符号的卖出和买入变量。
我认为这两种方法都很好。
我想补充的唯一一点是,由于开销较少,选项2具有性能优势。一切都在内存中,显然比文件操作快。
选项3的一个优势是,如果你想用文件数据做一些MT4无法做到的事情。
我是外汇和MetaTrader的新手,想弄清楚一些基础知识。
假设我有一个附在欧元兑美元图表上的EA,但我想从该EA中找到多个货币对的设置。但EA只在欧元兑美元的新刻度线出现时运行。对吗?现在我认为这是MT的限制性功能,因为我的EA可以处理许多货币对,但只在所附货币对(本例中为欧元兑美元)的新刻度线时启动。这可能会导致遗漏未加入的货币对的点数。因此,我有一个问题--
EA能否在不连接到图表的情况下运行多个货币对?如果不能,那么上述问题的解决方法是什么?请告知。
谢谢
Pankaj