[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 497
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Dime cómo escribir un EA en esta condición:
Hay tres pares de divisas en los que el EA abrirá operaciones y el EA está unido a un solo gráfico y en los otros dos funciona por sí mismo, en general, multidivisa.
La segunda condición es que cuando el precio alcanza un determinado nivel en cualquiera de los pares de divisas, se abre una operación. Sólo se puede abrir una operación a la vez.
Una vez cerrada la operación, el Asesor Experto puede reabrirla en cualquiera de los pares si el precio se aproxima.
He establecido una variable estática para que mientras el valor de la variable sea falso, se permita la apertura de las operaciones y en cuanto se abra la orden en cualquiera de los pares, la variable tome el valor verdadero. En cuanto se cierra la orden y el bucle for no encuentra ninguna operación, la variable vuelve a tomar el valor false.
Y si, por ejemplo, sólo se debe abrir una operación para cada uno de los pares, significa que cada par tiene su propia variable.
¿Existe una solución más racional para este problema?
Hay un parámetro como "Magik" en la orden - sólo cuenta las órdenes con un determinado magik y permite o prohíbe las operaciones.
¿Cómo se cierran los pedidos correctamente y cómo se recoge la información sobre ellos?
Perdón por las preguntas estúpidas de antemano) he escrito el siguiente algoritmo: quiero abrir una posición de compra cuando la apertura es menor que el fractal hacia arriba y el cierre es mayor que el fractal; también quiero cerrar una posición de venta cuando la apertura es mayor que el fractal hacia abajo y el cierre es menor; también quiero cerrar todas las posiciones si caen por debajo de 85 puntos o si la orden se ha abierto dentro de 38 velas (const. S).Me da la sensación de que no se cierra nada, sólo órdenes cerradas y en general me da la sensación de que estoy tratando las órdenes de forma incorrecta, opero mal y luego las cierro de forma incorrecta)) Por favor, díganme cómo cerrarlas correctamente, para que no se cuelen cerradas y dónde hay errores en este código. O puede ser un ejemplo de cómo caminar nyu, en el que todas estas operaciones se realizan adecuadamente. Gracias de antemano por su ayuda).
extern int S=38; //número de velas, tras las cuales se cerrará la posición
extern int SL=85; //el stop, al que se cerrarán las posiciones en cualquier caso
extern int HIGH=0; //en qué timeframe se buscarán los extremos (5 o 1 o 0(D1))
extern int l=1; //número de lotes a negociar
int massorder[30][30]; //hay datos sobre lotes ABIERTOS
int numb=1; //el número de el-ta en el array, que es oot. lote abierto
int i=0;
int ticket=0;
int x=0;
double down,up=0;
double highH1,lowH1=0;
int inicio()
{if(Hour()>x)
{
searchH1();
up=highH1;
down=lowH1;
i++;
}
//----
if(Open[1]<up && Close[1]>up)//si la vela es más baja en la apertura y más baja en el cierre que el nivel fractal arriba, entonces
{
ticket=OrderSend(Symbol(),OP_BUY,l,Bid,5,Bid-SL*Point,NULL);
i=0;
savedata();
}
if(Open[1]>down && Close[1]<down)//si la vela es más alta en la apertura y más baja en el cierre que el nivel fractal down, entonces
{
ticket=OrderSend(Symbol(),OP_SELL,l,Ask,5,Ask+SL*Point,NULL);
i=0;
savedata();
}
if(i==S)
{
closeAllticket();
closeAllPos();
}
i++;
//----
x=Hora();
if(Hora()==23)
x=-1;
return(0);
}
//+------------------------------------------------------------------+
void closeAllticket()
{
for(int j=0;j<=numb;j++)
{
OrderClose(massorder[j][0],l,Ask,5);
OrderClose(massorder[j][0],l,Bid,5);
}
numb=0;
}
void closeAllPos()
{
for(int j=0;j<=OrdersTotal();j++)
{
OrderSelect(j,SELECT_BY_POS);
OrderClose(OrderTicket(),l,Ask,5);
OrderClose(OrderTicket(),l,Bid,5);
}
}
void searchH1()//función para encontrar el fractal
{
if(iHigh(Symbol(),PERIOD_H1,3)>iHigh(Symbol(),PERIOD_H1,2) && iHigh(Symbol(),PERIOD_H1,3)>iHigh(Symbol(),PERIOD_H1,1) &&& iHigh(Symbol(),PERIOD_H1,3)>iHigh(Symbol(),PERIOD_H1,4) && iHigh(Symbol(),PERIOD_H1,3)>iHigh(Symbol(),PERIOD_H1,5))
highH1=iHigh(Symbol(),PERIOD_H1,3)
if(iHigh(Symbol(),PERIOD_H1,3)<iHigh(Symbol(),PERIOD_H1,2) && iHigh(Symbol(),PERIOD_H1,3)<iHigh(Symbol(),PERIOD_H1,1) && iHigh(Symbol(),PERIOD_H1,3)<iHigh(Symbol(),PERIOD_H1,4) && iHigh(Symbol(),PERIOD_H1,3)<iHigh(Symbol(),PERIOD_H1,5))
lowH1=iHigh(Symbol(),PERIOD_H1,3);
return (0);
}
void savedata() //programa para guardar los datos en el array{
OrderSelect(ticket,SELECT_BY_TICKET);
massorder[numb][0]=OrderTicket();
massorder[numb][1]=OrderOpenPrice();
massorder[numb][2]=OrderStopLoss();
massorder[numb][3]=OrderTakeProfit();
if(OrderType()==OP_BUY)
massorder[numb][4]=0;
if(OrderType()==OP_SELL)
massorder[numb][4]=1;
numb++;
}
¿Cómo se cierran los pedidos correctamente y cómo se recoge la información sobre ellos?
Perdón por las preguntas estúpidas de antemano) He escrito el siguiente algoritmo: quiero abrir una posición de compra cuando la apertura sea menor que el fractal alcista y el cierre sea mayor que el fractal alcista, y una posición de venta cuando la apertura sea mayor que el fractal bajista y el cierre sea menor; también quiero cerrar todas las posiciones si se quedan cortas en 85 puntos o si la orden se abre dentro de 38 velas (const. S).Me da la sensación de que no se cierra nada, sólo órdenes cerradas y en general me da la sensación de que estoy tratando las órdenes de forma incorrecta, opero mal y luego las cierro de forma incorrecta)) Por favor, díganme cómo cerrarlas correctamente, para que no se cuelen cerradas y dónde hay errores en este código. O puede ser un ejemplo de cómo caminar nyu, en el que todas estas operaciones se realizan adecuadamente. Gracias de antemano por su ayuda).
En las variables globales, en las que se han especificado topes al principio
antes de abrir los pedidos:
en la señal para abrir
al final de la EA
Supongo que no me olvidé de nada
en las variables globales, donde se han especificado los topes al principio
antes de que se abrieran los pedidos:
en la señal para abrir
al final de la EA
como si nada se hubiera olvidado
Puse todo lo que escribiste pero aún no ha cambiado nada por alguna razón. el resultado es el mismo que era y sigue siendo, las órdenes permanecen abiertas por una gran cantidad de tiempo, y necesito que se cierren después de las barras S, ¿qué es? ?????????????????
Puse todo lo que escribiste pero aun no ha cambiado nada. el resultado es como era y como es ahora, las ordenes siguen abiertas mucho tiempo y necesito que se cierren después de las barras S, cual es el trato?????????????????
La llamada al cierre de las órdenes debe realizarse antes de la apertura de las mismas. Las tengo en cierre:
ante el más global
#include <stdlib.mqh>
Lo pongo así antes de abrir los pedidos:
y esto al final del EA
Pregunta a los expertos, ¿hay algún criterio para los EA, como el número mínimo de lotes para un determinado período de tiempo de la prueba? ¿Porcentaje de pérdida, etc.?
Sólo tengo 2 EAs, y hacen 100 operaciones al año, y otro hace 30 operaciones en total... (plazo 15, 30 respectivamente). La rentabilidad es buena, la primera está en una demo sobre cotizaciones reales, ahora se está probando... Pero puede alguien decirme si hay una mejor... Pero tal vez alguien me diga si hay mejores pruebas que en MT4?
Hola a todos los conocedores))))
Hay un indicador que dibuja una línea de tendencia en los dos últimos fractales, pero la dibuja después de un "fractal no confirmado", es decir, la segunda barra aún no se ha formado después del fractal pero la línea ya se ha dibujado. ¿Cómo hacer que se dibuje después de la segunda barra pero no después de la primera? El indicador está en la ficha.
Hola a todos los conocedores))))
Hay un indicador que dibuja una línea de tendencia en los dos últimos fractales, pero la dibuja después de un "fractal no confirmado", es decir, la segunda barra aún no se ha formado después del fractal pero la línea ya se ha dibujado. ¿Cómo hacer que se dibuje después de la segunda barra pero no después de la primera? El indicador está en la ficha.
Prueba con
Prueba con