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

 
snowman647 >> :

Esto está lejos de ser aleatorio. Quiero un Asesor Experto que utilice variables aleatorias lo más aleatoriamente posible)) si no lo encuentro, lo publicaré.

Que yo sepa no hay ningún número aleatorio en ACM. hay un número pseudo-aleatorio. así que es más o menos lo mismo que el esquema que he sugerido.

En realidad, sobre los números pseudoaleatorios lea aquí https://www.mql4.com/ru/search/?keyword=%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D0%BE%D0%B5+%D1%87%D0%D0%B8%D1%81%D0%BB%D0%BE

 
vik-777 >> :
>> Hola, ¿podríais decirme cómo buscar una barra por tiempo y mostrar el precio de apertura y cierre?

De nuevo, realmente necesito

 
Stepan241 >> :

En primer lugar, la entrada no es del todo correcta

MA_1 = iMA(NULL,0,Period_MA_1,Sdvig_1,MODE_SMA,PRICE_CLOSE,0); // Llamar al indicador de función
MA_2 = iMA(NULL,0,Period_MA_2,Sdvig_2,MODE_SMA,PRICE_CLOSE,0);

Los ceros deben ser sustituidos por 1

Para determinar el momento del cruce, no sólo hay que tener en cuenta el valor actual (por encima o por debajo, sino también el valor anterior)

Por lo tanto, debemos añadir

MA_1_Prev = iMA(NULL,0,Period_MA_1,Sdvig_1,MODE_SMA,PRICE_CLOSE,2); // Llamar a la función del indicador
MA_2_Prev= iMA(NULL,0,Period_MA_2,Sdvig_2,MODE_SMA,PRICE_CLOSE,2);

nota número 2

En otras palabras, este bloque tendrá ahora el siguiente aspecto

MA_1 = iMA(NULL,0,Period_MA_1,Sdvig_1,MODE_SMA,PRICE_CLOSE,1); // Llamar al indicador de función
MA_2 = iMA(NULL,0,Period_MA_2,Sdvig_2,MODE_SMA,PRICE_CLOSE,1);

MA_1_Prev = iMA(NULL,0,Period_MA_1,Sdvig_1,MODE_SMA,PRICE_CLOSE,2); // Llamar a la función del indicador
MA_2_Prev= iMA(NULL,0,Period_MA_2,Sdvig_2,MODE_SMA,PRICE_CLOSE,2);

La línea

si (MA_2 < MA_1 && Fact_Up == true)

sustituir por if (MA_2 < MA_1 && MA_2_Prev>MA_1_Prev && Fact_Up == true)


Haga la misma sustitución para la segunda condición y la condición de salida. La condición de nuevo está marcada en azul. Ahora entraremos en una posición larga cuando la Primera Media Móvil sea mayor que la Segunda, mientras que el valor anterior de la Primera Media Móvil sea menor que el valor anterior de la Segunda.

Gracias.

 
vik-777 писал(а) >>

>> de nuevo, realmente necesito

 
DDFedor >> :

>> eso es, encuentra cuántos segundos a esa barra.

datetime some_time=D'2004.03.21 12:00';

int shift=iBarShift("EUROUSD",PERIOD_M1,some_time);

 
vik-777 >> :

>> eso es, encuentra cuántos segundos a esa barra.

pero como saber el precio de apertura y cierre de esta barra

 
vik-777 писал(а) >>

y cómo averiguar el precio de apertura y cierre de esta barra

https://docs.mql4.com/ru/series

A continuación, el número de la barra encontrada se utiliza en las funciones de series temporales...

double MyOpenPrice =  iOpen(Symbol(),Period(),iBarShift(Symbol(),Period(), some_time));
 

No entiendo cómo hacerlo, ya he buscado un ejemplo en internet (2 días) y no lo he encontrado.

 
DDFedor >> :

https://docs.mql4.com/ru/series

A continuación, el número de la barra encontrada se utiliza en las funciones de series temporales...

muchas gracias

 
vik-777 >> :
>> Hola, ¿podríais decirme cómo buscar una barra por tiempo y mostrar el precio de apertura y cierre?


datetime some_time=D'2009.12.07 01:15';
int shift=iBarShift("EURUSD",PERIOD_M1,some_time);

Alert("бар: ",shift," * время: ",TimeToStr(some_time)," * цена откр.: ",
iOpen("EURUSD",PERIOD_M1,shift)," * цена закр.: ",iClose("EURUSD",PERIOD_M1,shift));