[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 410

 
Integer:


Estou impressionado com o nível de fantasia. Por que os dados são mostrados apenas para alguns símbolos (que não foram abertos) e não para todos os símbolos na análise do mercado? Como a função RefreshRates() sabia que alguns símbolos deveriam ser atualizados e outros não?

Junko, pare de delirar.


Dmitry, não vamos brigar um com o outro. É melhor ajudar um ao outro, porque você e Vadim têm tido tantos desacordos ultimamente. Fiquei entediado com meus pensamentos por alguns dias, não visitei o fio, e então, como de costume, fui e olhei através de tudo. Para ser honesto, foi engraçado ler, realmente engraçado! Há uma tal escaramuça, e tais discussões e congressos que me pergunto:) Ocasionalmente frases e palavras abstrusas, mas na verdade são um completo absurdo. Não julgarei ninguém, embora esteja longe de ser um pensamento avançado, eu mesmo ainda estou para aprender a aprender (em alguns lugares para nadar), e depois compreendi e vi claramente que o debate chegou ao absurdo total.

Parece ser uma reunião de profissionais, caso contrário não o direi. Não posso dizer o contrário sobre você, porque posso ver que todos entendem o que estão fazendo. Mas o que é interessante é que os profissionais podem ser propensos a deslizes quando não querem admitir seus erros. Mas nós aprendemos com nossos erros! Não há nada de que se envergonhar. Portanto, se alguém cometeu um erro, você não precisa sair do tópico, mas sim confessar. Para dezenas de páginas de lixo de programadores se voltando para personalidades, de alguma forma não é uma opção. O objetivo de pelo menos esta filial ou fórum não é cagar um ao outro da cabeça aos pés, mas melhorar na programação e compartilhar nossas idéias sobre o assunto. Portanto, vamos viver juntos. Já chega de brigas.

 
hoz:

Bem, é verdade. Você "lê" a função linha por linha e entende como funciona, se estiver muito entediado para escrevê-la você mesmo, e tudo se encaixa...

Você tem um parâmetro de função:

é a hora do último dia de abertura da barra, ou seja, todas as posições que forem fechadas antes da abertura da barra do dia atual serão calculadas e somadas! Isso faz sentido? Portanto, estabeleça outra barra, que é necessária ou seja lá o que for. Mas você tem que ver por si mesmo.


Desculpe, ainda não funciona.

Quero que a função devolva o lucro total por hoje, não por hoje.

e não importa como eu tentei... não funciona. O resultado é apenas a história toda.

Se você subtrair a história de hoje ANTES de toda a história, você receberá o total de hoje.

double tm1=GetProfitFromDateInCurrency (Symbol(), -1, -1, iTime (NULL, PERIOD_D1, 0));  
double tm2=GetProfitFromDateInCurrency (Symbol(), -1, -1, TimeCurrent());  

Print(  m2-m1 );

impressões nulo .....

 
É sempre mais fácil para um tolo provar um tolo a um homem inteligente do que vice-versa, pois é inerentemente mais fácil para um homem inteligente duvidar.
 
lottamer:


Em teoria, se você subtrair o que aconteceu ANTES da história INTEIRA de hoje, você obtém o que aconteceu hoje.

imprime ZERO, pelo amor de Deus.....


A idéia é entender o que esta função faz. E para entendê-lo, é preciso dividi-lo linha por linha em sua totalidade. Eu já lhe disse isto. É tudo elementar. E não adianta ajudar, pois cabe a você se entende ou não o código de uma simples função.

Eu o descrevi acima.

 
hoz:


Vadim, eu corri seu roteiro em um terminal no qual nunca abri nenhum instrumento além das majors e cruzei com o iene. De qualquer forma, aqui está uma captura de tela:

Nada está sendo bombeado porque a matriz de dados do mercado está vazia, a julgar pelos comentários.

1. Como você a geriu? Você tem que executá-lo sem atualização antes. I.e. IsRefreshRates = falso. Os dados não serão atualizados.

2. Então você deve executá-lo com IsRefreshRates = true. Os dados serão atualizados.

Aqui está uma captura de tela 1: captura de tela 2:

Observe os horários dos bares. Você também pode ver que MarketInfo() retira dados da visão geral do mercado.

Aqui está o Consultor Especialista. Eu corrigi um pouco. Eu corrigi um pouco.

extern string Tool           = "AUDNZD"; // Имя инструмента.
extern bool   IsRefreshRates = true;     // Флаг включения обновления таймсерий.
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start()
 {
  string sTool = Tool; // Имя инструмента.
  if (Tool == "") sTool = Symbol();
  while (!IsStopped())
   {
    if (IsRefreshRates) RefreshRates();
    string sComment = StringConcatenate("MarketInfo() (", sTool, ")\n",
                                        TimeToStr(MarketInfo(sTool, MODE_TIME), TIME_DATE|TIME_MINUTES|TIME_SECONDS), "\n",
                                        DoubleToStr(MarketInfo(sTool, MODE_BID), Digits), "  ", DoubleToStr(MarketInfo(sTool, MODE_ASK), Digits),
                                        "\n\nПредопределенные переменные (", Symbol(), ")\n",
                                        TimeToStr(Time[0], TIME_DATE|TIME_MINUTES|TIME_SECONDS), "\n",
                                        DoubleToStr(Bid, Digits), "  ", DoubleToStr(Ask, Digits),
                                        "\n\nМассивы-таймсерии (", sTool, ")\n");
    for (int i = 0; i < 10; i++)
     {
      sComment = sComment + StringConcatenate(TimeToStr(iTime(sTool, 0, i), TIME_DATE|TIME_MINUTES|TIME_SECONDS), "  ",
                                              DoubleToStr(iOpen(sTool, 0, i), Digits), "  ",
                                              DoubleToStr(iLow(sTool, 0, i), Digits), "  ",
                                              DoubleToStr(iHigh(sTool, 0, i), Digits), "  ",
                                              DoubleToStr(iClose(sTool, 0, i), Digits), "  ",
                                              DoubleToStr(iVolume(sTool, 0, i), 0), "\n");
     }
    Comment(sComment);
    Sleep(300);
   }
 } 
hoz:


Dimitri, não vamos brigar. É melhor ajudar um ao outro, porque você e Vadim têm tido tantos desacordos ultimamente. Uma vez passei alguns dias na minha cabeça, não fui ao ramo e depois, como de costume, fui e vasculhei tudo. Para ser honesto, foi engraçado ler, realmente engraçado! Há uma tal escaramuça, e tais discussões e congressos que me pergunto:) Ocasionalmente frases e palavras abstrusas, mas na verdade são um completo absurdo. Não julgarei ninguém, embora esteja longe de ser um pensamento avançado, eu mesmo ainda estou para aprender a aprender (em alguns lugares para nadar), e depois compreendi e vi claramente que o debate chegou ao absurdo total.

Acho que reunimos profissionais. Não direi nada sobre você, pois vejo que todos entendem o que ele ou ela está fazendo. Mas o que é interessante é que os profissionais às vezes são propensos a deslizes quando não querem admitir seus erros. Mas nós aprendemos com nossos erros! Não há nada de que se envergonhar. Portanto, se alguém cometeu um erro, você não precisa sair do tópico, mas sim confessar. Para dezenas de páginas de lixo de programadores se voltando para personalidades, de alguma forma não é uma opção. O objetivo de pelo menos esta filial ou fórum não é cagar um ao outro da cabeça aos pés, mas melhorar na programação e compartilhar nossas idéias sobre o assunto. Portanto, vamos viver juntos. Já chega de brigas.

Victor, não preste atenção. Há pessoas que não sabem como formular um pensamento e não sabem como construir um discurso fundamentado. Para eles, o argumento mais convincente é a profanação.

Também essas pessoas não são receptivas a nada de novo. Dmitri ainda não entende como você pode trabalhar com riachos sem organizar sua fila. Ele não deu nem mesmo um exemplo onde esta fila é necessária.

Agora ele está discutindo novamente. Em vez de verificar e discutir sua posição.

 
Zhunko:

Victor, você não está prestando atenção. Há pessoas que não conseguem formular um pensamento e não sabem como construir um discurso fundamentado. Para eles, o argumento mais poderoso é a profanação.

Também essas pessoas não são receptivas a nada de novo. Dmitri ainda não entende como você pode trabalhar com riachos sem organizar sua fila. Ele não deu nem mesmo um exemplo onde esta fila é necessária.

Agora ele está discutindo novamente. Em vez de verificar e discutir sua posição.


Junko, você está exagerando. Tudo o que está escrito aqui se aplica diretamente a você. Você não entende sobre os fluxos, você não entende porque os dados foram atualizados, etc., mas você finge ser um especialista, e isso é uma besteira. E você finge ser tão justo.
 
Integer:


O nível de imaginação é impressionante. Por que os dados apareceram apenas para alguns símbolos (que não foram abertos), e não para todos eles na análise do mercado? Como a função RefreshRates() sabia que alguns símbolos deveriam ser atualizados e outros não?

Junko, pare de delirar.

RefreshRates() atualiza somente aqueles valores com os quais o Expert Advisor opera. É assim que ele descobre. Do Conselheiro Especialista. Há muito tempo, alguém de Metakvot escreveu sobre isso.
 
hoz:


A idéia é entender o que esta função faz. E para compreendê-la, é preciso desmontá-la linha por linha. Eu já lhe disse isso. É tudo elementar. E não adianta ajudar, pois cabe a você se entende ou não o código de uma simples função.

Eu o descrevi acima.


Eu descobri.

em geral, a função retorna o lucro total, mas somente do período que você definiu na guia Histórico. e ele muda ao longo do caminho imediatamente se você mudar o período na guia HISTÓRIA

Eu não preciso disso.

Preciso dele para definir o período por um determinado parâmetro.

Estou tentando mudar a própria função...

double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1, datetime dt=iTime (NULL, PERIOD_D1, 0)   )
{
  double p=0;
  int    i, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (dt<OrderCloseTime()) {
              p+=OrderProfit()+OrderCommission()+OrderSwap();
            }
          }
        }
      }
    }
  }
  return(p);
}

mas o compilador reclama que

iTime' - inicialização esperada

O que devo acrescentar?

 
Zhunko:
RefreshRates() atualiza apenas aquilo com que o Expert Advisor está trabalhando. É assim que ele descobre. Do Conselheiro Especialista. Há muito tempo, alguém da Metakvot escreveu sobre isso.

Não dê às funções da linguagem de programação algumas características e propriedades místicas que elas não possuem.

 
Na página anterior, no final, escrevi sobre o que atualiza os dados.