初学者的问题 MQL5 MT5 MetaTrader 5 - 页 418 1...411412413414415416417418419420421422423424425...1503 新评论 Aleksey Vyazmikin 2015.08.26 11:16 #4171 你好,得到了这个错误--来自策略测试器 的日志。2015.08.26 14:09:47.704 2001.08.29 16:15 'Kamikadze_MA_V_04_42_Fibo_03.mq4'中的数组超出范围(929,29)。(929,29) - 这是一个字符串,字符串中的字符的序列号? Vladimir Karputov 2015.08.26 11:18 #4172 -Aleks-:你好,得到了这个错误--来自策略测试器 的日志。2015.08.26 14:09:47.704 2001.08.29 16:15 'Kamikadze_MA_V_04_42_Fibo_03.mq4'中的数组超出范围(929,29)。(929,29) - 这是一个字符串,字符串中的字符的序列号? 是的。 Leanid Aladzyeu 2015.08.26 11:21 #4173 -Aleks-:你好,得到了这个错误--来自策略测试器 的日志。2015.08.26 14:09:47.704 2001.08.29 16:15 'Kamikadze_MA_V_04_42_Fibo_03.mq4'中的数组超出范围(929,29)。(929,29) - 这是一个字符串,字符串中的字符的序列号? 通常情况下,编译器并不直接指出错误,但它就在附近的某个地方) Aleksey Vyazmikin 2015.08.26 11:27 #4174 Karputov Vladimir: 是的。两年的时间,它的工作,然后砰的一声,错误 - 我认为在这一点上有很多的订单。这是代码,这里有什么问题(用黑体字突出显示)--请告知--。 if(!CloseOk) { if(OrderType()==OP_BUY) { //Print("BUY=",OrderTicket()); nBuy++; if(lastTimeBuy<1 || lastTimeBuy<OrderOpenTime())lastTimeBuy=OrderOpenTime(); //if (TP_Error<stplvl/Point)TP_Error=stplvl/Point; //if (OrderOpenPrice()+stplvl>MAT)NewTP=Ask+TP_Error*Point;else NewTP=MAT; //if (TP_Error==0)NewTP=MAT; NewTP=NormalizeDouble(MAT,Digits); if(MathAbs(NewTP-OrderTakeProfit())>1*Point) {//модифицируем ТП if(swCommentary) Print("Модификация Тейк-Профита BUY "+DoubleToStr(NewTP,Digits)+" OPEN="+OrderOpenPrice()); ModifyStopTake(0,stpls,NewTP);takepr=NewTP; } if(BU!=0 && OrderStopLoss()!=(OrderOpenPrice()+BU*Point) && //безубыток Bid>BUbuy && Ask>(OrderOpenPrice()+BU*Point+stplvl) && (Levl_Zerro==0 || (maMirrorOBuy<(OrderOpenPrice()-Levl_Zerro*Point)))) { if(swCommentary)Print("Безубыток BUY "+DoubleToStr(OrderOpenPrice()+BU*Point,Digits)); if(maMBlock!=1){Print("BUY 2");ModifyStopTake(0,OrderOpenPrice()+BU*Point,takepr);stpls=OrderOpenPrice()+BU*Point;} OrderBU[NorderBU]=OrderTicket();NorderBU++; }//maMBlock!=1&& if(BarSL!=0 && iBarShift(NULL,0,OrderOpenTime())>=BarSL) { if(swCommentary)Print("BARSL BUY");ClosePosBySelect(); if(blockBarSL>0) { YesBarSLBuy=0;if(swCommentary)Print("blockBARSL BUY"); //ClosePositions("NULL",OP_BUY,Magic); ClosePosBySelect(); } }//BARSL } if(OrderType()==OP_SELL) { //Print("SELL=",OrderTicket()); nSell++; if(lastTimeSell<1 || lastTimeSell<OrderOpenTime())lastTimeSell=OrderOpenTime(); //if (TP_Error<stplvl/Point)TP_Error=stplvl/Point; //if (OrderOpenPrice()-stplvl<MAT)NewTP=Bid-TP_Error*Point;else NewTP=MAT; //if (TP_Error==0)NewTP=MAT; NewTP=NormalizeDouble(MAT,Digits); if(MathAbs(NewTP-OrderTakeProfit())>1*Point) {//модифицируем ТП if(swCommentary) Print("Модификация Тейк-Профита SELL "+DoubleToStr(NewTP,Digits)+" OPEN="+OrderOpenPrice()+ " STOP="+OrderStopLoss()); ModifyStopTake(0,stpls,NewTP);takepr=NewTP; } if(BU!=0 && OrderStopLoss()!=(OrderOpenPrice()-BU*Point) && Bid<BUsell && //безубыток Bid<(OrderOpenPrice()-BU*Point-stplvl) && (Levl_Zerro==0 || ((OrderOpenPrice()+Levl_Zerro*Point)<maMirrorOSell))) { if(swCommentary)Print("Безубыток SELL "+DoubleToStr(OrderOpenPrice()-BU*Point,Digits)); if(maMBlock!=1){Print("SELL 2");ModifyStopTake(0,OrderOpenPrice()-BU*Point,takepr);stpls=OrderOpenPrice()-BU*Point;} OrderBU[NorderBU]=OrderTicket();NorderBU++; } // maMBlock!=1&& if(BarSL!=0 && iBarShift(NULL,0,OrderOpenTime())>=BarSL) { if(swCommentary)Print("BARSL SELL"); ClosePosBySelect(); if(blockBarSL>0) { YesBarSLSell=0;if(swCommentary)Print("BARSL SELL"); //ClosePositions("NULL",OP_SELL,Magic); ClosePosBySelect(); } }//BARSL } } Questions from Beginners MQL5 还是不懂,请帮忙看下我的程序。谢谢各位。 求救!关于两个EA同时运行的问题。 Vladimir Karputov 2015.08.26 11:33 #4175 -Aleks-:两年的时间,它的工作,然后砰的一声,错误 - 我认为在这一点上有很多的订单。这是代码,这里有什么问题(用黑体字突出显示)--请告知--。你要到OrderBU阵列之外。新增: 使用样式设计- 这将有助于使代码可读。 Leanid Aladzyeu 2015.08.26 11:54 #4176 -Aleks-:两年的时间,它的工作,然后砰的一声,错误 - 我认为在这一点上有很多的订单。这是代码,这里有什么问题(用黑体字突出显示)--请告知--。 if(!CloseOk) { if(OrderType()==OP_BUY) { //Print("BUY=",OrderTicket()); nBuy++; if(lastTimeBuy<1 || lastTimeBuy<OrderOpenTime())lastTimeBuy=OrderOpenTime(); //if (TP_Error<stplvl/Point)TP_Error=stplvl/Point; //if (OrderOpenPrice()+stplvl>MAT)NewTP=Ask+TP_Error*Point;else NewTP=MAT; //if (TP_Error==0)NewTP=MAT; NewTP=NormalizeDouble(MAT,Digits); if(MathAbs(NewTP-OrderTakeProfit())>1*Point) {//модифицируем ТП if(swCommentary) Print("Модификация Тейк-Профита BUY "+DoubleToStr(NewTP,Digits)+" OPEN="+OrderOpenPrice()); ModifyStopTake(0,stpls,NewTP);takepr=NewTP; } if(BU!=0 && OrderStopLoss()!=(OrderOpenPrice()+BU*Point) && //безубыток Bid>BUbuy && Ask>(OrderOpenPrice()+BU*Point+stplvl) && (Levl_Zerro==0 || (maMirrorOBuy<(OrderOpenPrice()-Levl_Zerro*Point)))) { if(swCommentary)Print("Безубыток BUY "+DoubleToStr(OrderOpenPrice()+BU*Point,Digits)); if(maMBlock!=1){Print("BUY 2");ModifyStopTake(0,OrderOpenPrice()+BU*Point,takepr);stpls=OrderOpenPrice()+BU*Point;} OrderBU[NorderBU]=OrderTicket();NorderBU++; }//maMBlock!=1&& if(BarSL!=0 && iBarShift(NULL,0,OrderOpenTime())>=BarSL) { if(swCommentary)Print("BARSL BUY");ClosePosBySelect(); if(blockBarSL>0) { YesBarSLBuy=0;if(swCommentary)Print("blockBARSL BUY"); //ClosePositions("NULL",OP_BUY,Magic); ClosePosBySelect(); } }//BARSL } if(OrderType()==OP_SELL) { //Print("SELL=",OrderTicket()); nSell++; if(lastTimeSell<1 || lastTimeSell<OrderOpenTime())lastTimeSell=OrderOpenTime(); //if (TP_Error<stplvl/Point)TP_Error=stplvl/Point; //if (OrderOpenPrice()-stplvl<MAT)NewTP=Bid-TP_Error*Point;else NewTP=MAT; //if (TP_Error==0)NewTP=MAT; NewTP=NormalizeDouble(MAT,Digits); if(MathAbs(NewTP-OrderTakeProfit())>1*Point) {//модифицируем ТП if(swCommentary) Print("Модификация Тейк-Профита SELL "+DoubleToStr(NewTP,Digits)+" OPEN="+OrderOpenPrice()+ " STOP="+OrderStopLoss()); ModifyStopTake(0,stpls,NewTP);takepr=NewTP; } if(BU!=0 && OrderStopLoss()!=(OrderOpenPrice()-BU*Point) && Bid<BUsell && //безубыток Bid<(OrderOpenPrice()-BU*Point-stplvl) && (Levl_Zerro==0 || ((OrderOpenPrice()+Levl_Zerro*Point)<maMirrorOSell))) { if(swCommentary)Print("Безубыток SELL "+DoubleToStr(OrderOpenPrice()-BU*Point,Digits)); if(maMBlock!=1){Print("SELL 2");ModifyStopTake(0,OrderOpenPrice()-BU*Point,takepr);stpls=OrderOpenPrice()-BU*Point;} OrderBU[NorderBU]=OrderTicket();NorderBU++; } // maMBlock!=1&& if(BarSL!=0 && iBarShift(NULL,0,OrderOpenTime())>=BarSL) { if(swCommentary)Print("BARSL SELL"); ClosePosBySelect(); if(blockBarSL>0) { YesBarSLSell=0;if(swCommentary)Print("BARSL SELL"); //ClosePositions("NULL",OP_SELL,Magic); ClosePosBySelect(); } }//BARSL } }你的错误 "Out of array "意味着EA要求的值大于数组初始化 或数组的处理。例如,如果数组处理6个参数,在初始化中应该是6(从0到5我们要处理的内容),计数是从0开始,初始化是从1开始。 Aleksey Vyazmikin 2015.08.26 11:56 #4177 Karputov Vladimir:你正在走出OrderBU阵列。新增: 使用样式设计- 这将有助于使代码可读。谢谢你的提示,数组窗口是体面的 ArrayResize(OrderBU,1000); 怎么...你付钱给别人--他们写出来,然后你坐下来仔细琢磨。 Leanid Aladzyeu 2015.08.26 18:49 #4178 有2位数和4位数的经纪人,金属的小数位数是多少? Artyom Trishkin 2015.08.26 19:21 #4179 -Aleks-:谢谢你的提示,数组窗口是体面的 ArrayResize(OrderBU,1000); 怎么...你付钱给别人--他们写出来,然后你坐下来仔细琢磨。 既然 "两年过去了",这意味着代码是为老的mql4写的,在那里走出数组 是 "可能的",现在不是了,所以现在是一个错误。你是对的。 Aleksey Vyazmikin 2015.08.26 19:36 #4180 Artyom Trishkin: 既然 "两年来一直在工作",这意味着代码是为老的mql4写的,在那里数组超限是 "允许的",现在不是了,现在是一个错误。你是对的。 两年了--在测试器中 :)而演示代码已经工作了一年。那里有很多崩溃的规则,当我不得不因为外部类而连接它时......而现在这里有这样一个错误,我不知道如何解决--我暂时将数组的大小 增加一位数。为什么没有像图形缓冲区那样的自动尺寸,或者有吗? 1...411412413414415416417418419420421422423424425...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你好,得到了这个错误--来自策略测试器 的日志。
2015.08.26 14:09:47.704 2001.08.29 16:15 'Kamikadze_MA_V_04_42_Fibo_03.mq4'中的数组超出范围(929,29)。
(929,29) - 这是一个字符串,字符串中的字符的序列号?
你好,得到了这个错误--来自策略测试器 的日志。
2015.08.26 14:09:47.704 2001.08.29 16:15 'Kamikadze_MA_V_04_42_Fibo_03.mq4'中的数组超出范围(929,29)。
(929,29) - 这是一个字符串,字符串中的字符的序列号?
你好,得到了这个错误--来自策略测试器 的日志。
2015.08.26 14:09:47.704 2001.08.29 16:15 'Kamikadze_MA_V_04_42_Fibo_03.mq4'中的数组超出范围(929,29)。
(929,29) - 这是一个字符串,字符串中的字符的序列号?
是的。
两年的时间,它的工作,然后砰的一声,错误 - 我认为在这一点上有很多的订单。这是代码,这里有什么问题(用黑体字突出显示)--请告知--。
if(!CloseOk)
{
if(OrderType()==OP_BUY)
{
//Print("BUY=",OrderTicket());
nBuy++;
if(lastTimeBuy<1 || lastTimeBuy<OrderOpenTime())lastTimeBuy=OrderOpenTime();
//if (TP_Error<stplvl/Point)TP_Error=stplvl/Point;
//if (OrderOpenPrice()+stplvl>MAT)NewTP=Ask+TP_Error*Point;else NewTP=MAT;
//if (TP_Error==0)NewTP=MAT;
NewTP=NormalizeDouble(MAT,Digits);
if(MathAbs(NewTP-OrderTakeProfit())>1*Point)
{//модифицируем ТП
if(swCommentary)
Print("Модификация Тейк-Профита BUY "+DoubleToStr(NewTP,Digits)+" OPEN="+OrderOpenPrice());
ModifyStopTake(0,stpls,NewTP);takepr=NewTP;
}
if(BU!=0 && OrderStopLoss()!=(OrderOpenPrice()+BU*Point) && //безубыток
Bid>BUbuy && Ask>(OrderOpenPrice()+BU*Point+stplvl) &&
(Levl_Zerro==0 || (maMirrorOBuy<(OrderOpenPrice()-Levl_Zerro*Point))))
{
if(swCommentary)Print("Безубыток BUY "+DoubleToStr(OrderOpenPrice()+BU*Point,Digits));
if(maMBlock!=1){Print("BUY 2");ModifyStopTake(0,OrderOpenPrice()+BU*Point,takepr);stpls=OrderOpenPrice()+BU*Point;}
OrderBU[NorderBU]=OrderTicket();NorderBU++;
}//maMBlock!=1&&
if(BarSL!=0 && iBarShift(NULL,0,OrderOpenTime())>=BarSL)
{
if(swCommentary)Print("BARSL BUY");ClosePosBySelect();
if(blockBarSL>0)
{
YesBarSLBuy=0;if(swCommentary)Print("blockBARSL BUY");
//ClosePositions("NULL",OP_BUY,Magic);
ClosePosBySelect();
}
}//BARSL
}
if(OrderType()==OP_SELL)
{
//Print("SELL=",OrderTicket());
nSell++;
if(lastTimeSell<1 || lastTimeSell<OrderOpenTime())lastTimeSell=OrderOpenTime();
//if (TP_Error<stplvl/Point)TP_Error=stplvl/Point;
//if (OrderOpenPrice()-stplvl<MAT)NewTP=Bid-TP_Error*Point;else NewTP=MAT;
//if (TP_Error==0)NewTP=MAT;
NewTP=NormalizeDouble(MAT,Digits);
if(MathAbs(NewTP-OrderTakeProfit())>1*Point)
{//модифицируем ТП
if(swCommentary)
Print("Модификация Тейк-Профита SELL "+DoubleToStr(NewTP,Digits)+" OPEN="+OrderOpenPrice()+
" STOP="+OrderStopLoss());
ModifyStopTake(0,stpls,NewTP);takepr=NewTP;
}
if(BU!=0 && OrderStopLoss()!=(OrderOpenPrice()-BU*Point) && Bid<BUsell && //безубыток
Bid<(OrderOpenPrice()-BU*Point-stplvl) &&
(Levl_Zerro==0 || ((OrderOpenPrice()+Levl_Zerro*Point)<maMirrorOSell)))
{
if(swCommentary)Print("Безубыток SELL "+DoubleToStr(OrderOpenPrice()-BU*Point,Digits));
if(maMBlock!=1){Print("SELL 2");ModifyStopTake(0,OrderOpenPrice()-BU*Point,takepr);stpls=OrderOpenPrice()-BU*Point;}
OrderBU[NorderBU]=OrderTicket();NorderBU++;
} // maMBlock!=1&&
if(BarSL!=0 && iBarShift(NULL,0,OrderOpenTime())>=BarSL)
{
if(swCommentary)Print("BARSL SELL");
ClosePosBySelect();
if(blockBarSL>0)
{
YesBarSLSell=0;if(swCommentary)Print("BARSL SELL");
//ClosePositions("NULL",OP_SELL,Magic);
ClosePosBySelect();
}
}//BARSL
}
}
两年的时间,它的工作,然后砰的一声,错误 - 我认为在这一点上有很多的订单。这是代码,这里有什么问题(用黑体字突出显示)--请告知--。
你要到OrderBU阵列之外。
新增: 使用样式设计- 这将有助于使代码可读。
两年的时间,它的工作,然后砰的一声,错误 - 我认为在这一点上有很多的订单。这是代码,这里有什么问题(用黑体字突出显示)--请告知--。
if(!CloseOk)
{
if(OrderType()==OP_BUY)
{
//Print("BUY=",OrderTicket());
nBuy++;
if(lastTimeBuy<1 || lastTimeBuy<OrderOpenTime())lastTimeBuy=OrderOpenTime();
//if (TP_Error<stplvl/Point)TP_Error=stplvl/Point;
//if (OrderOpenPrice()+stplvl>MAT)NewTP=Ask+TP_Error*Point;else NewTP=MAT;
//if (TP_Error==0)NewTP=MAT;
NewTP=NormalizeDouble(MAT,Digits);
if(MathAbs(NewTP-OrderTakeProfit())>1*Point)
{//модифицируем ТП
if(swCommentary)
Print("Модификация Тейк-Профита BUY "+DoubleToStr(NewTP,Digits)+" OPEN="+OrderOpenPrice());
ModifyStopTake(0,stpls,NewTP);takepr=NewTP;
}
if(BU!=0 && OrderStopLoss()!=(OrderOpenPrice()+BU*Point) && //безубыток
Bid>BUbuy && Ask>(OrderOpenPrice()+BU*Point+stplvl) &&
(Levl_Zerro==0 || (maMirrorOBuy<(OrderOpenPrice()-Levl_Zerro*Point))))
{
if(swCommentary)Print("Безубыток BUY "+DoubleToStr(OrderOpenPrice()+BU*Point,Digits));
if(maMBlock!=1){Print("BUY 2");ModifyStopTake(0,OrderOpenPrice()+BU*Point,takepr);stpls=OrderOpenPrice()+BU*Point;}
OrderBU[NorderBU]=OrderTicket();NorderBU++;
}//maMBlock!=1&&
if(BarSL!=0 && iBarShift(NULL,0,OrderOpenTime())>=BarSL)
{
if(swCommentary)Print("BARSL BUY");ClosePosBySelect();
if(blockBarSL>0)
{
YesBarSLBuy=0;if(swCommentary)Print("blockBARSL BUY");
//ClosePositions("NULL",OP_BUY,Magic);
ClosePosBySelect();
}
}//BARSL
}
if(OrderType()==OP_SELL)
{
//Print("SELL=",OrderTicket());
nSell++;
if(lastTimeSell<1 || lastTimeSell<OrderOpenTime())lastTimeSell=OrderOpenTime();
//if (TP_Error<stplvl/Point)TP_Error=stplvl/Point;
//if (OrderOpenPrice()-stplvl<MAT)NewTP=Bid-TP_Error*Point;else NewTP=MAT;
//if (TP_Error==0)NewTP=MAT;
NewTP=NormalizeDouble(MAT,Digits);
if(MathAbs(NewTP-OrderTakeProfit())>1*Point)
{//модифицируем ТП
if(swCommentary)
Print("Модификация Тейк-Профита SELL "+DoubleToStr(NewTP,Digits)+" OPEN="+OrderOpenPrice()+
" STOP="+OrderStopLoss());
ModifyStopTake(0,stpls,NewTP);takepr=NewTP;
}
if(BU!=0 && OrderStopLoss()!=(OrderOpenPrice()-BU*Point) && Bid<BUsell && //безубыток
Bid<(OrderOpenPrice()-BU*Point-stplvl) &&
(Levl_Zerro==0 || ((OrderOpenPrice()+Levl_Zerro*Point)<maMirrorOSell)))
{
if(swCommentary)Print("Безубыток SELL "+DoubleToStr(OrderOpenPrice()-BU*Point,Digits));
if(maMBlock!=1){Print("SELL 2");ModifyStopTake(0,OrderOpenPrice()-BU*Point,takepr);stpls=OrderOpenPrice()-BU*Point;}
OrderBU[NorderBU]=OrderTicket();NorderBU++;
} // maMBlock!=1&&
if(BarSL!=0 && iBarShift(NULL,0,OrderOpenTime())>=BarSL)
{
if(swCommentary)Print("BARSL SELL");
ClosePosBySelect();
if(blockBarSL>0)
{
YesBarSLSell=0;if(swCommentary)Print("BARSL SELL");
//ClosePositions("NULL",OP_SELL,Magic);
ClosePosBySelect();
}
}//BARSL
}
}
你的错误 "Out of array "意味着EA要求的值大于数组初始化 或数组的处理。
例如,如果数组处理6个参数,在初始化中应该是6(从0到5我们要处理的内容),计数是从0开始,初始化是从1开始。
你正在走出OrderBU阵列。
新增: 使用样式设计- 这将有助于使代码可读。
谢谢你的提示,数组窗口是体面的 ArrayResize(OrderBU,1000); 怎么...
你付钱给别人--他们写出来,然后你坐下来仔细琢磨。
谢谢你的提示,数组窗口是体面的 ArrayResize(OrderBU,1000); 怎么...
你付钱给别人--他们写出来,然后你坐下来仔细琢磨。
既然 "两年来一直在工作",这意味着代码是为老的mql4写的,在那里数组超限是 "允许的",现在不是了,现在是一个错误。你是对的。