[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 103

 
Reshetov:

Não, ela não deve nada a ninguém. Há uma diferença entre um demo-real e um testador. Por exemplo, o testador nunca mostrará um erro ao abrir pedidos, se todos os parâmetros OrderSend() estiverem corretos. Mas um servidor comercial, ao contrário, ele o fará.

É por isso que devemos modificar os programas após o testador e depois executá-los na demonstração, para que eles possam lidar adequadamente com situações excepcionais, que não ocorrem no testador.

Obrigado!!!
Esta é uma informação muito útil para mim))
 
Reshetov:
Use o tempo[x] tempo de barra.


Não vai funcionar aqui, porque na próxima linha na mesma barra esta primeira figura formada será iniciada como a segunda também... E eu preciso separá-los... separado

para então comparar os baixos - se longos e os altos - se curtos.

......
if (AO3 < 0 && AO3 > AO2 && AO2<0 && AO2 < AO1 && AO1 < 0 && fl1==false && fl2==false) {a1 = AO2; fl1=true;Time_Figure1=TimeCurrent(); Print ("образование первого пика",DoubleToStr(a1, 6),"Время: ",Time_Figure1);}// определение наличия 1-го пика, флаг установлен
 Print ("Образование первого пика",DoubleToStr(a1, 6),"Время1: ",Time_Figure1);
 sleep (2000);
 if (AO3<0 && AO3>AO2 && AO2<0 && AO2<AO1 && AO1<0 && fl1==true && fl2==false && TimeCurrent() > Time_Figure1)  // определение наличия 2-го пика, флаги установлены
      { 
        a11 = AO2; fl1=true; fl2=true; Print ("Образование второго пика", DoubleToStr (a11,6), "Время2: ",Time_Figure2);
.....

 
robot:

Se não é difícil escrever um modelo, ainda não estou pensando direito)

Obrigado por sua atenção.
Sugiro que você olhe exemplos de codificação comercial, por exemplo, aqui
 
Roman.:


Não vai funcionar aqui, porque na próxima linha na mesma barra esta primeira figura formada será iniciada como a segunda também... E eu preciso separá-los... separado

para posterior comparação de baixas - se longas e altas - se curtas.

Não é assim. Se você tiver a barra de sinais AO primeiro, então olhe a partir dela e procure pelo resto no fundo da história. Quando você abre uma posição, lembre-se da hora da abertura do bar e não abra novamente nele. Assim que a próxima barra AO for formada, comece a procurar um padrão novamente.
 
artmedia70:
Não é assim. Se você tem a primeira barra de sinal de AO, então, a partir dela e procure as outras a fundo na história. Quando você abrir uma posição, lembre-se da hora de abertura do bar e não o abra novamente. Assim que a próxima barra AO for formada, comece a procurar um padrão novamente.


Você pode elaborar - não preciso procurar a fundo na história...

Basta-me determinar no presente se veio um pico, que é a Fig.1, e se depois de algumas barras como na figura veio outro pico, então eu posso compará-las e tomar uma decisão...

A questão é que ambos os picos da primeira e da segunda figura são os mesmos, e eu não posso (mesmo usando bandeiras para distinguir uma figura de outra)... Estou entediado com o quê...

P.S. Os espigões não necessariamente seguem um após o outro, podem passar por várias barras iguais, etc. Eles podem ser diferentes - o principal é que o princípio de sua construção é o mesmo.

O principal é separar um do outro para uma comparação posterior.

 
Reshetov:
Use o tempo[x] tempo de barra.

Em geral, é possível interromper a EA em um determinado ponto do código antes que a próxima barra seja formada após alguns comandos serem executados.
 
Roman.:

Em geral, é possível interromper a EA em um determinado lugar no código antes da próxima barra ser formada, após alguns comandos serem executados.
Sim, há. Você armazena o valor atual do Tempo[0] em uma variável estática e o compara com cada novo tick. Se não mudou, nós voltamos(0). Se mudou, estamos lidando com um novo bar. Lembre-se da hora da nova barra, ou seja, o tempo[0] e comece seus próprios cálculos.
 

eddy:

for(k=0; k<KPeriod; k++)           // перебрать KPeriod баров
if(Low[k]<minimum) minimum=Low[k]; // найти минимум

como substituir corretamente esta função pelo iLowest?

minimum=Low[iLowest (NULL, 0, MODE_LOW, KPeriod, 0)] - isto é correto?

Foi-me dito. Obrigado a todos vocês por ignorarem mutuamente uma simples pergunta)
 
Reshetov:
Sim, é verdade. Você armazena o valor atual do Tempo[0] em uma variável estática e compara com cada novo tick. Se não tiver mudado, você sai com retorno(0). Se mudou, estamos tratando de um novo bar. Lembre-se da hora da nova barra, ou seja, o tempo[0] e comece seus próprios cálculos.


Já o conheço há muito tempo... :-)) Mais de um livro didático... Obrigado...

Estou comparando agora, acho que estou no caminho certo, mas até agora não está funcionando como deveria...

double AO1 =  iAO(Symbol(), signal_period, 1);
 double AO2 =  iAO(Symbol(), signal_period, 2);
 double AO3 =  iAO(Symbol(), signal_period, 3);
 
 
 //  Расчет переменных для доливки 2-а пика
  
 if (AO3 < 0 && AO3 > AO2 && AO2<0 && AO2 < AO1 && AO1 < 0 && fl1==false && fl2==false) {a1 = AO2; fl1=true;Time_Figure1=Time[0]; Print ("Oбразование первого пика",DoubleToStr(a1, 6),"Время: ",Time_Figure1);}// определение наличия 1-го пика, флаг установлен
 Print ("Образование первого пика",DoubleToStr(a1, 6),"Время1: ",Time_Figure1);
 if (Time_Figure1<Time[0] && Time_Figure1!=0)    // условие наличия первого пика...
   {
    if (AO3<0 && AO3>AO2 && AO2<0 && AO2<AO1 && AO1<0 && fl1==true && fl2==false )  // определение наличия 2-го пика, флаги установлены
      { 
        a11 = AO2; fl1=true; fl2=true; Time_Figure2=Time[0]; Print ("Образование второго пика", DoubleToStr (a11,6), "Время2: ",Time_Figure2);
        if (a1<a11 && High [0] > High [1]) 
           { signal_buy = true; a1=a11; fl1=true;fl2=false; Time_Figure1=Time[0];}   //  активируем бай и устанавливаем сигнал на бай и записываем параметры как первого пика  
        else { a1=a11; fl1=true;fl2=false;Time_Figure1=Time[0];}                     //  просто запоминаем новый минимум - "первый" сигнал   
      }                                                       
   }
 
 if (AO2>0 || High [0] < High [1]) {fl1=false; fl2=false; Time_Figure1=0;}// если какой - либо столбец гистограммы  пересекает 0-ю линию между сигналами 2-а пика
                                                               // то сигнал считается недействительным. Cбрасываем флаги 1-го и 2-го пика вниз,
 if (Mas_Tip[0]!=0 && signal_buy == true )  return(10);        // при доливке и сигнале к покупке открываемся с рынка 
 signal_buy = false;                                           // сбрасываем сигнал к покупке
Você me sugeriu corretamente o uso do Tempo[x] - tentando implementar...
 
Os caras realmente precisam de um roteiro para adicionar dias de folga ao gráfico no MT4, onde encontrá-lo