Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 897

 
Taras Slobodyanik:

- Mira la hora del último compás
- sumar todo lo que se cerró en este bar
- restar del saldo actual

y así sucesivamente, una barra a la vez.

¿No puedes hacerlo sin aritmética? ¿Tal vez podría escribir algún tipo de función definida por el usuario?

 
novichok2018:
Probablemente no he formulado mi pregunta correctamente, ya que las respuestas se salen del tema. No me importa si las posiciones se han cerrado o no, y no me interesa el valor de un tick. Necesito saber cuál era el saldo de la cuenta en el momento de cerrar 1, 2, 3 barras de un determinado símbolo para comparar. Se abrieron y cerraron posiciones en estas barras, incluyendo posiciones en otros símbolos: algunas posiciones se cerraron en positivo, otras se cerraron en negativo y otras no se cerraron todavía, por lo que el saldo ha cambiado. Necesito saber los valores específicos. Gracias.

no hay funciones estándar, así como no hay búsqueda a través del foro o cualquier otra forma

En el probador, se puede simular la siguiente situación: cuando el comercio utilizando múltiples EAs, no se puede saber lo que el valor del balance fue, por supuesto, usted puede tratar de contar las órdenes abiertas, a continuación, busque un momento en que no había órdenes abiertas en la historia de la terminal ... Y el resultado final no significa que todo se tenga en cuenta

en el probador se puede simular fácilmente esta situación - describir en el ámbito global una variable y comprobar la condición en OnTick if(OrderTotal()==0) StartBalance = AccountBalance();

y luego, al abrir las órdenes en el probador, se tiene el valor inicial de balance.... Se puede añadir a cada barra el valor de las órdenes de beneficio, se pueden añadir estos valores a un array o a una lista


Pero si quieres usar este código para una cuenta con varios Asesores Expertos, tienes que formular tu tarea no como una búsqueda del saldo hace n-barras, sino como un beneficio total de las órdenes abiertas. No se añaden las órdenes abiertas, la orden abierta - empieza a añadir el beneficio cada barra al array. Esto significa que estás buscando una oportunidad para cambiar la lógica de tu TS no relacionada con el saldo, sino con el beneficio de las órdenes abiertas y/o el beneficio de las órdenes cerradas en el historial del terminal para un periodo (día, hora?)

 
Igor Makanu:

no hay funciones estándar, así como no hay búsqueda a través del foro o cualquier otra forma

En el probador, puede simular la siguiente situación: al operar con varios Asesores Expertos, no puede saber qué saldo había en ese momento. Por supuesto, puede intentar contar las órdenes que se abrieron, y luego buscar un momento en que no había órdenes abiertas en el historial del terminal ... Y el resultado final no significa que todo se tenga en cuenta

en el probador se puede simular fácilmente esta situación - describir en el ámbito global una variable y comprobar la condición en OnTick if(OrderTotal()==0) StartBalance = AccountBalance();

y luego, al abrir las órdenes en el probador, se tiene el valor inicial de balance.... Se puede añadir a cada barra el valor de las órdenes de beneficio, se pueden añadir estos valores a un array o a una lista


Pero para trabajar con este código en una cuenta con varios EAs, la tarea no debería ser buscar el saldo hace n-barras, sino sumar el beneficio de las órdenes abiertas, sin órdenes abiertas, orden abierta - empezar a añadir el beneficio cada barra al array. Significa que estás buscando una oportunidad para cambiar la lógica de tu TS no relacionada con el saldo, sino con el beneficio de las órdenes abiertas y/o el beneficio de las órdenes cerradas en el historial del terminal para un periodo (día, hora?)

Entendido. Gracias por la respuesta detallada.

 

Hola! ¿Cómo obtengo los parámetros de entradaDESPUÉS de crear una manija de indicador técnico que fue creada usando iCustom.

Por ejemplo

iCustom(NULL,0, "name_indicator",1,2,3) - ¿Cómo obtener los parámetros de entrada 1,2 y 3?

 
Hola, ¿podríais decirme cómo averiguar el porcentaje de reducción actual?
 
nalyk:
Hola, ¿podríais decirme cómo averiguar el porcentaje de reducción actual?

Mantener una cuenta de capital

 
nalyk:
Hola, ¿podríais decirme cómo averiguar el porcentaje de reducción actual?
double drawdown = AccountProfit()*100/AccountBalance();
 

¿Es posible aplicar una plantilla a una estructura y a una clase para declarar variables de un tipo de plantilla dentro de ellas para luego trabajar con estas variables y referirse a ellas? Lo he intentado con una estructura.

templ(T)struct A
{
  T val;
  int ind;
};

Compila, pero no permite asignar un nombre a la estructura.

 
¡Hola! Ayúdame a hacer lo siguiente:
¡Es necesario hacer un objetivo de beneficio para cada posición abierta en el mercado, pero no total, sino por separado!
Ejemplo: el EURUSD se abrió y tiene un objetivo de beneficio de 1$ en su configuración, y en cuanto lo alcanzó, la posición se cerró sola, ¡sólo ella!
Cada par de divisas debe funcionar por sí mismo, ¡no por el beneficio total!

He encontrado el código para el beneficio total de todos los pares:
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит открытых позиций в валюте депозита |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetProfitOpenPosInCurrency(string sy="", int op=-1, int mn=-1) {
  double p=0;
  int    i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            p+=OrderProfit()+OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
  return(p);
}
ayudar a rehacer para cada par de divisas por separado...... ¡Muchas gracias!
 
ponochka:
Hola. Por favor, ayúdenme a hacer lo siguiente:
Es necesario hacer un objetivo de beneficio para cada posición abierta en el mercado, pero no total, ¡sino por separado!
Ejemplo: el EURUSD se abrió y tiene un objetivo de beneficio de 1$ en su configuración y en cuanto lo alcanzó, la posición se cerró sola, ¡sólo eso!
Cada par de divisas debe funcionar por sí mismo, ¡no por el beneficio total!

Encontré el código de ganancia total para todos los pares:
ayudar a rehacer para cada par de divisas por separado...... ¡Muchas gracias!

Pase en el primer parámetro de esta función la cadena con su par y sólo contará las ganancias en este par.

Pase en el segundo parámetro de esta función el tipo de operación (compra o venta) y contará el beneficio sólo en esta operación.

Y también el número mágico. Esta es una función universal.

Razón de la queja: