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

 
FOTOGRAF14:

Olá a todos! Como faço para escrever minha condição! Preciso colocar uma ordem de stop-loss após o preço ter ultrapassado a distância de stop-loss

para Buy.....

se( )

{

------------

}

para Sell.....


função para transferir STB para Breakeven, o bilhete de pedido e a distância em pips são passados para a função

void zero_profit(int ticket, int distance)
  {
   double sl=0.0;

   if(OrderSelect(ticket,SELECT_BY_TICKET))
     {
      if(OrderType()==OP_BUY)
        {
         if(Bid>=OrderOpenPrice() && Bid-OrderOpenPrice()>=distance*_Point) sl=OrderOpenPrice();
         if(OrderStopLoss()!=0 && OrderStopLoss()>=OrderOpenPrice())return;
        }
      if(OrderType()==OP_SELL)
        {
         if(Ask<=OrderOpenPrice() && OrderOpenPrice()-Ask>=distance*_Point) sl=OrderOpenPrice();
         if(OrderStopLoss()!=0 && OrderStopLoss()<=OrderOpenPrice())return;
        }
      ResetLastError();

      if(sl<=0)return;
      if(!OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0))
        {
         int error=GetLastError();
         rezult=StringConcatenate(OrderSymbol(),": error modifying StopLoss order ",OrderTicket()," ",TypeToStr(OrderType())," №- ",error);
         Print(rezult);
        }

     }
  }


...

 
Vitaly Muzichenko:

Não haverá nenhuma pintura)

A própria lógica de busca é pesada lá, e como torná-la mais fácil - eu ainda não sei.

Vitaly, eu originalmente tentei explicar que não são os cálculos que atrasam o testador, mas os objetos gráficos nos testes visuais. Faça-o da maneira que ele aconselha

Alexey Kozitsyn:

Você pode enrolá-lo no indicador sem desenhar). E é melhor fazer uma escolha. Lúpulo - desenho, lúpulo - sem desenho:)

e ver a diferença na velocidade.

Não é nem o desenho que está atrasado, é apenas a presença de gráficos na carta.

 
Alexey Viktorov:

Não é nem mesmo o desenho que está atrasando as coisas, é apenas a presença de gráficos no gráfico.

Nenhum argumento... É por isso que eu disse que quando não preciso, eu o desligo (DRAW_NONE) e é isso... e você pode acessar os valores da mesma forma.
 
Alexey Viktorov:

Vitaly, eu originalmente tentei explicar a você que não são os cálculos que atrasam o testador, mas os objetos gráficos nos testes visuais. Faça o que ele diz

e ver a diferença na velocidade.

Não é nem mesmo o desenho que está atrasado, é apenas a presença de gráficos na carta.

Eu testei a função sem nenhum gráfico, o gráfico foi feito apenas para ver a exatidão dos cálculos enquanto escrevia o código - era puramente técnico e foi removido do código por muito tempo. A tabela está em branco durante os testes.

Assim, quando sem função, o teste "voa", mas liga a função - ele vai lentamente.

P.S. Eu não preciso de objetos gráficos em princípio. Esqueça os gráficos - eu não os tenho e não vou tê-los!

 
Vitaly Muzichenko:

Eu testei a função sem nenhum gráfico, o gráfico foi feito apenas para ver se os cálculos estavam corretos enquanto escrevia o código - era puramente técnico e foi removido do código há muito tempo. A tabela está em branco durante os testes.

Então, quando eu não tenho função, então teste "moscas", mas conecte a função - ela vai devagar.

P.S. Eu não preciso de objetos gráficos em princípio. Esqueça os gráficos - eu não os tenho e não vou tê-los!

Você já olhou aqui?
 
Artyom Trishkin:
Você já olhou aqui?

Legal, vou tentar puxar as funções para dentro da EA. Publicarei o resultado mais tarde.

Obrigado!!!

 
Favor ajudar a entender como escrever o código corretamente para que o índice de barras seja aberto às 16:00 e 15:00
 
missha689:
Por favor, ajude-me a entender como escrever o código corretamente para que o índice de barras seja aberto às 16:00 e 15:00

Esta é uma delas.

datetime some_time=D'2017.03.03 4:00';
  int      shift=Bars("EURUSD",PERIOD_CURRENT,some_time,TimeCurrent());
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);

Isso são dois.

datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EURUSD",PERIOD_CURRENT,some_time);
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);
Доступ к таймсериям и индикаторам - Справочник MQL4
Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Доступ к таймсериям и индикаторам - Справочник MQL4
 
Alexey Viktorov:

Esta é uma delas.

datetime some_time=D'2017.03.03 4:00';
  int      shift=Bars("EURUSD",PERIOD_CURRENT,some_time,TimeCurrent());
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);

Isso são dois.

datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EURUSD",PERIOD_CURRENT,some_time);
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);
Entendo que a data está definida para um dia específico, mas como posso definir o índice de barras para ser 15 ontem e o índice de barras para ser 4 hoje?
 
Você pode me dizer como saber programticamente a data e a hora de ontem?