Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1474

 
Artyom Trishkin #:

Revista Experts

En Experts Magazine, limpieza estéril.

//---

En general hemos resuelto la causa del problema.

Queda la pregunta, como borrar de la memoria un recurso creado por kanvas al cerrar el programa.

Borro el objeto, tiene un nombre, pero el nombre del recurso es "protegido" y no se puede reconocer de ninguna manera.

Sí, la programación orientada a objetos es una cosa curiosa.

Al final he tenido que declarar canvas en el global en vez de en el cuerpo de la función y añadir canvas.Destroy() al deinit;

Flight está bien)

 

¡Buenos días y buen humor!

Durante mucho tiempo he estado utilizando una función ya hecha para el cálculo del lote en función del riesgo, pero no tenía una vinculación con el tamaño de stop-loss. Hoy he decidido escribir mi propia función desde cero en forma de script (para facilitar la comprobación), pero teniendo en cuenta el stop loss. Por favor, vea la fórmula para calcular el tamaño del lote (resaltado en amarillo). Tal vez me perdí algo.

Todo tipo de comprobaciones para el lote mínimo, máximo, paso, etc., etc., no se incluyeron, ¡porque lo haré más tarde!

Saludos, Vladimir.

//+------------------------------------------------------------------+
//|                                   Lot_Size_Depending_On_Risk.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
input double Risk=5;      // Размер риска
input uint Stop_Loss=500; // Размер стоп-лосса
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot_Size_Depending_On_Risk()
  {
   //--- определим валюту депозита
   string symbol="";
   string account_currency="";
   symbol=account_currency==AccountInfoString(ACCOUNT_CURRENCY) ? "EURUSDrfd" : "USDRUBrfd";
   double trading_account_currency=NormalizeDouble(SymbolInfoDouble(symbol,SYMBOL_BID),2);
   double lot=(AccountInfoDouble(ACCOUNT_MARGIN_FREE)*Risk*0.01)/(Stop_Loss*trading_account_currency);
   return(lot);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print(DoubleToString(Lot_Size_Depending_On_Risk(),2));
  }
//+------------------------------------------------------------------+
 
MrBrooklin #:

¡Buenos días y ánimo a todos!

Durante mucho tiempo he estado utilizando una función ya hecha para el cálculo del lote en función del riesgo, pero no tenía una vinculación con el tamaño de stop-loss. Hoy he decidido escribir mi propia función desde cero en forma de script (para facilitar la comprobación), pero teniendo en cuenta el stop loss. Por favor, vea la fórmula para calcular el tamaño del lote (resaltado en amarillo). Tal vez me perdí algo.

Todo tipo de comprobaciones para el lote mínimo, máximo, paso, etc., etc., no se han incluido, ¡porque lo haré más tarde!

Saludos, Vladimir.

Es necesario tener en cuenta el coste de un tick.

 
Alexey Viktorov #:

Asegúrese de tener en cuenta el coste por garrapata.

Hola Alexey, gracias por responder. A efectos de autoformación, me gustaría entender el propósito de tener en cuenta el coste de un tick y también explicar brevemente en qué parte de la fórmula debe aplicarse, si no te importa. Quizás no he entendido bien de qué está hablando.

Saludos, Vladimir.

 
MrBrooklin #:

Hola Alexey, gracias por responder. A efectos de autoformación, quiero entender el propósito de tener en cuenta el coste por tick y también explicar brevemente en qué parte de la fórmula aplicarlo, si no te importa. Es posible que no haya entendido bien a qué se refiere.

Saludos, Vladimir.

Para determinar la cantidad que un trader está dispuesto a perder en caso de fallo. Pérdida = Pérdida*valor del pip*lote. Por lo tanto - lote = pérdida aceptable/ (P érdida*valor del pip) La fórmula es aproximada.

 
Alexey Viktorov #:

Para determinar la cantidad que un operador está dispuesto a perder en caso de fallo. Pérdida = Pérdida*valor del pip*lote. Por lo tanto - lote = pérdida aceptable/ (P érdida*valor del pip) La fórmula es aproximada.

