Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 976

 
AlexeyVik:
E sua mãe não permite a leitura da documentação? Por exemplo, SendMail

Sim esta função, claro, eu sei, quero dizer - uma guia na janela do terminal, (comércio, bens, histórico da conta, notícias, alertas, correio, etc.) quando o correio chega lá (no terminal interno de correio) enviado SMS ou e-mail (por exemplo, para receber mensagens sobre reinicialização do servidor, etc.)?

 
optionany:

Sim esta função, claro, eu sei, quero dizer - uma guia na janela do terminal, (comércio, bens, histórico da conta, notícias, alertas, correio, etc.) quando o correio chega lá (no terminal interno de correio) enviou um SMS ou e-mail (por exemplo, para receber mensagens sobre o reinício do servidor, etc.)?

Portanto, faça a pergunta como você pensa sobre isso.

Se você está pensando claramente, está pensando claramente...

 

Olá. Não consigo entender qual é o meu erro, ou melhor, qual é a falha neste bloco do meu programa:

//---Contabilização separada de pedidos em aberto

for(int i=OrdensTotal()-1;i>=0;i--)//OrdensTotal()-1;i>=0;i-- //Loop de pedidos
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);// Se for encontrado um pedido, então:
{
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic) continue;
}

{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if(OrderType()==OP_BUY)
Total++;
}
return;
}
//---

for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
{
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic) continue;
}

{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if(OrderType()==OP_SELL)
Total++;
}
return;
}
//---

A EA trabalha de forma estável no Testador de Estratégia e em uma conta demo, mas ao compilá-la gera 2 avisos: o valor de retorno da 'OrderSelect' deve ser verificado, o que eu não posso superar. Se for possível, por favor, me diga o que escrevi errado ou incompleto.

 
YuryVL:

Olá. Não consigo entender qual é o meu erro, ou melhor, qual é a falha neste bloco do meu programa:

//---Contabilização separada de pedidos em aberto

for(int i=OrdensTotal()-1;i>=0;i--)//OrdensTotal()-1;i>=0;i-- //Loop de pedidos
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);// Se for encontrado um pedido, então:
{
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic) continue;
}

{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if(OrderType()==OP_BUY)
Total++;
}
return;
}
//---

for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
{
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic) continue;
}

{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if(OrderType()==OP_SELL)
Total++;
}
return;
}
//---

A EA trabalha de forma estável no Testador de Estratégia e em uma conta demo, mas ao compilá-lo exibe um aviso: o valor de retorno da 'OrderSelect' deve ser verificado, o que eu não posso superar de forma alguma. Se for possível, por favor, me diga o que escrevi errado ou incompleto.


SRS para inserir código! E por que 2 loops, após verificar se não há verificação se sim e Total devem ler ambos os tipos e manter em memória para cada um separadamente? Ninguém vai entender isso! Você tem que construir lógica para deixar claro para todos o que você quer, então o compilador também entenderá!
 
YuryVL:

Olá. Não consigo entender qual é o meu erro ou melhor, a deficiência deste bloco no meu programa:

...

1) Para colar o código corretamente aqui, clique em SRC e depois copie seu código na caixa (figura abaixo).


2) Tente este código:

int Total_BUY=0, Total_SELL=0; // новые переменные как счетчики ордеров

//---Раздельный учёт открытых ордеров
for(int i=OrdersTotal()-1; i>=0; i--) // Цикл перебора ордеров
  {
   // OrderSelect() надо выбирать с помощью if
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)); // Если найден ордер, то:
     {
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
      else
        {
         if(OrderType()==OP_BUY)  Total_BUY++;  // считает открытые позиции на покупку
         if(OrderType()==OP_SELL) Total_SELL++; // считает открытые позиции на продажу
        }
     }
  }
 

Como posso ficar alerta

Alert(OrderOpenPrice());

exibiro preço do pedidoaberto com 5 dígitos decimais? NormalizeDouble(OrderOpenPrice(),Digits) não ajuda.(O pedido é pré-selecionado).

 
JoinDoe:

Como posso ficar alerta

exibir o preço de abertura do pedido com 5 casas decimais? NormalizeDouble(OrderOpenPrice(),Digits) não ajuda.(O pedido é pré-selecionado).

Alert(DoubleToString(OrderOpenPrice(),Digits));
 
Leo59:
Olá querida!

Ajude a traduzir o algoritmo para encontrar as coordenadas do ponto de interseção de dois segmentos

Do artigo:

É muito simples!
x1,y1 e x2,y2 são coordenadas de vértices do primeiro segmento;
x3,y3 e x4,y4 são coordenadas dos vértices do segundo segmento;

para encontrar o cruzamento, fazemos as equações das linhas:
primeira equação:
(x-x1)/(x2-x1)=(y-y1)/(y2-y1);
segunda equação
(x-x3)/(x4-x3)=(y-y3)/(y4-y3);
estas equações definem uma linha que passa por dois pontos, que é o que precisamos.
A partir destas equações, encontramos x e y pelas seguintes fórmulas:
x:=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
y:=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
uma vez que nossas linhas se cruzam, elas têm um ponto de interseção comum com as coordenadas (x,y), que precisamos encontrar.
Para que a interseção pertença a nossos segmentos de linha, precisamos restringi-la, ou seja, verificar a condição:
se
((((x1<=x)and(x2>=x)and(x3<=x)and(x4 >=x))or((y1<=y)and(y2>=y)and(y3<=y) and(y4>=y))
então há um ponto de interseção destes segmentos e, se não houver, não há ponto de interseção.
Você também deve verificar o paralelismo desses segmentos usando coeficientes angulares:
k1:=(x2-x1)/(y2-y1);
k2:=(x4-x3)/(y4-y3);
onde k1 e k2 são tangentes do ângulo de inclinação dos segmentos na direção positiva do eixo ОХ, se k1=k2, então os segmentos são paralelos, de modo que não têm pontos de intersecção.

E talvez alguém tenha um pronto nos arquivos?


talvez
 

Existe alguma possibilidade ou função no MT4 de redirecionar mensagens para o correio do terminal interno (sobre mudança de alavancagem, reinício do servidor, etc.) por sms ou e-mail

P.s uma guia na janela do terminal, (comércio, ativos, histórico da conta, notícias, alertas, MENSAGEM, etc.)?

 
Olá Prezados usuários do fórum!

Comecei a estudar a MQL4 e ao escrever um indicador simples me deparei com um problema que não posso resolver. A essência do problema:

1_Como encontrar Alto[i - final do dia], tenho um laço simples Fechar[i]-Abrir[i+1], preciso encontrar Alto[i - final do dia]. Por exemplo, de[i],[1],[2] e até o final do dia (PERÍODO_H1) . Não tenho certeza de como fazer isso. Existe a função "iHigh", mas é um pouco diferente.

2_ isso não é tudo, desculpe por ser atrevido, existe a função 'iBars' (Retorna o número de barras na história pelo símbolo e período correspondentes). Você pode me dizer qual combinação de funções pode calcular não apenas o número de barras com tempo, digamos, '12:00' ou '15:00' na história(PERÍODO_H1), mas também quantas barras com tempo.

Dei uma olhada em todo o manual, talvez tenha negligenciado algo, mas não encontrei nada adequado. Usado motor de busca, o resultado é o mesmo. Talvez saiba onde estas questões foram discutidas, por favor, envie-me o link.

Obrigado de antemão!