如何编码? - 页 232 1...225226227228229230231232233234235236237238239...347 新评论 scottyb 2010.04.25 16:05 #2311 想法 好了,男孩和女孩们 我一直在考虑创建一个CUF(常用函数)的想法--从我所读到的内容来看,你不能从EA中调用脚本。 尽管如此,我还是想出了一个变通的办法,因为我不喜欢每次都被迫重新设计轮子,而且我确信这样做会使事情做得更好。 大家都知道,脚本加载后会做一些事情,然后卸载,除非你按下快捷键,否则就不会再加载。 这是我看到的所有EA的一个主要问题,就是它们似乎在等待一些时间条件或一些糟糕的 "睡眠 "条件通过后再继续。 这使得在一瞬间取消和卖出不太可能发生,这在极不稳定的条件下是一个重大的失败,而你可以在几秒钟内赚取一笔财富。 解决办法是什么? 做一个对全局变量起作用的CUFF指标吗? 有没有人试过这个。 该指标每隔一段时间 就循环一次,所以它很完美。 darien95 2010.04.25 18:05 #2312 如何编写一个警报代码,在满足多个指标和条形条件时发出声音或电子邮件警报? [删除] 2010.04.25 21:55 #2313 你好。 作为一个新手,我想问一下,内置的metastock函数: ref()和stochmomentum()是否由metatrader中的一些函数实现? 谢谢 scottyb 2010.04.26 01:10 #2314 请注意,你必须考虑到它们不会在同一时间爆炸,所以你必须在将变量重置为0之前,在其中加入几秒钟/一分钟的延迟。 BurtonW 2010.04.26 23:50 #2315 与全局 我可以为一个指标添加一个GlobalVarible吗? if ( trend[2]0 && Volume[0]>1 && !UpTrendAlert) { GlobalVariableSet("trend "+Symbol(),1)。 // Print("UP" + GlobalVariableGet("trend "+Symbol()))。 消息 = " 买入 "+Symbol()+" M "+Period()+"。买入的信号"。 如果(AlertMode>0)警报(Message)。 UpTrendAlert=true; DownTrendAlert=false。 然后在EA中调用该GlobalVariable,用 int init() { GlobalVariableDel("trend "+Symbol())。 trend = GlobalVariableGet("trend "+Symbol())。 买入 = (trend == 1); 卖 = (trend == 2); 感谢所有的帮助 How to code? 价格渠道 Price Channel scottyb 2010.04.28 07:35 #2316 你可以,但是如果你交易的货币超过1种,那就不可行了。 Mike 2010.04.29 00:40 #2317 关于数组的问题,需要一些帮助! 你好。 我想做一个函数,以确定任何未平仓订单的亏损是否超过一个截止点(比如1000美元)。 这个函数应该把OrderTicket()和OrderProfit()存储在两个独立的数组中,并以return(1)退出,以表示已经达到了截止点。 在存储这些数组中的值之前,它应该检查OrderTicket()数组,看看这个订单是否已经提交。 如果OrderTicket号码已经存储在数组中,它应该确定该订单是否损失了额外的1000美元,如果是的话:用一个新的值替换OrderProfit()数组中的值,并以return(1)退出,表示已经达到了新的截止点。如果订单没有损失额外的1000美元(称为截止点),那么它应该返回(0),表示没有订单损失额外的1000美元。 我想我差不多已经成功了(不确定),但是由于某些原因,数组中充满了大量的'0'值和合法值。数组的输出如下。 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 431 ResumeArrayPrices[k] = -3042 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 425 ResumeArrayPrices[k] = -3042 ResumeArrayTickets[k] = 386 ResumeArrayPrices[k] = -1008 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 371 ResumeArrayPrices[k] = -12933 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 320 ResumeArrayPrices[k] = -6057 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 249 ResumeArrayPrices[k] = -5076 ResumeArrayTickets[k] = 241 ResumeArrayPrices[k] = -1017 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 230 ResumeArrayPrices[k] = -13122 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 ResumeArrayTickets[k] = 186 ResumeArrayPrices[k] = -4068 ResumeArrayTickets[k] = 128 ResumeArrayPrices[k] = -1008 ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0 [/code] The following is my actual code: [code] int CheckForResume() { ResumeCheck = TimeLocal()+(PERIOD_M1*60)*5; } int arraycount1 =1; int arraycount2 =1; bool found = false; int k; for (int i = 0; i<OrdersTotal();i++) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if ((OrderType() == OP_BUY) || (OrderType() == OP_SELL)) { if (OrderProfit()< Cutoff) { for (k=0; k<ArraySize(ResumeArrayTickets); k++) { if ((ResumeArrayTickets[k] == OrderTicket()) && ResumeArrayTickets[k] !=0) { found = true; if (ResumeArrayPrices[k] + Cutoff < OrderProfit()) { return (0); } else { Print ("ELSE"); arraycount1 = ArrayResize(ResumeArrayTickets,ArraySize(ResumeArrayTickets) + 1); arraycount2 = ArrayResize(ResumeArrayPrices,ArraySize(ResumeArrayPrices) + 1); ResumeArrayTickets[k] = OrderTicket(); ResumeArrayPrices[k] = OrderProfit(); return (1); } } } if (found == false) { arraycount1 = ArrayResize(ResumeArrayTickets,ArraySize(ResumeArrayTickets) + 1)' arraycount2 = ArrayResize(ResumeArrayPrices,ArraySize(ResumeArrayPrices) + 1); ResumeArrayTickets[k] = OrderTicket(); ResumeArrayPrices[k] = OrderProfit(); return (1); } } } return (0); } } How to code? 求助,我想请高手朋友们写一个 止盈--止损脚本 Ordersend issue??? StevePams 2010.04.29 19:33 #2318 刷新一次EA 你好,有什么方法可以刷新EA,使其像第一次初始化时那样反应?(就像重新启动一样)这需要每条街做一次。例如,每30分钟一次。 RefreshRates()和WindowRedraw()不能正确地做到这一点。 我还想保留一些变量,并且不丢失数据。 有什么办法可以做到这一点吗? 我还希望能对一个指标也这样做。 非常感谢。 [删除] 2010.05.02 01:06 #2319 编程帮助 大家好。 我正在修改一个货币强度表,根据图表的时间显示货币的强度。 目前,所使用的代码是。 aHigh = MarketInfo(mySymbol,MODE_HIGH); // set a high today aLow = MarketInfo(mySymbol,MODE_LOW); // set a low today aBid = MarketInfo(mySymbol,MODE_BID); // set a last bid aAsk = MarketInfo(mySymbol,MODE_ASK); 我知道MODE_HIGH和MODE_LOW可以获得当前日期的高点和低点。 我怎样才能获得图表当前时间段 的高点和低点呢? 谢谢! P.S. 我不是一个程序员,所以请用小字:) luxinterior 2010.05.02 02:54 #2320 在帮助手册中查看iHigh和iLow功能。 好运 卢克斯 1...225226227228229230231232233234235236237238239...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
想法
好了,男孩和女孩们
我一直在考虑创建一个CUF(常用函数)的想法--从我所读到的内容来看,你不能从EA中调用脚本。
尽管如此,我还是想出了一个变通的办法,因为我不喜欢每次都被迫重新设计轮子,而且我确信这样做会使事情做得更好。
大家都知道,脚本加载后会做一些事情,然后卸载,除非你按下快捷键,否则就不会再加载。
这是我看到的所有EA的一个主要问题,就是它们似乎在等待一些时间条件或一些糟糕的 "睡眠 "条件通过后再继续。 这使得在一瞬间取消和卖出不太可能发生,这在极不稳定的条件下是一个重大的失败,而你可以在几秒钟内赚取一笔财富。
解决办法是什么? 做一个对全局变量起作用的CUFF指标吗? 有没有人试过这个。 该指标每隔一段时间 就循环一次,所以它很完美。
如何编写一个警报代码,在满足多个指标和条形条件时发出声音或电子邮件警报?
你好。
作为一个新手,我想问一下,内置的metastock函数: ref()和stochmomentum()是否由metatrader中的一些函数实现?
谢谢
请注意,你必须考虑到它们不会在同一时间爆炸,所以你必须在将变量重置为0之前,在其中加入几秒钟/一分钟的延迟。
与全局
我可以为一个指标添加一个GlobalVarible吗?
if ( trend[2]0 && Volume[0]>1 && !UpTrendAlert)
{
GlobalVariableSet("trend "+Symbol(),1)。
// Print("UP" + GlobalVariableGet("trend "+Symbol()))。
消息 = " 买入 "+Symbol()+" M "+Period()+"。买入的信号"。
如果(AlertMode>0)警报(Message)。
UpTrendAlert=true; DownTrendAlert=false。
然后在EA中调用该GlobalVariable,用
int init() {
GlobalVariableDel("trend "+Symbol())。
trend = GlobalVariableGet("trend "+Symbol())。
买入 = (trend == 1);
卖 = (trend == 2);
感谢所有的帮助![](https://c.mql5.com/forextsd/smiles/smile.png)
你可以,但是如果你交易的货币超过1种,那就不可行了。
关于数组的问题,需要一些帮助!
你好。
我想做一个函数,以确定任何未平仓订单的亏损是否超过一个截止点(比如1000美元)。
这个函数应该把OrderTicket()和OrderProfit()存储在两个独立的数组中,并以return(1)退出,以表示已经达到了截止点。
在存储这些数组中的值之前,它应该检查OrderTicket()数组,看看这个订单是否已经提交。
如果OrderTicket号码已经存储在数组中,它应该确定该订单是否损失了额外的1000美元,如果是的话:用一个新的值替换OrderProfit()数组中的值,并以return(1)退出,表示已经达到了新的截止点。如果订单没有损失额外的1000美元(称为截止点),那么它应该返回(0),表示没有订单损失额外的1000美元。
我想我差不多已经成功了(不确定),但是由于某些原因,数组中充满了大量的'0'值和合法值。数组的输出如下。
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 431 ResumeArrayPrices[k] = -3042
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 425 ResumeArrayPrices[k] = -3042
ResumeArrayTickets[k] = 386 ResumeArrayPrices[k] = -1008
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 371 ResumeArrayPrices[k] = -12933
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 320 ResumeArrayPrices[k] = -6057
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 249 ResumeArrayPrices[k] = -5076
ResumeArrayTickets[k] = 241 ResumeArrayPrices[k] = -1017
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 230 ResumeArrayPrices[k] = -13122
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
ResumeArrayTickets[k] = 186 ResumeArrayPrices[k] = -4068
ResumeArrayTickets[k] = 128 ResumeArrayPrices[k] = -1008
ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0
[/code]
The following is my actual code:
[code]
int CheckForResume()
{
ResumeCheck = TimeLocal()+(PERIOD_M1*60)*5;
}
int arraycount1 =1;
int arraycount2 =1;
bool found = false;
int k;
for (int i = 0; i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))
{
if (OrderProfit()< Cutoff)
{
for (k=0; k<ArraySize(ResumeArrayTickets); k++)
{
if ((ResumeArrayTickets[k] == OrderTicket()) && ResumeArrayTickets[k] !=0)
{
found = true;
if (ResumeArrayPrices[k] + Cutoff < OrderProfit())
{
return (0);
}
else
{
Print ("ELSE");
arraycount1 = ArrayResize(ResumeArrayTickets,ArraySize(ResumeArrayTickets) + 1);
arraycount2 = ArrayResize(ResumeArrayPrices,ArraySize(ResumeArrayPrices) + 1);
ResumeArrayTickets[k] = OrderTicket();
ResumeArrayPrices[k] = OrderProfit();
return (1);
}
}
}
if (found == false)
{
arraycount1 = ArrayResize(ResumeArrayTickets,ArraySize(ResumeArrayTickets) + 1)'
arraycount2 = ArrayResize(ResumeArrayPrices,ArraySize(ResumeArrayPrices) + 1);
ResumeArrayTickets[k] = OrderTicket();
ResumeArrayPrices[k] = OrderProfit();
return (1);
}
}
}
return (0);
}
}
刷新一次EA
你好,有什么方法可以刷新EA,使其像第一次初始化时那样反应?(就像重新启动一样)这需要每条街做一次。例如,每30分钟一次。
RefreshRates()和WindowRedraw()不能正确地做到这一点。
我还想保留一些变量,并且不丢失数据。
有什么办法可以做到这一点吗?
我还希望能对一个指标也这样做。
非常感谢。
编程帮助
大家好。
我正在修改一个货币强度表,根据图表的时间显示货币的强度。 目前,所使用的代码是。
aLow = MarketInfo(mySymbol,MODE_LOW); // set a low today
aBid = MarketInfo(mySymbol,MODE_BID); // set a last bid
aAsk = MarketInfo(mySymbol,MODE_ASK);我知道MODE_HIGH和MODE_LOW可以获得当前日期的高点和低点。 我怎样才能获得图表当前时间段 的高点和低点呢?
谢谢!
P.S. 我不是一个程序员,所以请用小字:)
在帮助手册中查看iHigh和iLow功能。
好运
卢克斯