Ya veo. Pensaré con calma cómo aplicarla. Gracias por sus consejos.

Saludos, Vladimir.

 

¿Cómo puedo saber la hora de cierre de una posición en el probador?

Abro las posiciones 1, 2, 3

Cierro las posiciones 3, 2, 1

Ni en el informe del tester ni en el propio tester he encontrado la forma de averiguar la hora de cierre de una determinada posición.

Lo mismo en el informe que registra el probador, no hay forma de averiguar la hora de cierre de una posición.


Necesito saber la hora de apertura y cierre de una posición. ¿Cómo lo hago?

En una de sus libreríasfxsaber escribe: "Gracias a los desarrolladores por crear las cachés del Tester y ayudar a abrir sus formatos".

No puedo entender la biblioteca en sí.

Sólo he podido encontrar el formato de los archivos opt.

Si alguien sabe donde en el foro divulgar tst-archivos - formato de una sola pasada, por favor, dame un enlace, tal vez pueda encontrar position_ID en ellos.

fxsaber si usted lee, por favor responda.

 
Aleksandr Slavskii #:

¿Cómo puedo saber la hora de cierre de una posición en el comprobador?

Abro las posiciones 1, 2, 3

Cierro las posiciones 3, 2, 1

Ni en el informe del probador ni en el propio probador he averiguado cómo averiguar la hora de cierre de una posición concreta.

Lo mismo ocurre con el informe escrito por el probador, no hay forma de averiguar la hora de cierre de una posición.


Necesito saber la hora de apertura y cierre de una posición. ¿Cómo puedo hacerlo?

fxsaber en una de sus librerias escribe: "Gracias a los desarrolladores por crear los caches de Tester y ayudar a abrir sus formatos.

Sólo pude encontrar el formato de los archivos opt.

Si alguien sabe donde en el foro se revelan tst-files - formato de pase único, por favor, dame un enlace, tal vez pueda encontrar position_ID en ellos.

fxsaber si usted lee, por favor responda.

Busque un comercio de salida del mercado

DEAL_ENTRY_IN

Entrada en el mercado

DEAL_ENTRY_OUT

Salida del mercado

DEAL_ENTRY_INOUT

inversión

DEAL_ENTRY_OUT_BY

Cerrar con una posición contraria

y busque el ID de la posición en el ticket de esta operación

DEAL_TICKET

Ticket de la operación. Un número único que se asigna a cada operación

largo

DEAL_ORDER

Orden en base a la cual se ejecutó la operación.

long

DEAL_TIME

Hora de ejecución de la operación

datetime

DEAL_TIME_MSC

Hora de la transacción en milisegundos desde el 01.01.1970

long

DEAL_TYPE

Tipo de operación

ENUM_DEAL_TYPE

DEAL_ENTRY

Dirección de la operación - entrada en el mercado, salida del mercado o inversión

ENUM_DEAL_ENTRY

DEAL_MAGIC

Número mágico de la operación (véaseORDER_MAGIC)

largo

DEAL_REASON

Razón o procedencia de la operación

ENUM_DEAL_REASON

DEAL_POSITION_ID

Identificador de la posición en cuya apertura, modificación o cierre participó esta operación. Cada posición tiene un identificador único, que se asigna a todas las operaciones ejecutadas en el instrumento durante la vida de la posición.

largo


En general, la hora de salida del mercado de una operación es la hora de cierre de la posición.

 
Alexey Viktorov #:

Busca...

Gracias. Pero eso no es lo que estoy buscando en absoluto.

Por lo visto he vuelto a fallar al formular la pregunta correctamente :(

Me interesa saber cómo extraer información de posición de un archivo ReportTester.xlsx o .tst .

Lo que sugieres no está en el informe.

 
MrBrooklin #:

   //лот = процент риска от баланса / (размер стоплосса * Размер минимального изменения цены в валюте депозита / Минимальный шаг изменения цены в пунктах)
   eLot=AccountInfoDouble(ACCOUNT_BALANCE)*eRisk/100/(MathAbs(ePrice-eStopLoss)*SymbolInfoDouble(eSymbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(eSymbol,SYMBOL_TRADE_TICK_SIZE));