初学者的问题 MQL4 MT4 MetaTrader 4 - 页 113 1...106107108109110111112113114115116117118119120...260 新评论 ponochka 2018.02.01 14:01 #1121 你好!!我想做的是:,我需要我的EA打开所有的订单(卖出和买入),即使它们已经打开了,而且它不会在所有的条件收敛时做,而是在下一个蜡烛上做!请帮助我......,我很感激。目前,我的代码里有这个。PHP代码。void start(){ if(NewBar(){//算法本身等等。}}bool NewBar(){ staticdatetimelastbar=0;datetime curbar=iTime(Symbol(),0,0); if(lastbar!=curbar){lastbar=curbar; return(true);} return(false);} qroner 2018.02.01 14:48 #1122 qroner:void Uchet_Orderov_Function(string _Simvol, int _Magic, int &_Mas[8]){ArrayInitialize(_Mas, 0)。int Ticket=-1;for(int pos=OrdersTotal()-1; pos>=0; pos--){如果(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==_Simvol&&)OrderMagicNumber()==_Magic && OrderTicket()!=Ticket){Ticket=OrderTicket()。switch(OrderType()){case 0:{_Mas[0]++;_Mas[6]++;break;}case 1:{_Mas[1]++;_Mas[6]++;break;}case 2:{_Mas[2]++;_Mas[7]++;break;}case 3:{_Mas[3]++;_Mas[7]++;break;}case 4:{_Mas[4]++;_Mas[7]++;break;}case 5:{_Mas[5]++;_Mas[7]++;break;}}}}} 这里有一个功能。 我只是认为问题不在代码中,因为在标准模式下没有错误。 总之,似乎没有人回答......。 Vladimir 2018.02.01 22:56 #1123 qroner:总之,似乎没有人回答......。 终端告诉你错误在第69行,但你显示的是程序文本,那里的行数较少......。你想怎么回答? Konstantin Erin 2018.02.02 07:22 #1124 qroner: 总之,看起来没有人会回答......。你发布的函数中似乎没有任何错误。我对使用OrderTicket()!=Ticket来筛出具有相同票据的相邻订单感到困惑。检查并确保没有这样的命令。如果(69,25) 是由编译器指定的,请看第69行的第25位 - 错误就在那里。键入这一行。 [删除] 2018.02.02 08:07 #1125 Vladimir: 终端告诉你错误在第69行,但你显示的程序文本中的行数较少......你想根据什么来回答?我真的想知道他在69号线上有什么 qroner 2018.02.02 14:33 #1126 唷,还以为没人反应呢。 这里是代码的这一部分。 66 double Volatility(int _period){67 double summ = 0;68 for(int i=1; i<=_period; i++)69 summ+=MathAbs(High[i]-Low[i])70 return(NormalizeDouble(summ/_period, Digits))71 } 谢谢你的提示 Konstantin Erin 2018.02.02 14:54 #1127 qroner:唷,还以为没人反应呢。这里是代码的这一部分。66 double Volatility(int _period){67 double summ = 0;68 for(int i=1; i<=_period; i++)69 summ+=MathAbs(High[i]-Low[i])70 return(NormalizeDouble(summ/_period, Digits))71 }谢谢你的提示。一切都很清楚。错误在于summ+=MathAbs(High[i]-Low[i])这一行;从边缘开始计算25个位置可能会返回到High[i]。 我写的是Alert(Low[-1]);编译器需要一个正数。我写了int n=-1; Alert(Low[n]); - 当执行Array out of rangre时。但是我怎么会<0呢?也许是缺乏历史数据的缘故吧,检查一下日期间隔,从...到... Alex sha 2018.02.05 06:02 #1128 请告知选择哪个交易商或确切的服务器名称。 Konstantin Nikitin 2018.02.05 07:10 #1129 qroner:唷,还以为没人反应呢。 这里是代码的这一部分。 66 double Volatility(int _period){67 double summ = 0;68 for(int i=1; i<=_period; i++)69 summ+=MathAbs(High[i]-Low[i])70 return(NormalizeDouble(summ/_period, Digits))71 } 谢谢你的提示。 double Volatility(int _period) { double summ = 0; for(int i=1; i<=_period; i++) if(ArraySize(High) > i && ArraySize(Low) > i) summ+=MathAbs(High[i]-Low[i]); return(NormalizeDouble(summ/_period, Digits)); }double Volatility(int _period) { double summ = 0; int src = MathMin(MathMin(_period, ArraySize(High)), ArraySize(Low)); for(int i=1; i<src; i++) summ+=MathAbs(High[i]-Low[i]); return(NormalizeDouble(summ/_period, Digits)); } 似乎_period 的值有时大于数组项目。因此,阵列超限。 选择其中一个选项。 Rewerpool 2018.02.05 08:26 #1130 下午好!我如何创建一个触发器? 例如,我需要这个条件if(iClose(NULL,HTF,4)<BlueLine)如果它被执行 DayDown = 1 !问:如何将DayDown设为1,并在第二天才轮询? 1...106107108109110111112113114115116117118119120...260 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
,我需要我的EA打开所有的订单(卖出和买入),即使它们已经打开了,而且它不会在所有的条件收敛时做,而是在下一个蜡烛上做!请帮助我......,我很感激。
目前,我的代码里有这个。
{
if(NewBar()
{
//算法本身等等。
}
}
bool NewBar()
{
staticdatetimelastbar=0;
datetime curbar=iTime(Symbol(),0,0);
if(lastbar!=curbar)
{
lastbar=curbar;
return(true);
}
return(false);
}
}
这里有一个功能。
我只是认为问题不在代码中,因为在标准模式下没有错误。
总之,似乎没有人回答......。
总之,似乎没有人回答......。
你发布的函数中似乎没有任何错误。我对使用OrderTicket()!=Ticket来筛出具有相同票据的相邻订单感到困惑。检查并确保没有这样的命令。如果(69,25) 是由编译器指定的,请看第69行的第25位 - 错误就在那里。键入这一行。
我真的想知道他在69号线上有什么
唷,还以为没人反应呢。
这里是代码的这一部分。
66 double Volatility(int _period){
67 double summ = 0;
68 for(int i=1; i<=_period; i++)
69 summ+=MathAbs(High[i]-Low[i])
70 return(NormalizeDouble(summ/_period, Digits))
71 }
谢谢你的提示
唷,还以为没人反应呢。
这里是代码的这一部分。
66 double Volatility(int _period){
67 double summ = 0;
68 for(int i=1; i<=_period; i++)
69 summ+=MathAbs(High[i]-Low[i])
70 return(NormalizeDouble(summ/_period, Digits))
71 }
谢谢你的提示。
一切都很清楚。错误在于summ+=MathAbs(High[i]-Low[i])这一行;从边缘开始计算25个位置可能会返回到High[i]。
我写的是Alert(Low[-1]);编译器需要一个正数。我写了int n=-1; Alert(Low[n]); - 当执行Array out of rangre时。但是我怎么会<0呢?也许是缺乏历史数据的缘故吧,检查一下日期间隔,从...到...
请告知选择哪个交易商或确切的服务器名称。
唷,还以为没人反应呢。
这里是代码的这一部分。
66 double Volatility(int _period){
67 double summ = 0;
68 for(int i=1; i<=_period; i++)
69 summ+=MathAbs(High[i]-Low[i])
70 return(NormalizeDouble(summ/_period, Digits))
71 }
谢谢你的提示。
似乎_period 的值有时大于数组项目。因此,阵列超限。
选择其中一个选项。