Dos años funciona, y luego pum y pum, creo que hay muchos pedidos en ese punto. Aquí está el código, lo que está mal aquí (resaltado en negrita) - aconsejar - por favor
Dos años funciona, y luego pum y pum, creo que hay muchos pedidos en ese punto. Aquí está el código, lo que está mal aquí (resaltado en negrita) - aconsejar - por favor
Está saliendo de la matriz OrderBU.
Añadido: utilizar estilos - esto ayudará a que el código sea legible.
Dos años funciona, y luego pum y pum, creo que hay muchos pedidos en ese punto. Aquí está el código, lo que está mal aquí (resaltado en negrita) - aconsejar - por favor
Su error "Out of array" significa que el EA pide un valor mayor que el array está inicializado o el array está procesado,
Por ejemplo, si el array procesa 6 parámetros, en la inicialización deberían ser 6 (de 0 a 5 lo que estamos procesando), el conteo es desde cero y la inicialización es desde 1.
Gracias por el consejo, la ventana del array es decente ArrayResize(OrderBU,1000); ¿cómo es que...
Le pagas a la gente, ellos lo escriben, y luego te sientas y lo analizas.
Como "han pasado dos años", significa que el código fue escrito para el viejo mql4, y salir del array era "posible" allí, ahora no lo es, por lo que ahora es un error. Y tienes razón.
Artyom Trishkin: Como "hace dos años que funciona", significa que el código fue escrito para el viejo mql4, donde los desbordamientos de array estaban "permitidos", ahora no lo están, ahora es un error. Tienes razón.
Dos años - en probador :) Y el código de demostración lleva un año funcionando. había un montón de reglas de colapso allí, cuando tuve que conectarlo debido a las clases externas... Y ahora aquí hay un error de este tipo, que no sé cómo arreglar - voy a aumentar el tamaño de la matriz de un dígito, por ahora. ¿Por qué no hay un tamaño automático, como para un buffer gráfico, o lo hay?
Hola, tengo este error - del registro del probador de la estrategia:
2015.08.26 14:09:47.704 2001.08.29 16:15 matriz fuera de rango en 'Kamikadze_MA_V_04_42_Fibo_03.mq4' (929,29)
(929,29) - ¿es una cadena y el número de secuencia del carácter en la cadena?
Hola, tengo este error - del registro del probador de la estrategia:
2015.08.26 14:09:47.704 2001.08.29 16:15 matriz fuera de rango en 'Kamikadze_MA_V_04_42_Fibo_03.mq4' (929,29)
(929,29) - ¿es una cadena y el número de secuencia del carácter en la cadena?
Hola, tengo este error - del registro del probador de la estrategia:
2015.08.26 14:09:47.704 2001.08.29 16:15 matriz fuera de rango en 'Kamikadze_MA_V_04_42_Fibo_03.mq4' (929,29)
(929,29) - ¿es una cadena y el número de secuencia del carácter en la cadena?
Sí.
Dos años funciona, y luego pum y pum, creo que hay muchos pedidos en ese punto. Aquí está el código, lo que está mal aquí (resaltado en negrita) - aconsejar - por favor
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
}
}
Dos años funciona, y luego pum y pum, creo que hay muchos pedidos en ese punto. Aquí está el código, lo que está mal aquí (resaltado en negrita) - aconsejar - por favor
Está saliendo de la matriz OrderBU.
Añadido: utilizar estilos - esto ayudará a que el código sea legible.
Dos años funciona, y luego pum y pum, creo que hay muchos pedidos en ese punto. Aquí está el código, lo que está mal aquí (resaltado en negrita) - aconsejar - por favor
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
}
}
Su error "Out of array" significa que el EA pide un valor mayor que el array está inicializado o el array está procesado,
Por ejemplo, si el array procesa 6 parámetros, en la inicialización deberían ser 6 (de 0 a 5 lo que estamos procesando), el conteo es desde cero y la inicialización es desde 1.
Está saliendo de la matriz OrderBU.
Añadido: utilizar estilos - esto ayudará a que el código sea legible.
Gracias por el consejo, la ventana del array es decente ArrayResize(OrderBU,1000); ¿cómo es que...
Le pagas a la gente, ellos lo escriben, y luego te sientas y lo analizas.
Gracias por el consejo, la ventana del array es decente ArrayResize(OrderBU,1000); ¿cómo es que...
Le pagas a la gente, ellos lo escriben, y luego te sientas y lo analizas.
Como "hace dos años que funciona", significa que el código fue escrito para el viejo mql4, donde los desbordamientos de array estaban "permitidos", ahora no lo están, ahora es un error. Tienes razón.