[¡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 48

 
orlovkem >> :

Tal vez el comentario sea erróneo, pero la esencia es cierta, el nivel de precios es superior al valor del indicador, hay que comprar y compra, pero hay que hacerlo una vez, y el EA compra mientras haya dinero en el depósito. Sólo hay que limitar el número de ofertas. Hacer no más de uno a la vez, no funciona.

Haga una comprobación en la barra actual y en la anterior, entonces la señal será una,

sólo en el cruce.

Es decir, si en la barra actual el indicador está más alto, y en la anterior estaba más bajo

significa comprar, y será una sola compra para la señal.

 
orlovkem >> :

Tal vez no lo escribí correctamente, pero la esencia es correcta, el nivel de precios se ha vuelto más alto que el valor del indicador, necesito comprar y compra, pero necesito hacerlo una vez, y el EA compra mientras haya dinero en el depósito. Sólo hay que limitar el número de ofertas. Hacer no más de uno a la vez, no funciona.

¿Está seguro de que el asesor está comprando (vendiendo)? ¿Lo has probado? A juzgar por el código, no debería haber ni una sola operación, no es que "compre mientras haya dinero en el depósito". ¿O no has escrito el código?

 
xeon >> :

La forma más fácil de controlar el número de órdenes abiertas al mismo tiempo

un poco diferente - las órdenes no se abren en paralelo, justo después de cerrar una orden se abre otra en la misma dirección (en este punto la operación ya ha agotado su potencia y estoy en pérdidas)

((

 
VladislavVG >> :

¿Está seguro de que el asesor está comprando (vendiendo)? ¿Lo has probado? A juzgar por el código, no debería haber ni una sola operación, no es que "compre mientras haya dinero en el depósito". ¿O no has escrito el código?


Yo escribí el código, y compra y vende. Lo he probado en el probador de estrategias.

 
satop >> :

Haga una comprobación en la barra actual y en la anterior, entonces la señal será una,

sólo cuando se cruza.

Es decir, si el indicador es más alto en la barra actual y más bajo en la anterior

significa comprar, y será una sola compra para la señal.

Gracias por el consejo, creo que entiendo lo que se requiere de mí. Lo probaré. Gracias de nuevo.

 
xruss >> :

un poco equivocado - las órdenes no se abren en paralelo, justo después de cerrar una orden se abre otra en la misma dirección (en ese momento la operación ya ha agotado su fuerza y estoy en pérdidas)

((

Y si nos envía todo el fragmento, que es responsable de la selección de la última orden y la condición de su comprobación, lo entenderemos. Es difícil sugerir algo de esta manera. Alternativamente, después de la señal, simultáneamente con la apertura de una posición, se puede establecer una bandera para prohibir las siguientes operaciones de este tipo, y en el bloque de apertura de posiciones para comprobar su presencia. Si se levanta la bandera, se salta la operación. Al recibir una señal contraria, la bandera se elimina, pero después de la primera apertura exitosa de una posición, la nueva bandera se establece - prohibiendo la apertura de operaciones de ese tipo, para las cuales se recibió una nueva señal. Y así sucesivamente.

 
orlovkem >> :

He escrito el código y tanto compra como vende. Lo he probado en el Probador de Estrategias.

Así que no es el código que publicaste en la página anterior. Ese código no compra nada y no vende nada. Puedes copiarlo, si no me crees, y ejecutarlo en el probador.

Por ejemplo, para mí está claro que no hay ningún par de números para los que se cumplan simultáneamente las condiciones a>=b y a<b. A juzgar por su experto, no sólo no es obvio para usted, sino que para usted es obvio que esos números existen. Por supuesto, podría estar equivocado - entonces, por favor, si no es difícil, dame un ejemplo de tal par de números. Sólo en este caso, se colocará una orden de compra utilizando su algoritmo. Lo mismo para vender.

>> Buena suerte.

 
Everlost писал(а) >>

Y si pudieras publicar el fragmento completo, que es responsable de la selección de la última orden y la condición para comprobarla, podemos solucionarlo. Es difícil sugerir algo de esta manera. Alternativamente, después de la recepción de la señal, simultáneamente con la apertura de una posición, se puede establecer una bandera para prohibir las siguientes operaciones de este tipo, y en el bloque de apertura de posiciones para comprobar su presencia. Si se levanta la bandera, se salta la operación. Al recibir una señal contraria, la bandera se elimina, pero después de la primera apertura exitosa de una posición, la nueva bandera se establece - prohibiendo la apertura de operaciones de ese tipo, para las cuales se recibió una nueva señal. Y así sucesivamente.

Lo mostraré un poco más tarde, pero me parece que las banderas serían más geniales. ¿Cómo establecerlas a través de mql4?

Aquí está mi código:

//Учет ордеров истории
int ORDtype=-1;
double ORDprofit=0.001;
for( i=OrdersHistoryTotal(); i>=0; i--)
{
if(OrderSelect( i, SELECT_BY_POS, MODE_HISTORY))
 {
  if(OrderSymbol()==Symbol())
  {
   if(OrderCloseTime()!=0)
   {
     ORDtype=OrderType();
     ORDprofit=OrderProfit();
   }
  }
 }
}    

....

if (( ORDtype==OP_SELL)||( ORDtype==-1)&&(( ORDprofit<=0)||( ORDprofit==0.001))...
{
...
}
if (( ORDtype==OP_BUY)||( ORDtype==-1)&&(( ORDprofit<=0)||( ORDprofit==0.001))...
{
...
}
 

Quería hacer que expert no funcionara de 6 a 20 en el broker, comprobando antes de que se apague y esperando hasta que se cierre. Todo funciona pero me gustaría poder añadir una alerta como que el trading ha terminado cuando expert deja de operar.

if(TimeHour(TimeCurrent()) > 6 && TimeHour(TimeCurrent()) < 20 && Worktime == true)
{
if (OrdersTotal() == 0)
Alert("Торговля закончена");
return(0);
}

empieza a pitar en cada tic. En este caso, la alerta no sólo llegará una vez, sino que también se cortará el ciclo. Por favor, aconséjenme qué camino tomar, no consigo entenderlo...

 
Dimoncheg >> :

Quería hacer que expert no funcionara de 6 a 20 en el broker, comprobando antes de que se apague y esperando hasta que se cierre. Todo funciona pero me gustaría poder añadir una alerta como que el trading ha terminado cuando expert deja de operar.

if(TimeHour(TimeCurrent()) > 6 && TimeHour(TimeCurrent()) < 20 && Worktime == true)
{
if (OrdersTotal() == 0)
Alert("Торговля закончена");
return(0);
}

empieza a pitar en cada tic. En este caso, la alerta no sólo llegará una vez, sino que también se cortará el ciclo. Por favor, aconséjenme qué camino tomar, no consigo entenderlo...

Una de las opciones:

if(TimeHour(TimeCurrent()) > 6 && TimeHour(TimeCurrent()) < 20 && Worktime == true)
   {
   if (OrdersTotal() == 0)
   if( NeedAlert){ Alert("Торговля закончена"); NeedAlert=false;}
   return(0);
   }
Establezca la variable bool NeedAlert a true cuando empiece a operar.
Razón de la queja: