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

 
psyman:

Neverness, perché lo stai scrivendo qui?

Inizia un thread separato nel flume e distribuisci lì gli elefanti, tanto di cappello.

Beh, l'ho detto subito al moderatore.

Signor moderatore, discutiamo la teoria del trading in un thread separato.

Il moderatore è contrario per ora.

Forse il moderatore non ha la sua "teoria del trading".

 
inter78:

Ciao, anch'io chiedo informazioni sul passaggio da un grafico all'altro. Ci sono 28 o 30 grafici aperti. Li cambio ponderatamente con le scorciatoie e se si adattano alla condizione apro le posizioni. Ne ho 10 o 20. O 5. Non ha importanza. L'importante è che il resto si metta in mezzo e non ci siano informazioni sulle posizioni aperte. Ho provato a inviare gli ID nelle variabili globali. Ma restituisce numeri completamente diversi. Mi è stato spiegato che l'ID è grande e distorto. Ho provato attraverso un file. Ritorna in TXT e non viene convertito in lungo. Ho messo l'ID manualmente nel codice - sembra funzionare. Quando sposto il campo, si apre il grafico necessario, cosa devo fare correttamente?

Il doppio e il lungo hanno la stessa lunghezza - 8 byte.

Per salvare un lungo in un doppio (e viceversa), potete usare "union".


Per esempio:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long id=ChartID();
   
   double X=LongToDouble(id);
   long   Y=DoubleToLong(X);
   
   Print("id=",id," X=",X," Y=",Y);
  }


//+------------------------------------------------------------------+
union eightbytes
   {
   double   dbl;
   long     lng;
   } VALUE;

double LongToDouble(long value)
   {
   VALUE.lng=value;
   return(VALUE.dbl);
   }

long DoubleToLong (double value)
   {
   VALUE.dbl=value;
   return(VALUE.lng);
   }
 
neverness:

Beh, l'ho detto subito al moderatore.

Signor moderatore, discutiamo la teoria del trading in un thread separato.

Il moderatore è contrario per ora.

Forse il moderatore non ha la sua "teoria del trading".

Dovete andare al ramo dei pagliacci teorici dove si dilettano a disegnare qualcosa che non capite e non sapete perché.

Ci sono molti thread simili sul forum - almeno discuteteli!

От теории к практике
От теории к практике
  • 2017.12.01
  • www.mql5.com
Добрый вечер, уважаемые трейдеры! Решил было на какое-то время покинуть форум, и сразу как-то скучно стало:)))) А просто читать, увы - неинтересно...
 
Taras Slobodyanik:

Double e long hanno la stessa lunghezza - 8 byte.

Per salvare un lungo in un doppio (e viceversa) potete usare "union".


Per esempio:

Scusa, Taras , potresti avere un pezzo di codice su come inviare l'ID a una variabile globale e recuperarlo senza distorsioni?
 
inter78:
Scusa Taras, non puoi avere un po' di codice su come inviare l'ID a una variabile globale ed estrarlo senza distorsioni?

quindi tutto è pronto, bisogna solo aggiungere la scrittura/lettura

string GVname="gvName";

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   //создаем временную глобальную переменную
   if (!GlobalVariableCheck(GVname))
      GlobalVariableTemp(GVname);
   
   long  id=ChartID();
   
   //сохраняем long как double
   GV_Save(LongToDouble(id));
   
   //читаем double и переводим в long
   long  Y=DoubleToLong(GV_Read());
   
   Print("id=",id," Y=",Y);
  }

//+------------------------------------------------------------------+
union eightbytes
   {
   double   dbl;
   long     lng;
   } VALUE;

double LongToDouble(long value)
   {
   VALUE.lng=value;
   return(VALUE.dbl);
   }

long DoubleToLong (double value)
   {
   VALUE.dbl=value;
   return(VALUE.lng);
   }


//+------------------------------------------------------------------+
double GV_Read()
{
if (!GlobalVariableCheck(GVname))
   GlobalVariableTemp(GVname);
   
return(GlobalVariableGet(GVname));
}
//+------------------------------------------------------------------+
void GV_Save(double value)
{
GlobalVariableSet(GVname, value);
}
 
Taras Slobodyanik:

quindi è tutto pronto, bisogna solo aggiungere la scrittura/lettura

Grazie mille! Mi chiedo se qualcuno ha già provato a fare un simile indicatore? Non sono riuscito a trovarne uno da tanto tempo. Penso che sarebbe interessante per molte persone.
 
Vitaly Muzichenko:

Eseguire l'inizializzazione OnInit()

No, non segnala sulla barra corrente. Forse la variabile _time può essere resettata dopo che l'indicatore ha contato tutto per la prima volta dopo essere entrato nel grafico.

Come faccio a sapere che l'indicatore ha contato tutto una volta?
 
Ghabo:

Lancio l 'indicatore sul grafico e... ALERT ma il segnale è a 5 barre. Durante l'ulteriore lavoro suona come dovrebbe essere.

Come fare in modo che smetta di suonare all'avvio?

if(М_А>0.0)  
{
if(time!=Time[0])
   {
    time=Time[0]; 
    AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
   }
 }

Nella funzione AL(), tutti gli avvisi possibili.

Che cos'è M_A? Cosa contiene e da dove prende i suoi dati?

È necessario controllare la validità del segnale sulla barra corrente insieme al controllo del tempo. E si controlla solo il valore M_A. Da dove lo prendi?

 
Artyom Trishkin:

Che cos'è M_A? Cosa contiene e da dove prende i suoi dati?

È necessario controllare la validità del segnale sulla barra corrente insieme al tempo. E si controlla semplicemente il valore M_A. Da dove lo prendi?

Chiamare un indicatore.

М_А =NormalizeDouble(iCustom(NULL,0,"Morning_All_Best",0,i),Digits);

Come posso controllare la validità?

 
Ghabo:

Chiamare l'indicatore.

Come posso controllare la validità?

1. Perché fate la normalizzazione? È un'operazione troppo costosa per lavorare nel ciclo dell'indicatore e non è necessario qui.

2. Cosa significa "più di zero"? Quali segnali emette questo indicatore personalizzato? Cosa viene visualizzato nei valori del buffer di questo indicatore nella finestra dei dati (Ctrl+D)?

Motivazione: