[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 304

 
pigvin:

El problema es que el EA reabre constantemente las órdenes, es decir, hay una señal de compra - abre una orden, luego la cierra en beneficio, y las condiciones se conservan la abre de nuevo.

Pensé que se podría resolver con el contador tradicional de compra y venta - si la orden de compra abrió el contador +1 y una nueva compra no se puede abrir hasta que el contador está por encima de 0 y el contador se restablece sólo después de la venta.

Es decir, ¿hay señal en una barra pero ya ha sido utilizada?

Puedes hacerlo así

datetime save_time; 
int tf=0;
старт
...
if(total<1)//проверка количества ордеров 
   {
         if(save_time!=iTime(0,tf, iBarShift(0,tf,Time[0])))
            save_time =iTime(0,tf, iBarShift(0,tf,Time[0]));
         else return;


  ...
 if(ticket>0)
                      {
                         if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("открыта позиция BUY : ",OrderOpenPrice());
      
                         else Print("Ошибка при открытии BUY позиции : ",GetLastError()); 
                        }else{ save_time =0;}// так как ошибка запретим ретурн (см. выше)
 
Operr:

Pruébalo así.

if (OrderOpenTime()+2*1440*60  > Time[0])   //т.е. последнее время текушего графика а не локальное

Debería funcionar en ambos sentidos.

Para mí tiene más sentido.

if (Time[0]-OrderOpenTime() >= 2*1440*60 )   
 

¡Hola a todos!

Perdón por el off-topic, el tema está en demanda, por eso escribo aquí, ¿me pueden dar una pista? Atascado.

¿Cómo, utilizando sólo operaciones elementales (+-*/%), realizar la exponenciación (incluso real) de un número real? Por ejemplo, la calculadora de viento, cuando se aplica a la potencia de 1,2, da el resultado 1,2445647472073939777218169154111826. Interesado en el algoritmo, la lengua no importa, ninguna. Lo traduciré yo mismo.

ZS. ¿Cuántas pruebas de programación no he hecho, veo un problema así por primera vez, aunque puede ser trivial para alguien?

 

¡Buenas tardes a todos!

He buscado en muchos foros y artículos de Google , pero no he encontrado una respuesta

He decidido escribir un EA para operar con dos órdenes opuestas en М1

La idea es simple: poner dos órdenes opuestas con TP pequeños, entonces, cuando el TP de uno de ellos para el segundo temporizador activado es el número de barras (digamos 5), será SL temporal. El cálculo es que si la divisa se moverá en la misma dirección, las pérdidas cuando la segunda orden activa el SL temporal serán mínimas, si el gráfico se da la vuelta, estamos en el negro en dos posiciones.

No sé cómo escribir un fragmento de código con "cuando se dispara un TP de uno de ellos, el temporizador del segundo se enciende como un número de barras".

actualmente solo tengo un temporizador para dos pedidos a la vez, pero no puedo sacarle mucho partido

PS No he resuelto este problema durante un mes, por favor, ayúdame con consejos o código:)

aquí está el código del asesor

extern int SL=100;

extern int TP=100;

extern double StartLot=0.1;

extern double StopLot=1.0;

extern int bar_time=20;


double Lot()

{

double lt;

if(OrdersHistoryTotal()==0) return (StartLot);

if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

{

if(OrderProfit()<0)

{

lt=OrderLots()*2;

if(lt>StopLot) return (StartLot);

else return (lt);

}

else

return (StartLot);

}

else

return (StartLot);

}

int start()

{

double lot;

if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)

{

int order;

{

lot=Lot();

order=OrderSend(Symbol(),OP_BUY,lot,Ask,0,Ask-SL*Point,Ask+TP*Point,0,0,0,Green);

order=OrderSend(Symbol(),OP_SELL,lot,Bid,0,Bid+SL*Point,Bid-TP*Point,0,0,0,Green);

}

}

//вот здесь должно быть что-то что является решением проблемы и связующим звеном

{

int bars = iBarShift( Symbol(), PERIOD_M1, OrderOpenTime() ) ;

if ( iTime( Symbol(), PERIOD_M1, bars ) > OrderOpenTime() ) { bars ++; }

if ( bars >= bar_time )

OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5,White);

}

return(0);

}


Gracias de antemano

 
No en una barra! En principio, no deberíamos abrir en esta tendencia hasta que no haya una señal de reversión o turbulencia en el mercado!
costy_:

Es decir, ¿hay señal en una barra, pero ya ha sido utilizada?

Puedes hacer esto

 
snail09:

¡Hola a todos!

Perdón por el off-topic, el tema está en demanda, por eso escribo aquí, ¿me pueden dar una pista? Atascado.

¿Cómo, utilizando sólo operaciones elementales (+-*/%), realizar la exponenciación (incluso real) de un número real? Por ejemplo, la calculadora de viento, cuando se aplica a la potencia de 1,2, da el resultado 1,2445647472073939777218169154111826. Interesado en el algoritmo, la lengua no importa, ninguna. Lo traduciré yo mismo.

ZS. Cuántas pruebas de programación no he hecho, es la primera vez que veo un problema así, aunque puede ser trivial para algunos...

https://docs.mql4.com/ru/math/MathPow ¿no? O las operaciones elementales son una condición del problema. Entonces la opción http://bpascal.ru/download/desc/436.php si lo haces todo a mano, entonces implementa el exponente y el logaritmo con tus propias funciones.

 
индикаторcosty_:

Se utiliza while(i>=0), de modo que cuando aparece una nueva vela i=1 (para asegurarse de que los datos de la vela anterior se calculan sobre los datos fijos una vez).

Por qué introducir some_time=D'1971.01.11 00:00'; usar Bares, IndicatorCounted no me funciona (bueno, el error es probablemente por el first_t_bar).

Su algoritmo y debería arreglarlo.

"Soynuevo en la programación."Soy nuevo en la programación desde 2007).


De todos modos, no entiendo por qué mi diseño funciona bien y el estándar no. some_time=D'1971.01.11 00:00'; aquí se utiliza una vez al inicio. Pero no tiene nada que ver porque en un caso funciona y en otro no. Volveré a hacer el indicador más tarde. Se trata de una versión modificada de otro indicador. Gracias por la respuesta.

 
Sonne:

¡Buenas tardes a todos!

He buscado en muchos foros y artículos de Google , pero no he encontrado una respuesta

He decidido escribir un EA para operar con dos órdenes opuestas en М1

La idea es simple: poner dos órdenes opuestas con TP pequeños, entonces, cuando el TP de uno de ellos para el segundo temporizador activado es el número de barras (digamos 5), será SL temporal. El cálculo es que si la divisa se moverá en la misma dirección, las pérdidas cuando la segunda orden activa el SL temporal serán mínimas, si el gráfico se da la vuelta, estamos en el negro en dos posiciones.

No sé cómo escribir un fragmento de código con "cuando se dispara un TP de uno de ellos, el temporizador del segundo se enciende como un número de barras".

actualmente solo tengo un temporizador para dos pedidos a la vez, pero no consigo sacarle mucho partido

PS durante un mes no puede resolver este problema, por favor, ayudar a los consejos o el código:)

aquí está el código

................................................

Daré lo mejor de mí de antemano gracias de antemano.

1. Si hay una posición cerrada en un Takei...

1.1 Si su tipo es OP_BUY, ...

1.1.2 Si hay una posición abierta OP_SELL, ...

1.1.3 Si el tiempo de la barra actual menos el tiempo de la barra que abre la posición de venta es mayor o igual que el número de barras para el retraso, ....

1.1.4 Cerramos la posición de venta

1.2 Si su tipo es OP_SELL, ...

1.2.2 Si hay una posición abierta OP_BUY, ...

1.2.3 Si el tiempo de la barra actual menos el tiempo de apertura de la posición de compra es mayor o igual que el número de barras a mantener, ....

1.2.4 Cerrar la posición de compra

 
Hola, ¿podría aconsejar donde conseguir una historia normal (sin agujeros) y si la historia de minutos de MT5 para MT4?
 

Buenas noches a todos, pido disculpas por la pregunta estúpida anterior)

Quiero saber si es posible que un EA en el que hay una variable, digamos "A", tenga un valor de precio en el momento y opere. Si queremos cambiar este valor por cualquier valor histórico, por ejemplo, tomar cualquier valor mensual y derivar el valor deseado del análisis del historial. He intentado hacerlo en el probador de estrategias, pero tengo muchas dudas respecto a su corrección. ¿O tendré que volver a hacerlo y trabajar con matrices? Gracias a todos.

p.d. Quiero saber ya que no lo encontré en el manual y tutorial de MQL.