Tudo sobre Programação, com código fonte exemplo - página 10

 

Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação

Por favor me ajudem...

Joscelino Celso de Oliveira, 2019.07.22 12:41

Você terá de fazer isso por programação se o código do indicador for seu ou aberto para edição. 

Veja abaixo exemplos os parâmetros a serem alterados:

//--- plot Venda
#property indicator_label1  "Venda"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  3
//--- plot Compra
#property indicator_label2  "Compra"
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrDarkBlue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  3

Lembre-se de SEMPRE CONSULTAR A DOCUMENTACAO.

Para este caso, veja a documentacao no link a seguir:

https://www.mql5.com/en/docs/customind/indicators_examples


 

Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação

Máxima, Mínima e Fechamento do dia anterior

Rogerio Giannetti Torres, 2019.07.09 19:51


Bom,  tá aí o OHLC do dia anterior.  Só não entendi o que é  " transformar esses valores".


double               open,high,low,close;
MqlRates             rates[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
  
   ArraySetAsSeries(rates,true);
   return(INIT_SUCCEEDED);

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
//---
//---
   if(CopyRates(_Symbol,PERIOD_D1,0,3,rates)==3)
     {
      open=rates[1].open;
      high=rates[1].high;
      low=rates[1].low;
      close=rates[1].close;
     };
//---
//---
//---     
     
  }

 

Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação

Zero Divide em dois indicadores em TF menores

Lucas Tavares, 2019.07.23 14:43

Tenho dois indicadores apresentando o mesmo erro quando uso TF menores que 30m :


A linha de referência é esta :

E esta(que não diz nada por si só):


Este é o primeiro indicador : https://www.mql5.com/pt/code/591

E este é o segundo : https://www.mql5.com/pt/articles/6834?utm_campaign=articles.list&utm_medium=special&utm_source=mt5editor


Existe algo que possa fazer para consertar ambos? Obrigado!


 

Ola,

estou com um problema ao tentar usar um EA fazendo a leitura do ativo Win$N e operar outro ativo (serie vigente).


o erro reportado 'e 4302, porem ambos os ativos estao ativos no Market watch.


porem descobri que o ativo Win$N nao tem Bid/Ask, tem apenas last price. Segue abaixo a parte do codigo onde mostra que o EA tenta fazer a leitura do Bid/Ask:


//--- check

   if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)

     {

      //--- prepare request for close BUY position

      m_request.type =ORDER_TYPE_SELL;

      m_request.price=SymbolInfoDouble(symbol,SYMBOL_BID);

     }

   else

     {

      //--- prepare request for close SELL position

      m_request.type =ORDER_TYPE_BUY;

      m_request.price=SymbolInfoDouble(symbol,SYMBOL_ASK);

     }


Gostaria de saber como posso modificar o codigo, para que quando eu colocar em um ativo que nao tem Bid/Ask o EA possa fazer a leitura do Last price.

 
Leandro Borges:

Ola,

estou com um problema ao tentar usar um EA fazendo a leitura do ativo Win$N e operar outro ativo (serie vigente).


o erro reportado 'e 4302, porem ambos os ativos estao ativos no Market watch.


porem descobri que o ativo Win$N nao tem Bid/Ask, tem apenas last price. Segue abaixo a parte do codigo onde mostra que o EA tenta fazer a leitura do Bid/Ask:


//--- check

   if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)

     {

      //--- prepare request for close BUY position

      m_request.type =ORDER_TYPE_SELL;

      m_request.price=SymbolInfoDouble(symbol,SYMBOL_BID);

     }

   else

     {

      //--- prepare request for close SELL position

      m_request.type =ORDER_TYPE_BUY;

      m_request.price=SymbolInfoDouble(symbol,SYMBOL_ASK);

     }


Gostaria de saber como posso modificar o codigo, para que quando eu colocar em um ativo que nao tem Bid/Ask o EA possa fazer a leitura do Last price.

Olá  Leandro Borges, todo instrumento, principalmente uma série contínua, deveria ter o Ask/Bid, por favor passe mais detalhes da sua corretora.
Não recomendo criar nenhum algoritmo sem saber os preços de Ask/Bid, até porque será complicado definir um valor de escorregamento máximo, mas, seja como for, o código para Last segue a mesma lógica, ou seja, é SYMBOL_LAST (veja detalhes em  https://www.mql5.com/pt/docs/constants/environment_state/marketinfoconstants ).
Sds.,
Rogério Figurelli

Documentação sobre MQL5: Constantes, Enumeradores e Estruturas / Estado de Ambiente / Propriedades do Ativo
Documentação sobre MQL5: Constantes, Enumeradores e Estruturas / Estado de Ambiente / Propriedades do Ativo
  • www.mql5.com
Para obter as informações atuais do mercado, existem várias funções: SymbolInfoInteger(), SymbolInfoDouble() e SymbolInfoString(). O primeiro parâmetro é o nome do ativo, os valores do segundo parâmetro da função podem ser um dos identificadores de ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE e ENUM_SYMBOL_INFO_STRING. Alguns símbolos...
 
Rogerio Figurelli:

Olá  Leandro Borges, todo instrumento, principalmente uma série contínua, deveria ter o Ask/Bid, por favor passe mais detalhes da sua corretora.
Não recomendo criar nenhum algoritmo sem saber os preços de Ask/Bid, até porque será complicado definir um valor de escorregamento máximo, mas, seja como for, o código para Last segue a mesma lógica, ou seja, é SYMBOL_LAST (veja detalhes em  https://www.mql5.com/pt/docs/constants/environment_state/marketinfoconstants ).
Sds.,
Rogério Figurelli

Obrigado @Rogerio Figurelli
tentei inserir figura e nao consegui, estou usando a XP.

Mas vou seguir sua orientacao e mudar a logica para nao usar ativo sem Bid/Ask.

 
Rogerio Figurelli:

   É sempre legal criar uma saída para se verificar que valores estão sendo efetivamente enviados na variável STOP, TAKE e OPENPRICE.

   Pode haver problemas de formatação.

 
Ola, esse mes ja avancei um pouco na linguagem e agradeço a todos pela ajuda , estou agora tentando fazer as ordens feitas fecharam apenas com um saldo posivito calulado e opicional , como por exemplo , to la operando fiz uma venda , depois subiu fiz outra venda com um lote maior  , o que acontece que uma ordem ta no negativo e a outra no posivito o lucro nas ordens aberta tambem no negativo , porem pelo capital liquido ta positivo tipo seja la 1 dolar , 0,10 cents , sendo assim opçional pelo capital liquido e nao pelo lucro das ordens , gostaria de aprender a programar essa parte.
 

Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação

É possivel fechar um EA utilizando outro EA?

Rogerio Figurelli, 2019.07.26 08:15

Olá  Lucas Santana, concordo com a análise dos colegas, note que a função ExpertRemove() é um recurso de exceção, extremo, e não vejo lógica de utilizar ele como lógica de sua estratégia, ainda mais se pode tudo rodar em um único EA. Na verdade, quando você remove o EA do gráfico perde todo e qualquer controle, o que também questiono se é uma boa prática, pois se precisa fazer isso é sinal que algo não está bem no ambiente. 

Outro ponto que gostaria de comentar é que parece que você adaptou um código existente para MT4 agregando as funções "CloseOrders(Magic); ExpertRemove();" ao final de duas das linhas, e talvez essa seja sua maior dificuldade, pois se começar criando sua própria lógica não ficará dependendo de soluções de contorno como a de remover o EA para fazer o código original se comportar como deseja.

Além disso note que a própria rotina de fechamento de posições não faz nenhum teste da execução da função OrderClose(), e qualquer falha ou problema que acontecer no mundo real, com roteamento real, não existirá nenhum tratamento ou verificação, e as posições poderão ficar abertas. Nesse caso, permanentemente abertas, já que você mandaria remover o EA, ou seja, o pior dos mundos.

Dessa forma, recomendo repensar novamente todo seu código.

Sds.,
Rogério Figurelli


 

Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação

Dica para o robo identificar um momento de consolidação

Fábio Radichi Belotto, 2019.07.27 17:22



Desculpe a minha ignorância, mas quando você escreve "Largura estreita < 6 = consolidação", você está avaliando o que? O que é o "6"?

Razão: