[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 207

 

El cálculo del margen por 1 lote es muy sencillo:

  double МАРЖА=MarketInfo(Symbol(),MODE_MARGINREQUIRED);
  double МАРЖАИНИ=MarketInfo(Symbol(),MODE_MARGININIT);
  double МАРЖАПОДД=MarketInfo(Symbol(),MODE_MARGINMAINTENANCE);
  double МАРЖАЛОК=(MarketInfo(Symbol(),MODE_MARGINHEDGED)*2)/MarketInfo(Symbol(),MODE_LOTSIZE);

Los valores de retorno están en la moneda del depósito.

Tenga en cuenta que pueden devolver 0 y esto es lo normal.

Algunas mesas de contratación no utilizan márgenes de inicialización y/o apoyo.

También utilizan el "margen cero" del solapamiento...

*

Cálculo del tipo de información de la opción de solapamiento, en principio:

  string МАРЖАЛОКИД="na";
  if( МАРЖАЛОК==0)    МАРЖАЛОКИД="0";
  if( МАРЖАЛОК==1)    МАРЖАЛОКИД="1";
  if( МАРЖАЛОК==0.5)  МАРЖАЛОКИД="1D";
  if( МАРЖАЛОК==2)    МАРЖАЛОКИД="2";  
 
kombat >> :

El cálculo del margen por lote es muy sencillo:....

Eso no es lo que quería. Tiene que calcular el margen de las órdenes abiertas por separado por instrumento. Es decir, sumar los lotes por instrumento y multiplicar por el margen del instrumento.

 
granit77 >> :

Esto no es lo que él quería. Tiene que calcular el margen de las órdenes abiertas por separado por instrumento. Esto significa sumar los lotes por instrumento y multiplicarlos por el margen del instrumento.

Bueno, es sencillo, cada instrumento tiene su propio summolot*margen

Conocemos el margen, conocemos el bruto:

double SumLot(){ double buy=0, sell=0, sl; int y;
for( y=0; y<OrdersTotal(); y++) {OrderSelect( y, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderType()==0) buy+=OrderLots();
if(OrderSymbol()==Symbol() && OrderType()==1) sell+=OrderLots();
} return( buy- sell);}
 
kombat писал(а) >>

El cálculo del margen por 1 lote es muy sencillo:

Los valores de retorno están en la moneda del depósito.

Tenga en cuenta que pueden devolver 0 y esto es lo normal.

Algunas mesas de contratación no utilizan márgenes de inicialización y/o apoyo.

También se utilizan solapamientos de "margen cero"...

*

El cálculo del tipo de solapamiento, por principio, es una opción:

Gracias.

¿Cuál es la diferencia entre el margen de inicialización y apoyo y el margen normal, para qué se utilizan?

 
Finbest >> :

Gracias.

¿Cuál es la diferencia entre los márgenes de inicialización y de apoyo y los márgenes regulares - para qué se utilizan?

Esta es la caja de herramientas de los futuros.

m.init = margen necesario para abrir

m.subd = se muestra después de la apertura

Los cálculos son bastante complejos y específicos, por lo que me guío por las condiciones de negociación.

m.subd normalmente ~75% de m.ini, ejemplos aquí...

 

Otra opción es examinar los márgenes por separado por instrumento.

(iExposure ligeramente modificado)

Archivos adjuntos:
 

Hola. Ayuda, por favor.

He escrito este programa... no funciona...


double ves[][6], hour[][6];
ArrayCopyRates(ves, Symbol(), Period());// array tiene todos los datos del gráfico

int day= Day();
int hou= Hour();
da= day;
for (; q<= da; q++, w--){
if (TimeDay(ves[q][0])== w && TimeHour(ves[q][0])== hou){
ArrayCopy(hour, ves, e, q);
e++;
}
}

Tengo dos arrays. El array ves es un array de tiempo.

lo que necesito........

toma la hora actual. de ves copia a la hora. los 6 datos.

tomar el día de ayer la misma hora (el día de ayer) de ves copiado a la hora.

y así sucesivamente...

 

Chicos, ayuda, no sé cómo hacerlo.

Tengo un bucle que calcula los niveles entre LOW y HI con Step.

for ( double c = LOW; c < HI; c = c + Step)

Ahora tengo que guardar cada nivel en algún sitio para que sea fácil sacarlo después y compararlo con el precio actual. Muy por favor en forma de código, no por pereza, sino porque hasta que no vea el ejemplo sigo sin entender cómo hacerlo. Gracias.

 

Hola, estimados conocedores. Sigo haciéndote preguntas a las que no encuentro respuesta en el libro de texto ni en el foro. ¿Cómo puede ser esta situación?

¿Por qué en la prueba, que muestra un beneficio de 0, en la tercera operación el tamaño del lote aumentó de repente?

Se calcula así Lots=MathMin(20,NormalizeDouble(MathMax(Lots,AccountEquity( ) /3000),1));

TEST


Símbolo EURCHF (euro frente a franco suizo)
Periodo 1 minuto (M1) 2009.08.30 23:02 - 2009.08.31 09:34 (2009.08.30 - 2009.09.05)
Modelo Todos los ticks (método más preciso basado en todos los plazos más pequeños disponibles)
Parámetros min=0,1;

Bares en la historia 1519 Garrapatas modeladas 2156 Calidad de los modelos 24.95%
Errores de concordancia de los gráficos 0




Depósito inicial 450.00



Beneficio neto -8.00 Beneficio total 0.00 Pérdida total -8.00
Rentabilidad 0.00 Remuneración esperada -2.00

Reducción absoluta 32.00 Reducción máxima 38.00 (8.33%) Reducción relativa 8.33% (38.00)

Total de operaciones 4 Posiciones cortas (% de ganancias) 1 (0.00%) Posiciones largas (% de ganancias) 3 (100.00%)

Operaciones rentables (% del total) 3 (75.00%) Operaciones con pérdidas (% del total) 1 (25.00%)
El más grande comercio rentable 0.00 transacción perdedora -8.00
Media acuerdo rentable 0.00 Pérdida del acuerdo -8.00
Número máximo victorias continuas (beneficios) 3 (0.00) Pérdidas continuas (pérdida) 1 (-8.00)
Máximo Beneficio continuo (número de victorias) 0.00 (0) Pérdida continua (número de pérdidas) -8.00 (1)
Media ganancias continuas 3 Pérdida continua 1

Tiempo Tipo Pida Volumen Precio S / L T / P Beneficios Saldo
1 2009.08.31 00:16 comprar 1 0.30 1.5161 1.5127 1.5163
2 2009.08.31 00:37 cerrar 1 0.30 1.5161 1.5127 1.5163 0.00 450.00
3 2009.08.31 00:44 comprar 2 0.30 1.5158 1.5124 1.5161
4 2009.08.31 02:58 cerrar 2 0.30 1.5158 1.5124 1.5161 0.00 450.00
5 2009.08.31 03:14 comprar 3 0.40 1.5152 1.5118 1.5154
6 2009.08.31 03:30 cerrar 3 0.40 1.5152 1.5118 1.5154 0.00 450.00
7 2009.08.31 06:45 vender 4 0.40 1.5151 1.5185 1.5149
8 2009.08.31 08:18 cerrar 4 0.40 1.5153 1.5185 1.5149 -8.00 442.00








































































 
001 >> :

Chicos, ayuda, no sé cómo hacerlo.

Tengo un bucle que calcula los niveles entre LOW y HI con Step.

for ( double c = LOW; c < HI; c = c + Step)

Ahora tengo que guardar cada nivel en algún sitio para que sea fácil sacarlo después y compararlo con el precio actual. Muy por favor en forma de código, no por pereza, sino porque hasta que no vea el ejemplo sigo sin entender cómo hacerlo. Gracias.

Como opción:

double c, levels[];
int nCount = 1+( HI - LOW)/ Step;
ArrayResize( levels, nCount);

for ( c = LOW, nCount = 0; c < HI; c += Step, nCount++) {
    levels[ nCount] = c;
}

// Use:
for (int j = 0; j < nCount; j++) {
    if ( levels[ j] > ...) {
        //...
    }
}
Razón de la queja: