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

 

Olá a todos!

1) Compilou a EA.

2) Faça o teste.

3) Há três entradas no diário de bordo:

2020.10.25 20:06:08.484 2020.09.24 00:00:00 Início do teste OVERLOAD

2020.10.25 20:06:07.015 TestGenerator: spread 7 usado atualmente
2020.10.25 20:05:51.296 Atualização especializada GBPUSD,M1: carregada com sucesso


4)A visualização permanece no lugar.

Qualquer erro lógico que possa ter sido cometido, os negócios não serão executados, por exemplo, mas o testador deve começar a contar as barras. Mas o gráfico congela e fica parado.

Tentei vários outros Conselheiros Especialistas, e todos eles trabalham.

Quando eu dirijo este, tudo pára.

Alguém teve esse problema? Como consertá-lo?

 
Andrey Ilinykh:

Se você escreve valores calculados em um log ou arquivo, como isso ajuda?

Encontre o erro, forme um algoritmo.

 
Alexey Viktorov:

Bem, você pode trabalhar o ângulo com uma tangente. E você não precisa realmente de um ângulo em si, você só precisa de uma tangente.

A tangente é em qualquer caso um quilômetro por hora ou um ponto por milha ou mil pontos por dia e essa é a velocidade. A dimensionalidade do gráfico. e a tangente sobre ele é o ângulo ligado às dimensões de ordenadas e abcissas. Este é o lugar para começar.

 
Aleksei Stepanenko:

Sim, mais uma vez a velocidade é apenas unidades: pips por minuto. Quanto aos fins de semana e buracos, eu decidi: o que há velas no gráfico é o intervalo de tempo, e o que não há (dias/horas), ele não existe. Porque se levarmos em conta os fins de semana, e o preço ficar parado naquele momento, a velocidade diminuirá visivelmente sem nenhum motivo. Mas, mais uma vez, isso é para cada um de seus :)

Por que temer a velocidade? É apenas uma convenção para dar tipos.
Como uma variante da função de definição de ângulos:

struct PointPriceTime
  {
   double            price;
   datetime          time;
                     PointPriceTime(double p, datetime t) { price=p; time=t; };
   void              Set(double p, datetime t){ price=p; time=t;};
                     PointPriceTime(PointPriceTime &p){ price=p.price; time=p.time; };
                     PointPriceTime() { price=0.0; time=0; };
  };

double Angle(PointPriceTime &p1,PointPriceTime &p2) // возвращает угол в градусах в приведенной системе координат price-price, где по оси X 
  {                                                 // расстояние между x1 и  x2  = N*_Point, где N - количество минутных баров во временном промежутке отрезка. 
   static int tf[9]= {PERIOD_M1,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4,PERIOD_D1,PERIOD_W1,PERIOD_MN1};
   int i=0;
   while(i<9 && SeriesInfoInteger(_Symbol,tf[i],SERIES_FIRSTDATE)>p1.time)
      i++;
   if(i==9)
     {
      Print("Время левой границы вне диапазона исторических данных");
      return DBL_MAX;
     }
   int bar1 = iBarShift(_Symbol,tf[i],p1.time);
   int bar2 = iBarShift(_Symbol,tf[i],p2.time);
   if(bar1==bar2)
      return 0.0;
   return atan((p2.price-p1.price)/((bar1-bar2)*PeriodSeconds(tf[i])*_Point/60))*180/M_PI;
  }

Depois do MT5, a sensação do MT4 é simplesmente horrível. O acesso ao histórico é de alguma forma emasculado. Não estou nem mesmo falando dos carrapatos.



Arquivos anexados:
Angle.mq4  11 kb
iCanvas.mqh  49 kb
 

Por favor, informe se existe a possibilidade de gerenciar programmaticamente a exibição das descrições de nível comercial no gráfico. É possível desativá-los usando ferramentas MQL4 (deixando os níveis de comercialização no gráfico) ou alterá-los?


Preciso marcar visualmente alguns níveis comerciais fornecendo-lhes suas próprias descrições. Para isso, crio linhas horizontais que são similares em estilo aos níveis comerciais, mas diferem em cor. Estabeleço uma descrição para elas (OBJPROP_TEXT) e habilito a exibição de descrições de objetos no gráfico (ChartSetInteger(0,CHART_SHOW_OBJECT_DESCR,true)). Neste caso, a descrição que criei se sobrepõe ao que é mostrado na imagem da tela e, como resultado, nenhum deles é legível.

É possível desativar ou alterar as descrições dos níveis comerciais criados pelo terminal? Estas descrições são acessíveis através do programa MQL?

 
Janis Ozols:

Por favor, informe se existe a possibilidade de gerenciar programmaticamente a exibição das descrições de nível comercial no gráfico. É possível desativá-los usando ferramentas MQL4 (deixando os níveis de comercialização no gráfico) ou alterá-los?


Preciso marcar visualmente alguns níveis comerciais fornecendo-lhes suas próprias descrições. Para isso, crio linhas horizontais que são similares em estilo aos níveis comerciais, mas diferem em cor. Estabeleço uma descrição para elas (OBJPROP_TEXT) e habilito a exibição de descrições de objetos no gráfico (ChartSetInteger(0,CHART_SHOW_OBJECT_DESCR,true)). Neste caso, a descrição que criei se sobrepõe ao que é mostrado na imagem da tela e, como resultado, nenhum deles pode ser distinguido.

É possível desativar ou alterar as descrições dos níveis comerciais criados pelo terminal? Estas descrições são acessíveis de dentro do programa MQL?

Sim, há,

desmarque a caixa de seleção.

1

 
Alekseu Fedotov:

Você pode,
desmarcar a caixa.

Se você desmarcar esta caixa, então os próprios níveis comerciais (linhas) desaparecem do gráfico junto com suas descrições.

Ao fazer a pergunta, eu estava tentando enfatizar que não quero remover as linhas, só preciso alterar ou apagar suas descrições do gráfico (mostrado por setas na captura de tela).

 
Janis Ozols:

Se você desmarcar esta caixa, então os níveis de negociação(linhas) desaparecem do gráfico junto com suas descrições.

Ao fazer a pergunta, eu estava tentando enfatizar que não quero remover as linhas, só preciso alterar ou apagar suas descrições do gráfico (mostrado por setas na captura de tela).

Você não precisa deles, você cria suas linhas nesses lugares

 
Vitaly Muzichenko:

Você não precisa deles, você cria suas linhas nesses lugares.

Quero apenas destacar alguns dos níveis existentes(para o exemplo mostrado na captura de tela, o mais alto), e deixar os outros como estão.

Se for impossível acessar as descrições desses níveis de forma programática, então provavelmente teremos que desativar os níveis em si e, em seguida, em cada carrapato, o terminal para desenhá-los de forma independente, destacando os níveis apropriados em outra cor e fornecendo-lhes uma descrição diferente. E não há apenas níveis abertos, mas também stop-losses e take-profits que também têm de ser sorteados.

Talvez haja uma maneira mais trivial de desabilitar a descrição dos níveis comerciais (deixando apenas linhas) ou mudá-los?

 

Você pode explicar em linguagem simples qual é a diferença entre essas funções?

//+------------------------------------------------------------------+
int    CountOrder(int Order_Type) 
   {
    int Orders=0;
    for(int a=OrdersTotal()-1;a>=0;a--)
    {
     if(OrderSelect(a, SELECT_BY_POS, MODE_TRADES)==false) continue;
     if(OrderSymbol()!=_Symbol) continue;
     if(Order_Type == OrderType() || Order_Type == -1) Orders++;
    }
    return Orders;
   }
//+------------------------------------------------------------------+
int CounterOrderTradeType(ENUM_ORDER_TYPE order_type)
  {
   int cnt=0;
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
      if(OrderSelect(pos,SELECT_BY_POS)==true)
         if(OrderSymbol()==_Symbol)
            if(OrderType()==order_type)
               cnt++;
   return (cnt);
  }
//+------------------------------------------------------------------+