//+------------------------------------------------------------------+//| передача параметров по ссылке |//+------------------------------------------------------------------+double SecondMethod(int &i,int &j)
{
double res;
//---
i*=2;
j/=2;
res=i+j;
//---return(res);
}
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---.int a=14,b=8;
Print("a и b перед вызовом:",a," ",b);
double d=SecondMethod(a,b);
Print("Результат выполнения функции ", d);Print("a и b после вызова:",a," ",b, " ",d);// или здесь. А можно и там и тут…
}
//+------------------------------------------------------------------+
¡Buenos días y buen humor a todos! Sigo estudiando el lenguaje de programación MQL5. Escribí un pequeño script para calcular el número total de posiciones abiertas e imprimir algunos de sus parámetros, incluyendo códigos de error, si los hay:
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
ResetLastError(); // установим значение предопределенной переменной _LastError в нольint pos_total = PositionsTotal(); // объявим переменную для хранения количества открытых позицийif(pos_total > 0) // если есть открытые позиции
{
for(int i=0; i<pos_total; i++) // запустим цикл и переберём все открытые позиции
{
if(PositionGetSymbol(i) == _Symbol) // выберем все открытые позиции по текущему символу
{
ulong pos_id = PositionGetInteger(POSITION_IDENTIFIER);
double pos_price = PositionGetDouble(POSITION_PRICE_OPEN);
double pos_tp = PositionGetDouble(POSITION_TP);
double pos_sl = PositionGetDouble(POSITION_SL);
PrintFormat("Позиция #%d цена = %G тейк-профит = %G стоп-лосс = %G", pos_id, pos_price, pos_tp, pos_sl);
}
else// если выбрать позицию не удалось
{
PrintFormat("Не удалось выбрать позицию по символу %s. Ошибка = ", _Symbol, GetLastError());
}
}
}
}
//+------------------------------------------------------------------+
Lo ejecuté en un símbolo, donde hay posiciones abiertas. Funciona correctamente, la información se imprime correctamente. Siguiente. Comencé en el símbolo donde no hay posiciones abiertas. La información sobre el hecho de que no hay posiciones abiertas se muestra correctamente, pero el código de la causa del error, por alguna razón no. ¿Pueden ayudarme a entender por qué no se muestra el código de error?
Lo he iniciado en un símbolo con posiciones abiertas. Funciona correctamente, la información se muestra correctamente. Siguiente. Lo ejecuté sobre un símbolo sin posiciones abiertas. La información sobre el hecho de que no hay posiciones abiertas se muestra correctamente, pero el código de la causa del error, por alguna razón no. ¿Pueden ayudarme a entender por qué no se muestra el código de error?
¿De dónde viene el código de error si no hay ningún error? Es sólo el símbolo incorrecto para la posición.
¿Por qué habría un código de error si no hay error? Es sólo el símbolo incorrecto para la posición.
Gracias por la respuesta. Esperaba que al menos se mostrara este código de error:
ERR_TRADE_POSITION_NOT_FOUND
4753
Posición no encontrada
No estoy de acuerdo en lo del símbolo. El símbolo es exactamente aquel en cuyo gráfico se lanzó este script. Ahora no tengo posiciones abiertas en el símbolo GBPUSDrfd, pero tampoco hay error. ¡No está claro!
2023.11.2313:27:26.3857 (GBPUSDrfd,H1) Не удалось выбрать позицию по символу GBPUSDrfd. Ошибка =
2023.11.2313:27:26.3857 (GBPUSDrfd,H1) Не удалось выбрать позицию по символу GBPUSDrfd. Ошибка =
Gracias por la respuesta. Esperaba que se mostrara al menos este código de error:
ERR_TRADE_POSITION_NOT_FOUND
4753
Posición no encontrada
No estoy de acuerdo sobre el símbolo. El símbolo es exactamente el mismo, en el gráfico del que se lanzó este script. No tengo ninguna posición abierta en el símbolo GBPUSDrfd, pero tampoco tengo ningún error. ¡¡¡No entiendo!!!
Saludos, Vladimir.
¡Todas las posiciones han sido encontradas! Pero ninguna de las posiciones encontradas tiene el símbolo que necesitamos.
Lo imprimí. Tal como estaba, todo sigue igual.
Saludos, Vladimir.¿Impreso dónde?
¿Dónde se imprimió?
Ahora ya lo tengo claro. )) Gracias a todos.
Saludos, Vladimir.
Lo ejecuté en un símbolo, donde hay posiciones abiertas. Funciona correctamente, la información se imprime correctamente. Siguiente. Comencé en el símbolo donde no hay posiciones abiertas. La información sobre el hecho de que no hay posiciones abiertas se muestra correctamente, pero el código de la causa del error, por alguna razón no. ¿Pueden ayudarme a entender por qué no se muestra el código de error?
Saludos, Vladimir.
Lo he iniciado en un símbolo con posiciones abiertas. Funciona correctamente, la información se muestra correctamente. Siguiente. Lo ejecuté sobre un símbolo sin posiciones abiertas. La información sobre el hecho de que no hay posiciones abiertas se muestra correctamente, pero el código de la causa del error, por alguna razón no. ¿Pueden ayudarme a entender por qué no se muestra el código de error?
¿De dónde viene el código de error si no hay ningún error? Es sólo el símbolo incorrecto para la posición.
¿Por qué habría un código de error si no hay error? Es sólo el símbolo incorrecto para la posición.
Gracias por la respuesta. Esperaba que al menos se mostrara este código de error:
ERR_TRADE_POSITION_NOT_FOUND
4753
Posición no encontrada
No estoy de acuerdo en lo del símbolo. El símbolo es exactamente aquel en cuyo gráfico se lanzó este script. Ahora no tengo posiciones abiertas en el símbolo GBPUSDrfd, pero tampoco hay error. ¡No está claro!
Saludos, Vladimir.
Gracias por la respuesta. Esperaba que se mostrara al menos este código de error:
ERR_TRADE_POSITION_NOT_FOUND
4753
Posición no encontrada
No estoy de acuerdo sobre el símbolo. El símbolo es exactamente el mismo, en el gráfico del que se lanzó este script. No tengo ninguna posición abierta en el símbolo GBPUSDrfd, pero tampoco tengo ningún error. ¡¡¡No entiendo!!!
Saludos, Vladimir.
¡Todas las posiciones han sido encontradas! Pero ninguna de las posiciones encontradas tiene el símbolo que necesitamos.
Todas las posiciones encontradas. Pero ninguna de las posiciones encontradas tiene el símbolo que necesitamos.
Ahora ya lo tengo. ¡¡¡Gracias!!! Resulta que si hay al menos una posición abierta, el código de error 4753 nunca aparecerá.
Saludos, Vladimir.
Ya lo tengo. Gracias. Resulta que si hay al menos una posición abierta, el código de error 4753 nunca aparecerá.
Saludos, Vladimir.
Aparecerá si escribes lo siguiente
Aparecerá si escribe esto
Hola Alexey, una aclaración. ¿Es necesario usar PositionSelect() en lugar de un bucle, o he entendido algo mal otra vez?
Saludos, Vladimir.
Hola Alexey, una aclaración. ¿Es necesario utilizar PositionSelect() en lugar de un bucle o he entendido algo mal otra vez?
Saludos, Vladimir.
Puedes escribirlo como quieras, lo principal es escribir un caracter inexistente para obtener un error...