Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 672
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Na verdade, eu fiz, mas não gosto do longo tempo de resposta
Não é muito tempo, é um tique... mas em geral, você precisa ler a ajuda. Você não pode aprender MQL "tentando", é baseado em С++, mas está vinculado à plataforma МТ, então você precisa estudar a ajuda.
Você tem manipulação de arquivos e trabalha com variáveis e gráficos globais em seu código ... Há um monte de operações desnecessárias em cada carrapato
Se você quiser uma execução rápida, use OnChartEvent(), ele não é gerado no testador, mas primeiro comece a estudar a ajuda MQL4.
A operação não é longa, é tique por tique... mas em geral, comece a ler a ajuda, você não pode aprender MQL por "gut feeling", MQL é baseado em C++, mas está ligado à plataforma MT, você não pode fazê-lo sem ler a ajuda.
Você tem manipulação de arquivos e trabalha com variáveis e gráficos globais em seu código ... Há um monte de operações desnecessárias em cada carrapato
Se você quiser uma execução rápida, use OnChartEvent(), ele não é gerado no testador, mas primeiro comece a estudar a ajuda MQL4.
Olá a todos.
Encontrei um útil indicador Ind-Fractals na biblioteca de códigos. No entanto, ele desenha fractais em cada barra, em vez de calculá-los corretamente. Quero usar este indicador, mas ele está "quebrado" (( Ajude-me a encontrar um erro, tentei entrar em contato com o autor, mas ele não responde às mensagens. Por conveniência, código duplicado aqui.
#propriedade copyright "Copyright © 2005, MetaQuotes Software Corp.
#link da propriedade "http://www.metaquotes.net"
//----
#janela_do_cartão_indicador de propriedade
#property indicator_buffers 8
#indicador de propriedade_cores1 Vermelho
#indicador de propriedade_color2 Vermelho
#código de propriedade_color3 Azul
#indicador de propriedade_color4 Azul
#indicador de propriedade_color5 Cal
#indicador de propriedade_color6 Cal
#indicador de propriedade_color7 Sienna
#indicador de propriedade_color8 Siena
//---- parâmetros de entrada
bool externo Comm=true;
//---- buffers
duplo ExtMapBuffer1[];
duplo ExtMapBuffer2[];
duplo ExtMapBuffer3[];
duplo ExtMapBuffer4[];
duplo ExtMapBuffer5[];
duplo ExtMapBuffer6[];
duplo ExtMapBuffer7[];
duplo ExtMapBuffer8[];
//+------------------------------------------------------------------+
//| Função de inicialização do indicador personalizado |
//+------------------------------------------------------------------+
int init()
{
//---- indicadores
SetIndexStyle(0,DRAW_ARROW);//o estilo da linha indicadora
SetIndexArrow(0,217); //prescreve o tipo de seta
SetIndexBuffer(0,ExtMapBuffer1);//bindbuffer indicador com matriz dinâmica unidimensional de tipo duplo. Existem 2 versões da função.
SetIndexEmptyValue(0,0.0);//S Define o valor vazio para a linha indicadora.
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1.218);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexEmptyValue(1,0.0);
SetIndexStyle(2,DRAW_ARROW);
SetIndexArrow(2.217);
SetIndexBuffer(2,ExtMapBuffer3);
SetIndexEmptyValue(2,0.0);
SetIndexStyle(3,DRAW_ARROW);
SetIndexArrow(3.218);
SetIndexBuffer(3,ExtMapBuffer4);
SetIndexEmptyValue(3,0.0);
SetIndexStyle(4,DRAW_ARROW);
SetIndexArrow(4.217);
SetIndexBuffer(4,ExtMapBuffer5);
SetIndexEmptyValue(4,0.0);
SetIndexStyle(5,DRAW_ARROW);
SetIndexArrow(5.218);
SetIndexBuffer(5,ExtMapBuffer6);
SetIndexEmptyValue(5,0.0);
SetIndexStyle(6,DRAW_ARROW);
SetIndexArrow(6.217);
SetIndexBuffer(6,ExtMapBuffer7);
SetIndexEmptyValue(6,0.0);
SetIndexStyle(7,DRAW_ARROW);
SetIndexArrow(7.218);
SetIndexBuffer(7,ExtMapBuffer8);
SetIndexEmptyValue(7,0.0);
retorno(0); }
//+------------------------------------------------------------------+
//| Função de desinicialização do indicador do cliente |
//+------------------------------------------------------------------+
int deinit() {return(0); }
//------------------------------------------------------------------
bool Fractal(string F,int Por,int shift) {
if(Período()>Por) retorno(-1);
Por=Por/Período()*2+MathCeil(Por/Período()/2);
if(shift<Per)return(-1);
if(shift>Bars-Per)return(-1);
for(int i=1;i<=Per;i++) {
if(shift+i>=Bars || shift-i<0) return(-1);
if(F==="U") {
if(High[shift+i]>High[shift])return(-1);
if(High[shift-i]>=High[shift])return(-1); }
if(F==="L") {
if(Low[shift+i]<Low[shift])return(-1);
if(Low[shift-i]<=Low[shift])return(-1); } } }
retorno(1); }
//------------------------------------------------------------------
int start()
{
int D1=1440,H4=240,H1=60,M15=15,B;
duplo P;
int counted_bars=IndicatorCounted();// número de barras inalterado após a última chamada do indicador
B=Bars-counted_bars;
if(counted_bars==0) B--;
if(Period()==D1)P=150*Point;// period retorna o período atual do gráfico
if(Period()==H4)P=70*Point;
if(Period()==H1)P=40*Point;
if(Period()==30)P=30*Point;
if(Period()==M15)P=20*Point;
if(Período()==5)P=10*Ponto;
if(Período()==1)P=5*Ponto;
for(int shift=B;shift>0;shift--)
{
if(Fractal("U",M15,shift)==1) ExtMapBuffer1[shift]=High[shift]+P;
senão ExtMapBuffer1[shift]=0;
if(Fractal("L",M15,shift)==1) ExtMapBuffer2[shift]=Low[shift]-P;
senão ExtMapBuffer2[shift]=0;
if(Fractal("U",H1,shift)==1) ExtMapBuffer3[shift]=High[shift]+P;
senão ExtMapBuffer3[shift]=0;
if(Fractal("L",H1,shift)==1) ExtMapBuffer4[shift]=Low[shift]-P;
senão ExtMapBuffer4[shift]=0;
if(Fractal("U",H4,shift)==1) ExtMapBuffer5[shift]=High[shift]+P;
senão ExtMapBuffer5[shift]=0;
if(Fractal("L",H4,shift)==1) ExtMapBuffer6[shift]=Low[shift]-P;
senão ExtMapBuffer6[shift]=0;
if(Fractal("U",D1,shift)==1) ExtMapBuffer7[shift]=High[shift]+P;
senão ExtMapBuffer7[shift]=0;
if(Fractal("L",D1,shift)==1) ExtMapBuffer8[shift]=Low[shift]-P;
senão ExtMapBuffer8[shift]=0;
}
if(Comm) Comentário ("D1 - marrom - H4 - verde - H1 - azul - M15 - vermelho");
retorno(0);
}
Eu fui repreendido aqui por este tipo de código, é a primeira vez que o tenho :-)
O código deve ser inserido em um formulário que se abre com Alt+S.
Eu fui repreendido aqui por este tipo de código, é a primeira vez que o tenho :-)
Você tem que colar o código em um formulário que se abre em Alt+S.
Você é repreendido? De forma alguma. Escreva o código como você quiser. Mas... se você quiser uma resposta à sua pergunta, tente respeitar aqueles que você está pedindo ajuda. É tão simples quanto isso.
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Qualquer pergunta para iniciantes em MQL4, ajuda e discussão sobre algoritmos e códigos
Artyom Trishkin, 2018.10.18 08:07
Vamos colocar desta forma: crie um modelo de indicador no editor, adicione o número certo de variáveis de entrada e buffers de desenho quando você o criar.
A seguir, vamos analisar o que fazer a partir da tarefa específica.
Eu fiz isso da última vez, apenas mudei o nome da variável e da matriz.
Ao utilizar o iMA, ele funciona apenas em semanas e em daires, onde a vela contém mais de 100 pontos, ele não faz nada em prazos mais baixos. A razão parece ser o arredondamento.
Se for utilizado iMAOnArray, a janela i-ras está vazia em todas as TFs. Não há erros no registro.
Se for utilizado iMAOnArray, a janela i-ra está vazia em todas as TFs. Não há erros no registro.
Você está usando iMAOnArray() com período 1, ou seja, o valor iMAOnArray() será essencialmente o valor da matriz tmp1
Se você quiser fazer o que está calculando, encurte o looppara(i=1; i<10; i++)
e não imprima todos os dados que você deseja calcular, embora possa ser mais fácil não calcular alguma fórmula complexa, mas use iMAOnArray() para construir iMA e iMAOnArray() - ambos iMA e iMAOnArray() são o mesmo cálculo.... Infelizmente, se você puder obter uma resposta a uma pergunta técnica neste fórum, só você deve aprender a calcular e a lidar com as informações.
Da última vez que fiz isso, apenas mudei o nome da variável e da matriz.
Ao utilizar iMA i-r trabalhou apenas em semanas e dias, onde há mais de 100 pontos em uma vela, ele não desenha nada em TFs inferiores. A razão parece ser o arredondamento.
Se for utilizado iMAOnArray, a janela i-ras está vazia em todas as TFs. Não há erros no registro.
O primeiro ciclo calcula os valores do primeiro tampão;
O segundo ciclo calcula o MA por valores calculados no primeiro ciclo.
Considere o que significa iMAOnArray(). Escreva MA no Array. Como você traduzi-lo? Todos têm um tradutor do Google na ponta de seus dedos. Put-translate-receber: MA em Array.
Isso significa que é uma média móvel baseada em uma matriz preliminarmente calculada e preenchida.
Correspondentemente: o primeiro ciclo - preparação da matriz necessária, e o segundo ciclo - construção de uma média móvel baseada na matriz, preparada no primeiro ciclo.
E o que você faz? Você insere um valor na primeira matriz (os outros valores ainda não foram preparados) e tenta construir o MA sobre este valor.
Eu lhe dei um modelo:
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Qualquer pergunta, ajuda e discussão sobre algoritmos e códigos para iniciantes da MQL4
Artyom Trishkin, 2018.10.18 09:39
Indicador:
Você pode jogar fora tudo relacionado aos cinco e obter um modelo para quatro. Embora este modelo seja multiplataforma - você pode usá-lo para ambos os terminais - basta definir seus amortecedores e seu número. Neste modelo, há dois desenhos e um cálculo, que podem ser vistos aqui:
= também, você usa iMAOnArray() com período 1, ou seja, o valor do iMAOnArray() será essencialmente o valor da matriz tmp1
Eu tentei usar valores diferentes, 1 permanece como a última variante destas experiências.
Por alguma razão, o ip1Buf[4] = 2147483647.0 escreve o mesmo número no buffer i-r em todas as TFs, por exemplo, enquanto os valores da matriz são todos diferentes tmp1[4] = 0,1300000000000097, etc.
Mas mesmo assim deve ser traçada uma linha reta, e não há absolutamente nada na tabela i-r, a escala é marcada de 0 a 0.
= também, você usa iMAOnArray() com período 1, ou seja, o valor do iMAOnArray() será essencialmente o valor da matriz tmp1
Eu tentei usar valores diferentes, 1 permanece como a última variante destas experiências.
Por alguma razão, o ip1Buf[4] = 2147483647.0 escreve o mesmo número no buffer i-r em todas as TFs, por exemplo, enquanto os valores da matriz são todos diferentes tmp1[4] = 0,1300000000000097, etc.
Mas mesmo neste caso uma linha reta deve ser traçada, e não há absolutamente nada na tabela i-r, a escala é marcada de 0 a 0.
2147483647.0 Bem, comece a usar o motor de busca!https://www.mql5.com/ru/forum/224831
Mais uma vez, acabei de escrever Artem, você mesmo precisa ler, comece com uma simples... Desenhe um preço fechado em um gráfico com um indicador, depois tente complicá-lo, faça o mesmo em um ciclo e no segundo ciclo faça МА cálculo com base no buffer já calculado onde se encontra fechado