Uma pergunta para os conhecedores de MQL - página 7

 

Se você encontrou um problema semelhante: Ao testar EAs nas primeiras linhas do log como "2010.08.18 22:23:37 TestGenerator: erro de dados incomparável (limite de volume 32 em 2010.08.18 21:15 excedido)" e o ícone "Não entrar" (das regras de trânsito) aparece. E depois há cordões de informação à medida que o teste avança. Isto é um problema com o servidor DC ou isto é algo errado com o Expert Advisor?

 

Isto geralmente acontece se as datas de início e fim dos testes forem definidas incorretamente.

Ou, no início do teste, citações incorretas (ou falta delas), - buracos, barras em falta em diferentes intervalos de tempo, etc...

 
pathfinder1:

Se você encontrou um problema semelhante: Ao testar EAs nas primeiras linhas do log como "2010.08.18 22:23:37 TestGenerator: erro de dados incomparável (limite de volume 32 em 2010.08.18 21:15 excedido)" e o ícone "Não entrar" (das regras de trânsito) aparece. E depois há cordões de informação à medida que o teste avança. Isto é um problema com o servidor DC ou isto é algo errado com o Expert Advisor?

E por diversão: faça uma pesquisa no site com a consulta "TestGenerator: erro de dados inigualável", e depois nos diga.
 

Debri... O limite de volume varia de 32 a 4826 . Mas parece que a história não está formada. Eu estabeleço um período de tempo diferente e está tudo bem.

 

1) recarregar o histórico, primeiro usando o botão "Page Ap", depois através do Histórico de Cotações, recalcular todas as TFs, entrar no testador/histórico e apagar todos os arquivos - deve estar ok, ou você tem um buraco no histórico, depois apagar todo o histórico, e executar todas as operações.

 

Boa tarde a todos!

Outra pergunta sobre o triângulo na janela indicadora.

Consegui um desenho triangular normal - com a ponta em direção à convergência.

Mas eu não entendo,

1. Como definir a cor do triângulo na função

ObjectCreate("TRIANGLE", OBJ_TRIANGLE,WindowFind(WindowExpertName()), 
         level_1, delta_1,  level_2,delta_2,    level_3,delta_3); 

se não houver opção de cor?

2. Eu não mudo a direção do triângulo quando mudo a convergência/divergência das linhas.

Eu defino o código desta forma:

 datetime  level_1, level_2, level_3;

if ( MathAbs(Symbol1[1]-SymbolS[1]) > MathAbs(Symbol1[0]-SymbolS[0]) ) {
//если имеет место  схождение линий SUM-RDX, задаем переменные для 
// вершины треугольника вправо-  
        level_1=Time[0]+3500;  delta_1= 0.1;
        level_2=Time[0]+3500;  delta_2=-0.1;
        level_3=Time[0]+10500;  delta_3   =0;  
 }       
if ( MathAbs(Symbol1[1]-SymbolS[1]) <= MathAbs(Symbol1[0]-SymbolS[0]) )
{//если имеет место  расхождение линий SUM-RDX, задаем переменные для
// вершины треугольника влево -      
       level_1=Time[0]+3500;  delta_1=0;
       level_2=Time[0]+10500;  delta_2=0.1;
       level_3=Time[0]+10500;  delta_3=-0.1;
  } 
  //==задаем отрисовку треугольника ===================                  
ObjectCreate("TRIANGLE", OBJ_TRIANGLE,WindowFind(WindowExpertName()), 
              level_1, delta_1 ,level_2,delta_2,level_3,delta_3); 

Mas aqui estou eu agora no testador, rodando o indutor e posso ver que o triângulo em si não mudou a configuração quando mudo a convergência para divergência. Além disso, o próprio triângulo "foi" para a esquerda junto com "seu" lugar de fixação inicial (encadernação) ! Por favor, informe qual poderia ser o erro ?

O Deinit está pronto.

int deinit()  {
ObjectDelete("TRIANGLE");
   return(0);  }
 

1. objectSet( nome, OBJPROP_COLOR, col); // nome - nome do objeto, col - cor do objeto

2. Para alterar os valores das coordenadas, use

ObjectSet(nome, OBJPROP_PRICE1, preço1);
ObjectSet(nome, OBJPROP_PRICE2, preço2);
ObjectSet(nome, OBJPROP_PRICE3, preço3);
ObjectSet(nome, OBJPROP_TIME1, tempo1);
ObjectSet(nome, OBJPROP_TIME2, tempo2);
ObjectSet(nome, OBJPROP_TIME3, tempo3);

 

Obrigado, Keekkenen!

Fez como você escreveu. Tudo funciona como deveria!!!

 

Boa tarde a todos.

Você poderia me dizer como fazer a linha de preço na janela indicadora (veja fig. acima) mudar de cor em uma mudança de direção?

Eu nem sei como resolver este problema.

Eu o fiz assim:

 color Color_C ;
 double BufW[];

int init() {
    
  SetIndexStyle(4,DRAW_LINE,STYLE_DOT,2,Color_C);
  SetIndexBuffer(4,BufW);
  SetIndexLabel(4,"Channel width");
  return(0);
               }
int start() {
  
  //------------------------------------------------------------------ 
  // Отрисовка ценовых линий: рисуем и синхронизируем по наличию баров
  for(int i=0; i<limit; i++) { 
.... .... ... 
    BufW[i]=(iMA(Symbol3.Name,Period(),MA........ .... );
                             }  // Конец отрисовки ценовых линий

if( BufW[i-1] => BufW[i] )   Color_C = Green;
  else  Color_C = Red;


Mas não funciona.

 

SetIndexStyle(4,DRAW_LINE,STYLE_DOT,2,Color_C);
SetIndexBuffer(4,BufW);
SetIndexLabel(4,"Channel width");

SetIndexStyle( 5,DRAW_LINE,STYLE_DOT,2,Color_X);
SetIndexBuffer( 5,BufX);
SetIndexLabel( 5,"Channel width" );

..............

......................

double ma=iMA(...................,................,i);

double ma1=iMA(......,...............,...........I+1);

if(ma>ma1)

BufW=ma;

senão

BufX=ma;

Razão: