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

 
Valeriy Yastremskiy:

Las banderas controlan el número de tipos de órdenes o si hay una entrada controlan la hora de cierre de la orden de mercado, si no es igual a cero entonces la orden se ha cerrado y la bandera de apertura de la orden es falsa.

¿Y cómo programar?
 
AIGUL SALMANOVA:
¿Cómo se hace esto de forma programada?
 if(OrderSelect(Ticket, SELECT_BY_TICKET)==true)
        {
         if(OrderCloseTime()==0)              // Если наш рыночный ордер не закрыт
           {
            if(flagAlert == true)
               Alert("Наш рыночный ордер жив, Модифицируем его если нужно ", Text,Ticket,". Ждём ответ..");

            ModifyTral(); // Модифицируем если нужно
           }
         if(OrderCloseTime()!=0)              // Если наш рыночный ордер закрылся
           {
            OpnOr=false;                     // Флаг открытия рыночного ордера после его закрытия делаем ЛОЖЬ
            Ticket=0;                          // Тикет ордера рыночного, он может быть только один
           
            Alert("Наш рыночный ордер закрылся. Работа Советника продолжается ","Прибыль/убыток = ",OrderProfit(),
                  " Своп = ", OrderSwap(), " Комиссия = ", OrderCommission());
            return;
           }
        }
      else
        { Alert("OrderSelect() нашего рыночного ордера вернул ошибку - ",GetLastError()); return;}
     }

Para dar cuenta de un billete.

Al abrir un pedido, el ticket debe ser memorizado.

 Alert("Попытка открыть Buy Ожидание ответа..","SL = ",SL,"TP = ",TP,"Lts = ",Lts);
            Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,slippage,SL,TP,"QstrBuy",Magic,0,Blue);//Открытие Buy
            if(Ticket>0) // Получилось :)
              {
               Alert(Symbol(),"Открыт ордер Buy по цене ",Ask,"Ticket = ",Ticket);}
 
Valeriy Yastremskiy:

Para ser sincero, no está claro lo que buscas. Escriba en las fórmulas cómo entiende lo que sale y lo que necesita.

Necesitas el tiempo en milisegundos entre los últimos 4 ticks. Actualiza los valores cuando aparece un nuevo tick.

El indicador escribe la hora del último tick(GetTickCount()) en el buffer.

El Asesor Experto toma los valores del indicador y calcula la diferencia de tiempo.

double buf1=iCustom(Symbol(),0,"time",0,1);
double buf2=iCustom(Symbol(),0,"time",0,2);
double buf3=iCustom(Symbol(),0,"time",0,3);
double buf4=iCustom(Symbol(),0,"time",0,4);
double delta1=buf1-buf2;
double delta2=buf2-buf3;
double delta3=buf3-buf4;
Alert(delta1,"   ",delta2,"   ",delta3);

Parece que cuenta, pero Alert muestra los valores como en la imagen.

No entiendo por qué.


 
prom18:

Necesita el tiempo en milisegundos entre los últimos 4 ticks. Actualiza los valores cuando se produce un nuevo tick.

El indicador escribe la hora del último tick (GetTickCount()) en el buffer.

El Asesor Experto toma los valores del indicador y calcula la diferencia de tiempo.

Parece que cuenta, pero Alert muestra los valores como en la imagen.

No entiendo por qué.


Porque no has leído la documentación

La ayuda para GetTickCount dice que es un desbordamiento del contador de enteros

 
Maxim Kuznetsov:

porque no lees la documentación.

La referencia GetTickCount dice que es un desbordamiento de enteros.

¿Te refieres a uint? ¿Por qué aparece en la alerta? Yo no lo puse ahí.

 
prom18:

¿Te refieres a uint? ¿Por qué aparece en la alerta? No lo escribí allí.

En el primer Alerte usted emite incorrectamente (sin tener en cuenta los desbordamientos) la diferencia calculada,

la segunda Alerta, donde se busca un valor entero grande en el código, no está presente en este fragmento :-)

 

Esa es la cuestión, no está en el código.

Todo el código del indicador.

#property  indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua
double x[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(1);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,x);
   SetIndexDrawBegin(0,0);
   SetIndexLabel(0,"x");
   SetIndexShift(0,0);
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   uint b=GetTickCount();
   x[0]=b;
   Alert(b);
   for(int j=ArraySize(x)-1;j>=1;j--){x[j]=x[j-1];}
   return(0);
  }
//+------------------------------------------------------------------+

Todo el código de EA.

#property copyright ""
#property link      ""
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- 
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   uint buf1=iCustom(Symbol(),0,"time",0,1);
   uint buf2=iCustom(Symbol(),0,"time",0,2);
   uint buf3=iCustom(Symbol(),0,"time",0,3);
   uint buf4=iCustom(Symbol(),0,"time",0,4);
   uint delta1=buf1-buf2;
   uint delta2=buf2-buf3;
   uint delta3=buf3-buf4;
   Alert(delta1,"   ",delta2,"   ",delta3);  
  }
//+------------------------------------------------------------------+
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
 
prom18:

Esa es la cuestión, no está en el código.

Todo el código del indicador.

Todo.

Mira qué más hay en él.

time.mq4 - tal vez envía alertas

 
prom18:

Esa es la cuestión, no está en el código.

Todo el código del indicador.

Todo el código de EA.

En el indicador, en la estructura de alerta. La 5ª línea desde abajoAlerta(b);

uint b=GetTickCount();
   x[0]=b;
   Alert(b);

Aparentemente es el número de milisegundos desde el inicio del sistema)

 

¿Cómo puedo seguir el estado de los botones de comercio rápido?

Es decir, si están presentes en el gráfico o no.

¿Puede sugerir una función u otro método?