如何编码? - 页 232

 

想法

好了,男孩和女孩们

我一直在考虑创建一个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);

感谢所有的帮助

 

你可以,但是如果你交易的货币超过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()不能正确地做到这一点。

我还想保留一些变量,并且不丢失数据。

有什么办法可以做到这一点吗?

我还希望能对一个指标也这样做。

非常感谢。

 

编程帮助

大家好。

我正在修改一个货币强度表,根据图表的时间显示货币的强度。 目前,所使用的代码是。

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. 我不是一个程序员,所以请用小字:)

 

在帮助手册中查看iHigh和iLow功能

好运

卢克斯