Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 589

 
Frostr:
Já o esviscerei... Há um histograma, então se você não consegue encontrar uma maneira de fazê-lo com barras, você terá que usá-lo...
Você prefere barras a candelabros? Pergunta interessante, mas odeio perder meu tempo com isso. Na verdade, uma barra também é um histograma com etiquetas Abrir e Fechar anexadas a ela
. Se você não se importa com as cores destas etiquetas, você pode usar este método como em H.A. Basta calcular a largura da barra em pixels (é possível, eu verifiquei, mas não me lembro onde ela está no Help) e definir a largura da barra, enquanto Abrir e Fechar será a cor especificada nas propriedades do gráfico.
 

Por que o método de comparação virtual é anulado na classe CListNode?

#include <Arrays\List.mqh>
#define  SIZE 10

class CData : public CObject
  {
public:
   int m_data;
  };

class CListNode : public CList
  {
public:
   virtual int Compare(const CObject *node,const int mode=0) const {
      int _test=1;
      return(_test);
   }
  };

int OnInit() {
        CListNode *node=new CListNode;
        if(CheckPointer(node)==POINTER_INVALID) {
           Print("Не могу создать объект");
           return(INIT_FAILED);
        }
        else Print("Объект создан, работаем дальше");

        MathSrand(GetTickCount());
        for(int i=0;i<SIZE;i++) {
           CData *data=new CData;
           if(data==NULL) {
              Print("Нет возможности получить указатель");delete node;return(INIT_FAILED);
           }
           printf("Узел %i, данные узла %i",i,data.m_data=MathRand());
           node.Add(data);
        }
        
        node.Sort(0);
        int _total=node.Total();
        for(int i=0;i<_total;i++) {
           CData *data=node.GetNodeAtIndex(i);
           if(data==NULL) {
              Print("Нет возможности получить указатель");delete node;return(INIT_FAILED);
           }
           printf("Узел %i, данные узла %i",i,data.m_data);
        }

        if(CheckPointer(node)==POINTER_DYNAMIC) {Alert("Удаляем объект");delete node;}
        else Alert("Non-dynamic object");
   return(INIT_SUCCEEDED);
}
Verificado no depurador, usa sempre Comparar a partir do CObject
 

Olá, eu escrevi um EA como este. Por que ele reporta um sinal de venda quase a cada segundo?

//+------------------------------------------------------------------+

//| Peresechenie TM.mq4 |

//| Popov Vladimir |

//| http://vk.com/id143715412 |

//+------------------------------------------------------------------+

#propriedade copyright "Popov Vladimir"

#link da propriedade "http://vk.com/id143715412"


duplo Preço de Venda;

TakeProfit duplo;

StopLoss duplo;


String externo TimeFrame = "time frame atual";

Externo int Médio Comprimento = 20;

preço interno externo = PREÇO_CLOSE;

duplo ATRMultiplicador externo = 2,0;

período ATRP externo interno = 100;

bool externo Interpolar = verdadeiro;



duplo PriceHigh, PriceLow, PriceMiddle;

duplo HighesBuffer[];

duplo LowesBuffer[];

//+------------------------------------------------------------------+

//| função de iniciação de especialista |

//+------------------------------------------------------------------+

int init()

{

se (Dígitos == 3 || Dígitos == 5)

{

TakeProfit *= 10;

StopLoss *= 10;

}

retorno(0);

}

//+------------------------------------------------------------------+

//| função de desinicialização especializada |

//+------------------------------------------------------------------+

int deinit()

{





retorno(0);

}

//+------------------------------------------------------------------+

int start()

{

PriceHigh = iCustom (Símbolo (), 0, "Time", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);

PriceLow = iCustom (Símbolo (), 0, "Time", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);

PriceMiddle = iCustom (Símbolo (), 0, "Time", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 0, 0);


if(Perguntar <= PreçoBaixo)

{

Alerta ("Signal to Buy");

}

if(Bid >= PriceHigh)

{

Alerta ("Sinal para vender");

}

retorno(0);

}

//+------------------------------------------------------------------+

 

Você pode me dizer se é possível salvar automaticamente o relatório após os testes?

Eu só preciso fazer muitos testes em modo automático (planejo fazê-lo através de otimização sem GA) e salvar o relatório completo (incluindo foto) no HDD.

 
tuner:

Você pode me dizer se é possível salvar automaticamente o relatório após os testes?

Eu só preciso fazer muitos testes em modo automático (planejo fazê-lo através de otimização sem AG) e salvar relatório completo (incluindo imagem) no HDD.


Existe a função TesterStatistics() eOnTester()

Dê uma olhada neles, isso pode ajudar

 
Pr0t0tip:

Oi, eu escrevi um EA como este. Por que ele reporta um sinal de venda quase a cada segundo?



Tente substituir

if(Ask <= PriceLow)

 {

 Alert("Сигнал к покупке");

 }

 if(Bid >= PriceHigh)

 {

 Alert("Сигнал к продаже");

 }

 return(0);

em

int static flag=0;
if(Ask <= PriceLow && flag<1)

 {

 Alert("Сигнал к покупке");
flag=1;
 }

 else if(Bid >= PriceHigh && flag>-1)

 {

 Alert("Сигнал к продаже");
flag=-1;
 }
else flag=0;

 return(0);
 
Vinin:


Há uma função TesterStatistics() e OnTester()

Dê uma olhada neles, isso pode ajudar.


Obrigado pelo conselho, mas não parece ajudar, pois é o próprio relatório em sua forma original (htm) com uma imagem que é necessária. Parece não haver uma solução pronta. Vou tentar fazer um script em autoit, que no testador especificado número de vezes pressione o botão "Start" e depois de cada execução vá para a aba "Report" e salve os resultados no arquivo
 

Olá! Por favor, ajude-me com o seguinte problema: a partir do build 625, os valores das funções Alerta (...), Imprimir(...), Comentar(...) não são exibidos no gráfico indicador no testador MT4; estes valores são exibidos durante o lançamento do indicador para negociação real ou através do depurador. Assim, torna-se impossível monitorar as mudanças de parâmetros nos dados históricos usando pelo menos a função Imprimir(...). Eu não tive problemas com a 610ª construção, pois todos os valores foram exibidos na guia "Especialistas" do terminal.

Talvez o código devesse ser retrabalhado de alguma outra forma semelhante à MQL5? Eu não sei o que fazer, ainda tenho que usar a velha construção.

 

Olá. Alguém já encontrou este problema?

Eu tenho vários EAs na pasta, mas o terminal (MT 4, build 625) não os tem. E as que estão no terminal não estão na pasta. É um milagre?



 
Ale-xander:

Olá. Alguém já encontrou este problema?

Eu tenho vários EAs na pasta, mas o terminal (MT 4, build 625) não os tem. E as que estão no terminal não estão na pasta. É um milagre?



Sem milagres.

File --> Open Data Folder --> Na janela que se abre --> MQL4 --> e lá você encontra as pastas às quais você está acostumado. O link para este artigo na página principal do fórum. Eu sou preguiçoso demais para fazê-lo.

Razão: