Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 36

 

Ciao!

Aiutatemi a sistemare il codice in modo che le didascalie delle barre siano al centro della barra sopra la barra alta e non sul lato

#proprietà rigorosa
#proprietà indicator_chart_window

input int TextSize = 8; //dimensione del carattere
colore di input TextColor = clrYellow; //colore del testo
input int TextAngle = 90; //angolo di rotazione del testo
input int MaxBar = 100; //numero di barre a partire da 0 per le quali viene calcolata la dimensione della candela

int OnInit()
{
return(INIT_SUCCEED);
}

int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int i;
for ( i = 0; i < MaxBar; i++ ) {
if ( ObjectFind ("candlesize "+ IntegerToString(i)) >=0 ) {
ObjectDelete("candlesize "+ IntegerToString(i))
}
ObjectCreate ("candlesize "+ IntegerToString(i),
OBJ_TEXT,
0,
tempo[i],
high[i]+StepPer()*Point);
ObjectSet ("candlesize "+IntegerToString(i),
OBJPROP_ANGLE,
TextAngle
);
ObjectSetText ("candlesize "+IntegerToString(i),
DoubleToStr(NormalizeDouble((high[i]-low[i]+Point)/Point, 0), 0),
TextSize,
NULLA,
TextColor
);
}
return(rates_total);
}

int StepPer ()
{
int i = 0;
interruttore (Periodo())
{
caso PERIOD_M1:
i = 5;
pausa;
caso PERIODO_M5:
i = 15;
pausa;
caso PERIODO_M15:
i = 25;
pausa;
i = 40;
pausa;
caso PERIOD_H1:
i = 60;
pausa;
caso PERIOD_H4:
i = 90;
pausa;
caso PERIOD_D1:
i = 220;
pausa;
caso PERIOD_W1:
i = 500;
pausa;
caso PERIOD_MN1:
i = 2000;
pausa;
default:
pausa;
}
ritorno (i);
}

 
ed3sss:

Prova: Print("Previous job PriceAsk-",PriceAsk); il registro è vuoto.

Senza dettagli non è una prova )))) Mostrami il testo completo dell'init e la dichiarazione delle variabili.

Inoltre, perché controllare TUTTI gli ordini, dall'inizio della vita dell'account, se avete bisogno dell'ultimo? - Come fare altrimenti, se ci sono 10 coppie di valute aperte?

Devi passare attraverso di loro dalla fine e uscire dal ciclo in tempo. Cosa c'entrano le 10 coppie? Anche un centinaio, avete una scelta di simboli.

 
Игорь:

Ciao!

Aiutatemi a correggere il codice in modo che le iscrizioni sopra le barre siano al centro della barra sopra la barra alta e non sul lato

Impara come usare il pulsante SRC per inserire il codice.

E leggete di OBJPROP_ANCHOR.

 
Vitalie Postolache:

Impara come usare il pulsante SRC per inserire il codice.

E leggete di OBJPROP_ANCHOR.

Capito!

Scusa per la fretta!

 
Игорь:

Capito, grazie!

Scusa per la durezza!

#property strict
#property indicator_chart_window

input int      TextSize = 8; //размер шрифта
input color    TextColor = clrYellow; //цвет текста
input int      TextAngle = 90; //угол поворота текста
input int      MaxBar = 100;  //количество баров, начиная с 0, для которых вычисляется размер свечей

int OnInit()
{
   return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   int i;
   for ( i = 0; i < MaxBar; i++ )   {
      if ( ObjectFind ("candlesize"+ IntegerToString(i)) >=0 )   {
             ObjectDelete("candlesize"+ IntegerToString(i));
      }
      ObjectCreate ("candlesize"+ IntegerToString(i),  
                    OBJ_TEXT,  
                    0,  
                    time[i],  
                    high[i]+StepPer()*Point);
       //--- установим привязку к правому верхнему углу
      ObjectSetInteger(ChartID(),"candlesize"+IntegerToString(i),OBJPROP_ANCHOR,ANCHOR_UPPER);
     ObjectSet (  "candlesize"+IntegerToString(i),  
                    OBJPROP_ANGLE,  
                    TextAngle
                 );
      ObjectSetText ( "candlesize"+IntegerToString(i),  
                      DoubleToStr(NormalizeDouble((high[i]-low[i]+Point)/Point, 0), 0),  
                      TextSize,  
                      NULL,  
                      TextColor
                     );
   }
   return(rates_total);
}

