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

 
STARIJ:
escribir un script y después de cada declaración mostrar la información + GetLastError() con Alert() - ver el script de ejemplo anterior
¿Cómo lo hago si tengo un error en mi código? ¡Alert() no me ayudará si el script no funciona!
 
Lowech:
¿Cómo puedo hacer esto si tengo un error en mi código? ¡Alert() no me ayudará si el script no funciona!

deseche todo menos la primera línea del script y añada Alert. Luego añádalo gradualmente - aprenda a programar y a depurar

 
LRA:
Eso fue rápido. ¿Cómo buscará los bares? ¿En un bucle o utilizando la estructura temporal?

EUR USD

//+-------------------------------------------------------+
//| Проверка дней недели                       PRVERKA.mq4|
//| если первая пятница месяца была бычьей, а             |
//| 2-й понедельник медвежий - открываем сделку на продажу|
//+-------------------------------------------------------+
#property strict
void OnStart()
{
  int День=Day(), ДеньН=DayOfWeek();
  Alert("----------------------");
  int ДеньНачалаМесяца = (ДеньН-День+36) % 7;

// Если день начала месяца = 6, то число первой пятницы равно 7. Иначе 6 - день начала месяца
  int ЧислоПервойПятницы = ДеньНачалаМесяца==6?7:6-ДеньНачалаМесяца;

// Если день начала месяца < 2, то число второго понедельника равно 9 - день начала месяца. Иначе 16 - день начала месяца
  int ЧислоВторогоПонедл = (ДеньНачалаМесяца<2?9:16)-ДеньНачалаМесяца;
  Alert("ЧислоПервойПятницы = ", ЧислоПервойПятницы, "  ЧислоВторогоПонедл = ", ЧислоВторогоПонедл);

  if(ЧислоВторогоПонедл>=День)
  {
    Alert("Надо подождать числа ", ЧислоВторогоПонедл+1);
    return;   // Отключил до числа, следующего за вторым понедельником
  }

  int Продавать=0;
  for(int Бар=0;;Бар++)  //  Ищем на D1 номера баров для заданных чисел месяца
  {
    if(TimeDay(iTime(NULL,PERIOD_D1,Бар))==ЧислоВторогоПонедл)
    {
      if(iClose(NULL,PERIOD_D1,Бар)<iOpen(NULL,PERIOD_D1,Бар)) Продавать++;
      break;
    }
    if(TimeDay(iTime(NULL,PERIOD_D1,Бар))==ЧислоПервойПятницы)
      if(iClose(NULL,PERIOD_D1,Бар)>iOpen(NULL,PERIOD_D1,Бар)) Продавать++;
  }
  if(Продавать==2) bool x=OrderSend(_Symbol, OP_SELL, 0.1, Bid, 7, 0, 0);
}
 
LRA:

deja todo el script excepto la primera línea y añade Alert. Luego añádelo gradualmente - aprenderás a programar y depurar

No funcionó( pero gracias por tu ayuda.
 
int 1 = OrdersHistoryTotal();
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
int tip=OrderType();
Afternoon. ¡Necesito ayuda, necesito cerrar la orden de venta y luego la siguiente orden solo puede ser de compra abierta, quiero usar el historial de órdenes para encontrar la última orden cerrada y saber su tipo, pero no puedo hacerlo (quien sepa que estoy haciendo mal, que me lo diga) si no conozco la respuesta, que me ayude a hacer funcionar el código, por favor no escriban!
 
Lowech:
int 1 = OrdersHistoryTotal();
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
int tip=OrderType();
Afternoon. ¡Necesito ayuda, necesito cerrar la orden de venta y luego la siguiente orden solo puede ser de compra abierta, quiero usar el historial de órdenes para encontrar la última orden cerrada y saber su tipo, pero no puedo hacerlo (quien sepa que estoy haciendo mal, que me lo diga) si no conozco la respuesta, que me ayude a hacer funcionar el código, por favor no escriban!
Cuando intentamos traducir - muestra un mensaje de error: '1' - nombre esperado. Se requiere el nombre de la variable en lugar del número 1
 

Buenas noches, a continuación está el código, escribí un contador de ticks, mi idea es que los ticks se cuenten en cada barra del bucle, en cada nueva barra el contador se pone a cero, cuando inicio el indicador dice en los comentarios que en la barra anterior 1 tick y los ticks actuales empieza a contar desde

Si intento usar un sprite mágico diferente, no sé por qué lo he intentado pero no sé por qué lo he intentado. ¿Tal vez lo escribí mal?

#property indicator_chart_window
double old_price;
double count_plus=0,count_minus=0,sum=0,psum=0;
bool Fun_New_Bar=false;
datetime Prev_Time=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

  double price;
  int i=0;
  int limit; 
  double delta; 
limit=rates_total-prev_calculated;
if(prev_calculated<1) limit=rates_total-1;
for(i=limit; i>=0; i--)  
{
 if (Fun_New_Bar==false)                              
  {                                             
   
   if (Prev_Time==0) 
     {
        Prev_Time=time[i];
        Fun_New_Bar=false;
     }
   if(Prev_Time!=time[i])                        
     {
      Prev_Time=time[i];
      psum=sum;
      count_plus=0;
      count_minus=0;
      sum=0;                         
      Fun_New_Bar=false;                            
     }
    } 
  if(old_price==0) old_price=close[i];
   
    price = close[i];
    delta = price - old_price;
     
     //-- считаем "верхние" тики 
    if(delta>=0) {
      count_plus++;
               }
      
     //-- считаем "нижние" тики
    if(delta<0) {
      count_minus++;
        }
    sum=count_minus+count_plus;   
        //----
    old_price=price;
    
  Comment(StringFormat("Выводим цены\ncount_minus = %G\ncount_plus = %G\nsum = %G\npsum = %G",count_minus,count_plus,sum,psum));
}

   return(rates_total);
  }
 
PokrovMT5:

Buenas noches, a continuación está el código, escribí un contador de ticks, mi idea es que los ticks se cuenten en cada barra del bucle, en cada nueva barra el contador se pone a cero, cuando inicio el indicador dice en los comentarios que en la barra anterior 1 tick y los ticks actuales empieza a contar desde

Si intento usar un sprite mágico diferente, no sé por qué lo he intentado pero no sé por qué lo he intentado. ¿Tal vez lo escribí mal?

Si entiendo bien el problema y la pregunta, los ticks no se guardan en el historial. Echa un vistazo a mi indicador.

 
Alexey Viktorov:

Si he entendido bien el problema y la pregunta, no guarda los ticks en el historial. Vea mi indicador.


El enlace no funciona, dice que no hay página

 
PokrovMT5:

Buenas noches, a continuación está el código, escribí un contador de ticks, mi idea es que los ticks se cuenten en cada barra del bucle, en cada nueva barra el contador se pone a cero, cuando inicio el indicador dice en los comentarios que en la barra anterior 1 tick y los ticks actuales empieza a contar desde

Si intento usar un sprite mágico diferente, no sé por qué lo he intentado pero no sé por qué lo he intentado. ¿Tal vez lo escribí mal?

devolver rates_total-1 o 0

Razón de la queja: