Perguntas de um "boneco" - página 205

 
Renat:

Depois de mudar a língua no Metaeditor, reiniciou-o?

Vamos verificar.

Tudo funciona bem, carreguei mql5_russian.chm, coloquei o russo no MetaEditor-e, recarreguei, apareceu ajuda em russo.
 

Escrevi este código para verificar a posição:

CPositionInfo myposition;

if (myposition.Select(_Symbol))
{
   double Open_position=NormalizeDouble(myposition.PriceOpen(),_Digits);
   double SL_position  =NormalizeDouble(myposition.StopLoss(),_Digits);
   double TP_position  =NormalizeDouble(myposition.TakeProfit(),_Digits);
   Comment(" Open_position=",Open_position,"\n",
           " SL_position=",SL_position,"\n",
           " TP_position=",TP_position);
}

Mas por alguma razão no comentário, os valores aparecem com 4 casas decimais. Em vez de _Dígitos colocar 5 ainda 4 caracteres, colocar 3 - 3 caracteres.

 
paladin800: Por alguma razão, os valores aparecem com 4 casas decimais nos comentários. Em vez de _Dígitos coloque 5 ainda 4 dígitos, coloque 3 - 3 dígitos.
E se eu simplesmente produzir myposition.PriceOpen(), o que é que vai mostrar?
 
paladin800:

Escrevi este código para verificar a posição:

Mas por alguma razão no comentário, os valores aparecem com 4 casas decimais. Em vez de _Dígitos colocar 5 ainda 4 caracteres, colocar 3 - 3 caracteres.

Provavelmente precisa da função DoubleToString().

 
paladin800:

Escrevi este código para verificar a posição:

Mas por alguma razão no comentário, os valores aparecem com 4 casas decimais. Em vez de _Dígitos coloque 5 ainda 4 caracteres, coloque 3 - 3 caracteres


O formato de saída dos números fracionários nos comentários é o seguinte. Converter os dubs em tipos de cordas e produzí-los nos comentários.
 
Como posso definir o saldo inicial da minha conta? Quero definir o tamanho do lote em função do lucro total da conta. Então, como determinar correctamente o equilíbrio inicial?
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 
tor4en: Como posso determinar o saldo inicial da conta? Quero especificar o tamanho do lote em função do lucro total da minha conta. Então, como determinar correctamente este equilíbrio inicial?

Um depósito é acompanhado por um registo

DEAL_ENTRY_STATE

Sinal de entrada de estado

Esta é a direcção a tomar.

 

Estou confuso sobre myposition.Type(). Fez o seguinte para verificar:

CPositionInfo myposition;
// ---
string classtype="no position";
string functype="no position";

if (PositionSelect(_Symbol))
{  // --- section SELL
   if (myposition.Type()==POSITION_TYPE_SELL)
       classtype="SELL";
   if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
       functype="SELL";
   // --- section BUY
   if (myposition.Type()==POSITION_TYPE_BUY)
       classtype="BUY";
   if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
       functype="BUY";
}
Comment ("classtype=",classtype,", functype=",functype);

O resultado dos testes com a visualização é o seguinte:
1) não há posição: classtype= sem posição, functype= sem posição // como esperado
2) existe uma posição de venda: classtype=BUY, functype=SELL // classtype determinou incorrectamente a direcção da posição
3) há uma posição de compra: classtype=BUY, functype=BUY // como deve ser

Tentei colocar se (myposition.Select(_Symbol)) em vez de se (PositionSelect(_Symbol)), o resultado é o mesmo. Talvez myposition.Type() deva ser escrito de forma diferente para que possa determinar correctamente a direcção da venda?

 
paladin800:

Estou confuso sobre myposition.Type(). Fez o seguinte para verificar:

Ao testar com visualização, o resultado é o seguinte:
1) não há posição: classtype= sem posição, functype= sem posição // como requerido
2) existe uma posição de venda: classtype=BUY, functype=SELL // classtype determinou erroneamente a direcção da posição
3) há uma posição de compra: classtype=BUY, functype=BUY // como deve ser

Tentei colocar se (myposition.Select(_Symbol)) em vez de se (PositionSelect(_Symbol)), o resultado é o mesmo. Talvez myposition.Type() deva ser escrito de forma diferente para a determinação correcta da direcção de venda?

Se olhar atentamente para a classe CPositionInfo "com raio X", poderá reparar que o método Type() não devolve o tipo de posição (ao contrário do método PositionType()).

   CPositionInfo myposition;
// ---
   string classtype="no position";
   string functype="no position";

   if(PositionSelect(_Symbol))
     {  // --- section SELL
      if(myposition.PositionType()==POSITION_TYPE_SELL)
         classtype="SELL";
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
         functype="SELL";
      // --- section BUY
      if(myposition.PositionType()==POSITION_TYPE_BUY)
         classtype="BUY";
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
         functype="BUY";
     }
   Print("classtype=",classtype,", functype=",functype);
  }
 
uncleVic:

Se observar atentamente a classe CPositionInfo "Raio-X", notará que o método Type() não devolve um tipo de posição (ao contrário do método PositionType()).

Muito obrigado. Funcionou com a sua dica! Fui guiado pelo artigo How to Use the Standard Library Trade Classes When Writing an EA, e na secção "1.6 CPositionInfo Class" existe myposition.Type(), que provavelmente precisa de ser corrigido.
Razão: