Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 908

 
AlexeyVik:

Desculpe, não quero ser indelicado. Por que você gostaria de fazer programação?

Embora haja muitas pessoas aqui que escrevem peças de código em vez de explicar para que serve. Você tem que me dar isso.

Eu prefiro explicar, mas não escrever pedaços e peças.

Consegui! Aí está. Obrigado.

int bar1=iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),PERIOD_D1,0));//Print(bar1); //first bar
int MaxVol=0;
int i=0, n=0;
para (i=bar1; i>0; i--)
{
// se (i<bar);
// se (TimeMinute(Time[i])!=Minute()) quebra;
se (iVolume(Símbolo(),0,i)>MaxVol)
{
MaxVol=iVolume(Símbolo(),0,i);
n=i;
}
//Print(MaxVol," MaxVol ", n, " n");
}
data/hora MaxVolT = iTime(NULL, PERÍODO_M1, n);

 
sashasonik:

Consegui! É isso aí. Obrigado.

int bar1=iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),PERIOD_D1,0));//Print(bar1); //first bar
int MaxVol=0;
int i=0, n=0;
para (i=bar1; i>0; i--)
{
// se (i<bar);
// se (TimeMinute(Time[i])!=Minute()) quebra;
se (iVolume(Símbolo(),0,i)>MaxVol)
{
MaxVol=iVolume(Símbolo(),0,i);
n=i;
}
//Print(MaxVol," MaxVol ", n, " n");
}
data/hora MaxVolT = iTime(NULL, PERÍODO_M1, n);

Bem, aqui o temos.

Agora você pode pensar em reduzir e simplificar o código.

Aqui você encontrou o primeiro bar. Isto significa que teremos que copiar tantas barras para a matriz. Isto reduz o código a três cordas.

1. encontrar a primeira barra.

2. Copiar os volumes do primeiro exemplo para a matriz

int  CopyTickVolume(
   string           symbol_name,      // имя символа
   ENUM_TIMEFRAMES  timeframe,        // период
   int              start_pos,        // откуда начнем (с нулевого или первого)
   int              count,            // сколько копируем(первым пунктом определили)
   long             volume_array[]    // массив для копирования тиковых объемов(предварительно объявляем массив глобального уровня или локального)
   );

3. ArrayMaximum(a partir desta matriz)


Não está claro porque você está usando a variável n para

 

Descarregado o arquivo de citações. Aqui está um exemplo de uma entrada:
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
Os títulos dos campos são os seguintes: lTid,cDealable,CurrencyPair,RateDateTime,RateBid,RateAsk
O que significam os dois primeiros campos?

 
PostoronnimV:

Descarregado o arquivo de citações. Aqui está um exemplo de uma entrada:
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
Os títulos dos campos são os seguintes: lTid,cDealable,CurrencyPair,RateDateTime,RateBid,RateAsk
O que significam os dois primeiros campos?

As três primeiras colunas podem ser descartadas com segurança, elas não têm aplicação prática para criar citações para o MT4.
 

Olá!

Eu uso muitos blocos no Expert Advisor, cada bloco tem o mesmo indicador. Posso declarar este indicador uma vez no OnTick() e depois em cada bloco eu não tenho que declará-lo novamente?

 
abeiks:

Olá!

Eu uso muitos blocos no Expert Advisor, cada bloco tem o mesmo indicador. Posso declarar este indicador uma vez no OnTick() e depois em cada bloco eu não tenho que declará-lo novamente?

Você pode fazer isso
 
Como? Por favor, mostre-me um exemplo.
void OnTick()
{
double MA_High = iMA(NULL, 0, 9, 1, MODE_EMA, PRICE_LOW, cnt);
}

int exampl()
{
a = MA_High;
}

int exampl1()
{
a = MA_High;
}
 
abeiks:
Como? Por favor, mostre-me um exemplo.
Leia o manual sobre a visibilidade das variáveis declaradas em diferentes níveis de código.
double MA_High=0; 
void OnTick()
{
double  MA_High = iMA(NULL, 0, 9, 1, MODE_EMA, PRICE_LOW, cnt);
}

int exampl()
{
a = MA_High;
}

int exampl1()
{
a = MA_High;
}
 
evillive:
Leia o manual sobre a visibilidade das variáveis declaradas em diferentes níveis de código.
Obrigado!
 

Olá,

Você poderia me dizer por que existem avisos - conversão implícita de 'string' para 'número' e conversão implícita de 'número' para 'string' em locais variáveis (após o comando int e depois da mensagem). É provavelmente o mesmo aviso? Não sou bom em programação.

Além disso, diga-me mais, se o código funcionar mas houver apenas avisos, ele é ruim?

E mais uma pergunta, como faço para obter a hora local na mensagem? Eu escrevo mensagem= TimeLocal()+..... e nada acontece...


Código snippet:

if(last_sell_1_price==0 || TimeCurrent()-last_sell_1_price>alarm_limit_notification*60)
                 {
                  Print("");
                  if(Session_Check())
                    {
            
//сооб sell

                     int sell1 = DoubleToStr( (Bid - Price_Line)/Point,0);
                     int sell2=DoubleToStr( (Bid - Price_Line2)/Point,0);
                     int rsi=DoubleToStr(ExtRSIBuffer[0] - Price_RSI_Line, 2);
                                  
                     message=
                     TimeCurrent()+"  (Level)"+"   \n"+
                     "\n"+
                     Symbol()+"  TF:"+TF_in_String()+"   \n"+
                     "Price: "+DoubleToStr(Bid,4)+"   \n"+
                     "sell_1: "+(sell1>0?"+":"")+sell1+"   \n"+
                     "sell_2: "+(sell2>0?"+":"")+sell2+"   \n"+
                     "RSI:  "+(rsi>0?"+":"")+rsi;
  
                     SendNotification(message);
                     Print(message);
                     if(mail_message==on)
                     SendMail(Symbol(),message);

                    }
                  last_sell_1_price=TimeCurrent();
                 }
              }