[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 155

 
Rapazes, vocês podem me dar uma dica? Este site tem um roteiro chamado "SendOrderMultiLock". Estou interessado em saber se pode ser feito para ligar em um determinado momento?
 
dzhini:

Desde que você tomou a iniciativa, vamos tentar elaborar um código que nos sinalizaria a cada minuto com informações sobre o preço de abertura de uma vela de um minuto em um gráfico de cinco minutos (com a possibilidade de trabalhar em um testador). Eu proponho minha própria variante:

Esta opção é melhor.
 
Obrigado por isso, também.
 
dzhini:
Obrigado.
// функция записывает в массив result[] цены открытия минутных баров 
// внутри бара с индексом shift текущего таймфрейма. Возвращаемое значение - количество соответствующих минутных баров
// 

int M1_OpenPrices(int shift, double &result[])
{
   int n=0;
   ArrayResize(result,n);
   
   int sh, sh1 = iBarShift(0, PERIOD_M1, Time[shift]);
   
   for(sh=sh1;sh>=0;sh--)
   {
      if(iBarShift(0, 0, iTime(0,PERIOD_M1,sh))!=shift) break;
      n++;
      ArrayResize(result,n);
      result[n-1] = iOpen(Symbol(),PERIOD_M1,sh1);
   }

   return(n);
}
Acho que sim, confira...
 
Quem sabe fazer com que a cor das linhas de lucro seja diferente na tabela da cor de stop loss automaticamente? e como fazer um ícone aparecer na tabela no local onde o pedido é feito?
 

Ajude-me a entender. Eu construo o MACD na barra anterior (i+1). Eu encontro valores máximos e mínimos visíveis na janela do gráfico MACD. Eu coloco em Comentário valores máximos, mínimos e atuais das linhas principal e de sinal. Alguém pode me ajudar a descobrir isso.

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property  indicator_width1  2
//--- buffers
double Macd1Buffer[];
double Signal1Buffer[];

//--- for one bar
datetime last; 

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   //---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,Macd1Buffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,Signal1Buffer);
   
   IndicatorDigits(Digits+1);

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  Comment(""); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    if(last>=Time[0]) return;
    
   double max_M1=-0.01,min_M1=0.01,
          max_S1=-0.01,min_S1=0.01,
          max1=-0.01,min1=0.01;
   
   int bars_counted=WindowBarsPerChart()-1,
       limit;  
       limit=bars_counted;
       
//---- macd counted in the 1-st buffer        
   for( int i=0; i<limit; i++)
              
   { 
      Macd1Buffer[i]=iMA(NULL,0,6,0,MODE_EMA,PRICE_CLOSE,i+1)-iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i+1);
     
       max_M1=MathMax(Macd1Buffer[i],max_M1);
       min_M1=MathMin(Macd1Buffer[i],min_M1);
     
   }  
     
//---- macd counted in the 2-nd buffer       
   for( i=0; i<limit; i++)
           
   {
      Signal1Buffer[i]=iMAOnArray(Macd1Buffer,Bars,5,0,MODE_SMA,i);
      
       max_S1=MathMax(Signal1Buffer[i],max_S1);
       min_S1=MathMin(Signal1Buffer[i],min_S1);
            
   } 
   
       max1=MathMax(max_M1,max_S1);
       min1=MathMin(min_M1,min_S1);
   
   
   Comment( "\n"," Баров = ",WindowBarsPerChart()-1,
            "\n"," max1 = ",max1,
            "\n"," min1 = ",min1, 
            "\n"," Macd1Buffer = ",Macd1Buffer[i],
            "\n"," Signal1Buffer = ",Signal1Buffer[i]);
       
    last=Time[0];
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
MK07:

Ajude-me a entender. Eu construo o MACD na barra anterior (i+1). Eu encontro valores máximos e mínimos visíveis na janela do gráfico MACD. Eu coloco em Comentário valores máximos, mínimos e atuais das linhas principal e de sinal. Alguém pode me ajudar a descobrir isso.

O tipo de dado duplo é impresso com 4 dígitos decimais após o ponto. Para emitir números com maior precisão, você deve usar a função DoubleToStr().

Exemplo:

   Comment( "\n"," Баров = ",WindowBarsPerChart()-1,
            "\n"," max1 = ",max1,
            "\n"," min1 = ",min1, 
            "\n"," Macd1Buffer = ",DoubleToStr(Macd1Buffer[i],5),
            "\n"," Signal1Buffer = ",DoubleToStr(Signal1Buffer[i],5));
 
r772ra:

Os dados do tipo duplo são emitidos com 4 dígitos decimais após o ponto. Para emitir números com maior precisão, use a função DoubleToStr().

... e no seu caso, MK07, IndicatorDigits() significa o número de dígitos na janela de dados e no próprio gráfico.
 
r772ra:

Os dados do tipo duplo são emitidos com 4 dígitos decimais após o ponto. Para emitir números com maior precisão, use a função DoubleToStr().

exemplo:

Obrigado pela dica Por que os valores atuais da linha MACD não são exibidos corretamente no Comentário?
 
MK07:
Obrigado pela dica. Por que os valores atuais da linha MACD são mostrados incorretamente no Comentário?

Leia novamente, cuidadosamente: para Comentário(), Alerta() e Impressão()

Os dados do tipo duplo são impressos com 4 dígitos decimais após o ponto. Para emitir números com maior precisão, use a função DoubleToStr().