Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 883

 
Askr:
Como é que o MT5 descarrega o arquivo de citações? Em MT4 por exemplo F2 e depois carregar em refrescar, mas aqui?

Não é necessário descarregar nada para o MetaTrader 5. Pode utilizar as cotações para o servidor comercial ao qual está ligado. Se quiser pode usarCopyRates, se quiser pode usarCopyTicks.

 
Askr:
Como é que o MT5 descarrega o arquivo de citações? Em MT4 por exemplo, F2 e depois carrega em update, mas aqui?

Não se pode fazê-lo directamente. A menos que se crie um símbolo personalizado para o qual se possa importar o histórico. O símbolo personalizado só pode ser utilizado para trabalhar com a história. Não pode ser utilizado para comércio.

 
Ihor Herasko:

E se a EA não estivesse activa na altura? Afinal de contas, gostaríamos de obter os dados do histórico da conta. Mas isto, infelizmente, não pode ser feito de uma forma inequívoca. Só pode ser feito com muitas reservas.

É estranho que os programadores não tenham implementadoOrderCloseTime() no MT5. Aparentemente, existiam razões sérias para isso).

 
lil_lil:

É estranho porque é que os criadores não fizeramOrderCloseTime() em MT5. Aparentemente, existiam razões sérias para isso).

Porque a ordem tem um significado diferente em termos de MT5 e Mql5. Para encontrar a hora de fecho de uma posição, precisamos de seleccionar as ordens e negócios desta posição, encontrar entre eles um negócio com o modificador DEAL_ENTRY_OUT e a hora deste negócio será igual à do fecho da posição.

 

Boa tarde, por favor aconselhar, não posso fazer uma construção para a seguinte condição: o indicador é iniciado, parâmetros de preço adequados aparecem na vela, a indicação gráfica é desenhada, mas digamos, se a vela estiver longe de fechar, o indicador pode detectar outra combinação de velas neste local. A questão é como escrever o código no processo de cada segundo de monitorização para que elimine o resultado anterior quando a condição nesta vela deixa de funcionar?

Aqui está um exemplo adequado de renderização, mas se eu fizesse aqui o teste, isso dar-me-ia uma leitura incorrecta do candelabro. Como é que se arranja?

E outra questão - como fazer um alerta com base no seguinte conceito de design:

Tarefa - dada: TF 1 hora.

A condição - executar a parte de pesquisa do indicador apenas, digamos, após 55 minutos e até 60 minutos da vela actual, e depois reiniciar o ciclo.

Como implementar esta construção?

 
clickaider:

Boa tarde, por favor aconselhar, não posso fazer uma construção para a seguinte condição: o indicador começa, parâmetros de preço adequados aparecem na vela, uma indicação gráfica é desenhada, mas digamos, se a vela estiver longe de fechar, o indicador pode detectar outra combinação de velas neste local. A questão é como escrever o código no processo de cada segundo de monitorização para que elimine o resultado anterior quando a condição nesta vela deixa de funcionar?

Aqui está um exemplo adequado de renderização, mas se eu fizesse aqui o teste, isso dar-me-ia uma leitura incorrecta do candelabro. Como é que o arranjo?

1. o testador estava e está a funcionar correctamente, sem erros.

2. erro na sua compreensão do processo de teste: quando ocorre a primeira execução do indicador ou do histórico de paginação (lembre-se, o sinal disto é prev_calculado==0), contorna-se todas as barras num loop. Assim, neste laço utiliza arrays-timeseries

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])

que, para cada i-ésimo membro do laço, tem apenas UM valor Aberto, Alto, Baixo e Fechado.

Mas quando todas as barras são passadas, o testador começa a trabalhar em modo tic-tac em cada barra - é por isso que se pode ver como o Alto sobe e o Baixo desce.

 
Vladimir Karputov:

1. o testador funcionou e funciona correctamente, não há erros.

2) Há um erro na sua compreensão do processo de teste: quando ocorre a primeira execução do indicador ou paginação do histórico (lembre-se, o sinal disto é prev_calculado==0), contorna-se todas as barras do laço. Assim, neste laço utiliza arrays-timeseries

que, para cada i-ésimo membro do laço, tem apenas UM valor Aberto, Alto, Baixo e Fechado.

E quando todas as barras são passadas, o testador começa a trabalhar em cada barra em modo tic-tac - é por isso que se pode ver como o Alto sobe e o Baixo desce.

Sim, concordo que quando o testador começa, o resultado é diferente devido ao preenchimento de valores de preço, mas a questão é como inserir uma condição quando num candelabro, por exemplo, se forma primeiro um padrão, mas no final aparece outro, mas não pode ser substituído por outra entrada indicadora porque a condição apropriada não está escrita. Como especificá-lo?

if(Cmp(shadow_upper_1,shadow_lower_0)<0 && body_size_0 < body_size_1 && shadow_lower_0 >= 0.7*shadow_upper_0 && 8*body_size_0 >= shadow_lower_0 && 7*body_size_0 <= shadow_upper_0 && close_0 >= Upper1_0 && close_0 <= body_Upper_Upper1_mediane75_0 && Upper1_1 >= Upper1_2)
         if(InpEnablePAT_DOJIUP_UPPER1) DrawPattern(index,PATTERN_TYPE_DOJIUP_UPPER1,high,low,time);

Aqui está o código que forma a indicação do candelabro, mas como torná-lo redesenhável?

 
clickaider:

Sim, concordo que quando se executa o testador o resultado é diferente devido ao preenchimento de valores de preço, mas a questão é como colocar uma condição na construção, quando numa vela, por exemplo, se forma primeiro um padrão, mas no final aparece outro padrão, mas não pode ser substituído por outra entrada indicadora, porque a condição apropriada não é prescrita. Como especificá-lo?

Aqui está o código que forma a indicação do candelabro, mas como torná-lo redesenhável?

Guardar o número de barras no índice. Verifique antes de desenhar. Se houver um objecto no bar, apagá-lo. ObjectDelete.

 
clickaider:

Sim, concordo que quando se executa o testador o resultado é diferente devido ao preenchimento de valores de preço, mas a questão é como colocar uma condição na construção, quando numa vela, por exemplo, se forma primeiro um padrão, mas no final aparece outro padrão, mas não pode ser substituído por outra entrada indicadora, porque a condição apropriada não é prescrita. Como especificá-lo?

Aqui está o código que forma a indicação do candelabro, mas como torná-lo redesenhável?

Apenas para fornecer três estados:

  • Padrão de desenho 1
  • Padrão de desenho 2
  • não desenhe nada (por exemplo, para DRAW_ARROW passe"0" para o tampão indicador, se tiver escrito

//--- установим пустое значение 
   PlotIndexSetDouble(индекс_построения_DRAW_ARROW,PLOT_EMPTY_VALUE,0);
 
Vladimir Karputov:

Basta fornecer três estados:

  • padrão de desenho 1
  • padrão de desenho 2
  • não desenhar nada (por exemplo, para DRAW_ARROW passa"0" para o buffer do indicador, se o tiver escrito no início do indicador

Enviei-lhe o código fonte, poderia por favor ver onde o colocar?
Arquivos anexados:
PatternsBB.ex5  81 kb
Razão: