Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 36

 

Hallo!

Helfen Sie mir, den Code so zu korrigieren, dass die Balkenüberschriften in der Mitte des Balkens über dem hohen Balken und nicht an der Seite stehen

#Eigenschaft streng
#property indicator_chart_window

input int TextSize = 8; //Schriftgröße
Eingabefarbe TextColor = clrYellow; //Textfarbe
input int TextAngle = 90; //Textdrehwinkel
input int MaxBar = 100; //Anzahl der Balken ab 0, für die die Candlestick-Größe berechnet wird

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 &Volumen[],
const int &spread[])
{
int i;
for ( i = 0; i < MaxBar; i++ ) {
wenn ( ObjectFind ("Kerzengröße "+ IntegerToString(i)) >=0 ) {
ObjectDelete("Kerzengröße "+ IntegerToString(i))
}
ObjectCreate ("Kerzengröße "+ IntegerToString(i),
OBJ_TEXT,
0,
Zeit[i],
high[i]+StepPer()*Point);
ObjectSet ("Kerzengröße "+IntegerToString(i),
OBJPROP_ANGLE,
TextWinkel
);
ObjectSetText ("Kerzengröße "+IntegerToString(i),
DoubleToStr(NormalizeDouble((high[i]-low[i]+Point)/Point, 0), 0),
TextGröße,
NULL,
TextColor
);
}
return(rates_total);
}

int StepPer ()
{
int i = 0;
switch (Zeitraum())
{
Fall PERIOD_M1:
i = 5;
Pause;
Fall PERIOD_M5:
i = 15;
Pause;
Fall PERIOD_M15:
i = 25;
Pause;
i = 40;
Pause;
Fall PERIOD_H1:
i = 60;
Pause;
Fall PERIOD_H4:
i = 90;
Pause;
Fall PERIOD_D1:
i = 220;
Pause;
Fall PERIOD_W1:
i = 500;
Pause;
Fall PERIOD_MN1:
i = 2000;
Pause;
Standard:
Pause;
}
zurück (i);
}

 
ed3sss:

Beweis: Print("Previous job PriceAsk-",PriceAsk); das Protokoll ist leer.

Ohne Details ist es kein Beweis )))) Zeigen Sie mir den vollständigen Text von init und die Deklaration der Variablen.

Und warum sollten Sie ALLE Aufträge überprüfen, von Anfang an, wenn Sie nur die neuesten brauchen? - Wie soll man es sonst machen, wenn 10 Währungspaare geöffnet sind?

Man muss sie vom Ende her durchgehen und den Zyklus rechtzeitig verlassen. Was haben 10 Paare damit zu tun? Sogar hundert, Sie haben eine Auswahl an Symbolen.

 
Игорь:

Hallo!

Helfen Sie mir, den Code so zu korrigieren, dass die Aufschriften über den Balken in der Mitte des Balkens über dem hohen Balken stehen und nicht an der Seite

Erfahren Sie, wie Sie mit der Schaltfläche SRC Code einfügen.

Und lesen Sie über OBJPROP_ANCHOR.

 
Vitalie Postolache:

Erfahren Sie, wie Sie mit der Schaltfläche SRC Code einfügen können.

Und lesen Sie über OBJPROP_ANCHOR.

Ich hab's!

Entschuldigen Sie die Abruptheit!

 
Игорь:

Verstanden, danke!

Entschuldigung für die Härte!

#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);
}  
Ich habe ihn eingebaut und er ist immer noch nicht zentriert und auf der falschen Stange!?
 
#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);
}  
Leute, könnt ihr einem Landstreicher über die Mitte helfen, wo das Gelenk ist?
 
Игорь:
#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);
}  
Helfen Sie einem Landstreicher da draußen, wo ist die Bude in der Mitte?
Ich weiß nicht, ob er über die Latte oder auf die Seite geht, obwohl ich sagte, in die Mitte!
 
Игорь:

Ich habe es eingefügt und es ist immer noch nicht zentriert und auf dem falschen Balken!?

Nun, nach dem Drehen ist der Punkt nicht mehr oben in der Mitte, sondern links in der Mitte, so dass der Text nach rechts verschoben ist.

ObjectSetInteger(ChartID(),"candlesize"+IntegerToString(i),OBJPROP_ANCHOR,ANCHOR_LEFT);
Der Ankerpunkt ist auf 0 Grad Drehung eingestellt. Sie müssen den Drehwinkel berücksichtigen und den Ankerpunkt so einstellen, dass er sich am unteren Rand befindet, wenn das Objekt über Hoch ist, in Ihrem Fall wäre das der linke Mittelpunkt.
 
Vitalie Postolache:

Nun, nach dem Drehen ist der Punkt nicht mehr oben in der Mitte, sondern links in der Mitte, so dass der Text nach rechts verschoben ist.

ObjectSetInteger(ChartID(),"candlesize"+IntegerToString(i),OBJPROP_ANCHOR,ANCHOR_LEFT);
Der Ankerpunkt wird bei einer Drehung von 0 Grad gesetzt, Sie müssen den Drehwinkel berücksichtigen und den Ankerpunkt setzen, der sich unten befindet, wenn das Objekt über Hoch ist, in Ihrem Fall wird es ein Punkt links in der Mitte sein.

Vielen Dank, !!!!!

Es hat alles so geklappt, wie ich es wollte!

Ich entschuldige mich noch einmal für mein Unverständnis und meine Schärfe!

 
Vitalie Postolache:

Ohne Details ist es kein Beweis )))) Zeigen Sie den vollständigen Text des Init und die Deklaration der Variablen an.

Vom Ende aus durch die Schleife zu gehen und sie rechtzeitig zu verlassen. Was haben 10 Paare damit zu tun? Selbst bei hundert Personen kann man eine Auswahl nach Zeichen treffen.

bool s=false;
double b=Kontostand();
i=0;
for(;i<OrdersTotal();i++)
{//+----------------------------------------------------------------------------------------+for
ViborOrdera=OrderSelect(i,SELECT_BY_POS);
if(OrderSymbol()!=Symbol())continue;
if(OrderType()>1)weiter;
s=true;
int Ticket=OrderTicket();
double Lots=OrderLots();
doppelter Preis;
if(OrderType()==1)Preis=NormalizeDouble(Ask,Digits);sonst Preis=NormalizeDouble(Bid,Digits);
//+-----------------------------------------------------------------------------------------+
ViborOrdera=OrderClose(Ticket,Lots,Price,3);
if(GetLastError()==6){Alert("Keine Verbindung");return(0);}
if(GetLastError()==132){Alert("Markt ist geschlossen");return(0);}
RefreshRates();
i--;

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

Ok, dieselbe Schleife hier, warum schließt sie Aufträge?)

Grund der Beschwerde: