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

 
sergeev:

Experimentei-o. Não congelou.


deu erro 129 no OrderClose.

Coloque a RefreshRates à frente.

Fechado sem erros


Sim, eu fiz o mesmo, mas às vezes ele simplesmente pára de funcionar (e não o terminal em si, mas o EA)

 
doon:
Você pode explicar porque este código às vezes congela em um lugar e você tem que reiniciar o terminal para retomá-lo?


Você foi questionado diretamente - Em que linha ele congela?

Seu código abre e fecha imediatamente a mesma ordem e está muito bem documentado, portanto deve ser imediatamente visível nos Alertas que a linha do código alcançou. Ou é apenas uma parte do código?

 
Roger:


Você foi questionado diretamente - Em que linha ele congela?

Seu código abre e fecha imediatamente a mesma ordem e está muito bem documentado, portanto você deve ser capaz de ver imediatamente no Alerta qual linha o código alcançou. Ou é apenas uma parte do código?


Não, isto é tudo código. E ele pára nas linhas de abertura e fechamento de pedidos (mas nem sempre).

 
Substitua ask and bid in the code por MarketInfo(Symbol(),MODE_ASK) e MarketInfo(Symbol(),MODE_BID), deve funcionar
 

A partir daí:

OrderSend(Symbol (), OP_BUY, 1, Ask, 10,0,0, "dsgdsf", 0, 0, CLR_NONE);

Sobre isto:

OrderSend(Symbol (), OP_BUY, 1, MarketInfo(Symbol(),MODE_ASK), 10,0,0, "dsgdsf", 0, 0, CLR_NONE);
?
 

Não, ainda está pendurado.

Após 4 minutos de enforcamento, acabou por ser erro 128(o tempo de espera da transação expirou).

Talvez isso ajude?

 

Caros colegas, ainda sou um "boneco" completona programação MQL, comecei a estudar este tópico muito recentemente. Mas eu já comecei a escrever meu primeiro EA, ou pelo menos tentei fazê-lo.

Na 182ª página deste tópico, eu expus os critérios comerciais pelos quais esta EA deve negociar. Por favor, veja o que diz (último post na página). Estou lutando há três semanas e ainda não consigo escrever aqui a parte do código responsável pelos critérios comerciais. Eu lio capítulo tutorial dedicado a este tópico, mas isso não me ajudou neste caso em particular.

Escrevi dezenas de variantes desta parte do código durante minhas batalhas de programação, mas nenhuma delas funciona corretamente. Obviamente não tenho conhecimentos suficientes, não consigo dominara MQL tão rapidamente .De qualquer forma, aqui está uma das variantes de código que funciona, pelo menos aproximadamente, como eu gostaria que funcionasse.

//+-------------------------------------------------------------------------------------+
//| Расчет значений технических индикаторов с формированием сигналов для позиций        |
//+-------------------------------------------------------------------------------------+
void GetSignal()
{
 Signal = 0;
// - 1 - == Получение значений индикаторов ==============================================
 double SAR = iSAR(Symbol(), 0, SARStep, SARMaximum, 0);
 double EnvUp = iEnvelopes(Symbol(), 0, EnvPeriod, EnvMethod, EnvShift, EnvPrice,
 EnvDeviation, MODE_UPPER, 1);
 double EnvDn = iEnvelopes(Symbol(), 0, EnvPeriod, EnvMethod, EnvShift, EnvPrice,
 EnvDeviation, MODE_LOWER, 1);
 double StochM = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_MAIN, 1);
 double StochS = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_SIGNAL, 1);
// - 1 - == Окончание блока =============================================================

// - 2 - == Генерация сигнала ===========================================================
 if (SAR < Low[1])
   {
    Signal = 3;                                                          // Закрытие SELL
    if (StochM > StochS && StochM >= 80 && StochS >= 80 && High[1] >= EnvUp && SAR < Open[1])
      Signal = 1;                                                         // Открытие BUY
   }   
 
 if (SAR > High[1])
   {
    Signal = 4;                                                           // Закрытие BUY
    if (StochM < StochS && StochM <= 20 && StochS <= 20 && Low[1] <= EnvDn && SAR > Open[1])
      Signal = 2;                                                        // Открытие SELL
   }   
// - 2 - == Окончание блока =============================================================
}


Eu sei que o código é todo torto e inclinado, e em geral as posições da baía e venda são misturadas. Mas esta é a única variante do código, quando Stochastic e Envelope estão negociando juntos, sem ignorar um ao outro. Ao mesmo tempo, os sinais parabólicos não são levados em conta no comércio por algum motivo. De qualquer forma, por favor, não me repreenda demais por essa "surra", estou bem ciente de que o código não está correto.

Por favor, ajude-me, por favor, conserte o código do meu Conselheiro Especialista. Estou tendo dificuldades com isso. Eu implementei estratégias mais fáceis (Mooving + Momentum; Mooving +RSI), mas esta funciona. Por favor, ajude. Por favor, reescreva todas as linhas erradas para fazer meu comércio EA por essas regras, que descrevina página 182. Eu realmente preciso disso.

P.S.: Eu não posso escrever todo o código, porque usei placas de MQL já prontas .

 
doon:

Não, ainda está pendurado.

Após 4 minutos de enforcamento, acabou por ser erro 128(o tempo de espera da transação expirou).

Talvez isso ajude?


Droga, mude já o centro de negociação - é claro sem nenhuma pista que se as ordens de negociação no mesmo código passam normalmente e depois pendem, significa que o servidor está morrendo. O pedido saiu e não retornou durante 4 minutos. Você vai realmente realizar negócios reais neste servidor? Cruze seu coração e troque de corretoras diferentes algumas vezes. Alguém lhe ensinou como usar um computador? Não é uma máquina de escrever ou um console de jogos - requer conhecimento. Este é um estudo e um trabalho cuidadoso. Se você tivesse uma compreensão básica da linha de comando, como abrir arquivos e pelo menos uma compreensão básica de como funciona uma rede de computadores, você faria diferentes perguntas e ficaria feliz em obter ajuda. Tudo o que você precisa agora é pingar o servidor de sua corretora e comparar o tempo de resposta com o tempo de resposta do servidor de outras corretoras. Se você passasse cerca de 30 minutos, você entenderia o que é o quê. Se você tivesse tentado delinear a interação entre o Expert Advisor e o servidor, poderíamos até mesmo estimar com a MQL4 a rapidez com que o servidor de sua corretora executa as ordens comerciais.

Não há palavras. Como você poderia tratar tão descuidadamente o processo de seu próprio trabalho?

 

daytrader19:

Por favor, reescreva as linhas erradas para que a EA negocie de acordo com as regras que descrevina página 182.

Nota.

1) A condição "linha1[1]>linha2[1]" não é suficiente para o sinal "passagem de duas linhas". Надо "линия1[1]>линия2[1]&&линия1[2]<линия2[2]"

2) O parabólico não deve ser comparado com Aberto, mas com Alto e Baixo, e note que você o calcula na barra de zero e toma Aberto[1] a partir da primeira barra.

 
doon:

Não, ainda está pendurado.

Após 4 minutos de enforcamento, acabou por ser erro 128(o tempo de espera da transação expirou).

Talvez isso ajude?


Também pode acontecer com internet ruim, por exemplo, quando o download de uma torrente é demais. Mas você não poderá verificar até segunda-feira.
Razão: