[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 317

 
drknn:


Il mercato riposa - quindi riposa tu.

Il mercato apre lunedì a Tokyo. Chiude venerdì a Chicago. Apre intorno alle 2 del mattino e chiude intorno alle 10 o alle 11 di sera (fuso orario di Mosca o Kiev)

Grazie mille!))) Mi fa ridere. Ho iniziato a lavorare solo martedì e non sapevo che il mercato fosse spento nel fine settimana:))
 
Zhunko:
Non c'è una funzione, ma può essere fatta in MQL4 + WinAPI.

//+------------------------------------------------------------------+
//|          Function  : int GetChartScale()[1,2,4,6,13]             |
//|          Copyright © 2012, XrustSolution.  mail:xrustx@gmail.com |
//|          https://www.youtube.com/user/opmlv http://forexrust.info |
//+------------------------------------------------------------------+
//|          Description: Возвращает ширину свечи по масштабу чарта  |
//+------------------------------------------------------------------+
#import "user32.dll"
  bool GetWindowRect(int h, int& pos[4]);
#import
//+------------------------------------------------------------------+
int GetChartScale(){
        int h = WindowHandle(Symbol(), Period());
        int rect[4];
        if(h==0) return(1);
        GetWindowRect(h, rect);
        int wW  = rect[2] - rect[0]; // ширина окна
        int bpc = WindowBarsPerChart();
        if(bpc==0) return(1);
        int scale = MathFloor((wW-48)/bpc);
        switch(scale){
                case  1 :       return(0);
                case  2 :       return(1);
                case  4 :       return(2);
                case  8 :       return(3);
                case 16 :       return(6);
                case 32 :       return(13);
                default :   return(1);
        }
        return(1);
}
//+------------------------------------------------------------------+
 

Buon pomeriggio! Potete dirmi perché la linea dell'indicatore non viene visualizzata, il codice sembra essere elementare e niente di complicato. Ho controllato con Print (T_V) - dà il valore, ma la linea non viene visualizzata per qualche motivo?

Vorrei aggiungere una domanda: ho cancellato l'indicatore e l'ho rimesso su un grafico e la linea viene visualizzata. Perché l'indicatore non viene ricalcolato durante la compilazione?

#property indicator_separate_window
#property indicator_minimum -3
#property indicator_maximum 3
#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_level1 0.0         //горизонтальный уровень N в отдельном окне индикатора, где N от 1 до 8 
#property indicator_levelcolor Black   // цвет горизонтальных уровней индикатора е 
#property indicator_levelwidth 1       //толщина горизонтальных уровней индикатора
double T_Vol[];

int init()
  {  SetIndexBuffer (0, T_Vol); 
     SetIndexStyle  (0, DRAW_HISTOGRAM, STYLE_SOLID, 1); 
     IndicatorDigits(Digits);
   return(0); }
int start(){
   int limit;
   int сounted_bars=IndicatorCounted();
   if (сounted_bars==0) limit=Bars-1;
   if (сounted_bars>0) limit=Bars-сounted_bars-1;
   for(int i=limit;i>=0;i--){
       int T_V=0; 
       if (Volume[i]>Volume[i+1])T_V=1;
       if (Volume[i]<Volume[i+1])T_V=-1;
       T_Vol[i]=T_V;
   }
   return(0);
}
 
PapaYozh:


1.

Qual è il valore della variabile "SignalBar" e l'indicatore è calcolato su questa barra?

Forse SignalBar=0 e l'indicatore non calcola la 0a barra.

2.

Sì, durante i test visivi i buffer degli indicatori non vengono visualizzati finché il test non è completato o interrotto. Ma gli indicatori contano.

Grazie per averlo fatto notare! Ma niente aiuta finora :(

Così ora sto studiando la migrazione degli indicatori in Expert Advisor. Se avete qualche saggio consiglio, non lo rifiuterò! :)

 

Ciao a tutti!

Ho studiato programmazione da dilettante, non ho programmato per molto tempo, quindi ho una domanda:

Perché ho bisogno di punti di interruzione in MQL4, se dopo averli impostati non succede nulla alla compilazione? Ero solito programmare molto in C#, dove c'era una pausa nell'esecuzione del programma e si poteva vedere i valori delle variabili, quali funzioni erano chiamate e gli errori elencati. Ma qui premo Compile e non succede nulla. Oppure si può abilitare il Debug in qualche modo, ma non so come?

 

c'è una funzione "double MathRound( double value)", ma ho bisogno dell'arrotondamento ad una frazione decimale più grande, e se il numero è intero o già decimale, allora lascia perdere.

Per esempio: 1) 0,744 arrotondato a 0,8; 1,233 arrotondato a 1,3

2) 0,9 o 3 o 1,5 non toccare.



Chi può aiutare, per favore?
 

Mi chiedo se sa che esiste una documentazione completa e dettagliata della lingua?

NormalizeDouble

 
FAQ:

Mi chiedo se sa che esiste una documentazione completa e dettagliata della lingua?

NormalizeDouble

verso l'alto, è un po' facile per te, eh?...
 
okvseok:
verso l'alto, è un po' semplice, vero...?

Potete tradurre un numero in una stringa e scrivere una funzione per elaborare i caratteri di questa stringa. Non è complicato qui - arrotondiamo solo se il numero ha più di una cifra dopo il punto decimale.
 
drknn:

Potete convertire un numero in una stringa e scrivere una funzione per elaborare i caratteri di quella stringa. Non è complicato qui - arrotondiamo un numero solo se ha più di una cifra dopo il punto decimale.
Ok, ci proverò davvero, grazie mille per l'idea!