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

 
pivomoe:
Compreendo correctamente que o método Volume da classe CPositionInfo devolve o volume correspondente ao ponto no tempo em que o método Select() foi chamado pela última vez? Ou seja, pode descobrir o volume que foi há um mês atrás para este símbolo?
Percebeu tudo mal. O método Volume da classe CPositionInfo devolve o volume de uma posição. A posição que foi previamente seleccionada através da PositionSelect.
 

Explicou como preparar a CPositionInfo. No entanto, ainda não compreendo duas coisas:

1) Como é que esta receita segue a ajuda da classe CPositionInfo?

2) Porque precisamos da própria classe, se não se pode usar mais do que um objecto normalmente, porque antes de cada acesso à propriedade posição, precisamos de configurar a posição usando o método Select, caso contrário, de repente usaremos o método Select para outro objecto CPositionInfo noutro lugar.

 
pivomoe:

Explicou como preparar a CPositionInfo. No entanto, ainda não compreendo duas coisas:

1) Como é que esta receita segue a ajuda da classe CPositionInfo?

2) Porque precisamos da própria classe, se não se pode usar mais do que um objecto normalmente, porque antes de cada acesso à propriedade posição, precisamos de configurar a sua posição usando o método Select, caso contrário, de repente usaremos o método Select para outro objecto CPositionInfo noutro local.

1). Tudo isto está na ajuda. Com diligência e atenção, mais alguma auto-escrita, isto dar-lhe-á uma compreensão.
2). Mais uma vez: a classe CPositionInfo não é um caixão que armazena todos os dados de todas as posições; é apenas uma ferramenta útil para aceder às propriedades de uma posição.

E sempre foi este o caso: primeiro, selecciona-se a posição, e depois obtém-se as suas propriedades. Depois disso, o ciclo repete-se: a posição é realçada e só então as propriedades da posição são recuperadas.
 

Não compreendo qual é o meu erro em usar ajuda.

1) Eu precisava do volume da posição no programa.

2) Através de uma pesquisa, encontrei o método Volume da classe CPositionInfo.

3) Tem uma referência à utilização do método Select antes de chamar Volume.

4) Não há nenhuma referência na descrição do método Select. Para estar no lado seguro, estudo a descrição da classe CPositionInfo.

5) Eu escrevo o código. Obtenho um resultado que não decorre da referência.


Onde está o erro?

Uma vez mais sei como escolher uma posição e uma ordem antes de aceder às propriedades. Mas este conhecimento e o conhecimento da CPositionInfo na ajuda não se cruzam.

 
pivomoe:

Onde está o erro?

Se aprender a escrever com mais detalhes, poderá ver onde está errado.

Tente escrever desta forma:

CPositionInfo PositionInfoKotiryemii,PositionInfoVedygii;
double Volume1=0; Volume2=0;
string Symbol1=""; Symbol2="";

if ( PositionInfoVedygii.Select("SBRF-12.17") ) // Select 1
{ Volume1=PositionInfoVedygii.Volume(); Symbol1=PositionInfoVedygii.Symbol(); } // Use 1
else Print("Не удалось выбрать позицию по символ SBRF-12.17 ");

if ( PositionInfoKotiryemii.Select("SBRF-3.18") ) // Select 2
{ Volume2=PositionInfoKotiryemii.Volume(); Symbol2=PositionInfoKotiryemii.Symbol(); } // Use 2
els Print("Не удалось выбрать позицию по символ SBRF-3.18 ");
 
Print(Symbol2," Объем ",Volume2," ",Symbol1," Объем ",Volime1);
 
pivomoe:

Não compreendo qual é o meu erro em usar ajuda.

1) Eu precisava do volume da posição no programa.

2) Através de uma pesquisa, encontrei o método Volume da classe CPositionInfo.

3) Tem uma referência à utilização do método Select antes de chamar Volume.

4) Não há nenhuma referência na descrição do método Select. Para estar no lado seguro, estudo a descrição da classe CPositionInfo.

5) Eu escrevo o código. Obtenho um resultado que não decorre da referência.


Onde está o erro?

Mais uma vez sobre a selecção de posição, encomendar, antes de aceder às propriedades que conheço. Mas este conhecimento e o conhecimento CPositionInfo na ajuda não se sobrepõem.


É um bloco de código que contorna todas as posições e imprime informação semelhante à do terminal no separador "Comércio":

   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
        {
         string str_position_type=(m_position.PositionType()==POSITION_TYPE_BUY)?"buy":"sell";
         Print(m_position.Symbol()+" | "+
               IntegerToString(m_position.Ticket())+" | "+
               TimeToString(m_position.Time(),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+" | "+
               str_position_type+" | "+
               DoubleToString(m_position.Volume(),2)+" | "+
               DoubleToString(m_position.PriceOpen(),2));

}

Algoritmo do trabalho: primeiro seleccionamos a posição (tirar um frasco de compota da prateleira do supermercado), depois acedemos às propriedades da posição seleccionada e imprimimos estas propriedades (ler a etiqueta no frasco de compota).

 
pivomoe:

Acontece que a classe CPositionInfo não faz qualquer sentido, porque normalmente, só se pode trabalhar com um objecto desta classe.

Sim, é um invólucro.
 

Ivan Ivanov ,Vladimir Karputov, fxsaber obrigado pela sua ajuda.

 

Recupero dados de indicadores no Expert Advisor. Primeiro calculo a pega, depois copio os últimos vários valores reais dos amortecedores indicadores.

Perguntas:

1. Qual é a profundidade da história nestes indicadores?

2. Existe algum método para limitar a profundidade dos cálculos?
Neste caso, precisamos apenas de alguns últimos valores para determinar a inflexão ou a direcção para cima/para baixo.
O Expert Advisor é multi-moeda, existem dezenas de indicadores, por isso não preciso de fazer cálculos desnecessários.

 
User_mt5:

Recupero dados de indicadores no Expert Advisor. Primeiro calculo a pega, depois copio os últimos vários valores reais dos amortecedores indicadores.

Perguntas:

1. Quão profunda é a história nestes indicadores?

2. Existe uma forma de limitar a profundidade dos cálculos?
Neste caso precisamos apenas de alguns últimos valores para determinar a inflexão ou a direcção para cima/baixo.
O Expert Advisor é multi-moeda, existem dezenas de indicadores, pelo que é necessário não fazer cálculos desnecessários.


Espero que crie manípulos indicadores ONE time no OnInit()?

A profundidade de cálculo depende do indicador. Os indicadores raros limitam a profundidade à força - como regra, todos eles calculam toda a história. Portanto, talvez a seguinte variante seja útil: introduzir a variável responsável pela profundidade no indicador, e depois passar este parâmetro através do iCustom no Expert Advisor.