Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1216

 
Valeriy Yastremskiy:

As bandeiras ou controlam o número de tipos de ordem ou, se houver um controle de ingressos, o tempo de fechamento da ordem de mercado, se não for igual a zero, então a ordem fechou e a bandeira de abertura da ordem é falsa.

E programmaticamente como ?
 
AIGUL SALMANOVA:
Como isso é feito programmaticamente ????
 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 contabilizar um bilhete.

Ao abrir um pedido, o bilhete deve 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 honesto, não está claro o que você está procurando. Escreva em fórmulas como você entende o que é produzido e o que você precisa.

Você precisa do tempo em milissegundos entre os últimos 4 ticks. Atualizar valores quando aparecer um novo tick.

O indicador escreve o tempo do último tick(GetTickCount()) no buffer.

O Expert Advisor retira valores do indicador e calcula a diferença de tempo.

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 contar, mas o Alerta mostra valores como na imagem.

Eu não entendo por que.


 
prom18:

Precisa do tempo em milissegundos entre os últimos 4 ticks. Atualiza os valores quando ocorre um novo tick.

O indicador escreve o tempo do último tick (GetTickCount()) no buffer.

O Expert Advisor retira valores do indicador e calcula a diferença de tempo.

Parece contar, mas o Alerta mostra valores como na imagem.

Não entendo por que.


Porque você ainda não leu a documentação

A ajuda para GetTickCount diz que é um transbordo de um contador inteiro

 
Maxim Kuznetsov:

porque você não lê a documentação.

A referência GetTickCount diz que é um transbordo de números inteiros.

Você quer dizer uint? Por que ele está aparecendo em alerta? Eu não o coloquei lá.

 
prom18:

Você quer dizer uint? Por que ele está aparecendo em alerta? Eu não o escrevi lá.

No primeiro Alerte você produz de forma incorreta (sem levar em conta os transbordamentos) a diferença calculada,

o segundo Alerta, onde um grande valor inteiro é procurado no código, ele não está presente neste fragmento :-)

 

Aí é que está, não está no código.

Todo o código 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 o código 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:

Aí é que está, não está no código.

Todo o código indicador.

Tudo isso.

Veja o que mais há nele.

time.mq4 - talvez envie alertas

 
prom18:

Aí é que está, não está no código.

Todo o código indicador.

Todo o código EA.

No indicador, na estrutura Alerta. A 5ª linha a partir doAlerta(b) inferior;

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

Aparentemente, este é o número de milissegundos desde o início do sistema)

 

Como faço para acompanhar o status dos botões de troca rápida?

Ou seja, estão ou não presentes na tabela.

Você pode sugerir uma função ou outro método?