[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 249

 
Leo59:

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.

 
Zhunko:

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.

 
Quais são os nomes das variáveis " take profit" e "stop loss"? E como especificar o endereço do roteiro a ser executado?
 
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.

 
Obrigado!!!!!!
 
Compila, mas não executa.
 
Dimka-novitsek:
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:

void start()
  {
   int hwndChart = WindowHandle("EURUSD", PERIOD_H1);
   while (!IsStopped())
    {
     for (int i = 0; i < 9 && !IsStopped(); i++)
      {
       ServiceSetTimeframeByNumber(hwndChart, i);
       Sleep(4000);
      }
    }
  }

3. Execute o roteiro em outro gráfico.

4. A tabela EURUSD H1 mudará a TF.