Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 270

 
Artyom Trishkin:
Basta con saber qué día de la semana fue el primero del mes. El resto está calculado.

Es como rascarse la oreja derecha con la mano izquierda.

 
Darirunu:

Lo siento, probablemente no estabas prestando atención a la pregunta.

Cómo se escribe la condición en el cuatro: si el primer viernes del mes fue alcista y

el segundo lunes es bajista entonces abrimos una operación de venta.

DayOfWeek()==1 El lunes está claro, pero ¿qué lunes del mes?)

¡Lo tengo! Estás hablando de tu algoritmo, que sólo tú conoces. ¡He escrito, determinar el día de la semana para el primer día del mes! Y luego utilizamos una tabla o dos fórmulas sencillas para determinar las fechas de los días que nos interesan.

Consulta la tabla del calendario.

Si el primer día del mes es el 6, el número del primer viernes es el 7. En caso contrario, el primer viernes es igual al 6, el día de inicio del mes.

Si el día del mes comienza < 2, el segundo lunes es igual a 9 - día del mes. De lo contrario, el segundo número del lunes es el 16, el día del mes.

Utilizando las funciones matemáticas el resto de la división y el módulo serán mucho más cortos

 
LRA:

¡Lo tengo! Estás hablando de tu algoritmo, que sólo tú conoces. Lo que digo es que hay que determinar el día de la semana para el primer día del mes. Y luego utilizamos una tabla o dos fórmulas sencillas para determinar las fechas de los días de interés.

Consulta la tabla del calendario.

Si el primer día del mes es el 6, el número del primer viernes es el 7. En caso contrario, el primer viernes es igual al 6, el día de inicio del mes.

Si el día del mes comienza < 2, el segundo lunes es igual a 9 - día del mes. En caso contrario, el segundo lunes es igual a 16 - el día del mes

Gracias. Que Dios te bendiga... Lo comprobaré.
 
Darirunu:
Gracias. Que Dios te bendiga. Seguiré revisando.

Muchas gracias por su deseo. Y sigue poniendo un espacio después del punto y otro antes del punto. Ayudará en la programación. Buena suerte y, si lo necesitas, ¡beneficios!

 
LRA:

Muchas gracias por sus sugerencias. Y es posible que quieras poner un espacio después de un punto y omitir un espacio antes de un punto. Ayudará en la programación. Buena suerte y, si lo necesitas, ¡buena suerte!


Sale muy complicado. Debe haber una opción más sencilla. ¿Alguien puede compartirlo?

Digamos que mañana algo cambiará en las actualizaciones y tendremos que reescribir todo.

 
Darirunu:

Sale muy complicado. Debe haber una opción más sencilla. ¿Alguien puede compartirlo?

Digamos que mañana algo cambia en las actualizaciones y tenemos que reescribir todo.

No es tan difícil. Pero para cada situación tenemos que establecer diferentes valores, cuántas barras diarias deben ser copiadas y cuáles deben ser importadas en las estructuras.

/********************Script program start function********************/
void OnStart()
{
 MqlDateTime mqlDateTime0, mqlDateTime1;
 datetime arrDateTime[7];
 CopyTime(_Symbol, PERIOD_D1, 0, 7, arrDateTime);
 TimeToStruct(arrDateTime[0], mqlDateTime0);
 TimeToStruct(arrDateTime[6], mqlDateTime1);
 if(mqlDateTime0.day_of_week == FRIDAY && mqlDateTime0.mon != mqlDateTime1.mon)
  {
   Print("Ура!!! Сегодня первая пятница");
   // Дальше можно брать по времени пятницы открытие и закрытие бара и на основании этого определяем бычья или медвежья свеча...
  }
}/********************************************************************/

Es mejor tomar los parámetros de las velas en la estructura MqlRates

 
Alexey Viktorov:

Pero para cada situación hay que establecer diferentes valores, cuántas barras diarias copiar y cuáles poner en las estructuras.



Esto es lo que estoy hablando y sólo estoy interesado en MQL4.

 
Darirunu:

A eso me refiero y solo me interesa el MQL4 ...Hay que buscar otra solución .

Eso es lo que es mql4.
Archivos adjuntos:
00.mq4  2 kb
 
double ma;
   int    res;
   int nomber = OrdersHistoryTotal();
   int tip=OrderType();
   if(OrderSelect(nomber,SELECT_BY_POS,MODE_HISTORY))
   {
   tip=OrderType();
   }
   ma=iMA(NULL,0,MovingPeriod,120,MODE_SMA,PRICE_CLOSE,1);
   if(Bid<ma)
   if(tip!=OP_SELL)
   {
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,Bid-TP*Point,"",MAGICMA,0,Red);
      return;
     }



Buenas tardes. Necesito ayuda. Si hay una orden de venta cerrada, la siguiente orden sólo puede ser de compra abierta.
 
Darirunu:

A eso me refiero y sólo me interesa el MQL4.

También tengo esta idea.

Si necesita el primer viernes, el número debe ser inferior a 8. Si el primer viernes del mes es viernes, el siguiente viernes será el octavo. En consecuencia, podemos recalcular fácilmente a cualquier día de la semana y cualquier día, segundo, tercero...

Razón de la queja: