Oh, lo siento. Se ha confundido la comparación y la asignación. Todo está bien ahora. Me he vuelto loco desde que me senté a escribir. Estoy escribiendo mal y estresándome, y mi cabeza no funciona en absoluto, aunque eso ya lo sabía, claro.
La función bCheckOrders() después de abrir una orden da como resultado que no hay órdenes, por lo que sigue abriendo
Oh, Dios mío. ¿Dónde dice eso?
¿quizás no he leído bien el registro?
La funciónbCheckOrders()después de abrir una orden imprime que no hay ninguna orden, por lo tanto la apertura continúa - por void OnTick() - entiendo que esto no es cierto.
hasta que se cierre el pedido bCheckOrders() - no puede dar a conocer que no hay ningún pedido.
La funciónbCheckOrders()después de abrir una orden da como resultado que no hay ninguna orden, por lo tanto la apertura continúa - por void OnTick() - entiendo que esto no es cierto.
hasta que se cierre la orden bCheckOrders()-no puede mostrar la ausencia de una orden.
bCheckOrders() no funciona correctamente.
Ya te escribí una función para el recuento de órdenes.
Hazlo así y debería funcionar.
En lugar de bCheckOrders(), ponga esta función
//+------------------------------------------------------------------+//| Подсчет открытых ордеров |//+------------------------------------------------------------------+int CountOrders()
{
int cnt=0;
int i=OrdersTotal()-1;
for(int pos=i;pos>=0;pos--)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==_Symbol)
{
if(OrderMagicNumber()==Magic) cnt++;
}
}
}
return(cnt);
}
y en OnTick(), en lugar de bCheckOrders(), escriba esto
//+------------------------------------------------------------------+voidOnTick()
{
// Получим значение индикатора
dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.// Если нет открытых ордеров, то входим в условиеif(CountOrders()==0)
{
// Если появился сигнал на покупку, то откроем ордер на покупкуif(bSignalBuy() == true)
vOrderOpenBuy();
// Если появился сигнал на продажу, то откроем ордер на продажуif(bSignalSell() == true)
vOrderOpenSell();
}
// Проверяем, вышел ли текущий баланс по открытому ордеру за вилку из внешних переменных CountLoss и CountProfitif(GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*-1)
{
// Если да, то закроем ордер по текущей цене, не дожидаясь стопа или тейка
CloseOrder();
}
DrawLABEL("lab_Take",1,5,0,Color(GetProfitFromStart()>0,Lime,Red),StringConcatenate("Profit: ",DoubleToStr(GetProfitFromStart(),2),AC));
}
hecho. no se diferencia en absoluto de la revista anterior.
ni errores, ni nada.
¿No necesitas soportes para el bucle? Parece que sólo cuando no hay más de una línea no se necesitan.
UPD:
Ah lo tengo, hay una línea.
No debería haber ningún error, muestra el registro
Aquí están las últimas páginas del libro de registro de MT4.
¿es necesario este registro?
Aquí están las últimas páginas del libro de registro de MT4.
¿es necesario este registro?
Aquí está la respuesta en su registro)
La función bCheckOrders() después de abrir una orden da como resultado que no hay órdenes, por lo que siguen abriendo
Y mi cabeza no funciona en absoluto, aunque ya lo sabía, por supuesto.
Tienes una forma divertida de decirlo)))
Tienes una forma divertida de decirlo)))
Es decir, sabía cómo escribir la asignación y la comparación, pero aún así se confundía. Un lío.
Eso no es lo que quiero decir...
pribludilsa #:
y mi cabeza no funciona para nada, aunque eso lo sabía por supuesto.
Aquí está la respuesta en su registro)
La función bCheckOrders() después de abrir una orden da como resultado que no hay órdenes, por lo que sigue abriendo
Oh, Dios mío. ¿Dónde dice eso?
¿quizás no he leído bien el registro?
La funciónbCheckOrders()después de abrir una orden imprime que no hay ninguna orden, por lo tanto la apertura continúa - por void OnTick() - entiendo que esto no es cierto.
hasta que se cierre el pedido bCheckOrders() - no puede dar a conocer que no hay ningún pedido.
Oh, mierda. ¿Dónde dice eso?
¿quizás no he leído bien el registro?
La funciónbCheckOrders()después de abrir una orden da como resultado que no hay ninguna orden, por lo tanto la apertura continúa - por void OnTick() - entiendo que esto no es cierto.
hasta que se cierre la orden bCheckOrders()-no puede mostrar la ausencia de una orden.
bCheckOrders() no funciona correctamente.
Ya te escribí una función para el recuento de órdenes.
Hazlo así y debería funcionar.
En lugar de bCheckOrders(), ponga esta función
y en OnTick(), en lugar de bCheckOrders(), escriba esto