Errori, bug, domande - pagina 73

 
Swan:

o non è necessario alcun override, o ask,bid per simbolo di posizione per richiedere

La funzione PositionGetSymbol seleziona automaticamente una posizione per il lavoro successivo.

Infatti, PositionGetSymbol fornisce una selezione sequenziale e PositionSelect fornisce una selezione diretta

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

o non hai bisogno di cercare una posizione, o di chiedere, di fare un'offerta per un simbolo di posizione

Come si è scoperto, PositionGetInteger(POSITION_TYPE) è usato senza selezione da PositionSelect. Il che, in effetti, non è buono (come mi ha ricordato Slava)... :)

stringo:

La funzione PositionGetSymbol seleziona automaticamente una posizione per il lavoro successivo.

Infatti, PositionGetSymbol fornisce una selezione sequenziale e PositionSelect fornisce una selezione diretta

In base a questo era necessario applicare esattamente PositionGetSymbol nel ciclo, e poi interessarsi a tutto il resto...
 

Beh, se usate la telepatia, allora if(PositionSelect(Symbol())) dovete metterlo al posto di loop :)

È meglio controllare se LevelProfit-LevelWLoss non è inferiore a SymbolInfoInteger(Symbol,SYMBOL_TRADE_STOPS_LEVEL).

E quei doppi sono confrontati in modo errato...

Altrimenti dovrebbe funzionare)


ps: non sono sicuro, ma per la modifica di sl/tp, la deviazione>0 non servirà a nulla.

 

ObjectGetInteger() con identificatore OBJPROP_TIME non funziona correttamente

Per riprodurre l'errore, create un oggetto "Rettangolo" chiamato "1

Eseguite lo script qui sotto per mostrare le quattro coordinate di ancoraggio del nostro rettangolo appena creato chiamato "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))));

}

Vediamo che le coordinate di prezzo sono definite correttamente, ma quelle di tempo no:


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

ObjectGetInteger() con identificatore OBJPROP_TIME non funziona correttamente

Per riprodurre l'errore, create un oggetto "Rettangolo" chiamato "1

Eseguite lo script qui sotto per mostrare le quattro coordinate di ancoraggio del nostro rettangolo appena creato chiamato "1

Vediamo che le coordinate di prezzo sono definite correttamente, ma quelle di tempo no:



Senti la differenza

  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() con identificatore OBJPROP_TIME non funziona correttamente

Per riprodurre l'errore, create un oggetto "Rettangolo" chiamato "1

Eseguite lo script qui sotto per mostrare le quattro coordinate di ancoraggio del nostro rettangolo appena creato chiamato "1

Vediamo che le coordinate di prezzo sono definite correttamente, ma quelle di tempo no:



Ecco il copione.

//+------------------------------------------------------------------+
//|                                                       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);
  }
//+------------------------------------------------------------------+

Ed ecco il risultato.

 
stringo:

Senti la differenza

Grazie, sento la differenza.

Hai impostato esplicitamente il tipo di valore a datetime

e ho usato la conversione dei dati.

Ma questo non significa che il costrutto

StringToTime   (IntegerToString(

non funziona correttamente?

 
joo:

Grazie, sento la differenza.

Hai impostato esplicitamente il tipo di valore a datetime

e ho usato la conversione dei dati.

Ma questo non significa che il costrutto

Non funziona correttamente?

Non che sia sbagliato. Queste azioni sono semplicemente inutili.

Guardate l'aiuto della funzione StringToTime() e capirete perché il risultato non è corretto.

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

Grazie, sento la differenza.

Hai impostato esplicitamente il tipo di valore a datetime

e ho usato la conversione dei dati.

Ma questo non significa che il costrutto

non funziona correttamente?

Non esattamente. Convertendo IntegerToString avete ricevuto una stringa del tipo "12345612345", mentre StringToTime dovrebbe inserire una stringa formattata come "2010.07.29 08:10".

Tuttavia, lei ci ha mostrato il nostro errore. Nel tuo caso, avremmo dovuto restituire la data 1970.01.01 00:00 e sollevare l'errore last_error

 
stringo:

Non esattamente. Convertendo IntegerToString avete ricevuto una stringa del tipo "12345612345", mentre StringToTime dovrebbe ricevere una stringa formattata come "2010.07.29 08:10".

Tuttavia, lei ci ha mostrato il nostro errore. Nel tuo caso, avremmo dovuto restituire la data 1970.01.01 00:00 e sollevare l'errore last_error

Quindi, il mio messaggio non è vano, come ho già pensato?