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

 
Vadim Podoprigora:

Olá!

Por favor, ajude-me a escrever um EA.

A essência do Expert Advisor: abre 4 ordens de 1 lote.

2 para vender: usdchf; eurusd;

2 para comprar: gbpusd; usdjpy;

Ao atingir um lucro total de 5 pips, feche todas as negociações. E começar de novo.

4 lotes no total?

E se não houver lucro?

 
Vadim Podoprigora:

Olá!

Por favor, ajude-me a escrever um EA.

A essência do Expert Advisor: abre 4 ordens de 1 lote.

2 para vender: usdchf; eurusd;

2 para comprar: gbpusd; usdjpy;

Ao atingir um lucro total de 5 pips, feche todas as negociações. E começar de novo.

Não há necessidade de duplicar sua pergunta em tópicos diferentes.

Favor entrar em contato com o Freelance.

 
Andrey Sokolov:

Saudações.

Você pode me dizer como escrever a condição para que a ação seja realizada na abertura de uma nova vela no gráfico atual?

https://www.mql5.com/ru/articles/159
Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 

Olá! Ajudem-me a entender as matrizes!

Preciso preencher uma matriz com o indicador MASD. Pelo que entendi, existem dados: índice de barras, valorMODE_MAIN, valorMODE_SIGNAL, ou seja, a matriz deve ser do tipo tridimensional ( a [] [] []), ou o quê? Se você puder dar um exemplo.

 

Sergey, você mesmo já usou este código?

O artigo é geralmente bom, mas é

datetime lastbar_time=SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);

muito perigoso. Para que funcione, é preciso, como recomendado pelo baterista, "sacudir" a história periodicamente. Eu não especifiquei qual o lugar.

Em geral, depois de muito sofrimento, concluí que é melhor usar a função CopyRates()

Mensagens sobre possíveis erros são preenchidas por cada um de nós se assim o desejarmos.

bool newBar()
{
static datetime timeLastBar;
  MqlRates mqlRates[];
   int s = 0;
    do
     {
      s++;
     }
    while(CopyRates(_Symbol, PERIOD_CURRENT, 0, 1, mqlRates) < 0 && s < 7);
   bool ret = timeLastBar != mqlRates[0].time;
   if(ret)
    timeLastBar = mqlRates[0].time;
   return(ret);
}/*******************************************************************/
 
Alexey Viktorov:

Sergey, você mesmo já usou este código?

O artigo é geralmente bom, mas é

datetime lastbar_time=SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);

muito perigoso. Para que funcione, é preciso, como recomendado pelo baterista, "sacudir" a história periodicamente. Qual local não foi especificado.

Alexey, diga-me, quando você se deparou com erros usando-o? Você já teve algum?

Eu mesmo utilizo este método e não tenho tido problemas. Bem, talvez eu ainda tenha que...

Eu gostaria de algumas explicações - por assim dizer... :)

Onde o baterista disse isso?

 
Artyom Trishkin:

Alexei, diga-me, quando você já se deparou com erros neste uso? Alguma vez você já?

Porque eu mesmo utilizo este método e ainda não encontrei nenhum problema. Bem, talvez eu ainda tenha que fazê-lo.

Eu gostaria de algumas explicações - por assim dizer... :)

Onde Drubashka disse uma coisa dessas?

https://www.mql5.com/ru/forum/89213

Há oito páginas de brigas. E não apenas drubashka, mas Slawa diz que

Slawa:

Onde você vê um comportamento inadequado desta função? Você leu a documentação cuidadosamente?

Retorna informações sobre o estado dos dados históricos. Não atualiza as informações, não inicia a troca de dados. Apenas devolve o que está lá no momento.

 
Artyom Trishkin:

Alexei, diga-me, quando você já se deparou com erros neste uso? Alguma vez você já?

Eu mesmo estou usando este método e ainda não encontrei nenhum problema. Bem, talvez eu ainda tenha que fazê-lo.

Eu gostaria de algumas explicações - por assim dizer... :)

Onde o baterista disse isso?

E aqui estão os contratempos.

Vladimir Karputov:
Não funcionou em um símbolo em um terminal (no cronograma M15) - tenho 99% de certeza que o problema é que usando outro cronograma eu preciso "sacudir" a história o tempo todo. Penso que é melhor fazê-lo através do CopyTime().
O problema não é resolvido pelo gato pelo lugar causal.
 
Artyom Trishkin:

Alexei, diga-me, quando você já se deparou com erros neste uso? Alguma vez você já?

Até onde me lembro, pode não retornar o que é esperado se o TF for maior do que o atual.
 
Oi, eu tenho uma pergunta sobre o MT5.

Por exemplo, no terminal MT5 existem alguns Expert Advisors (MACD Sample e Moving Averages), mas se você quiser mudar o manípulo indicador no código destes Expert Advisors e colocar um TF específico, por exemplo PERIOD_H4, em vez de "_Period", então em testes pelos preços abertos do TF mais alto, ocorre o seguinte erro de carregamento do indicador: não pode carregar o indicador 'MACD' [4805] e como resultado: o testador parou porque o OnInit falhou. Quais são suas opiniões? Talvez eu esteja fazendo algo errado? É possível codificar o Expert Advisor para que ele seja testado para os preços abertos de qualquer TF?

Eu tentei usar o indicador como um indicador personalizado, o erro é o mesmo.

Agradecemos antecipadamente o seu feedback.

int OnInit(nulo)
{
//--- preparar a classe de comércio para controlar posições se o modo de cobertura estiver ativo
ExtHedging=((ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING);
ExtTrade.SetExpertMagicNumber(MA_MAGIC);
ExtTrade.SetMarginMode();
//--- Indicador de Média Móvel
ExtHandle=iMA(_Símbolo,PERÍODO_H4,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE);
if(ExtHandle==INVALID_HANDLE)
{
printf("Error creating MA indicator");
return(INIT_FAILED);
}
//--- ok
return(INIT_SUCCEED);
}