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

 
r772ra:
duplo iClose( símbolo de corda, int timeeframe, int shift)

Algo parecido com isto.

Muito obrigado!



 
extern double lot = 1;
extern double ts = 50; 
extern double sl = 50; 
extern double tp = 40;
extern double periodrsi = 30;
extern double hirsi = 80;
extern double lowrsi = 30;

int K=0;
int L=0;
 


int init()
  {
   return(0);
  }

 
int start()
  { 
    double r1 = iRSI(NULL,0,periodrsi,PRICE_CLOSE,1);


  

    static bool first = true;
    static int pre_OrdersTotal = 0;
    int _OrdersTotal = OrdersTotal();
    if ( first )
    {
        pre_OrdersTotal = _OrdersTotal;
        first = false;
        return(0);
    }
 
   
   
   
    if ( _OrdersTotal > pre_OrdersTotal ) 
{K=0;
L=0;}
    if ( _OrdersTotal < pre_OrdersTotal )
{K=0;
L=0;}
    pre_OrdersTotal = _OrdersTotal; 

if (r1>hirsi) K=1;
 {
 if ((K==1) && (r1<hirsi))

 { 
  L=(L+1);                        // набираем проходы вниз под hirsi

K=0;
 }
 }



 if(OrdersTotal()<1)

 {
 if((r1<hirsi) && (L==2))   //есть два прохода

 OrderSend(Symbol(),OP_SELL,lot,Bid,0,Ask+sl*Point,Bid-tp*Point,"Easiest ever",0,0);
Olá amigos! por favor, avisem tal função que acrescentaria a seguinte condição a este código. O negócio só é aberto se o rsi fez dois passes para baixo durante n-número de barras. ou seja, se o rsi fez dois passes para baixo durante 30 barras, então abrimos uma ordem, não consigo entender) Sou um iniciante)
 
TemirKhan:
Olá amigos! sugerem uma função que acrescentaria a seguinte condição a este código. Se o rsi fez dois passes para baixo durante n-número de barras, ou seja, se o rsi fez dois passes para baixo durante 30 barras, então abra a ordem, não consigo descobrir).


Você inicia o contador. Depois, quando você a analisa ao longo da história, ela conta pela condição: "Se ele cruzar para baixo, você adiciona um ao balcão... "etc.".

Aprenda e leve seu tempo e você vai acertar!

 
hoz:


Você inicia o contador. Depois, quando você o faz passar pela história, ele conta pela condição: "Se cruzar para baixo, acrescente um ao balcão. " etc.

Aprenda e leve seu tempo e tudo vai dar certo!


Portanto, há um balcão de travessia, lá está ele:
if (r1>hirsi) K=1;
 {
 if ((K==1) && (r1<hirsi))

 { 
  L=(L+1);                        // набираем проходы вниз под hirsi

K=0;
 }
 }
agora precisamos de um contador de barras, mas como?)) para que L possa obter um valor de "2" somente se os crossovers acontecerem dentro de 30 barras
 

Eu comecei a pensar. Eu investiguei a função de Kim para dissipar minhas dúvidas... e meus argumentos foram confirmados. Por algum motivo, a verificação do "Fluxo de Comércio Livre" só acontece em inauguração и fechamento ordens... E quando modificações (ajuste inicial de SL e TP), em traale e durante a transferência de um cargo para Breakeven não há cheque. Por quê? Afinal, em ambos os casos, o servidor é chamado!

Afinal de contas, se o negociante for então levado, o Consultor Especialista logicamente não definirá paradas, por exemplo, e não fará nada com a posição em questão. Eu não entendo isto.

 
hoz:

Eu comecei a pensar. Eu investiguei a função de Kim para dissipar minhas dúvidas... e meu raciocínio foi confirmado. Por algum motivo, a verificação do "Fluxo de Comércio Livre" só acontece em inauguração и fechamento ordens... E quando modificações (ajuste inicial de SL e TP), em traale e durante a transferência de um cargo para Breakeven não há cheque. Por quê? Afinal de contas, em ambos os casos o servidor é chamado!

Afinal de contas, se o negociante for então levado, o Consultor Especialista logicamente não definirá paradas, por exemplo, e não fará nada para a posição. Eu não entendo isto.


Nada de mais. Coloque-o no próximo tick
 
Vinin:

Não é nada de mais. Vai colocar no próximo tick

Então, nesse caso, por que verificar a abertura ou o fechamento? Será colocado no próximo tick também :) Porque pode desempenhar um grande papel para um escalpador.
 
hoz:

Então, nesse caso, por que verificar ao abrir ou fechar? Também será colocado no próximo tick :) Afinal, ele pode desempenhar um papel enorme para um escalpador.

Portanto, tudo está em suas mãos. Assim será feito. Alguns o fazem dessa forma.
 

Novamente olhei na referência e novamente li as linhas aqui:

https://docs.mql4.com/ru/basis/preprosessor/import

Для импорта функций во время выполнения mql4-программы используется так называемое позднее связывание. Это значит, что пока не вызвана импортируемая функция, соответствующий модуль (ex4 или dll) не загружается.

Para que a biblioteca possa ser carregada, ela deve ser chamada no código após as linhas de importação, certo?

Por exemplo, eu o fiz assim:

#import "hoz_Base@Library.ex4"
   double ND(double A);
   double Get_TradePrice(int fi_priceId,       // Цена: 0 - Ask; 1 - Bid
                      string fs_symbol);

1. Acontece que nós declarar funções. que usaremos no Expert Advisor logo no início do código do Expert Advisor?

2. e não os declarar muito no código do próprio Expert Advisor e usar arquivos de cabeçalho? Isto é, apenas para declarações?

Esta pergunta surgiu porque vi tais Conselheiros Especialistas que foram escritos por programadores bastante sérios, mas seus arquivos de cabeçalho contêm todas as funções principais e não principais. Fiquei surpreso com isto... A razão é que a velocidade das bibliotecas compiladas é muito mais rápida, além disso, o código das funções das bibliotecas é "isolado", o que também é muito conveniente.

 
Bom dia, esta é minha primeira vez aqui, então desculpe-me, não vi esta linha e criei uma nova, realmente preciso ouvir de profissionais!

https://www.mql5.com/ru/forum/145453