// OnInit ()
{
string nameArray[]={"EURUSD","...","USDJPY"}; // As suggested by thrdel. Creates an array with currency pairsint TicksRecorded [# of symbols monitored]; // Records the required position in the PriceData array to write the next tick data to for each symboldouble PriceData [# of symbols monitored][Ticks][data to record]; // Stores price data for each symbol required for as many ticks as required
Create the timer and set an appropriate interval
Open a file to save data if required for future use
for (x=0; x < # of symboels; x++) // Get all prices for all the symbols you want and store them in the first position of the Ticks and data to record dimensions
{ // Also adapted from thrdel's code example
PriceData [x][0][0] = Ask;
PriceData [x][0][0] = Bid;
... whatever else you want to record
}
// EventSetMillisecondTimer()
{
Refresh all price data for all symbols
for (x=0; x < # of symbols; x++) // Get all prices for all the symbols you want and store them in the first position of the Ticks and data to record dimensions
{
if ((current Ask != to previously recorded Askfor that x) or (current Bid != to previously recorded Bidfor that x)... and every other price data you want)
{
TicksRecorded [x]++; // Increments the position in the PriceData array holding the latest tick data for that symbol
PriceData [x][TicksRecorded[x]][0] = Ask;
PriceData [x][TicksRecorded[x]][1] = Bid;
... and whatever else you want to record
Flag to indicate a new tick has been received set to true
}
if (new data)
{
Set new data flag to false
Do custom action
}
}
}
// OnDeinit ()
{
Kill the timer
Save data to a file if required
}
如果你不想回答他的问题,就不要回答,这很简单。没有必要得罪人。
相信我,这对我来说也是可用的,如果 我把 我想 发 的 东西都 发了, 我至少有 1000个 评分点。
如果他做了一些研究并在代码库中 查看,那么他就会发现,例如https://www.mql5.com/en/code/11176
你可以找到更多这样的例子,他现在的要求在我看来,我想在其他人看来也是如此
他在学习如何编码方面做得不够,想从别人那里得到编码,以获得如何交易一个EA不同符号的例子
而不用自己做任何尝试...
就像CodeMonkey写给xennon的那样
'这里的问题不是说它不能做,而是你甚至没有费心去尝试做。'
.
如果xennon做了这个他不喜欢的回复,那么这也是他对它的错误反应。
我想你应该明白我是怎么看待这个问题的......
如果他做了一些研究并在代码库中 查找,那么他就会发现,例如https://www.mql5.com/en/code/11176
你可以找到更多这样的例子,他现在问的方式在我看来,我猜在其他人看来也是如此
他没有做足够的工作来学习如何编码,并希望从别人那里得到编码,以获得如何做交易一个EA不同符号的例子
而不用自己做任何尝试...
就像CodeMonkey写给xennon的那样
'这里的问题不是说它不能做,而是你甚至没有费心去尝试做。'
.
如果xennon做了这个他不喜欢的回复,那么这也是他对它的错误反应。
我想你应该明白我所看到的情况...。
当然,我同意。
但我也同意,如果有人回复,没有必要冒犯OP(或任何其他用户)。我认为这个论坛需要一个更好的氛围。
xennon: 从2012年1月开始注册,现在来这里提出这个问题?
在我看来,他是时候通过阅读和学习做一些研究了。
如果他想做那个EA,那么他就必须来尝试一下,如果他在做的时候遇到问题的话
这是有可能的 .... 经过两年多的时间,他现在肯定知道了。
是的,2年了,那又怎样? 这并不意味着我一直在积极地在MQL中捣乱,不是吗?- 事实上,我对MQL的集体经验可能还不到一个月,TOTAL。 我建议你要么贡献一些积极和有用的东西,要么就XXXX。 这是一个多么愚蠢和白痴的说法。
是的,2年了,那又怎样? 这并不意味着我一直在积极地在MQL中捣乱,不是吗?- 事实上,我对MQL的集体经验可能还不到一个月,TOTAL。 我建议你要么贡献一些积极和有用的东西,要么就xxx。 这是一个多么愚蠢和白痴的说法。
我已经建议你注意你的语言。这是我最后一次警告。
谢谢你。
是的,2年了,那又怎样? 这并不意味着我一直在积极地在MQL中捣乱,不是吗?- 事实上,我对MQL的集体经验可能还不到一个月,TOTAL。 我建议你要么贡献一些积极和有用的东西,要么就XXXX。 这是一个多么愚蠢和白痴的说法。
我指出的代码库的例子 ????https://www.mql5.com/en/forum/149766/page2#915892
我想知道是否有可能让一个单一的EA在任何货币对上运行,但让它监控多个货币对,并在每个货币对出现触发时作出反应。
从本质上讲,我希望有一个EA能够轮询所有感兴趣的货币对,在每个货币对上测试预先配置的标准,并根据需要回应买入/卖出/平仓/警报。
我想这是做不到的,但我很想知道,如果有人对如何实现这一目标有什么想法,而不需要打开大量的图表,并将EA分别应用于每个图表,这主要是为了提高效率(最好有一个代码块而不是一打?)
谢谢。
我认为应该用一个字符串数组来表示符号,然后对所有感兴趣的符号进行循环。
比如说
然后
我想知道是否有可能让一个单一的EA在任何货币对上运行,但让它监控多个货币对,并在每个货币对出现触发时作出反应。
从本质上讲,我希望有一个EA能够轮询所有感兴趣的货币对,在每个货币对上测试预先配置的标准,并根据需要响应买入/卖出/平仓/警报。
我想这是做不到的,但我想听听谁有什么想法,如何在不打开大量图表的情况下实现这一目标,并在每个图表上分别应用EA,主要是为了提高效率(最好有一个代码块而不是一打?)
谢谢。
你好,xennon。
对你的问题的简短回答是:是的。
我也想过做类似的事情,但还没来得及编码,所以我会给你一个基本的大纲,告诉你我将如何构建代码,但不是具体的,因为如果你自己研究如何编码每个部分,并参考代码库和其他来源的编码例子作为学习练习,可能会对你未来的代码编写有更大的帮助,而不是简单地从例子中复制代码,把一个解决方案粘贴在一起,而不真正了解发生了什么和为什么,此外,这也有助于调试代码错误。虽然如果你不熟悉编码,代码库可能会很混乱,因为一些术语可能难以理解。
另外,由于我的想法还没有经过测试或实施,所以可能有更好的编码方法或我没有预见到的错误,因为我不是一个编码高手,而且一般来说比较生疏,所以如果有人有任何建议,我都会听,如果有错误,请不要击倒我。
一般的想法是使用毫秒计时器事件,因为OnTick事件只对它所连接的图表起作用,所以其他货币对 的ticks不会产生tick事件,EA也不会运行,但毫秒事件的计时器可以每秒触发多次,监测价格变化。同时使用三个数组,一个用来存储你想使用的符号的字符串,另一个用来存储价格数据。
我试着解释一下。数组nameArray将以数组形式存储每个符号,但更重要的是该数组的元素可以用来为其他两个数组设置位置,因为它们不能使用字符串来定位数组中的位置,但索引值可以。由于每个符号的刻度是在不同的时间收到的,写入PriceArray的数据不会都是在同一时间,因为有些符号在不同的时间更活跃,所以第二个数组存储了PriceData数组的索引,这样可以快速写入,而不会覆盖任何过去的价格数据。第三个数组将写入你需要的必要的价格数据。
代码是代码和英文的组合,其中有需要添加的内容。它非常简单,但应该为你的想法提供一个起点。有许多空白,例如当数组到达终点时,何时处理它们,但这都是学习曲线的一部分。我建议让代码在一个符号下工作,然后是两个,以此类推,让你剔除并修复代码中的任何错误。正如我所说的,这只是一个粗略的草案,所以就这样使用它,改进是可能的,例如,你可以使用一个Struct数据类型或一个对象,而不是三个数组来存储tick数据,但这种设计在开始时比较简单,你可以在以后的编码阶段看看结构和面向对象的编程。
我已经尽量说得很清楚了,但这可能会让你感到非常困惑,所以如果你有任何关于清晰度的进一步问题,请告诉我,我会尽可能地帮助你,但不幸的是,我没有时间来编写这样的代码。
下面是伪代码。
我只是使用全局变量 来允许我的EA在一个图表中监控/进行交易。
尽管你必须使你的EA更加强大,并且不局限于一个图表。
为什么下面的方法不能工作?
如果(这是真的){
ticket=OrderSend("GBPUSD",OP_SELL,lot,Bid,0,0,",0,Red)。
ticket=OrderSend("GBPJPY",OP_BUY,lot,Ask,0,0,0,",0,Green);
ticket=OrderSend("USDJPY",OP_BUY,lot,Ask,0,0,0,",0,Green);
}
弹出一个错误 4106 符号未知
如果(此为真){
ticket=OrderSend("GBPUSD",OP_SELL,lot,Bid,0,0,",0,0,Red);
ticket=OrderSend("GBPJPY",OP_BUY,lot,Ask,0,0,0,",0,Green);
ticket=OrderSend("USDJPY",OP_BUY,lot,Ask,0,0,0,",0,Green);
}
弹出一个错误 4106 符号未知