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

 
Nauris Zukas:

Gracias, pero entonces también tendría que escalar los datos (si te entiendo bien). Parece que escalar los datos es la única solución.

¿Por qué escalar algo? Basta con utilizar 2 buffers, poner los valores positivos en uno y los negativos en el otro. Si el cálculo sólo produce valores positivos, puede multiplicarlos por -1. Pero si el cálculo produce tanto valores positivos como negativos, entonces mi sugerencia no encaja.

Entonces se podrían hacer histogramas de diferentes anchos. Primero se llena de valor el búfer que se muestra con un histograma ancho y luego se llena de valor el que se muestra con un histograma fino.

Esto producirá un histograma. Aquí se utilizan cuatro topes.


 
Alexey Viktorov:

¿Por qué escalar algo? Basta con utilizar 2 buffers, poner los valores positivos en uno y los negativos en el otro. Si el cálculo sólo produce valores positivos, puede multiplicarlos por -1. Pero si el cálculo produce tanto valores positivos como negativos, entonces mi sugerencia no encaja.

Entonces podemos hacer histogramas de diferentes anchos. En primer lugar, el búfer que se muestra en el histograma ancho debe llenarse con valores, y luego el búfer que se muestra en el histograma fino debe llenarse con valores.

Esto producirá un histograma. Aquí se utilizan cuatro topes.


Gracias, pero no se ajustará a esta variante ya que los búferes con líneas estarán por ejemplo en el rango de 1,19653 a 1,19674 y el histograma será de 0 a 250. Tics y propagación en una ventana, por eso quería hacer un segundo eje Y.

 
Nauris Zukas:

Gracias, pero no funcionará, porque el buffer con líneas estará por ejemplo en el rango de 1,19653 a 1,19674 y el histograma estará de 0 a 250. Tics y propagación en una ventana, por eso quería hacer un segundo eje Y.

Estoy de acuerdo, no va a caber. Pero... ¿Qué haría el escalamiento? ¿Tal vez dividir los valores del histograma por 100? O multiplicar por 0,01...

 
Alexey Viktorov:

Estoy de acuerdo, no va a caber. Pero... ¿Qué haría el escalamiento? ¿Qué tal si dividimos los valores del histograma por 100? O multiplicar por 0,01...

Hasta ahora el siguiente concepto: tomamos el valor máximo/mínimo de los topes lineales y hacemos el spread máximo bajo estos valores, los otros spreads se escalan bajo el máximo.

 
Artyom Trishkin:

Así que el broker no está permitiendo el autotrading para su cuenta, ya que todo está habilitado y el EA no abre posiciones ni coloca órdenes.

¿Qué muestra el registro cuando el EA intenta enviar una solicitud de operación al servidor?

Las órdenes se colocan pero IsTradeAllowed() es 0. ¿Cómo puede ser esto?

 
Andrei:

¿Se refiere a permitir el comercio automático? Esto también está habilitado...

¿Tiene sentido llamar al servicio de asistencia del corredor?

 
Andrei:

Las órdenes se colocan pero IsTradeAllowed() es 0. ¿Cómo es posible?


¿la cuenta es competitiva?

Hay al menos cuatro parámetros que comprobar:

ACCOUNT_TRADE_EXPERT
ACCOUNT_TRADE_ALLOWED
TERMINAL_TRADE_ALLOWED
IsTradeAllowed(_Symbol,TimeCurrent())
 

¿Puede decirme cómo escribir el código para comparar el tick actual con el tick anterior para el instrumento comercial seleccionado?

Necesito comparar: si Tick (actual) > Tick (anterior), entonces pasar a la ejecución del conteo de dichos ticks, y viceversa, si Tick (actual) < Tick (anterior), entonces pasar al cálculo de ticks2.

Así, quiero calcular cuántos ticks de cada barra, en el gráfico y el marco temporal seleccionados, están aumentando el precio y cuántos lo están disminuyendo.

Por favor, aconséjeme. Estoy escribiendo mi primer indicador de entrenamiento, y mi primer programa en mi vida :(

¿Lo he hecho bien?

int Tic;

int Tic2;

int inicio()

if((Oferta - Oferta[1]) > 0)

{

Tick++;

volver;

}

si no

{

Tick2++;

volver;

}

 
YarTrade:

¿Podría decirme cómo escribir un código para comparar el tick actual y el tick anterior para un instrumento comercial seleccionado?

Necesito comparar: si Tick (actual) > Tick (anterior), entonces pasar a la ejecución del conteo de dichos ticks, y viceversa, si Tick (actual) < Tick (anterior), entonces pasar al cálculo de ticks2.

Así, quiero calcular cuántos ticks de cada barra, en el gráfico y el marco temporal seleccionados, están aumentando el precio y cuántos lo están disminuyendo.

Por favor, aconséjeme. Estoy escribiendo mi primer indicador de entrenamiento, y también mi primer programa en mi vida :(

¿Lo estoy haciendo bien?

Intente escribir la fecha, la hora, la oferta y los resultados de sus cálculos en cada tilde. A continuación, cárguelo en Excel y compruébelo. No tiene sentido conciliar cada docena de líneas del programa.

Pero mira, tienes el retorno en cada rama del operador condicional, es decir, siempre se ejecuta. Así que lo sacamos del operador condicional:

int Tick=0, Tick2=0;       // Для вставки программы используйте кнопку SRC
double Bid1;

void OnInit()
{
  Bid1=Bid;
}

void start()   // Вместо start более модно писать OnTick
{
    if(Bid > Bid1) Tick++;                             
    else           Tick2++;
    Bid1=Bid;                          
}

Oferta[1] - ¿es así?

 
STARIJ:
// Вместо start более модно писать OnTick

:)

Razón de la queja: