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

 
hoz:

Eu mesmo cometi o maldito erro. Na verdade, não há lógica alguma. Para abrir um pedido pendente de acordo comhttps://book.mql4.com/ru/appendix/limits, o preço de abertura deve ser abaixo de Bid (para venda) ou acima de Ask (para compra). Estou fazendo o que é necessário.

De vez em quando eu recebo 0 e 130 erros. Embora 130 seja um erro de parada errada, que pode acontecer durante a modificação, mas não durante a abertura do pedido.

Na imagem da tela, a situação e a impressão exibida pela função pr.

Por favor, informe como se livrar deste bug. Estou realmente farto e cansado deste erro. Logicamente, não se trata de forma alguma do assunto.

Victor, além da conformidade acima-abaixo, você precisa usar a liberação preventiva, porque enquanto o pedido está sendo enviado, o preço não está parado, então você recebe um degrau ou um passo para a área restrita! Insira como em modificação e um deslizamento maior, e você ficará bem! Trabalhando no Real sem erros! Boa sorte!
 
borilunad:
Victor, além de acima-abaixo, você precisa usar uma lacuna preventiva, porque enquanto o pedido está sendo enviado, o preço não está parado, então você recebe um degrau ou um passo para a zona proibida! Insira como em modificação e um deslizamento maior, e você ficará bem! Trabalhando no Real sem erros! Boa sorte!


Boris, então o escorregamento já vale 3, isto, como eu entendo 3 pontos. De quanto mais você precisa?

Você quer dizer assim:

bool OpenBuy()
{
   int ticket = -1;
   double OOP = High[1] + i_thresholdToUp * pt;
   pr ("ND(OOP) = " + ND(OOP) + " ; Ask = " + Ask);
   pr ("g_stopLevel = " + g_stopLevel);

   if ((ND(OOP) - g_stopLevel)> Ask)
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0, CLR_NONE);
   else pr ("Ордер послать не удалось " + GetLastError());
   
   if (ticket > 0)
   {
 //      lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                            // .. успешно выполнены
       return (true);
   }
}

Estou me perguntando como implementá-la de uma maneira melhor, para não colocar funções extras aqui.

 

hoz, em eu estava me perguntando como encurtar ainda mais o prazo.Veja: se colocarmos uma variável

bool _if=((2*trend-1)*Δ≥const);//аналогично _if=(±Δ≥const)

temos cnt=cnt+step, onde

if(_if) step=1;
}else{ step=-cnt;
}

Mas 1=cnt/cnt, a -cnt=cnt/(-1), a única diferença é o denominador. Agora lembre-se que x^0=1, x^1=x, ou seja, podemos colocar nossa variável booleana _if no expoente, ou seja,step=cnt/a*(cnt^_if); onde

if(_if) a=1;
}else{ a=-1;
}

Mas ±a é supostamente 2*_if-1, ou seja

bool _if=((2*trend-1)*Δ≥const);//аналогично _if=(±Δ≥const)
int step=cnt/(2*_if-1)*(cnt^_if);//принимает два значения: 1 и -cnt
cnt=cnt+step;

Ou simplificamos

bool _if=((2*trend-1)*Δ≥const); cnt=cnt+cnt/((2*_if-1)*(cnt^_if));
 
hoz:


Boris, então o escorregamento já é 3, é o que eu entendo por 3 pontos. De quanto mais você precisa?

Você quer dizer assim:

Estou me perguntando como implementar isto de forma mais inteligente para não colocar funções extras aqui.

Espero que o deslize seja de 3 para 4 dígitos se você precisar de 30 para 5!
 

Rapazes, por favor, avisem um roteiro que dê uma mensagem de que o mercado está aberto e que o mercado está fechado.

Isto é, quando a segunda-feira chega às 0.00.01 dá uma mensagem de que o mercado abre, depois a mensagem de que "o mercado está aberto", de forma semelhante, que o mercado fechou.

Eu escrevi um roteiro, mas não funciona (( Ajude-me a descobri-lo.

// определяем начало и конец торгов.
      // начало торгов в понедельник в 0.00.01
      
      if(DayOfWeek()==1 && Hour()== 0 && Minute()== 0 && Seconds()==01)
      {
         Alert("Рынок открылся.");
      }
      // конец торгов в Пятницу в 23.59.59
      if(DayOfWeek()==5 && Hour()== 23 && Minute()== 59 && Seconds()==59)
      {
         Alert("Пятница, Рынок закрылся.");
      }

 

Existe algum robô capaz de fazer pedidos pendentes BAY STOP e SELL STOP? Em um determinado momento , com um passo mínimo de disparo do preço naquele momento. Em resumo, sob as notícias. Eu não tenho tempo com minhas mãos.
 
hoz:

Eu mesmo cometi o maldito erro. Na verdade, não há lógica alguma. Para abrir um pedido pendente de acordo comhttps://book.mql4.com/ru/appendix/limits, o preço de abertura deve ser abaixo de Bid (para venda) ou acima de Ask (para compra). Estou fazendo o que é necessário.

De vez em quando eu recebo 0 e 130 erros. Embora 130 seja um erro de parada errada, que pode acontecer durante a modificação, mas não durante a abertura do pedido.

Na captura de tela a situação e a impressão exibida usando a função pr.

Por favor, informe como se livrar deste bug. Estou realmente farto e cansado deste erro. Logicamente, não se trata de forma alguma do assunto.

O 130º erro não é necessariamente uma ordem de parada. É também uma distância de colocar ordens pendentes pelo menos em MarketInfo(Symbol(), MODE_STOPLEVEL)
 
borilunad:
Espero que deslize 3 por 4 dígitos, se você precisar de 30 por 5!

Portanto, não há nenhum deslize no testador... Corrigido a 30.

artmedia70:
130º erro não é necessariamente parar ordens. É também uma distância de ordens pendentes pelo menos igual a int MarketInfo(Symbol(), MODE_STOPLEVEL)

Aqui está:

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
   int ticket = -1;
   double OOP = High[1] + i_thresholdToUp * pt;
   pr ("ND(OOP) = " + ND(OOP) + " ; Ask = " + Ask);
   pr ("g_stopLevel = " + g_stopLevel);

   if (ND(OOP)> (Ask + g_stopLevel))
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 30, 0, 0, NULL, i_magic, 0, CLR_NONE);
   else pr ("Ордер послать не удалось " + GetLastError());
   
   if (ticket > 0)
   {
 //      lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                            // .. успешно выполнены
       return (true);
   }
}

Onde:

g_stopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL) * pt;

Está escrito da mesma forma que o seu Artem. Ontem foi a mesma coisa pela lógica. Mas os erros estão se acumulando. Não faz sentido acrescentar pontos extras para que funcione no testador, onde não há nenhuma solicitação ou escorregamento.

O que devo fazer de uma forma mais universal para evitar cometer os mesmos erros? Já vi tantos Expert Advisors que nunca adicionaram 2-3 pontos extras, exceto por deslizamento. Afinal de contas, neste caso haverá um desvio de 6pp em relação ao preço exigido. E isto não está certo. Os Conselheiros Especialistas são escritos tanto para carrapatos como para atas. E parece que pode haver precisão no comércio. Portanto, quero que seja preciso, que não tenha travessões enormes.

 

Amigos!

Surgiu uma questão global

É possível fazer o tick stream no terminal nos fins de semana, para que eu possa escrever e depurar EAs tranquilamente?

Já tenho algumas dicas de como utilizá-lo em meu robô comercial.

não posso usar um carrapato acionando a EA, preciso de um fluxo de carrapatos em uma determinada faixa

existe tal coisa na natureza?

servidores mt4 que imitam citações de streaming nos fins de semana ?

 
pasha5282:

Rapazes, por favor, avisem um roteiro que dê uma mensagem de que o mercado está aberto e que o mercado está fechado.

ou seja, quando na segunda-feira 0.00.01 dá a mensagem de que o mercado abre, então a mensagem de que "o mercado está aberto", de forma semelhante, que o mercado fechou.

escreveu um roteiro, mas por alguma razão ele não funciona (( ajude-me a descobri-lo.


Se for um roteiro e estiver localizado na pasta de scpirts, então funcionou uma vez e foi removido do gráfico. A fim de mantê-lo permanentemente, escreva seu código dentro deste


int start()
{
   while(!IsStopped())
   {
      // вот сюда

      Sleep(500);
   }
}
Razão: