Borrar en el probador - página 4

 
Roman Shiredchenko #:

Las amortizaciones durante la compensación pueden no tenerse en cuenta.

Ejemplo. Usted abre una operación de compra a 50, al comienzo de la compensación el precio es, digamos, 70. Durante la compensación su operación será eliminada y usted recibirá 20 tugrik, después de la compensación su operación se abrirá a 70.

Si lo cierras a 100, el terminal mostrará una operación con un beneficio de 50 tugriks.

El problema suele producirse al redactar una red de arrastre o CU. Supongamos que queremos poner una CUE de +5 cuando el comercio es de 15+.

Entonces, si tomamos los números del ejemplo, resulta que antes de despejar nuestro stop loss será de +5 puntos y después de despejarlo será de -5 puntos. Pero si una operación se cerrará en el stop, todavía obtendremos ganancias de 5 rondas.

Por lo tanto, se puede prescindir de la compensación en el probador.

 
Aleksandr Slavskii #:

Realmente sencillo y, sobre todo, fiable.


Voy a perdonar al autor por el off-topic, pero ¿tiene usted una receta para determinar cuándo se acaba la limpieza?

El problema es el siguiente: el broker abridor, durante la compensación borra las órdenes pendientes, y el campo de compensación no las vuelve a establecer.

No sé si en los futuros, pero en las acciones la compensación termina en diferentes momentos.

Por lo tanto, no he podido determinar el momento en que finaliza la compensación para un valor específico.

Simplemente uso el temporizador para enviar la colocación de la orden hasta que se abra.

No me gusta este enfoque, y no tengo otro.

¡¡¡¡¡No pasa nada, discutid y debatid juntos, el tema está abierto a todos!!!!!
 
Aleksandr Slavskii #:

Las amortizaciones durante la compensación pueden no tenerse en cuenta.

Ejemplo. Usted abre una operación de compra a 50, en el momento de la compensación el precio es, digamos, 70. Durante la compensación su operación será eliminada y usted recibirá 20 tugrik, después de la compensación su operación se abrirá a 70.

Si lo cierras a 100, el terminal mostrará una operación con un beneficio de 50 tugriks.

El problema suele producirse al redactar una red de arrastre o CU. Supongamos que queremos poner una CUE de +5 cuando el comercio es de 15+.

Entonces, si tomamos los números del ejemplo, resulta que antes de despejar nuestro stop loss será de +5 puntos y después de despejarlo será de -5 puntos. Pero si una operación se cerrará en el stop, todavía obtendremos ganancias de 5 rondas.

Por eso podemos prescindir de la limpieza en el probador.

¡Oh! Qué interesante... ¡Tendrá que profundizar y probarlo! :-)

escribió (tomó del artículo) f-i-tion exactamente fuera cuenta de los oficios en la historia, en el hecho (es que tiene la posición en el plus) - cuenta consecutiva menos y mostrarlo en la pantalla - una especie de compensación de la cuenta, puede ciertamente no del todo será correcta cuando el comercio - sólo mirando ahora ...

Así que para cerrar la posición con precisión, por ejemplo, teniendo en cuenta la compensación anterior, si fue menos - entonces debemos comparar los valores de las ganancias cerradas y la pérdida anterior en la compensación.

//+------------------------------------------------------------------+
//|                 УЧЕТ КЛИРИНГА
//+------------------------------------------------------------------+
double Calc_Clearing() // вычисление лота
  {
   bool ord;
   double TotalLot=0;
    for(int i=HistoryDealsTotal()-1; i>=0; i--)
     {
      ulong ticket=HistoryDealGetTicket(i);
      ord=HistoryDealSelect(ticket);
      if(ord && HistoryDealGetString(ticket,DEAL_SYMBOL) == _Symbol
       //  && HistoryDealGetInteger(ticket,DEAL_MAGIC) == MagicC
         && HistoryDealGetInteger(ticket,DEAL_ENTRY) == DEAL_ENTRY_OUT)
        {
         if(HistoryDealGetDouble(ticket,DEAL_PROFIT) <= 0)
           {
            TotalLot+=HistoryDealGetDouble(ticket,DEAL_VOLUME);
           }
         else
           {
            break;
           }
        }
     }
   return TotalLot == 0 ? TotalLot: TotalLot;
  }

Encontré un error - arréglalo:

TotalLot+=HistoryDealGetDouble(ticket,DEAL_PROFIT);

como resultado esta es la imagen en la pantalla de arriba antes de esta inserción:

   Comment(" SPREAD текущий по символу ", _Symbol, " составляет: ", SymbolInfoInteger(_Symbol,SYMBOL_SPREAD),
    "      СВЕРКА по клирингу:  ", NormalizeDouble(Calc_Clearing(),0));

compensación de la reconciliación

porque todavía no se ha producido ninguna pérdida de compensación:

09.11.2021: todo "fuera" está en el plus:


 
Roman Shiredchenko #:

¡Terrible! Hay demasiadas cosas malas para comentarlas.

Digámoslo de otra manera.

¿Por qué necesita el historial de transacciones si está interesado en la posición?

En mi opinión, es suficiente con escribir el precio de la última posición en una variable para cada nueva operación, y cuando llegue la compensación, ajustar la CU por la diferencia entre el precio escrito en la variable y el precio del último tick antes de la compensación.

Ejemplo:

lote = 1;

double posición_final=0;

primera operación al precio 30, posición_final = 30;

segunda operación al precio de 60, end_position = 45;

tercera operación al precio 90, end_position = 60;


Es decir, tienes una posición a 60 con un volumen de 3.

Supongamos que la compensación llegó al precio de 70, el beneficio es igual a 30 tugriks.

double precio_de_compensación = 70;

Después de la compensación, la posición se abrió al precio 70, pero tenemos que recordar que el precio real de esta posición esend_position == 60; por lo tanto, este es el precio a partir del cual se calcula el arrastre o CUE.

En consecuencia, durante la compensación, rellene la variable

doble corrector = 0;

corrector =precio_de_compensación-posición_final;

Suponga que tiene un inicio de CU cuando la operación es de +20 pips, respectivamente, añada a la función de CU que el inicio de CU es: 20 -corrector;

Y también la CU se pone unos puntos en más, también deben ser corregidos por el valor del corrector.

Después de cerrar cualquier corrector de posición = 0;


Pero esto sólo funcionará si no hay cierres parciales o rellenos después de la compensación. Si los hay, tenemos que hacerlo de otra manera.

 
Aleksandr Slavskii #:

Realmente sencillo y, sobre todo, fiable.


Voy a perdonar al autor por el off-topic, pero ¿tiene usted una receta para determinar cuándo se acaba la limpieza?

El problema es el siguiente: el broker abridor, durante la compensación borra las órdenes pendientes, y el campo de compensación no las vuelve a establecer.

No sé si en los futuros, pero en las acciones la compensación termina en diferentes momentos.

Por lo tanto, no he podido determinar el momento en que finaliza la compensación para un valor específico.

Acabo de enviar una orden con temporizador para hacer un pedido hasta que se abra.

No me gusta este enfoque, y no tengo ningún otro.

También tengo un abridor, pero en futuros. Tengo el mismo problema con el final del despeje, no sé cómo determinarlo, sólo tomo las 19:05.

Es decir, puedes poner los aplazamientos hasta la fecha, no sólo para hoy. Al menos en los futuros.

 
Aleksandr Slavskii #:

1. ¡El horror! Hay demasiadas cosas malas para comentarlas.

Digámoslo de otra manera.

¿Por qué necesita el historial de transacciones si está interesado en la posición?

En mi opinión, es suficiente con escribir el precio de la última posición en una variable para cada nueva operación, y cuando llegue la compensación, ajustar la CU por la diferencia entre el precio escrito en la variable y el precio del último tick antes de la compensación.

Ejemplo:

lote = 1;

double posición_final=0;

primera operación al precio 30, posición_final = 30;

segunda operación al precio de 60, end_position = 45;

tercera operación al precio 90, end_position = 60;


Es decir, tienes una posición a 60 con un volumen de 3.

Supongamos que la compensación llegó al precio de 70, el beneficio es igual a 30 tugriks.

double precio_de_compensación = 70;

Después de la compensación, la posición se abrió al precio 70, pero tenemos que recordar que el precio real de esta posición esend_position == 60; por lo tanto, este es el precio a partir del cual se calcula el arrastre o CUE.

En consecuencia, durante la compensación, rellene la variable

doble corrector = 0;

corrector =precio_de_compensación-posición_final;

Suponga que tiene un inicio de CU cuando la operación es de +20 pips, respectivamente, añada a la función de CU que el inicio de CU es: 20 -corrector;

Y también la CU se pone unos puntos en más, también deben ser corregidos por el valor del corrector.

Después de cerrar cualquier corrector de posición = 0;


2. Pero esto sólo funcionará si no hay cierres parciales o rellenos después de la compensación. Si los hay, deberíamos hacerlo de otra manera.

1. Gracias por la programación. Quiero mirar sin corrector por ahora, ya que tengo adiciones y arrastre con boo + por ejemplo 30 pips, también después de la configuración de arrastre puede haber cierres parciales de acuerdo a la lógica de funcionamiento del robot. Es decir, después de abrir una posición inicial, memorizo el precio de apertura, después de las adiciones -promedio- vuelvo a memorizar el NUEVO precio de apertura de la posición. Y en esencia, la compensación y la fijación de un nuevo precio de apertura por parte del corredor no importará.

Entiendo correctamente, que este enfoque también puede tener lugar de acuerdo con la lógica de comercio anterior escrito aquí en este post mío ...

Además, si el precio actual del activo lo permite, la transferencia de SL a BU + 30 pips del precio de la posición acumulada previamente memorizado.

¿Y a quién le importa el precio actual de la posición abierta de los futuros, fijado por su corredor?


2.

"Pero esto sólo funcionará si no hay cierres parciales o rellenos después de la compensación. Si lo hay, hay que hacerlo de otra manera. "

Tengo rellenos... antes y después - hasta que se transfiera a BU + 30 pips - es realmente necesario leer el precio medio actual de todas las órdenes de mercado a través de arrays, porque necesitaremos

...necesitaríamos el precio de apertura de una orden de mercado y el número y el volumen de contratos de cada orden... para visualizar el precio medio de las mismas en total -donde significa la transferencia a una UC- para calcular...


Un precio medio = ((OPEN_1 * VOLUME_1) + (OPEN_2 * VOLUME_2) + (OPEN_3 * VOLUME_3)+n) / (VOL_1 + VOL_2 + VOL_3 + n), aquí resulta que no he traducido SL en BU + 30 pips en toda la posición agregada - es necesario escribir todos estos valores en arrays o qué? Si abrimos la N-ésima porción de orden de mercado, ¿debemos levantar toda esta cadena para calcular la media de todas ellas?

O podríamos jugar con él de alguna manera:

HistoryOrderSelect ()
HistoryOrderGetTicket ()

Pero ahí se plantea la cuestión de cómo tomar el principio y el final del bucle de órdenes de mercado REALES que participan en la formación de la posición agregada REAL.

 
Roman Shiredchenko #:

VOLUME_Price = ((OPEN_1 * VOLUME_1) + (OPEN_2 * VOLUME_2) + (OPEN_3 * VOLUME_3)+n) / (VOL_1+VOL_2 + VOL_3 + n), por lo que resulta que todavía no he traducido SL en BU + 30 pips en toda la posición agregada - ¿debo escribir todos estos valores en arrays? Si abrimos la N-ésima orden de mercado, debemos calcular la media de todas ellas y subir toda la cadena, ¿no?

Por desgracia, este es exactamente el caso.

 

Roman Shiredchenko #:

Average_Price = ((OPEN_1 * VOLUME_1) + (OPEN_2 * VOLUME_2) + (OPEN_3 * VOLUME_3)+n) / (VOL_1 + VOL_2 + VOL_3 + n), así que resulta que no he traducido SL en BU + 30 pips en toda la posición agregada - ¿deberían todos estos valores escribir en arrays o qué? Si abrimos la N-ésima porción de orden de mercado, ¿debemos levantar toda esta cadena para calcular la media de todas ellas?

O podríamos jugar con él de alguna manera:

Pero ahí surge la pregunta, ¿cómo tomar el principio y el final del ciclo de las órdenes de mercado REALES que participan en la formación de la posición total REAL?

Basta con almacenar el último precio medio.

 
JRandomTrader #:

Basta con mantener el último precio medio.

Vale, pero si relleno, por ejemplo, con cualquier volumen, ¿cómo lo cuento REALMENTE?
 
Roman Shiredchenko #:
De acuerdo, pero si estoy añadiendo, por ejemplo, un volumen cualquiera, ¿cómo calcular su ACTUALIDAD?

Tomar este último precio medio y el volumen de la posición, el precio de la nueva operación y su volumen. Todo se calculará correctamente.