Errori, bug, domande - pagina 611

 
x100intraday:

Ho paura di immaginare come. In realtà, ho bisogno di una variante flessibile, non ho bisogno di una stringa in forma invariata, ma di diverse stringhe da formare, in un ciclo... Se è possibile, vorrei vedere un esempio più specifico...

...

È possibile formare condizioni più complicate in #define in una sola linea:

#define LOG(text,logs,html,type,spc,style)  if(type){if(logs){okLOG(text,spc);}if(html){okHTML(text,spc,style);}}  if(!type){if(logs){erLOG(text,spc);}if(html){erHTML(text,spc,style);}}

Non so come risolvere il tuo problema, non ho provato. Dovrò sperimentare... ))

Forse si possono formare diversi #define come questo e poi scegliere quello che può servire in un ciclo.

Da stringa a enum si può preparare la funzione con switch in anticipo. Ma potreste avere un numero molto grande di opzioni, apparentemente, e questo metodo non funzionerà...

Oh, ecco un'altra opzione! È possibile generare un file mqh, che è precollegato al file principale. Cioè, ci dovrebbe essere una funzione che accetta una stringa e poi genera un file mqh. Il file sarà sovrascritto di continuo. È esattamente così che funzionerebbe.)))

 

tol64, l'opzione #define mi fa sudare freddo... Non metto in dubbio che probabilmente posso capire dove ho bisogno, ma è da qualche parte nell'olimpiade della programmazione usando modi non standard - anche solo per ottenere il risultato ad ogni costo. Ho rifiutato il metodo switch per la stessa ragione che ho descritto sopra: non voglio aggiungere grandi blocchi di codice extra per un compito ideologicamente elementare. Mi sembra che ci dovrebbe essere un modo standard abbastanza semplice... Altrimenti comincio a sentirmi come un hacker che cerca di entrare nel sistema e ottenere il risultato desiderato in modo sofisticato...

C'è una domanda cruciale nell'aria: è possibile e come accedere elemento per elemento alla lista standard dei periodi dello stesso timeframe, alla lista della visibilità degli oggetti sui timeframe, ecc. Finora devo riempire manualmente l'array con la forza bruta e poi recuperare da lì quello che mi serve per indice:

ENUM_TIMEFRAMES TFsArr[3]={PERIOD_M15, PERIOD_M20, PERIOD_M30);
Quanto tempo ancora! Forse puoi togliere questi elementi dall'array/elenco predefinito in una volta sola? Una cosa è se non ho abbastanza conoscenze... ma non ho ancora incontrato nessuno che acceda a risorse predefinite nel codice di qualcun altro senza prima riempire il cuscino con copie di piume...
 
x100intraday:
Come posso preparare in anticipo una stringa con enumerazione logica(?) come: OBJ_PERIOD_M10| OBJ_PERIOD_H4, per poi sostituirla semplicemente nella variabile pronta ObjectSetInteger () sotto forma di stringa incollata? Ho provato a incollarlo simbolicamente e poi avvolgerlo in StringToInteger(), ma non ha funzionato... PerchéOBJ_PERIOD_... - è un elemento di tipo enum ma ha il flag hex-equivalente di tipo int? Allora questa enumerazione assomiglia di più a un'operazione bitwise OR...
Potresti semplicemente sommarli, qualcosa del genere:
ObjectSetInteger(0,highlevel,OBJPROP_TIMEFRAMES,(int)OBJ_PERIOD_M10+(int)OBJ_PERIOD_H4);

...cioè aggiungendo le enumerazioni richieste alla variabile int.

 

Spread irrealisticamente grandi:

Sul server AlpariFS GBPUSD 648, USDCHF 110

GBPUSD 168, USDCHF 185 sul server MQ-Demo

altri simboli sono nella norma.

È una peculiarità del mercato sottile o un bug in MetaTrader 5?

La sterlina sembra essersi calmata ora, ma gli spread su canadese e australiano sono rispettivamente 88 e 61. Lo svizzero è ancora bloccato con 185 pip di spread.

void OnStart()
  {
   while(!IsStopped()){Comment(SymbolInfoInteger(_Symbol,SYMBOL_SPREAD));Sleep(100);}
   Comment("");
  }
 
Swan:
Puoi semplicemente sommarli, qualcosa del genere:

cioè aggiungendo gli enum desiderati alla variabile int.

Da dove prendete gli enum? Sono come incorporati nel linguaggio come parole/valori predefiniti (riservati). Non voglio avere il mio array di enum duplicati.
 
x100intraday:

Come posso aggiungere una stringa con enumerazione logica(?) come: OBJ_PERIOD_M10| OBJ_PERIOD_H4

Allora questa enumerazione sembra più un'operazione OR bitwise...

Non è così, è quello che è.

Da dove prendete gli enum? Sono come incorporati nel linguaggio sotto forma di parole/valori predefiniti (riservati).

Dagli enum, ovviamente, guardate nell'aiuto.

Non voglio creare il mio array di enum duplicati.

dovrete avere almeno qualcosa... enum, array, define.

altrimenti non andrai più lontano di così

 
sergeev:

Non è così, è quello che è.

dagli enum, ovviamente, cercate nell'aiuto.

Enum, arrays, defines.

Non andrete più lontano di così.

Se vuoi iniziarlo, va bene, è già fatto. Ma perché non possiamo accedere al repository di elementi della lista incorporati nel linguaggio sotto forma di nomi e costanti predefiniti? Da qualche parte gli sviluppatori hanno nascosto tutte queste enumerazioni...
 
x100intraday:
Da dove prendete gli enum? Sono come incorporati nel linguaggio come parole/valori predefiniti (riservati). Non voglio creare il mio array di enum duplicati.

non capire la domanda)

ENUMs = interi, nessun array/elenco predefinito.

 
Swan:

non capire la domanda)

ENUM_es = interi, nessuna matrice/lista predefinita.

ENUM_y = è un enum. Una lista predefinita.
 
x100intraday:
Ma perché non possiamo accedere a un deposito di elementi della lista incorporati nel linguaggio sotto forma di nomi e costanti predefiniti? Dove hanno messo gli sviluppatori tutte queste enumerazioni...

State usando lo stesso ENUM_TIMEFRAMES, che ve ne importa?