Domande da un "manichino" - pagina 117

 
meneo:

Come può essere? (vedere il calcolo della variabile k e i valori di tutte le variabili in modalità debug)

È molto semplice. lparam è di tipo lungo (intero), wdpix è di tipo int (intero). lparam/wdpix è di tipo lungo privato (intero). Poiché lparam < wdpix, lparam/wdpix ==0.

Vedi Riferimento MQL5 / Fondamenti del linguaggio / Tipi di dati / Conversione dei tipi

 
meneo:

Come tieni conto degli spazi vuoti tra barre adiacenti sul grafico?

Se lo vedete, contattate il Service Desk e informateli dell'errore.
 
Grazie a tutti! )
 
Posso sapere quale esperto è in esecuzione in un'altra finestra?
 
meneo:
Puoi dire quale Expert Advisor è in esecuzione in un'altra finestra?
Sembra impossibile (se non mi sono perso niente), ma è possibile "distinguere" il proprio dagli "altri". Se ci sono diversi programmi nel progetto, è possibile specificare il loro protocollo di scambio di cortesie attraverso messaggi personalizzati. Dovrebbero salutare, togliersi il cappello, svuotare le tasche, ecc.
 

È anche possibile fare un'enumerazione per enumerazione

come questo?

for (int i = PERIOD_M1;i<=PERIOD_D;i++)

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 
meneo:

È anche possibile fare un'enumerazione per enumerazione

come questo?

for (int i = PERIOD_M1;i<=PERIOD_D;i++)

Questo non funzionerà.

A proposito di questo - dovrei provarlo.

for (ENUM_TIMEFRAMES i = PERIOD_M1;i<=PERIOD_D;i++) {}

In qualche modo sospetto che non funzionerà, anche se "teoricamente" hanno una possibilità. :)

 

Beh, ho provato.

void OnStart()
  {
//---
   for (ENUM_TIMEFRAMES i = PERIOD_M1;i<=PERIOD_D;i++) { Print(EnumToString(i));}
  }
//+------------------------------------------------------------------+

Non vuole nemmeno compilare.

'ForEnum.mq5' ForEnum.mq5 1 1
'i' - token inaspettato ForEnum.mq5 15 25
'i' - identificatore non dichiarato ForEnum.mq5 15 25
'PERIOD_D' - identificatore non dichiarato ForEnum.mq5 15 42
'i' - il parametro per EnumToString deve essere un'enumerazione ForEnum.mq5 15 77
4 errore(i), 0 avviso(i) 5 1

Ma sembra che non ci sia nulla di illegale.

 
MetaDriver:

L'ho provato.

Il programmatore non vuole nemmeno compilare.

E sembra che non ci sia nulla di illegale.


Per lavorare con gli enum, dovreste probabilmente aggiungere almeno funzioni come

enum::GetName e enum::GetValue

e per ogni costrutto linguistico

Poi l'enumerazione sarà automatizzata da MQL

 

Questo, ovviamente, funziona.

#property script_show_inputs

input  ENUM_TIMEFRAMES P = PERIOD_D1;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   for (int i = PERIOD_M1;i<=P;i++)  // { Print(EnumToString(ENUM_TIMEFRAMES(i)));}
    {
      string S=EnumToString(ENUM_TIMEFRAMES(i));
      if (StringGetCharacter(S,0)=='P')   

        {{{{ Print(S);  }}}}

    }

  }

E la cosa fantastica è che non dice che P è un token inaspettato o un identificatore non dichiarato

E al contrario, come cliente abituale fornisce tutte le comodità



Strano ..... ;)