Erros, bugs, perguntas - página 73

 
Swan:

ou não é necessária nenhuma anulação, ou pedir,licitar por símbolo de posição para pedir

A função PositionGetSymbol selecciona automaticamente uma posição para trabalhos futuros.

De facto, PositionGetSymbol fornece selecção sequencial e PositionSelect fornece selecção directa

Документация по MQL5: Торговые функции / PositionGetSymbol
Документация по MQL5: Торговые функции / PositionGetSymbol
  • www.mql5.com
Торговые функции / PositionGetSymbol - Документация по MQL5
 
Swan:

ou não precisa de procurar uma posição, ou pedir, licitar por um símbolo de posição

Como se verificou, PositionGetInteger(POSITION_TYPE) é utilizado sem selecção por PositionSelect. O que, de facto, não é bom (como Slava me lembrou)... :)

stringo:

A função PositionGetSymbol selecciona automaticamente uma posição para trabalhos futuros.

De facto, PositionGetSymbol fornece selecção sequencial e PositionSelect fornece selecção directa

Com base nisto foi necessário aplicar exactamente o PositionGetSymbol no laço, e depois interessar-se por tudo o resto...
 

Bem, se usar telepatia, então se(PositionSelect(Symbol())) deve colocá-lo em vez de laço :)

É melhor verificar se LevelProfit-LevelWLoss não é inferior a SymbolInfoInteger(Symbol,SYMBOL_TRADE_STOPS_LEVEL).

E essas duplas são comparadas incorrectamente...

Caso contrário deve funcionar)


ps: não tenho a certeza, mas para modificação sl/tp, o desvio>0 não acrescentará nada de bom.

 

ObjectGetInteger() com identificador OBJPROP_TIME não funciona correctamente

Para reproduzir o erro, criar um objecto "Rectângulo" com o nome "1".

Execute o guião abaixo para mostrar as quatro coordenadas de âncora do nosso rectângulo recém-criado chamado "1

void OnStart()
{ 
  Comment(ObjectGetDouble(0,"1",OBJPROP_PRICE,0),"   ",
          StringToTime   (IntegerToString(ObjectGetInteger(0,"1",OBJPROP_TIME, 0))),"\n",
          
          ObjectGetDouble(0,"1",OBJPROP_PRICE,1),"   ",
          StringToTime   (IntegerToString(ObjectGetInteger(0,"1",OBJPROP_TIME, 1))));

}

Vemos que as coordenadas de preço são definidas correctamente, mas as coordenadas de tempo não são:


Документация по MQL5: Графические объекты / ObjectGetInteger
Документация по MQL5: Графические объекты / ObjectGetInteger
  • www.mql5.com
Графические объекты / ObjectGetInteger - Документация по MQL5
 
joo:

ObjectGetInteger() com identificador OBJPROP_TIME não funciona correctamente

Para reproduzir o erro, criar um objecto "Rectângulo" com o nome "1".

Execute o guião abaixo para mostrar as quatro coordenadas de âncora do nosso rectângulo recém-criado chamado "1

Vemos que as coordenadas de preço são definidas correctamente, mas as coordenadas de tempo não o são:



Sinta a diferença

  Comment(ObjectGetDouble(0,"1",OBJPROP_PRICE,0),"   ",
          datetime(ObjectGetInteger(0,"1",OBJPROP_TIME, 0)),"\n",
          
          ObjectGetDouble(0,"1",OBJPROP_PRICE,1),"   ",
          datetime(ObjectGetInteger(0,"1",OBJPROP_TIME, 1)));
 
joo:

ObjectGetInteger() com identificador OBJPROP_TIME não funciona correctamente

Para reproduzir o erro, criar um objecto "Rectângulo" com o nome "1".

Execute o guião abaixo para mostrar as quatro coordenadas de âncora do nosso rectângulo recém-criado chamado "1

Vemos que as coordenadas de preço são definidas correctamente, mas as coordenadas de tempo não o são:



Aqui está o guião.

//+------------------------------------------------------------------+
//|                                                       123123.mq5 |
//|                                  2009, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string msg="";
//---
   msg+=DoubleToString(ObjectGetDouble(ChartID(),"123456",OBJPROP_PRICE,0),_Digits)+" "+
        TimeToString(ObjectGetInteger(ChartID(),"123456",OBJPROP_TIME,0),TIME_DATE|TIME_MINUTES)+"\n";
   msg+=DoubleToString(ObjectGetDouble(ChartID(),"123456",OBJPROP_PRICE,1),_Digits)+" "+
        TimeToString(ObjectGetInteger(ChartID(),"123456",OBJPROP_TIME,1),TIME_DATE|TIME_MINUTES)+"\n";
   Comment(msg);
  }
//+------------------------------------------------------------------+

E aqui está o resultado.

 
stringo:

Sinta a diferença

Obrigado, eu sinto a diferença.

O utilizador define explicitamente o tipo de valor para a data/hora

e utilizei a conversão de dados.

Mas isso não significa que a construção

StringToTime   (IntegerToString(

não funciona correctamente?

 
joo:

Obrigado, eu sinto a diferença.

O utilizador define explicitamente o tipo de valor para a data/hora

e utilizei a conversão de dados.

Mas isso não significa que a construção

Não está a funcionar correctamente?

Não que esteja errado. Estas acções são simplesmente desnecessárias.

Procure na ajuda para a função StringToTime() e compreenderá porque é que o resultado é incorrecto.

Документация по MQL5: Преобразование данных / StringToTime
Документация по MQL5: Преобразование данных / StringToTime
  • www.mql5.com
Преобразование данных / StringToTime - Документация по MQL5
 
joo:

Obrigado, eu sinto a diferença.

O utilizador define explicitamente o tipo de valor para a data/hora

e utilizei a conversão de dados.

Mas isso não significa que a construção

não funciona correctamente?

Não exactamente. Ao converter IntegerToString recebeu uma string do tipo "12345612345", enquanto que StringToTime deve introduzir uma string formatada como "2010.07.29 08:10".

No entanto, mostrou-nos o nosso erro. No seu caso, deveríamos ter devolvido a data 1970.01.01.01 00:00 e fixado o último_erro

 
stringo:

Não exactamente. Ao converter IntegerToString recebeu uma string do tipo "12345612345", enquanto que StringToTime deve receber uma string formatada como "2010.07.29 08:10".

No entanto, mostrou-nos o nosso erro. No seu caso, deveríamos ter devolvido a data 1970.01.01.01 00:00 e fixado o último_erro

Então, a minha mensagem não é em vão, como eu já pensava?