Caro Granito77! Se você não se importa, por favor, faça correções diretamente no código, se algo estiver errado. Será claro e compreensível.
Exemplo. Dos oito buffers indicadores disponíveis, sete são usados para exibir linhas na janela indicadora, o oitavo é usado para cálculos, sem exibição na janela indicadora. Se não houver buffers indicadores suficientes, os cálculos podem ser efetuados em matrizes convencionais.
#7 duplo ind_buffer1[]; duplo ind_buffer2[]; duplo ind_buffer3[]; duplo ind_buffer4[]; duplo ind_buffer5[]; duplo ind_buffer6[]; duplo ind_buffer7[]; duplo ind_buffer8[]; //o oitavo buffer é usado para cálculos adicionais //duplo ind_buffer9[]; // não há nono buffer no indicador; esta matriz não tem para onde ir no init() { IndicatorBuffers(8); SetIndexBuffer(0,ind_buffer1); SetIndexBuffer(1,ind_buffer2);
SetIndexBuffer(2,ind_buffer3); SetIndexBuffer(3,ind_buffer4); SetIndexBuffer(4,ind_buffer5); SetIndexBuffer(5,ind_buffer6); SetIndexBuffer(6,ind_buffer7); SetIndexBuffer(7,ind_buffer8); //ind_buffer1... ind_buffer7 desenha sete linhas //elas são exibidas na janela indicadora de acordo com o #property indicator_buffers 7 //ind_buffer8 não é exibido na janela, mas está disponível para participar do retorno dos cálculos(0); }
granit77: Exemplo. Sete dos oito buffers indicadores são usados para exibir linhas na janela indicadora, o oitavo buffer é usado para cálculos, mas não será exibido na janela indicadora. Se não houver tampões indicadores suficientes, os cálculos podem ser feitos em arrays normais.
Obrigado! Isso é compreensível.
Eu não entendo outro. Não sei por que a matriz que participa dos cálculos, mas não é exibida na janela indicadora, deve ser identificada como o SetIndexBuffer. E se precisarmos de 10 matrizes para os cálculos e 8 para a exibição (18 matrizes no total), como declarar e identificar corretamente essas 10 matrizes? Quero que eles tenham as mesmas propriedades, como as matrizes anexadas aos amortecedores indicadores, exceto que não são desenhados.
Não é preciso renomeá-lo se não funcionar. O que é estranho. Você pode abri-lo a partir do menu de contexto selecionando WinRar. Ou abra o WinRar, então a partir do item de menu "Arquivo" "Open Archive" encontre o arquivo e abra-o.
Eu disse acima que a extensão é necessária apenas para a associação automática do arquivo.
Você já possibilitou a visibilidade de extensão? Captura de tela ou vídeo aqui se não funcionar.
Obrigado pelas instruções detalhadas. Eu fiz o download deste WinRar, aparentemente ele não estava lá e o arquivo foi aberto!
Sabe, não vejo a função funcionando. É verdade que os carrapatos não estão funcionando agora, mas pelo menos o começo deve funcionar ao unir o gráfico, certo? Bem, pelo menos ele compila!!! Estou tentando isto.
//+------------------------------------------------------------------+//| таймфрейммм.mq4 |//| Copyright 2012, MetaQuotes Software Corp. |//| http://www.metaquotes.net |//+------------------------------------------------------------------+#property copyright "Copyright 2012, MetaQuotes Software Corp."#property link "http://www.metaquotes.net"#include <ServicesMT4.mqh>void start()
{
int hwndChart = WindowHandle(Symbol(),Period());
while (!IsStopped())
{
for (int i = 0; i < 9; i++)
{
ServiceSetTimeframeByNumber(hwndChart, i);
Sleep(4000);
}
}
}
//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+
PR //Profit UB //Loss Pk //Variável tomando valores de compra Pr //Variável tomando valores de venda ADR //Variável tomando valores do roteiro
// Condição lucrativa if(PR===Pk) //Se houver lucro na compra ADR=1; //Set script 1 senão // Se lucro na venda ADR=2; //Set script 2
// Condições de venda if(UB===Pk) //Se houver perda na compra ADR=2; //set script 2 caso contrário // Se uma perda na venda
ADR=1; //Set script 1
Como posso melhorar isso para o comércio? Eu preciso de um EA para monitorar qual ordem foi fechada (compra ou venda), e como foi fechada com lucro ou prejuízo. Após tal análise, a EA executará 1 ou 2 scripts.
Dimka-novitsek: Não vejo esta função funcionando, sabe. É verdade que os carrapatos não ocorrem agora, mas pelo menos o início deve funcionar quando se conectar ao gráfico, certo? Bem, pelo menos ele compila!!! Experimentando isto
Não há carrapatos. A partida não é acionada. Pode ser compilado como um roteiro. Mas você terá que especificar o descritor do gráfico adjacente, que será atualizado.
Ou assim:
#include <ServicesMT4.mqh>int hwndChart = NULL;
void init()
{
hwndChart = WindowHandle(Symbol(),Period()); // Получаем системный дескриптор графика.
ServiceRefreshChart(hwndChart, 1000); // Запускаем обновление графика каждую 1 секунду.
}
void start()
{
ServiceStopRefreshChart(hwndChart); // Останавливаем обновление. Больше не требуется.
while (!IsStopped())
{
for (int i = 0; i < 9; i++)
{
ServiceSetTimeframeByNumber(hwndChart, i);
Sleep(4000);
}
}
}
Mas provavelmente não vai funcionar para você. Parece que a função ServiceRefreshChart () não está disponível para todos.
Você pode experimentá-lo no indicador. Ela se atualiza 2 vezes quando se junta ao gráfico e muda a TF.
Caro Granito77! Se você não se importa, por favor, faça correções diretamente no código, se algo estiver errado. Será claro e compreensível.
Se não houver buffers indicadores suficientes, os cálculos podem ser efetuados em matrizes convencionais.
#7 duplo ind_buffer1[]; duplo ind_buffer2[]; duplo ind_buffer3[]; duplo ind_buffer4[]; duplo ind_buffer5[]; duplo ind_buffer6[]; duplo ind_buffer7[]; duplo ind_buffer8[]; //o oitavo buffer é usado para cálculos adicionais //duplo ind_buffer9[]; // não há nono buffer no indicador; esta matriz não tem para onde ir no init() { IndicatorBuffers(8); SetIndexBuffer(0,ind_buffer1); SetIndexBuffer(1,ind_buffer2); SetIndexBuffer(2,ind_buffer3); SetIndexBuffer(3,ind_buffer4); SetIndexBuffer(4,ind_buffer5); SetIndexBuffer(5,ind_buffer6); SetIndexBuffer(6,ind_buffer7); SetIndexBuffer(7,ind_buffer8); //ind_buffer1... ind_buffer7 desenha sete linhas //elas são exibidas na janela indicadora de acordo com o #property indicator_buffers 7 //ind_buffer8 não é exibido na janela, mas está disponível para participar do retorno dos cálculos(0); }Exemplo. Sete dos oito buffers indicadores são usados para exibir linhas na janela indicadora, o oitavo buffer é usado para cálculos, mas não será exibido na janela indicadora.
Se não houver tampões indicadores suficientes, os cálculos podem ser feitos em arrays normais.
Obrigado! Isso é compreensível.
Eu não entendo outro. Não sei por que a matriz que participa dos cálculos, mas não é exibida na janela indicadora, deve ser identificada como o SetIndexBuffer. E se precisarmos de 10 matrizes para os cálculos e 8 para a exibição (18 matrizes no total), como declarar e identificar corretamente essas 10 matrizes? Quero que eles tenham as mesmas propriedades, como as matrizes anexadas aos amortecedores indicadores, exceto que não são desenhados.
Não é preciso renomeá-lo se não funcionar. O que é estranho. Você pode abri-lo a partir do menu de contexto selecionando WinRar. Ou abra o WinRar, então a partir do item de menu "Arquivo" "Open Archive" encontre o arquivo e abra-o.
Eu disse acima que a extensão é necessária apenas para a associação automática do arquivo.
Você já possibilitou a visibilidade de extensão? Captura de tela ou vídeo aqui se não funcionar.
Obrigado pelas instruções detalhadas. Eu fiz o download deste WinRar, aparentemente ele não estava lá e o arquivo foi aberto!
UB //Loss
Pk //Variável tomando valores de compra
Pr //Variável tomando valores de venda
ADR //Variável tomando valores do roteiro
// Condição lucrativa
if(PR===Pk) //Se houver lucro na compra
ADR=1; //Set script 1
senão // Se lucro na venda
ADR=2; //Set script 2
// Condições de venda
if(UB===Pk) //Se houver perda na compra
ADR=2; //set script 2
caso contrário // Se uma perda na venda
ADR=1; //Set script 1
Como posso melhorar isso para o comércio? Eu preciso de um EA para monitorar qual ordem foi fechada (compra ou venda), e como foi fechada com lucro ou prejuízo. Após tal análise, a EA executará 1 ou 2 scripts.
Não vejo esta função funcionando, sabe. É verdade que os carrapatos não ocorrem agora, mas pelo menos o início deve funcionar quando se conectar ao gráfico, certo? Bem, pelo menos ele compila!!! Experimentando isto
Não há carrapatos. A partida não é acionada. Pode ser compilado como um roteiro. Mas você terá que especificar o descritor do gráfico adjacente, que será atualizado.
Ou assim:
Mas provavelmente não vai funcionar para você. Parece que a função ServiceRefreshChart () não está disponível para todos.
Você pode experimentá-lo no indicador. Ela se atualiza 2 vezes quando se junta ao gráfico e muda a TF.
Ela compila, mas não executa.
Verifiquei. ServiceRefreshChart () não está disponível para você.
Qual opção não funciona? Já é demais. A opção com o roteiro e um gráfico separado sempre funcionará.
Você abre um gráfico, por exemplo, EURUSD H1.
2. No roteiro, isto:
3. Execute o roteiro em outro gráfico.
4. A tabela EURUSD H1 mudará a TF.