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

 
Por favor, informe como funciona em MT5
iClose(NULL,PERIOD_CURRENT,shift)

Eu recebo erro'iClose' - chamada ambígua para função sobrecarregada.

Em geral, o objetivo é selecionar a TF.

Eu queria escolhê-lo com o MT4 por hábito

if(iClose(NULL, TF(), 1) < iOpen(NULL, TF(), 1))

int TF()
  {
   int tf;
   switch(TF)
     {
      case 1 :
         tf = 1;
         break;
      case 2 :
         tf = 5;
         break;
      case 3 :
         tf = 15;
         break;
      case 4 :
         tf = 30;
         break;
      case 5 :
         tf = 60;
         break;
      case 6 :
         tf = 240;
         break;
      case 7 :
         tf = 1440;
         break;
      case 8 :
         tf = 10080;
         break;
      case 9 :
         tf = 43200;
         break;
      default:
         tf = 10;
         Print(tf);
     }
   return(tf);
  }

Mas eu falhei.(

 
Александр 'iClose' - chamada ambígua para função sobrecarregada.

Em geral, o objetivo é selecionar a TF.

Eu queria escolhê-lo com o MT4 por hábito

Mas eu falhei.

períodos em MT5

se(Período()==1) devolver "M1";

se(Período()==2) devolver "M2";

se(Período()==3) devolver "M3";

se(Período()==4) devolver "M4";

se(Período()==5) devolver "M5";

se(Período()==6) devolver "M6";

se(Período()==10) devolver "M10";

se(Período()==12) devolver "M12";

se(Período()==15) devolver "M15";

se(Período()==20) devolver "M20";

se(Período()==30) devolver "M30";

if(Period()==16385) retorna "H1";

if(Period()==16386) retorna "H2";

if(Period()==16387) retorna "H3";

if(Period()==16388) retorna "H4";

if(Period()==16390) retorna "H6";

if(Period()==16392) retorna "H8";

if(Period()==16396) retorna "H12";

if(Period()==16408) retorna "Diariamente";

if(Period()==32769) retorna "Semanal";

if(Period()==49153) retorna "Mensalmente";

 
Andrei Sokolov #:

períodos em mt5

se(Período()==1) devolver "M1";

se(Período()==2) devolver "M2";

se(Período()==3) devolver "M3";

se(Período()==4) devolver "M4";

se(Período()==5) devolver "M5";

se(Período()==6) devolver "M6";

se(Período()==10) devolver "M10";

se(Período()==12) devolver "M12";

se(Período()==15) devolver "M15";

se(Período()==20) devolver "M20";

se(Período()==30) devolver "M30";

if(Period()==16385) retorna "H1";

if(Period()==16386) retorna "H2";

if(Period()==16387) retorna "H3";

if(Period()==16388) retorna "H4";

if(Period()==16390) retorna "H6";

if(Period()==16392) retorna "H8";

if(Period()==16396) retorna "H12";

if(Period()==16408) retorna "Diariamente";

if(Period()==32769) retorna "Semanal";

if(Period()==49153) retorna "Mensalmente";

Obrigado!

 
Александр #:

Obrigado!

Por que você não gosta de ENUM_TIMEFRAMES?

E você pode colocar variáveis na forma de enumeração e selecioná-las como quiser... Por que você deveria fazer tal confusão? E em mql4 esta enumeração está disponível há muito tempo...

Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Периоды графиков - Константы графиков - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov #:

Por que você não gosta de ENUM_TIMEFRAMES?

E você pode colocar variáveis como uma enumeração e selecioná-las como quiser... Por que você tem que passar por todo esse trabalho? E em mql4 essa enumeração já está disponível há muito tempo...

+

 
Alexey Viktorov #:

Por que você não gosta de ENUM_TIMEFRAMES?

E você pode colocar variáveis na forma de enumeração e selecioná-las como quiser... Por que você deveria fazer tal confusão? E em mql4 essa enumeração também está disponível há muito tempo...

Obrigado! Eu não tinha idéia.

 

Colegas, favor aconselhar o melhor algoritmo para encontrar o preço do pedido limite previamente colocado mais próximo do preço atual - respectivamente do limite de venda ascendente, do lance

o limite de compra que está mais próximo do fundo.

Este f-iio conta a quantidade, mas preciso do PREÇO do pedido limite previamente colocado para fazer a devolução do f-iio...


Até agora, estou usando o preço mínimo para limite de venda e o preço máximo para limite de compra....

int Price_of_orders(int Magic_) // цена ближайшего ордера к цене по магику
  {
//--- получим общее количество ордеров
   int ord = 0; // итоговое значение кол-ва ордеров
   int orders=OrdersTotal();
//--- пробежим по списку ордеров
   for(int i=0;i<orders;i++)
     {
      ResetLastError();
      //--- скопируем в кэш ордер по его номеру в списке
      ulong ticket=OrderGetTicket(i);
      if(ticket!=0)// если ордер успешно скопирован в кэш, работаем с ним
        {
         double price_open  =OrderGetDouble(ORDER_PRICE_OPEN);
         datetime time_setup=OrderGetInteger(ORDER_TIME_SETUP);
         string symbol      =OrderGetString(ORDER_SYMBOL);
         long magic_number  =OrderGetInteger(ORDER_MAGIC);
         if(magic_number==Magic_)
           {
            //  обработаем ордер с заданным ORDER_MAGIC - посчитаем
            ord++;
           }
         PrintFormat("Ордер #%d по %s был выставлен %s, ORDER_MAGIC=%d",ticket,symbol,TimeToString(time_setup),magic_number);
        }
      else         // вызов OrderGetTicket() завершился неудачно
        {
         PrintFormat("Ошибка при получении ордера из списка в кэш. Код ошибки: %d",GetLastError());
        }

     }
   return (ord);   
  }
 
Roman Shiredchenko #:

Colegas, favor aconselhar o melhor algoritmo para encontrar o preço do pedido limite previamente colocado mais próximo do preço atual - respectivamente do limite de venda ascendente, do lance

o limite de compra que está mais próximo do fundo.

Este f-iio conta a quantidade, mas preciso do PREÇO do pedido limite previamente colocado para fazer a devolução do f-iio...


Até agora estou usando o preço mínimo para limite de venda e o preço máximo para limite de compra....

Quero economizar os preços necessários com ingressos e talvez algo mais, por exemplo, tempo, em minha estrutura ou matriz e ordenar imediatamente após adicionar por preço. Por recursos, se você não procurar com freqüência, é o mesmo ou um pouco mais caro, e se com freqüência, é melhor lembrar. É claro, se você não tiver 100500 pedidos) então pode ser muito caro. Em geral, o problema de classificação em uma estrutura ou matriz multidimensional é resolvido apenas para o primeiro índice, infelizmente.

