Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 36

 

Olá !

Ajude-me a fixar o código para que as legendas das barras fiquem no centro da barra acima da barra alta e não na lateral

#propriedade rigorosa
#janela_do_cartão_indicador de propriedade

entrada int TextSize = 8; //size font
cor de entrada TextColor = clrYellow; //cor do texto
input int TextAngle = 90; //ângulo de rotação do texto
entrada no MaxBar = 100; //número de barras a partir de 0 para o qual o tamanho do castiçal é calculado

int OnInit()
{
return(INIT_SUCCEED);
}

int OnCalculate(const int taxas_total,
const int prev_calculado,
constant 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;
para ( i = 0; i < MaxBar; i++ ) {
se ( 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),
Tamanho do texto,
NULL,
TextColor
);
}
retorno(taxas_total);
}

int StepPer ()
{
int i = 0;
interruptor (Período())
{
caso PERÍODO_M1:
i = 5;
pausa;
caso PERÍODO_M5:
i = 15;
pausa;
caso PERÍODO_M15:
i = 25;
pausa;
i = 40;
pausa;
caso PERÍODO_H1:
i = 60;
pausa;
caso PERÍODO_H4:
i = 90;
pausa;
caso PERÍODO_D1:
i = 220;
pausa;
caso PERÍODO_W1:
i = 500;
pausa;
caso PERÍODO_MN1:
i = 2000;
pausa;
padrão:
pausa;
}
retornar (i);
}

 
ed3sss:

Prova: Imprimir ("Previous job PriceAsk-",PriceAsk); o log está vazio.

Sem detalhes, não é uma prova )))) Mostre-me o texto completo do init e a declaração das variáveis.

Além disso, por que verificar TODOS os pedidos, desde o início da vida da conta, se você precisa do mais recente? - Como fazer isso, se há 10 pares de moedas abertos?

Você tem que passar por eles desde o final e sair do ciclo a tempo. O que tem 10 pares a ver com isso? Mesmo uma centena, você tem um símbolo à sua escolha.

 
Игорь:

Olá !

Ajude-me a corrigir o código para que as inscrições acima das barras fiquem no centro da barra acima da barra alta e não na lateral

Aprenda como usar o botão SRC para inserir código.

E leia sobre OBJPROP_ANCHOR.

 
Vitalie Postolache:

Aprenda como usar o botão SRC para inserir código.

E leia sobre OBJPROP_ANCHOR.

Consegui!

Desculpe a brusquidão !

 
Игорь:

Entendi, obrigado!

Desculpe pela dureza!

#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);
}  
Eu o coloquei e ainda está fora do centro e na barra errada !?
 
#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);
}  
Rapazes, vocês podem ajudar um vagabundo no meio onde a junta está?
 
Игорь:
#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);
}  
Ajude um vagabundo lá fora, onde está a articulação no meio?
Não sei se está sobre a barra ou de lado, embora eu tenha dito que estava centralizada!
 
Игорь:

Eu o inseri e ainda está fora do centro e na barra errada !?

Bem, depois de virar, o ponto não está mais no centro superior, mas no centro esquerdo, então o texto é deslocado para a direita.

ObjectSetInteger(ChartID(),"candlesize"+IntegerToString(i),OBJPROP_ANCHOR,ANCHOR_LEFT);
O ponto de ancoragem é fixado em 0 graus de rotação, você precisa considerar o ângulo de rotação e fixar o ponto de ancoragem para estar na parte inferior se o objeto estiver acima da Alta, no seu caso seria o ponto central esquerdo.
 
Vitalie Postolache:

Bem, depois de virar, o ponto não está mais no centro superior, mas no centro esquerdo, então o texto é deslocado para a direita.

ObjectSetInteger(ChartID(),"candlesize"+IntegerToString(i),OBJPROP_ANCHOR,ANCHOR_LEFT);
O ponto de ancoragem é definido quando você gira 0 graus, você precisa considerar o ângulo de rotação e definir o ponto de ancoragem, que estará na parte inferior se o objeto estiver sobre Alto, no seu caso será um ponto à esquerda no centro.

Muito obrigado !!!!!

Tudo funcionou da maneira que eu queria!

Mais uma vez, peço desculpas pelo mal-entendido e pela minha dureza!

 
Vitalie Postolache:

Sem detalhes não é prova )))) Mostrar o texto completo do init e a declaração das variáveis.

Do final, atravessar e sair do laço a tempo. O que 10 pares têm a ver com isso? Mesmo uma centena, você tem ali uma seleção de caráter por característica.

bool s=falso;
double b=AccountBalance();
i=0;
para(;i<OrdensTotal();i++)
{//+----------------------------------------------------------------------------------------+for
ViborOrdera=OrderSelect(i,SELECT_BY_POS);
if(OrderSymbol()!=Symbol())continue;
if(OrderType()>1)continue;
s=verdadeiro;
int Ticket=OrderTicket();
double Lots=OrderLots();
dobro do preço;
if(OrderType()==1)Price=NormalizeDouble(Ask,Digits);else Price=NormalizeDouble(Bid,Digits);
//+-----------------------------------------------------------------------------------------+
ViborOrdera=OrderClose(Ticket,Lots,Price,3);
if(GetLastError()==6){Alert("Sem conexão");return(0);}
if(GetLastError()==132){Alert("O mercado está fechado");return(0);}
RefreshRates();
i--;

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

Ok, o mesmo laço aqui, por que fecha os pedidos?)