Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1317

 
Vladimir Karputov:

Vedere gli errori:

1. Specificare sempre il simbolo del grafico in modo esplicito (sì, si può fare affidamento sulla documentazione, ma è meglio specificarlo SEMPRE in modo esplicito)

2. La stringa non ha senso, perché preff+"hhh" non sarà mai uguale a Symbol()


Aggiunto: meglio avere questo approccio - sempre una linea sul grafico, basta cambiare il prezzo della linea quando si cambia grafico.

Se avvertimento esplicito: conversione implicita da 'string' a 'number

L'essenza del problema è che la linea non viene visualizzata dove è stata creata.

Se lo creo sullo strumento al prezzo di 255, perché viene visualizzato a 255 quando carico un altro strumento con il prezzo attuale di 310?

Per favore, ditemi come salvare la linea e visualizzarla dove è stata creata.
 
serg_V777:

Se emette esplicitamente un avvertimento: conversione implicita da 'string' a 'number

L'essenza del problema è che la linea non viene visualizzata dove è stata creata.

Se lo creo sullo strumento al prezzo di 255, perché viene visualizzato a 255 quando carico un altro strumento con il prezzo attuale di 310?

Per favore, consigliate come salvare la linea e visualizzarla dove è stata creata.

Lei mi ha mostrato il suo codice - io le ho dato il suo snippet. Dichiarate le variabili e non avrete errori.

Non riesco a capire la vostra logica con le linee. Cercate di descrivere le vostre azioni in dettaglio - e soprattutto PERCHE' dovete farlo.


Nel tuo codice non capisco perchéChartSymbol

 
Vladimir Karputov:

Mi hai mostrato un pezzo di codice - ti ho dato il tuo pezzo. Dichiarate le variabili e non ci saranno errori.

Non capisco la vostra logica con le linee. Cerca di descrivere le tue azioni in dettaglio - e soprattutto PERCHE' dovresti farlo.


Nel tuo codice, non capisco perché ho bisogno diChartSymbol.

void OnChartEvent(const int id,           // идентификатор события   
                  const long& lparam,     // параметр события типа long 
                  const double& dparam,   // параметр события типа double 
                  const string& sparam) { // параметр события типа string 
 
 
  preff=ChartSymbol( NULL);
  price=SymbolInfoDouble(Symbol(),SYMBOL_BIDLOW); 
 if(id == CHARTEVENT_OBJECT_CLICK && sparam == "dz_draw")// Нажатие кнопки   
  {   
   ObjectCreate(0,preff+"hhh",OBJ_HLINE,0,0,price) ;    
 ObjectSetInteger(0,preff+"hhh",OBJPROP_COLOR,clrBlack); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_STYLE,0); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_WIDTH,3); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_BACK,false); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_SELECTABLE,true); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_SELECTED,true); 
   ObjectSetInteger(0,"dz_draw"   ,OBJPROP_STATE,false);
   }
}

Così creo una linea al prezzo di 277 sul grafico Gazp.

Quando lo cambio nella stessa finestra su Sber, viene visualizzata la linea creata su Gazp a 277...

Se creo una linea Sber a 310, ottengo due linee sul grafico - una corretta (creata dove necessario e quanto costa) e la seconda sbagliata - non da questo grafico ....

Cambiando strumenti e creando linee nella fascia di prezzo di 200- 400 e tornando al grafico Gazp ottengo sia persone che cavalli confusi :),

Ma ho bisogno dell'unico (forse un paio di linee orizzontali), creato dove e quando ne ho bisogno.

 
serg_V777:

Così creo una linea a 277 sul grafico Gazp...

Quando si cambia nella stessa finestra su Sber viene visualizzata la linea creata su Gazp a 277...

Se creo anche una linea su Sber a 310, ottengo due linee sul grafico - una corretta (creata dove necessario e a quanto necessario) e la seconda errata - non da questo grafico....

Cambiando strumenti e creando linee nella fascia di prezzo di 200- 400 e tornando al grafico Gazp ottengo sia persone che cavalli confusi :),

Ma è l'unico di cui ho bisogno (forse un paio di altre linee orizzontali), creato dove e quando ne ho bisogno.

ChartSymbol

Leggete l'aiuto. Dopo l'aiuto, non usate questo operatore - non ne avete bisogno.


È necessario il seguente algoritmo: per ogni personaggio per salvare il prezzo. Il prezzo è memorizzato nelle variabili globali del terminale (il nome della variabile globale è il nome del simbolo). In seguito, è necessario assistere 'CHARTEVENT_OBJECT_CHANGE' e'CHARTEVENT_OBJECT_DRAG' - e salvare nuovamente il prezzo nelle variabili globali.

Ci sono anche molte sfumature da risolvere: per esempio - c'è una variabile globale e nessuna linea sul grafico...

 
User_mt5:
Grazie mille. Mi hai davvero aiutato.

E naturalmente, dove potrebbe essere questa caratteristica se non in mezzo alla lista degli indicatori tecnici?)

Non puoi farlo senza essere sarcastico?

Sembra che tu non legga affatto la documentazione... Ma tu rispondi ai consigli come se fossi il centro dell'universo... Solo un analfabeta, impotente ombelico...

 
Vitaly Muzichenko:

Grazie!

Non c'è modo di farlo con strumenti standard.

Non si può fare senza usare le DLL di sistema.

Ho pubblicato un' intera biblioteca per questo scopo)

Per i 5 separatamente.
CDir (MT4) - класс для получения оглавления каталога
CDir (MT4) - класс для получения оглавления каталога
  • www.mql5.com
Класс CDir предназначен для получения сведений о файлах и папках вне "песочницы" MQL4 подобно команде MS-DOS Dir. Задействован вызов системных DLL, поэтому следует разрешить их использование.
 
Vladimir Karputov:

Leggete l'aiuto. Dopo l'aiuto, non usate questo operatore - non ne avete bisogno.


Hai bisogno di questo algoritmo: per ogni simbolo devi salvare un prezzo. Il prezzo è memorizzato nelle variabili globali del terminale (il nome della variabile globale è solo il nome del simbolo). In seguito, è necessario assistere 'CHARTEVENT_OBJECT_CHANGE' e'CHARTEVENT_OBJECT_DRAG' - e salvare nuovamente il prezzo nelle variabili globali.

Ci sono ancora molte sfumature da risolvere: per esempio - c'è una variabile globale e nessuna linea sul grafico...

Grazie per l'algoritmo.

Domanda: perché la linea è trovata e scolorita in questo codice?

if(preff+"hhh" == ChartSymbol(0) ){
ObjectSetInteger(0,preff+"hhh",OBJPROP_COLOR,clrNONE); }

ma per farlo nel modo in cui dovrebbe essere fatto è una foresta oscura da percorrere....

 
Mikhail Dovbakh:

Non si può fare senza usare le DLL di sistema.

Ho pubblicato un' intera biblioteca per questo scopo)

Per 5 separatamente.

Grande, c'è proprio quello di cui ho bisogno!

 
Сергей Таболин:

Non puoi farlo senza essere sarcastico?

Sembra che tu non legga affatto la documentazione... Ma tu rispondi ai consigli come se fossi il centro dell'universo... Solo un analfabeta e impotente ombelico...

Invece di essere scortese, faresti qualcosa di utile, per l'amor di Dio!

E non scomodatevi a rispondere e replicare! La tua opinione, ahimè, non mi interessa!)

 

Per favore, ditemi da quale classe ereditare la vostra classe per utilizzare tutti i metodi di questi

per utilizzare tutti i metodi di queste classi all'interno della vostra classe, senza creare oggetti all'interno della vostra classe?