int StepPer ()
{
     int i = 0;
     switch (Period())
     {
          case PERIOD_M1:
          i = 5;
          break;
          case PERIOD_M5:
          i = 15;
          break;
          case PERIOD_M15:
          i = 25;
          break;
          case PERIOD_M30:
          i = 40;
          break;
          case PERIOD_H1:
          i = 60;
          break;
          case PERIOD_H4:
          i = 90;
          break;
          case PERIOD_D1:
          i = 220;
          break;
          case PERIOD_W1:
          i = 500;
          break;
          case PERIOD_MN1:
          i = 2000;
          break;
          default:  
          break;
     }
     return (i);
}  
L'ho inserito ed è ancora fuori centro e sulla barra sbagliata!?
 
#property strict
#property indicator_chart_window

input int      TextSize = 8; //размер шрифта
input color    TextColor = clrYellow; //цвет текста
input int      TextAngle = 90; //угол поворота текста
input int      MaxBar = 100;  //количество баров, начиная с 0, для которых вычисляется размер свечей

int OnInit()
{
   return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   int i;
   for ( i = 0; i < MaxBar; i++ )   {
      if ( ObjectFind ("candlesize"+ IntegerToString(i)) >=0 )   {
             ObjectDelete("candlesize"+ IntegerToString(i));
      }
      ObjectCreate ("candlesize"+ IntegerToString(i),  
                    OBJ_TEXT,  
                    0,  
                    time[i],  
                    high[i]+StepPer()*Point);
       //--- установим привязку к правому верхнему углу
      ObjectSetInteger(ChartID(),"candlesize"+IntegerToString(i),OBJPROP_ANCHOR,ANCHOR_UPPER);
     ObjectSet (  "candlesize"+IntegerToString(i),  
                    OBJPROP_ANGLE,  
                    TextAngle
                 );
      ObjectSetText ( "candlesize"+IntegerToString(i),  
                      DoubleToStr(NormalizeDouble((high[i]-low[i]+Point)/Point, 0), 0),  
                      TextSize,  
                      NULL,  
                      TextColor
                     );
   }
   return(rates_total);
}

int StepPer ()
{
     int i = 0;
     switch (Period())
     {
          case PERIOD_M1:
          i = 5;
          break;
          case PERIOD_M5:
          i = 15;
          break;
          case PERIOD_M15:
          i = 25;
          break;
          case PERIOD_M30:
          i = 40;
          break;
          case PERIOD_H1:
          i = 60;
          break;
          case PERIOD_H4:
          i = 90;
          break;
          case PERIOD_D1:
          i = 220;
          break;
          case PERIOD_W1:
          i = 500;
          break;
          case PERIOD_MN1:
          i = 2000;
          break;
          default:  
          break;
     }
     return (i);
}  
Ragazzi, potete aiutare un vagabondo al centro, dove c'è la canna?
 
Игорь:
#property strict
#property indicator_chart_window

input int      TextSize = 8; //размер шрифта
input color    TextColor = clrYellow; //цвет текста
input int      TextAngle = 90; //угол поворота текста
input int      MaxBar = 100;  //количество баров, начиная с 0, для которых вычисляется размер свечей

int OnInit()
{
   return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   int i;
   for ( i = 0; i < MaxBar; i++ )   {
      if ( ObjectFind ("candlesize"+ IntegerToString(i)) >=0 )   {
             ObjectDelete("candlesize"+ IntegerToString(i));
      }
      ObjectCreate ("candlesize"+ IntegerToString(i),  
                    OBJ_TEXT,  
                    0,  
                    time[i],  
                    high[i]+StepPer()*Point);
       //--- установим привязку к правому верхнему углу
      ObjectSetInteger(ChartID(),"candlesize"+IntegerToString(i),OBJPROP_ANCHOR,ANCHOR_UPPER);
     ObjectSet (  "candlesize"+IntegerToString(i),  
                    OBJPROP_ANGLE,  
                    TextAngle
                 );
      ObjectSetText ( "candlesize"+IntegerToString(i),  
                      DoubleToStr(NormalizeDouble((high[i]-low[i]+Point)/Point, 0), 0),  
                      TextSize,  
                      NULL,  
                      TextColor
                     );
   }
   return(rates_total);
}

int StepPer ()
{
     int i = 0;
     switch (Period())
     {
          case PERIOD_M1:
          i = 5;
          break;
          case PERIOD_M5:
          i = 15;
          break;
          case PERIOD_M15:
          i = 25;
          break;
          case PERIOD_M30:
          i = 40;
          break;
          case PERIOD_H1:
          i = 60;
          break;
          case PERIOD_H4:
          i = 90;
          break;
          case PERIOD_D1:
          i = 220;
          break;
          case PERIOD_W1:
          i = 500;
          break;
          case PERIOD_MN1:
          i = 2000;
          break;
          default:  
          break;
     }
     return (i);
}  
Aiuta un vagabondo, dov'è la giuntura nel mezzo?
Non so se è sopra la barra o a lato anche se ho detto al centro!
 
Игорь:

L'ho inserito ed è ancora fuori centro e sulla barra sbagliata!?

Bene, dopo aver girato, il punto non è più in alto al centro, ma al centro sinistra, quindi il testo è spostato a destra.

ObjectSetInteger(ChartID(),"candlesize"+IntegerToString(i),OBJPROP_ANCHOR,ANCHOR_LEFT);
Il punto di ancoraggio è impostato a 0 gradi di rotazione, è necessario considerare l'angolo di rotazione e impostare il punto di ancoraggio per essere in basso se l'oggetto è sopra Alto, nel tuo caso sarebbe il punto centrale sinistro.
 
Vitalie Postolache:

Bene, dopo aver girato, il punto non è più in alto al centro, ma al centro sinistra, quindi il testo è spostato a destra.

ObjectSetInteger(ChartID(),"candlesize"+IntegerToString(i),OBJPROP_ANCHOR,ANCHOR_LEFT);
Il punto di ancoraggio è impostato quando si ruota di 0 gradi, è necessario considerare l'angolo di rotazione e impostare il punto di ancoraggio, che sarà in basso se l'oggetto è sopra Alto, nel vostro caso sarà un punto a sinistra al centro.

Grazie mille !!!!!

Tutto ha funzionato come volevo!

Ancora una volta, mi scuso per il malinteso e la mia durezza!

 
Vitalie Postolache:

Senza dettagli non è una prova )))) Mostra il testo completo dell'init e la dichiarazione delle variabili.

Dalla fine per passare attraverso e uscire dal ciclo in tempo. Cosa c'entrano le 10 coppie? Anche un centinaio, lì hai una selezione personaggio per personaggio.

bool s=falso;
double b=AccountBalance();
i=0;
for(;i<OrdiniTotali();i++)
{//+----------------------------------------------------------------------------------------+for
ViborOrdera=OrderSelect(i,SELECT_BY_POS);
se(OrderSymbol()!=Symbol())continua;
se(OrderType()>1)continua;
s=true;
int Ticket=OrderTicket();
double Lots=OrderLots();
doppio prezzo;
if(OrderType()==1)Price=NormalizeDouble(Ask,Digits);else Price=NormalizeDouble(Bid,Digits);
//+-----------------------------------------------------------------------------------------+
ViborOrdera=OrderClose(Ticket,Lots,Price,3);
if(GetLastError()==6){Alert("Nessuna connessione");return(0);}
if(GetLastError()==132){Alert("Il mercato è chiuso");return(0);}
RefreshRates();
i--;

}//+---------------------------------------------------------------------------------------+for

Ok, stesso ciclo qui, perché chiude gli ordini).

Motivazione: