Ponto e figura

10 respostas

nates!

Assinante, bbp_participante, comunidade, 7 respostas.

Perfil da visita

7 anos atrás #116547

É possível criar um indicador de ponto e figura ou um EA no EA Wizard?

Agradeço antecipadamente por qualquer ajuda ou informação. 🙂

0

tomas262

Administrador, sq-ultimate, 2 respostas.

Perfil da visita

7 anos atrás #142290

Olá,

 

Como trabalhar com o Point&Figure no MetaTrader? Deve ser possível fazer isso. O EA produzido pelo Wizard não é limitado por determinada configuração de período de tempo

0

nates!

Assinante, bbp_participante, comunidade, 7 respostas.

Perfil da visita

7 anos atrás #142303

Olá, obrigado por sua resposta. Atualmente, uso um indicador de ponto e figura que obtive em um fórum da Internet e que funciona bem no Metatrader. Eu o importei como um indicador personalizado no EA Wizard. Tentei usar a saída do indicador no EA Wizard sem sucesso. Obviamente, não tenho experiência em codificação ou no uso do Assistente de EA, portanto, não tenho certeza se estou fazendo algo errado. Por isso, não sei se estou fazendo algo errado. É por essa razão que estou escrevendo para este fórum para saber se posso usar as funções do assistente do EA para criar a lógica e a saída do ponto e da figura. Eu ficaria feliz em usar qualquer um dos métodos (indicador personalizado ou criar um eu mesmo), desde que eu seja capaz de programar os rompimentos dos Xs e Os no Assistente de EA para criar um EA.

Não tenho certeza de como anexar um arquivo mq4 nesta postagem, então recortei e colei o código. Desculpe-me por minha ignorância. 🙁 Obrigado!

 

//+——————————————————————+

//| XO.mq4 |
//| GranParadiso |
//+——————————————————————+
#propriedade intelectual "GranParadiso"
#property link "[email protected]"
 
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_style1 STYLE_SOLID
#property indicator_width1 2
#property indicator_color2 Verde
#property indicator_style2 STYLE_SOLID
#property indicator_width2 2
 
 
int externo BoxSize = 5;
extern int ReversalAmount = 3;
 
 
int LastCalculatedBarIndex;
int LastTrend;
double arr_XO_Open[];
double arr_XO_Close[];
double arr_Open[];
double arr_Close[];
//+——————————————————————+
//|                                                                  |
//+——————————————————————+
int init()
  {
   IndicatorBuffers(4);
   SetIndexBuffer(0,arr_XO_Open);
   SetIndexStyle(0,DRAW_HISTOGRAM);
 
   SetIndexBuffer(1,arr_XO_Close);
   SetIndexStyle(1,DRAW_HISTOGRAM);
 
   SetIndexBuffer(2,arr_Open);
   SetIndexBuffer(3,arr_Close);
 
   return(0);
  }
//+——————————————————————+
//|                                                                  |
//+——————————————————————+
int start()
  {
   int
   j,
   k;
   duplo UP,
   DW;
 
   int counted_bars=IndicatorCounted();
   Se (counted_bars < 0), retorne (-1);
   se(counted_bars>0) counted_bars-;
   int limit=Bars-counted_bars;
   if(counted_bars==0) limit-=1+1;
 
   for(int i=limite;i>=0;i-)
     {
      LastTrend=0;
      se(i==Bars-1)
        {
         arr_Open[i]=MathRound(Close[i]*(MathPow(10,Digits)/BoxSize))/(MathPow(10,Digits)/BoxSize);
         arr_Close[i]=arr_Open[i];
         continuar;
        }
 
      if(arr_Open[i+1]>arr_Close[i+1]) LastTrend=-1;
      Se (arr_Open[i+1]<arr_Close[i+1]) LastTrend=1;
 
      arr_Close[i]=arr_Close[i+1];
      arr_Open[i]=arr_Open[i+1];
 
      UP=0,0;
      DW=0,0;
 
      UP=(High[i]-arr_Close[i])/Point;
      DW=(arr_Close[i]-Low[i])/Point;
 
      switch(LastTrend)
        {
         Caso 1:
            Se (UP<BoxSize) UP=0,0;
            senão UP=MathFloor(UP/BoxSize)*BoxSize;
            se(DW<(BoxSize*ReversalAmount)) DW=0,0;
            senão DW=MathFloor(DW/BoxSize)*BoxSize;
            arr_Close[i]=arr_Close[i]+UP*Point;
            Se(DW!=0.0)
              {
               arr_Close[i+1]=arr_Close[i+1]+UP*Point;
               arr_Open[i]=arr_Close[i+1]-BoxSize*Point;
               arr_Close[i]=arr_Close[i+1]-UP*Point-DW*Point;
              }
            pausa;
 
         caso -1:
            se(UP<(BoxSize*ReversalAmount)) UP=0,0;
            senão UP=MathFloor(UP/BoxSize)*BoxSize;
            Se (DW<BoxSize) DW=0,0;
            senão DW=MathFloor(DW/BoxSize)*BoxSize;
            arr_Close[i]=arr_Close[i]-DW*Point;
            se(UP!=0,0)
              {
               arr_Close[i+1]=arr_Close[i+1]-DW*Point;
               arr_Open[i]=arr_Close[i+1]+BoxSize*Point;
               arr_Close[i]=arr_Close[i+1]+UP*Point+DW*Point;
              }
            pausa;
 
         padrão:
            se(UP<(BoxSize*ReversalAmount)) UP=0,0;
            senão UP=MathFloor(UP/BoxSize)*BoxSize;
            se(DW<(BoxSize*ReversalAmount)) DW=0,0;
            senão DW=MathFloor(DW/BoxSize)*BoxSize;
            arr_Close[i]=arr_Close[i]+UP*Point;
            arr_Close[i]=arr_Close[i]-DW*Point;
            pausa;
        }
     }
 
   limite=0;
   k=0;
   if(arr_Open[0]!=arr_XO_Open[0])
     {
      limit=Bars;
      arr_XO_Open[0]=arr_Open[0];
      arr_XO_Close[0]=arr_Close[0];
     }
   for(j=1;j<limite;j++)
     {
      Se (arr_Open[j]!=arr_XO_Open[k])
        {
         k++;
         arr_XO_Open[k]=arr_Open[j];
         arr_XO_Close[k]=arr_Close[j];
        }
     }
 
   return(0);
  }
//+——————————————————————+

0

tomas262

Administrador, sq-ultimate, 2 respostas.

Perfil da visita

7 anos atrás #142318

Olá,

 

ok, vou verificar o que pode ser feito aqui

0

nates!

Assinante, bbp_participante, comunidade, 7 respostas.

Perfil da visita

7 anos atrás #142336

Obrigado por sua ajuda... muito obrigado!

0

tomas262

Administrador, sq-ultimate, 2 respostas.

Perfil da visita

7 anos atrás #142359

Olá,

 

Você conseguiu importar o indicador conforme mostrado na captura de tela anexa?

0

nates!

Assinante, bbp_participante, comunidade, 7 respostas.

Perfil da visita

7 anos atrás #142362

Hi,

 

Sim, eu o importei dessa forma. Como mencionei, tentei usar as saídas (ou seja, arr_XO_Open a,d arr_XO_Close) no assistente do EA, mas não tive sucesso. Talvez eu tenha usado da maneira errada....i assumi que essas duas variáveis eram os níveis X ou O do gráfico de pontos e figuras. Você teve alguma sorte ao usar essas duas saídas de alguma forma?

0

tomas262

Administrador, sq-ultimate, 2 respostas.

Perfil da visita

7 anos atrás #142371

Olá,

 

Sim, ele funciona bem para mim com o EA anexado

0

nates!

Assinante, bbp_participante, comunidade, 7 respostas.

Perfil da visita

7 anos atrás #142376

Hi,

 

Estou tendo problemas para abrir o arquivo que você enviou. Quando clico duas vezes, ele diz que o Windows não pode abri-lo. Tentei o bloco de notas, mas ele abre com muito texto com o qual não estou familiarizado. Alguma sugestão? 

Além disso, quando você diz que isso funciona bem para você, quer dizer que essas variáveis (arr_XO_open, arr_XO_close) podem ser usadas como níveis X e O no EA? Quais eu usaria? Basicamente, quero poder programar um rompimento, por um valor inserido pelo usuário, da coluna "X" ou "O" de um gráfico de pontos e figuras. No EA que testei antes de escrever para este fórum, eu o programei para comprar no mercado se as variáveis fossem rompidas por um valor fixo. Quando testei o EA no testador de estratégias do MT4, não houve nenhuma negociação. 

0

tomas262

Administrador, sq-ultimate, 2 respostas.

Perfil da visita

7 anos atrás #142378

Olá,

 

Não importa, veja as capturas de tela anexadas sobre como eu o configurei

Arquivo: PF1.jpgPF1.jpg
Arquivo: PF2.jpgPF2.jpg
Arquivo: PF3.jpgPF3.jpg

0

nates!

Assinante, bbp_participante, comunidade, 7 respostas.

Perfil da visita

7 anos atrás #142459

Olá, obrigado por sua ajuda. Devido ao seu uso da função "Log to Journal", consegui descobrir o que as duas variáveis (arr_XO_open, arr_XO_close) e seus valores. Estou tentando usar esses valores em minha tentativa de criar um EA. Mas é um grande trabalho em andamento! Mais uma vez, obrigado pela ajuda e provavelmente voltarei a este fórum em um futuro próximo para pedir mais! Obrigado!

0

Visualizando 10 respostas - 1 até 10 (de um total de 10)