Às vezes utilizo várias matrizes unidimensionais com os mesmos índices, bilhetes, tempo, preços. E busca por índice de bens necessários. Por exemplo, obtemos o índice de um tempo menor ou um preço maior e conseguimos o bilhete da ordem necessária. É claro que é uma muleta, mas funciona claramente.

 

Surgiu uma pergunta, não encontrada na busca. É possível permitir algotrading da EA. Obtenha as propriedades do terminal, esteja ele ativado ou não.

E é possível executar uma EA em um terminal com algotrading habilitado e outro não.

 
Valeriy Yastremskiy #:

para armazenar em sua estrutura ou matriz os preços desejados com ingressos e talvez algo mais, como tempo, e ordenar imediatamente após adicionar por preço. Por recursos, se você não olhar com freqüência, é o mesmo ou um pouco mais caro, e se você olhar com freqüência, é melhor lembrar. É claro, se você não tiver 100500 pedidos) então pode ser muito caro. Em geral, a ordenação em uma estrutura ou matriz multidimensional é resolvida apenas para o primeiro índice, infelizmente.

Às vezes utilizo várias matrizes unidimensionais com os mesmos índices, bilhetes, tempo, preços. E busca por índice de bens necessários. Por exemplo, obtemos o índice de um tempo menor ou um preço maior e conseguimos o bilhete da ordem necessária. É claro que é uma muleta, mas funciona claramente.

Obrigado - Eu também vou dar uma olhada...
Razão: