¡Pide! - página 142

 

Un poco de ayuda por favor con un EA

Estoy tratando de cerrar una orden de venta y abrir una nueva orden de compra. La de compra se abre pero la de venta da error 4051

Estoy utilizando

ticket = OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Gold);// cerrar posición

y

ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

 

¿Cómo cambiar el número mágico?

Hola a todos,

Utilizo un EA de diferencia (copia de un EA de origen) para operar con pares de diferencia en la ventana del gráfico de diferencia y me gustaría cambiar el número mágico, pero no sé cómo funciona el número mágico. ¿Podríais decirme, por favor, cómo funciona el número mágico?

1. ¿Cómo funciona el número mágico?

2. ¿Cómo cambiar el número mágico?

3. ¿Puedo tomar cualquier número para cambiar el número mágico o debo usar algún número en algunas reglas?

4. ¿Podría darme un ejemplo para cambiar el número mágico en el número mágico de mi EA: 16763?

Muchas gracias por su ayuda.

 

El número mágico no es más que un identificador único. Distingue cada instancia del mismo EA a la vez que lo distingue de cualquier otro EA que pueda tener en ejecución.

Si el número mágico es una variable externa, cámbielo por cualquier número que desee. Sólo asegúrese de que no es el mismo número que cualquier otro EA que tenga en ejecución.

Si no es una variable externa, busque la variable en el código y cámbiela por cualquier número que desee.

Espero que eso ayude.

Lux

 
luxinterior:
El número mágico no es más que un identificador único. Distingue cada instancia del mismo EA y también lo distingue de cualquier otro EA que pueda tener en ejecución.

Si el número mágico es una variable externa, cámbialo por el número que quieras. Sólo asegúrate de que no sea el mismo número que cualquier otro EA que tengas en marcha.

Si no es una variable externa, busque la variable en el código y cámbiela por cualquier número que desee.

Espero que eso ayude.

Lux

Hola Lux,

¿Quieres decir que puedo cambiar el número mágico de mi EA:16763 a 16764 ; 16765 ect... ?

Gracias por tu rápida respuesta.

Luu

 
luu:
Hola Lux,

¿Quiere decir que puedo cambiar el número mágico de mi EA:16763 a 16764 ; 16765 ect...?

Gracias por su rápida respuesta.

Luu

Exactamente. Mientras el número sea único no importa el número que elijas.

Realmente no es necesario cambiarlo a menos que tenga una razón específica para hacerlo.

Lux

 
luxinterior:
Exacto. Mientras el número sea único no importa el número que elijas.

Realmente no es necesario cambiarlo a menos que tengas una razón específica para hacerlo.

Lux

¡Muchas gracias por tu ayuda Lux!

Luu

 

Problemas de orden de cierre de EA

Amigos ı tienen un EA con indicador de resistencia de apoyo.EA debe completar las órdenes en el beneficio objetivo.Pero carece a veces.Cómo puede ı deshacerse de este problema.Por favor, ayúdame

 

Por favor, ayuda con un simple script genérico.

Hola

¿Puede alguien ayudarme con un simple script?

Esto es lo que necesito.

Un script muy genérico que puede ser utilizado en cualquier símbolo que colocará 3-4 órdenes para SELL_STOP y BUY_STOP

Digamos que quiero colocar un buy_stop 20 puntos por encima del precio actual, segunda orden 40 puntos por encima del precio actual, 3d 80 puntos y así sucesivamente.

Lo mismo para Sell_Stop

He intentado montar el script basándome en algunos ejemplos pero como no estoy familiarizado con el lenguaje C estoy teniendo algunos problemas.

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""// improved.mq4

int inicio()

{

int ticket,i;

int cnt=1;

int Dist_SL =10; // Preset SL (pt)

int Dist_TP =100; // Preajuste TP (pt)

string Symb=Símbolo(); // Símbolo

RefreshRates();

double bid =MarketInfo(Symb,MODE_BID);

double ask =MarketInfo(Symb,MODE_ASK);

double point =MarketInfo(Symb,MODE_POINT);

int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);

if (Dist_TP < Min_Dist) // Si es menor de lo permitido

{

Dist_TP=Min_Dist; // Establece lo permitido

Alert(" Aumentada la distancia de TakeP = ",Dist_TP," pt");

}

//-------------------------------------------------------------------- 6 --

Alert("La solicitud fue enviada al servidor. Esperando respuesta..");

for(i=100;i<400;i=i+100)

{

double TP=(ask+i*Point) + Dist_TP*Point; // Precio solicitado de TP

ticket=OrderSend(Symb,OP_BUYSTOP,0.1,ask+i*Point,1,(ask+i*Point)-Dist_SL*Point,TP);

Sleep(500);

int Error=GetLastError(); // Falló

switch(Error) // Errores superables

{

case 130:Alert("El SL está mal. Reintento.");

RefreshRates(); // Actualizar datos

if (Dist_SL < Min_Dist) // Si es menor de lo permitido

{

Dist_SL=Min_Dist; // Establecer lo permitido

Alert(" Aumentada la distancia de SL = ",Dist_SL," pt");

}

i=i-50;

Alert (i);

Alert (Dist_SL);

cnt=cnt+1;

Alert (cnt);

si (cnt==3)break;

continue; // En la siguiente iteración

case 135:Alert("El precio ha cambiado. Reintento.");

RefreshRates(); // Actualiza los datos

continue; // En la siguiente iteración

case 136:Alert("No hay precios. Esperando un nuevo tick..");

while(RefreshRates()==false) // Hasta un nuevo tick

Sleep(1); // Retraso del ciclo

continue; // En la siguiente iteración

case 146:Alert("El subsistema de negociación está ocupado. Reintentando..");

Sleep(500); // Solución simple

RefreshRates(); // Actualiza los datos

continue; // En la siguiente iteración

}

switch(Error) // Errores críticos

{

caso 2 : Alert("Error común.");

break; // Salir de 'switch'

caso 5 : Alert("Versión desfasada del terminal cliente.");

break; // Salir del 'switch'

caso 64: Alert("La cuenta está bloqueada.");

break; // Salir de 'switch'

case 133: Alert("Se prohíbe operar");

break; // Salir de 'switch'

por defecto: Alert("Se ha producido un error ",Error);// Otras alternativas

}

//break;

}

//-------------------------------------------------------------------------- 9 --

Alert ("El script ha completado sus operaciones ---------------------------");

return; // Salir de start()

}

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Es una especie de trabajo, pero muchas veces estoy teniendo problema con la pérdida de la parada.

 

Su idea es si podemos cambiar la serpiente con la tasa gaussiana sr dentro de la

El indicador ssrc puede pagar dividendos, ¿qué piensa usted?

el ssrc sería la tasa gaussiana de sr de un lado la correlación de rango de los soldados

"(intenté codificarlo pero se me fue de las manos)

ssrc_bar.mq4

ssrc.mq4

os_gaussian_sr_rate.mq4

Archivos adjuntos:
 

Nueva pregunta: El 5º decimal y la gestión del dinero

En otro foro que frecuento y que es para clientes de un EA en particular, un cliente se quejaba de que el desarrollador del EA aún no había solucionado el problema del 5º decimal / precio fraccionario para su EA.

El desarrollador afirmó hace varios meses que este problema requería una secuencia de comandos especial para resolverlo. Ahora, 4 meses más tarde, básicamente dije que era ridículo que no se hubiera solucionado todavía - y afirmé que sólo requería unas pocas líneas de código para redefinir el "Punto" de forma similar al método descrito aquí.

Así que aquí viene la pregunta. El desarrollador sigue insistiendo en que este problema es supercomplicado y requiere una programación especial de scripts para solucionarlo. Aquí está la explicación del desarrollador:

Hola Juan. Tienes razón. Más y más corredores están yendo a pips fraccionarios. Sin embargo, el problema de los pips fraccionarios no es un error en [nombre eliminado]. Es un problema con la forma en que la plataforma MT4 define la diferencia en el número de decimales. Estamos reprogramando el EA y los indicadores para que reconozcan la diferencia. Se supone que esto está contenido en la definición de la variable "Punto" dentro de la plataforma MT4 y los EAs utilizan esta definición para determinar los decimales. Sin embargo, muchas plataformas MT4 no pasan más de 4 lugares decimales en el EA, por lo que es necesario incluir scripts especiales. Nuestro reto es que utilizamos la variable "Punto" en todo el EA y en todos los indicadores. Por lo tanto, no es tan simple como añadir un par de líneas de código para redefinir "Punto". Espero tener un programa de pip fraccional de trabajo a finales de la próxima semana.

Así que mi pregunta es la siguiente: ¿Alguno de vosotros, programadores experimentados, se ha encontrado con este complicado requisito de scripting o con problemas con el valor de "Point" de la plataforma MT4?

Incluso si se asume que el "Punto" se limita a 4 decimales, entonces eso significaría que sólo tiene que preocuparse por los pares con Punto = 0,001 ---- que todavía sólo toma una línea o dos de código.

O bien, podría utilizar "Dígitos" en lugar de "Punto" - que todavía utiliza sólo unas pocas líneas de código.

O simplemente podría utilizar una variable booleana como "UseFractionalPips = true;" para redefinir "Point".

Realmente siento que el desarrollador está haciendo el problema más complicado de lo que es (o tal vez otros motivos). Simplemente nunca he leído o escuchado de este problema con el "Punto" que se limita a sólo 4 decimales - e incluso si es usted podría utilizar "Dígitos" u otros métodos para redefinir el punto sin algún tipo de scripting especial.

Sólo he estado programando en MT4 durante 18 meses, así que pensé que podría diferir a algunos programadores más experimentados en cuanto a lo complicado que es el "arreglo" para hacer frente a la fijación de precios de pip fraccional en MT4.

¿Alguna idea?

Gracias de antemano por su ayuda,

-B

Razón de la queja: