[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 175

 
alsu:

Não, a partir da variável que eu tinha antes do ciclo. Escreva para

é idêntico a

   int cnt,i;
for (cnt = 0, i = index + g_center - 1; i >= 0 && cnt < g_center; i--) 

Agora eu entendi. Obrigado. Eu estava procurando... não havia nenhum ponto de referência. Agora é 0.


Hmm. Bem, por exemplo, o índice é passado como 1. Vamos dar uma olhada neste pedaço de código:

 int cnt = 0, i = index + g_center - 1;
   for (; i >= 0 && cnt < g_center; i--)           // Справа от центрального бара должно
   {                                               // ..быть g_center-1 баров с большим..
      if (centerLow >= Low[i])                     // ..минимумом. Не позволяется..
         return (false);                           // ..наличие баров с меньшим или..
      cnt++;                                       // .. равным минимумом
   }
   

imediatamente na chegada será:cnt = 0, i = índice + g_center - 1 = 1(valor do índice) +2(valor dog_center) - 1 = 2

Mas de acordo com a condição do laço, ele continuará até que eu seja igual a 0. Como isso vai acontecer?

A condição acontece que se i tem um valor de 2(se índice = 1), para i >= 0 ecnt tem de 0, paracnt < g_center, então as condições aninhadas são satisfeitas.

Acontece que se a variável aqui for 1, então teremos apenas 1 iteração no loop, certo?

 
alsu:

Explicar o conceito de "limitado a 0 bar".
Em outras palavras, eu preciso traçar uma linha (não um raio) através de 2 fractais, mas deve terminar em 0 bar
 
beginner:
Em outras palavras, eu preciso traçar uma linha (não um raio) através de 2 fractais, mas deve terminar em 0 bar


O algoritmo é o seguinte:

1. Deixe as coordenadas fractais serem (i1; p1) e (i2; p2), onde i1<i2 (ou seja, o 1º fractal está mais próximo de 0 bar que o 2º)

2. Equação da linha que passa por esses fractais p = (p1-p2)/(i1-i2) * i + (p2*i1 - p1*i2)/(i1-i2)

3. Portanto, precisamos desenhar um segmento com as seguintes coordenadas finais: (0; (p2*i1 - p1*i2)/(i1-i2)) e (i2;p2)

4. ObjectCreate(...)

5. ???

6. Lucro!!!

 
Vinin:

Deve funcionar no primeiro tique do novo dia.

Obrigado pela resposta! É verdade, nunca funcionou até eu inserir no início do início do indicador

if(Hour() == 0 && Minute() == 0 && Seconds() == 0) { DeleteObject() etc.

}

if(Hora() >= 0 && Minuto() >= 0 && Segundos() >= 1) { código indicador ...

Recentemente também não funciona com este aqui! Eu não sei o que fazer. O que você pode aconselhar? Obrigado!

Só consegui escrevê-lo agora, estou trabalhando para viver no sábado.

 
hoz:


Sim Boris, isso é muito bom, a propósito! Muito obrigado. Era isso que eu queria. Torci-o... Torci-o... Eu não entendi direito. Ainda não tive muita experiência e meu cérebro não está pensando como um profissional. É um beco sem saída, não é? :(

Eu não queria perguntar imediatamente, mas tive que fazê-lo. Porque eu mesmo não consegui fazer o corte.

Estou feliz que tenha sido útil para você! Eu mesmo, como você, comecei há dois anos, mas desde a infância estou acostumado a vir sempre para tudo sozinho, porque o conhecimento das dicas não pode formar um sistema. E só pergunto quando é absolutamente necessário, quando já fiz tudo, procurei em todos os lugares e não o consegui. Muitos recém-chegados aqui querem soldar e bombear a massa rapidamente. A experiência irá ensiná-los. Eu já lhe disse antes que é melhor fazer algo simples, que é claro para você, do que algo complicado, que você não entende, e é melhor evitar tais situações até chegar ao fundo da questão. O código pode ser feito de maneiras diferentes, mas a lógica deve ser tão clara quanto duas para você. É por isso que eu evito usar o que ainda não entendo. O código é sua ferramenta, que você deve conhecer e dominar perfeitamente, para que você possa facilmente ajustá-lo a tempo. Desejo-lhe sucesso!
 
hoz:

Agora eu entendi. Obrigado. Eu estava procurando... não havia nenhum ponto de referência. Agora é 0.


Hmm. Bem, por exemplo, o índice é passado como 1. Vamos dar uma olhada neste pedaço de código:

imediatamente na chegada será:cnt = 0, i = índice + g_center - 1 = 1(valor do índice) +2(valor dog_center) - 1 = 2

Mas de acordo com a condição do laço, ele continuará até que eu seja igual a 0. Como isso vai acontecer?

A condição diz que se i tem um valor de 2(se índice = 1), para i >= 0 ecnt tem um valor de 0, paracnt < g_center, então as condições aninhadas são satisfeitas.

Acontece que se a variável aqui é 1, então teremos apenas 1 iteração no loop, certo?


O laço termina quando a condição escrita no segundo lugar de for() operador não é mais satisfeita, ou seja, neste caso, quando eu me torno menor que 0, ou quando cnt se torna maior ou igual a g_center. Ambas as variáveis têm valores iniciais atribuídos antes do loop e mudam durante sua execução: a variável i como resultado de i-- (a terceira parte do for statement, é executada toda vez que o loop atinge o colchete de fechamento }) e a variável cnt como resultado de cnt++.
 

Hi.

Tentando exportar para html meu comércio a partir de minha conta demo. (Alpari, última construção). Pressiono salvar como relatório, uma janela de seleção de pastas se abre, pressiono salvar, nada acontece. É o mesmo para contas de demonstração? Mais uma coisa, meu MT4 está instalado na minha área de trabalho. Será que isso importa?

 
borilunad:
Quem sabe, é possível, fazendo variáveis globais Hora(), Minuto() e Segundos(), controlar a mudança do indicador DailyPivotPoints para os novos níveis de PP e outras linhas do EA à meia-noite (0,00)? Eu costumava fazê-lo diretamente no indicador com Hora(), Minuto(), Segundos(), e funcionava sem ter que compilar todas as noites. Mas recentemente deixou de mudar a si mesma, talvez de mudar o bild? Obrigado!


:) Por que não implementar isto como uma nova função de barra? Você precisa recalculá-lo uma vez por dia, ou seja, a partir das 0 horas. Portanto, fazemos isso de forma simples. No início do curso:

if (lastBarTime == время с ТФ Д1)
    return(0);
// что-то тут ещё
// что-то тут ещё
// что-то тут ещё
if (lastBarTime != время с ТФ Д1)
{
    пересчитывает уровни пивотов...
    lastBarTime = время с ТФ Д1;
}
Acho que esta é a maneira mais correta, embora seja primitiva!
 
alsu:

O loop termina quando a condição escrita no segundo lugar de for() operador não é mais satisfeita, ou seja, neste caso, quando eu me torno menor que 0 ou quando cnt se torna maior ou igual a g_center.


Mas também não é E. O sinal && está lá, também.

Eu entendo tudo isso. Mas a questão aqui é esta:

bool IsUpFractal(int index)
{
   double centerHigh = High[index + g_center];     // За точку отсчета берется средний..
                                                   // ..бар на участке из i_fractalPeriod
                                                   // ..баров
// - 1 - == Поиск максимумов справа от центрального бара ================================
   int cnt = 0, i = index + g_center - 1;
   for (; i >= 0 && cnt < g_center; i--)           // Справа от центрального бара должно
   {                                               // ..быть g_center-1 баров с низшим..
      if (centerHigh <= High[i])                   // ..максимумом. Не позволяется..
         return (false);                           // ..наличие баров с большим или..
      cnt++;                                       // ..равным максимумом.
   }
   
   if (i < 0)                                      // g_center-1 низших максимумов не..
      return (false);                              // ..найдено. Фрактала нет
// - 1 - == Окончание блока =============================================================

Índice variável em geral por código tem valor Bar - IndicatorCounted()

Ou seja, é 1 na barra atual e 2 na nova barra.

Ele entra na função IsUpFractal() com o valor 1 ou 1 se a barra ainda não for nova, certo?

Portanto, a variável i terá um valor fixo, já que o índice de parâmetros de entrada também é fixo. Portanto, o laço sempre se quebrará após a primeira iteração. Qual é o objetivo do loop então?

 

Pode me dizer porque não está mostrando...

double IN[111];
double PERI=33;
double KRIT;
int z;      
ArraySetAsSeries(IN,true);

   for(z=0; z<=PERI; z++)  {
IN[z]=     iClose(Symbol1.Name,0,iBarShift(Symbol1.Name,0,Time[z],false)); }

   for(z=0; z<=PERI; z++)  {
KRIT=IN[z]-iMAOnArray(IN,0,PERI,0,MODE_SMA,iBarShift(IN,0,Time[z],false)); }

Print(KRIT);
return;