Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1117

 
Roman:

Davvero utile...

Stampare in tempi diversi.

Perché la variabile predefinita _Period emette il valore che:

La variabile _Period memorizza il valore del timeframe del grafico corrente.

E questo timeframe è definito dal valore della costante dell'enumerazione ENUM_TIMEFRAMES che corrisponde al periodo del grafico.

Ok, risolvetelo:

//+------------------------------------------------------------------+
//|                                         TestTimeframe_Period.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                             https://mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://mql5.com/ru/users/artmedia70"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print
     (
      "Значение предопределённой переменной _Period на графике ",TimeframeDescription(Period())," = ",(string)(int)_Period,"\n",
      "Значение константы перечисления ENUM_TIMEFRAMES ",EnumToString(Period())," = ",(string)(int)Period(),"\n",
      "Период графика, соответствующий константе перечисления ENUM_TIMEFRAMES ",EnumToString(Period()),", со значением ",(string)(int)Period()," = ",TimeframeDescription(Period())
     );
  }
//+------------------------------------------------------------------+
//| Возвращает описание таймфрейма                                   |
//+------------------------------------------------------------------+
string TimeframeDescription(const ENUM_TIMEFRAMES timeframe)
  {
   return StringSubstr(EnumToString((timeframe>PERIOD_CURRENT ? timeframe : (ENUM_TIMEFRAMES)Period())),7);
  }
//+------------------------------------------------------------------+
Документация по MQL5: Предопределенные переменные / _Period
Документация по MQL5: Предопределенные переменные / _Period
  • www.mql5.com
Предопределенные переменные / _Period - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Roman:

Non ho usato mql4 )) e non mi sono abituato.
Perché dobbiamo dividere ancora per 60?
Dove lo dice il riferimento?
Sono già le tue stampelle che bypassano il bug.
Ora controlla la tua stampella, su tutti i timeframe

Un bug? Quindi pensi che anche avere i timeframe M1, M2, M3, M4, M5, M6 e poi M10 sia un bug?

Perché non chiedete agli sviluppatori di eliminare i bug dei tempi mancanti

M7, M8, M9, M11, M13, M14, M16, M17, M18, M19, M21, M22, M23, M24, M25, M26, M27, M28, M29, M31 - M59, N1_M1, N1_M2, N1_M3, --- , ---, CENTO_ANNI ?

Perché la rappresentazione interna delle costanti di trasferimento è improvvisamente un bug ?

La mancanza di banconote da trecento rubli non la preoccupa?

 
Artyom Trishkin:

Un bug? Quindi pensi che anche avere i timeframe M1, M2, M3, M4, M5, M6 e poi M10 sia un bug?

Perché non chiedete agli sviluppatori di eliminare i bug dei tempi mancanti

M7, M8, M9, M11, M13, M14, M16, M17, M18, M19, M21, M22, M23, M24, M25, M26, M27, M28, M29, M31 - M59, N1_M1, N1_M2, N1_M3, --- , ---, CENTO_ANNI ?

Perché la rappresentazione interna delle costanti enum è improvvisamente un bug ?

Non ti disturba la mancanza di banconote da trecento rubli?

Potete dirmi se il valore di 16385 corrisponde al valore del periodo del grafico H1?
E tutti gli altri valori del periodo sopra H1.
Igor ti ha anche mostrato il formato binario, e il mio prossimo post è lo stesso, ma in un formato diverso.

Stai andando in una direzione completamente diversa, non tirare fuori qualcosa che non hai detto.
Quello che mi dà fastidio è che il moderatore mette la museruola agli insetti con le sue stampelle!
Non contribuendo alla loro eliminazione.

Ecco un altro bug per voi.

Print(PeriodSeconds(PERIOD_MN1)*1000);

E la stessa cosa sul grafico di MN.

Print(PeriodSeconds(PERIOD_CURRENT)*1000);
 
Roman:

Dimmi per favore, il valore di 16385 corrisponde al valore del periodo del grafico H1?
E tutti gli altri valori del periodo sopra H1.

Stai andando in una direzione completamente diversa, non tirare fuori qualcosa di cui non si è parlato.
Quello che mi dà fastidio è che il moderatore sta lavando via gli insetti con le sue stampelle!
E non contribuire alla loro eliminazione.
Ecco un altro bug per voi.

Non hai tempo per studiare la guida?

Tutto quello che non capisci è un bug che pensi che gli sviluppatori dovrebbero risolvere?

O forse dovresti imparare a leggere in questo caso, invece di passare la palla a un moderatore?

Print((string)(uint)PeriodSeconds(PERIOD_MN1)*1000)

Perché stai facendo traboccare l'int?

Quindi stampatelo per voi stessi:

Print
  (
   "(int)PeriodSeconds(PERIOD_MN1) = ",(int)PeriodSeconds(PERIOD_MN1),
   ", (ulong)PeriodSeconds(PERIOD_MN1)*1000 = ",(ulong)PeriodSeconds(PERIOD_MN1)*1000,
   ", INT_MAX = ",INT_MAX
  );

e per favore correggete il bug del vostro pensiero.

E se volete i millisecondi, rappresentateli come ulong.

 
Artyom Trishkin:

Non hai tempo per studiare la guida?

Tutto quello che non capisci è un bug che pensi che gli sviluppatori dovrebbero risolvere?

O forse dovresti imparare a leggere in questo caso, invece di passare la palla a un moderatore?

Perché stai facendo traboccare l'int?

Quindi stampatelo per voi stessi:

e per favore correggete il bug del vostro pensiero.

Il sovraffollamento, sì, è stata una svista, non ne ho tenuto conto. Grazie qui.
Ma il tuo esempio non si compila.

Come stampa bene, indovina quando hai bisogno di una stringa e quando no ))

Print((uint)PeriodSeconds(PERIOD_MN1)*1000);


E per quanto riguarda la variabile _Period, c'è qualcosa di sbagliato sopra H1.

 
Roman:

Dimmi per favore, il valore di 16385 corrisponde al valore del periodo del grafico H1?
E tutti gli altri valori del periodo sopra H1.
Igor ti ha anche mostrato il valore in formato binario, e il prossimo è il mio post, dove vedi lo stesso valore in un altro formato.

Stai andando in una direzione completamente diversa, non tirare fuori qualcosa che non hai detto.
Quello che mi dà fastidio è che il moderatore mette la museruola agli insetti con le sue stampelle!
Non contribuendo alla loro eliminazione.

Ecco un altro bug per voi.

E lo stesso sul grafico di MN.

1. Sì, corrisponde al valore della costante.

2. E tutti gli altri corrispondono al valore della costante.

Prova a stamparlo.

Print("SYMBOL_BID=",SYMBOL_BID); 

Pensi che ti verrà stampato il prezzo attuale dell'offerta o qualcos'altro?

Perché allora vi aspettate da

Print("PERIOD_H1=",PERIOD_H1);

che vi sarà dato qualcosa come H1 o 60?

E Igor non l'ha stampato per me, ma vi ha mostrato la rappresentazione interna dei valori costanti dell'enumerazione ENUM_TIMEFRAMES nel formato binario.

Hai affermato che i valori delle costanti di enumerazione che mi hai mostrato sono un bug e la mia spiegazione è una stampella. Non è così - è solo la vostra ignoranza di semplici nozioni di base.

Ora mi congedo - imparate le basi, e per favore non mostrate la vostra ignoranza nei bug e nelle stampelle degli sviluppatori - non è bene gettare un vuoto. Sì, e tu scegli delle "parole strette", dimenticando che si scopre che non sai qualcosa.

Lo capirai, ma il tuo schizzo rimarrà per altri che sono altrettanto "esperti". È un parassita...

 
Roman:

Con l'overflow, sì, ho esagerato, non ho tenuto conto di questo punto. Grazie.
Ma il vostro campione non verrà compilato.

Ma stampa bene, quindi indovina quando hai bisogno di una stringa e quando no ))


E per quanto riguarda la variabile _Period, c'è qualcosa di sbagliato sopra H1 di sicuro.

Cioè, cosa vuol dire "non compila"? Copiato dal forum nello script e compilato:


E la variabile _Period restituisce il valore della costante di enumerazione ENUM_TIMEFRAMES del grafico corrente come int. Cioè, non il numero di minuti, non il numero di secondi, ma il valore della costante di ENUM_TIMEFRAMES corrispondente al grafico corrente.

 
Roman:

Ma stampa tutto bene, quindi indovina quando hai bisogno di una stringa e quando no ))

Non c'è bisogno di indovinare. Bisogna pensare e capire cosa viene fatto e per quale scopo. Quando qualcosa deve essere scritto e quando non deve esserlo.

 
Artyom Trishkin:

Perché allora vi aspettate che

che otterrete qualcosa come H1 o 60?

Perché i timeframe minuti sotto H1 restituiscono i valori corretti.
Come descritto nell'aiuto, restituiscono il valore del timeframe, non una costante casuale.

Print("PERIOD_M1=",PERIOD_M1);
Print("PERIOD_M5=",PERIOD_M5);
Print("PERIOD_M30=",PERIOD_M30);
Print("PERIOD_H1=",PERIOD_H1);
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_M1=1
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_M5=5
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_M30=30
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_H1=16385

Questo è il motivo per cui è logico aspettarselo da timeframe più alti, continuando la sequenza in minuti.
PERIODO_H1=60

ecc.

 
Roman:

Perché i timeframe minuti sotto l'H1 restituiscono valori corretti.
Come è descritto nell'aiuto, essi restituiscono il valore del timeframe, non le costanti arbitrarie.

Questo è il motivo per cui è logico aspettarselo da timeframe più alti, continuando la sequenza in minuti.
PERIODO_H1=60

ecc.

... continuando a comporre canzoni malvagie, aspettandosi il comunismo, il marchio di trincea e la raccolta di ***...

È logico non usare valori costanti nell'aspettativa di restituire valori "logici" attesi.

Ancora una volta (per l'ultima volta) vi ricordo la costante SYMBOL_BID. È "logico" aspettarsi da esso il valore dell'attuale prezzo Bid invece di 1 per qualche motivo, giusto? O non lo è?

Questo è tutto. Sono stanco della liquirizia e non ho preso l'insegnamento, per così dire.

Motivazione: