[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 197

 

Explicar. Eu não entendo. Por que a condição

int Takeprofit = 62;

pp = MarketInfo(OrderSymbol(), MODE_POINT);

if(OrderTakeProfit() - OrderOpenPrice() < Takeprofit*pp )

funciona como verdade? Embora ambas as partes sejam iguais!!! Como você pode ver abaixo.

2009.08.22 18:50:31 1999.10.11 23:43 Delta EURUSD,M1: OrderTakeProfit() - OrderOpenPrice() = 0.0062 Takeprofit*pp = 0.0062

Obrigado!

 

Como você trabalha com números reais, você deve saber que 0,0062 pode realmente ser 0,0061999 ou 0,0062001.

Usar a normalização.

 
OneDepo писал(а) >>

Como você trabalha com números reais, você deve saber que 0,0062 pode realmente ser 0,0061999 ou 0,0062001.

Usar a normalização.

Eu tentei normalizar o Takeprofit*pp - nada funcionou. Talvez ambos os lados da equação devam ser normalizados?

 
001 >> :

Eu tentei normalizar o Takeprofit*pp - nada funcionou. Talvez ambos os lados da equação (a desigualdade) precisem ser normalizados?

Sim.

A segunda opção é trabalhar com int tipo, por exemplo:

int temp = 0.5 + (OrderTakeProfit() - OrderOpenPrice())/ pp;
if ( temp < Takeprofit)
 
OneDepo писал(а) >>

Sim.

A segunda opção é trabalhar com int tipo, por exemplo:

>> Obrigado!

 

Olá!

Como posso mudar a cor da linha indicadora dependendo da condição - por exemplo, para que diferentes gamas de barras tenham cores diferentes?

A função SetIndexStyle, que deve fazer isso, não funciona com a definição da cor ou da espessura da linha - veja a figura

Veja o código de exemplo abaixo.

Cada barra deve ter uma cor e espessura diferentes, mas todas elas são apenas vermelhas e 2 de espessura.

//+------------------------------------------------------------------+
//|                                                       MinMax.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Gray

//---- buffers
double ExtMapBuffer1[];
double Val;
int ExtCountedBars=0;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2,Brown);
   SetIndexBuffer(0, ExtMapBuffer1);
   Val=Close[Bars-1];
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   

   if(Bars<=100) return(0);
   ExtCountedBars=IndicatorCounted();

   //---- check for possible errors
   if ( ExtCountedBars<0) return(-1);
   if ( ExtCountedBars>0) ExtCountedBars--;
   int    i, pos=Bars- ExtCountedBars-1; 
   Comment(Bars," ", ExtCountedBars, " ", pos); 
//---- last counted bar will be recounted
   
//----

   while( pos>=0) {
        
         if ( pos<100 && pos>0)   { SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2,Red); Val=1.45; }
         if ( pos<200 && pos>100) { SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,3,Blue); Val=1.44; }
         if ( pos<300 && pos>200) { SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,4,Yellow); Val=1.43; }
         if ( pos<400 && pos>300) { SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,5,Magenta); Val=1.42; }
             
      ExtMapBuffer1[ pos]= Val;
    
    pos--;
     }
  return(0);
  }
//+------------------------------------------------------------------+
 
stera писал(а) >>

Olá!

Como posso mudar a cor da linha indicadora dependendo da condição - por exemplo, para que diferentes gamas de barras tenham cores diferentes?

A função SetIndexStyle, que deve fazer isso, não funciona com a definição da cor ou da espessura da linha - veja a figura

Veja o código de exemplo abaixo.

Cada passo deve ter uma cor e espessura diferentes, mas todos eles são apenas vermelhos e espessura 2.

Usar amortecedores adicionais, cada um com seu próprio estilo e cor

 
Vinin >> :

Usar amortecedores adicionais, cada um com seu próprio estilo e cor

Uma vez iniciada uma pergunta semelhante, e juntos trabalhamos o que deveria ter ficado claro :)))

SetIndexStyle quando usado no início muda de cor honestamente, mas todo o buffer de uma só vez. Ou seja, na tabela atual, o buffer (linha) terá a cor correspondente à última aplicação SetIndexStyle acionada.

 
stera писал(а) >>

Olá!

Como mudar a cor da linha indicadora...

Veja aqui .

 
granit77 писал(а) >>

Uma vez iniciada uma pergunta semelhante, e juntos trabalhamos o que deveria ter ficado claro :))

SetIndexStyle quando usado no início muda de cor honestamente, mas todo o buffer de uma só vez. Ou seja, na tabela atual, o buffer (linha) terá a cor correspondente à cor da última aplicação SetIndexStyle acionada .

Muito obrigado, granit77.

Essa é uma resposta abrangente.
Eu suspeitava tanto, mas não podia acreditar que uma idéia tão estranha estivesse embutida nesta função.

Pode ser necessário mudar a cor de todo o tampão para alguns fins, mas mais prático é

Mas o mecanismo de coloração (e mudança de outros atributos) de algumas partes do indicador.

O EasyLang, por exemplo, tem isso.

Escreverei para os desenvolvedores.

Existe uma descrição mais detalhada das funções da MQL em algum lugar?

Com os exemplos de alguns ou outros parâmetros?

Todos os parâmetros têm que ser testados por mim mesmo ou retirados de exemplos de terceiros.