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 383

 
clubsmi:

Favor informar como calcular as porcentagens na MQL4

por exemplo x=10+3% como escrevê-lo de forma programática?

Não consigo encontrá-lo no livro de referência.



x=10*1.03
 
r772ra:


x=10*1.03



ok! mas não vou recalculá-los todas as vezes, preciso de uma função que calcule as porcentagens por si só

y=3; // o número continua mudando a cada tique

x=10+yP; // em vez de P você precisa de uma porcentagem. não posso escrevê-lo em mql

 
if(Line_7 > Lines_1 && Lines_1 > Line_6)
{
OrderSend(Symbol(),OP_BUY,Lots_Typ,Ask,5,0,0);
}
if(AccountProfit() > 50)
{ 
OrderClose(Symbol(),5,Ask,0);
}
Cadeia de códigos lógicos:

1 Se a linha 7 estiver acima da linha 1, com a linha 1 acima da linha 6,
2 então
3 um pedido de compra é aberto com Lots_Typ volume, possível deslizamento de 5 pips, sem SL e TP, ao preço de fechamento.

1 Se o lucro potencial desta conta for superior a $50,
2 então
3 todos os pedidos são fechados, independentemente de suas propriedades (volume, compra/venda, ...).

A cadeia lógica está alinhada corretamente, mas o código na cadeia lógica não está.

OrderClose(Symbol(),5,Ask,0);
O erro está aqui.
Se você construir uma cadeia lógica, em relação ao código acima, nós obtemos:
Fechando 5 lotes de um pedido com um preço de fechamento e um possível deslize de 0 pips.

Como corrigi-lo? Por favor, informe.
 
clubsmi:



ok! Não posso recalculá-los toda vez, preciso de uma função que calcule a porcentagem por si só

y=3; // o número muda constantemente a cada tique

x=10+yP; // precisamos de porcentagem em vez de P. Não posso escrevê-la em mql.

em relação a quê?
 
clubsmi:



ok! Não posso recalculá-los toda vez, preciso de uma função que calcule a porcentagem por si só

y=3; // o número muda constantemente a cada tique

x=10+yP; // em vez de P, precisamos de porcentagem.

//+----------------------------------------------------------------------------+
double Percent(double x, double y) {return(x*0.01*y);}
//+----------------------------------------------------------------------------+

x - número, y - porcentagem necessária

número de passagem x e a porcentagem desejada dele para y, a saída é a porcentagem y do número x

 
Link_x:
Cadeia de códigos lógicos:

1 Se a linha 7 estiver acima da linha 1, com a linha 1 acima da linha 6,
2 então
3 uma ordem de compra é aberta com volume Lots_Typ, possível deslizamento de 5 pontos, sem SL e TP, a preço fechado.

1 Se o lucro potencial desta conta for superior a 50 dólares,
2 então
3 todos os pedidos serão fechados, não importa quais sejam suas propriedades (volume, compra/venda, ...).

A cadeia lógica está correta, mas o código por cadeia lógica não está.

O erro está aqui.
Se construirmos uma cadeia lógica, em relação ao código acima, obtemos:
Fechando 5 lotes de um pedido com um preço de fechamento e um possível deslize de 0 pips.

Como corrigi-lo? Por favor, informe.

Caro Senhor, leia atentamente a Documentação,

Especificamente

O bool OrderClose( int ticket, lote duplo, preço duplo, int slippage, cor Cor=CLR_NONE)
Fechamento de posição. Devolve VERDADEIRO se a função for concluída com sucesso. Devolve FALSO se a função falhar. Para obter informações sobre o erro, chame a função GetLastError().
Parâmetros:
bilhete - Número de série único do pedido.
lotes - Número de lotes para fechar.
preço - O preço de fechamento.
escorregamento - O valor do escorregamento máximo em pips.
Cor - Cor da seta de fechamento na tabela. Se o parâmetro estiver faltando ou seu valor for CLR_NONE, a seta não é mostrada no gráfico.
Exemplo:
 if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75) { OrderClose(order_id,1,Ask,3,Red); return(0); }

 
r772ra:

Caro Senhor, leia atentamente a Documentação,

especificamente

O bool OrderClose( int ticket, lote duplo, preço duplo, int slippage, cor Cor=CLR_NONE)
Fechamento de posição. Devolve VERDADEIRO se a função for concluída com sucesso. Devolve FALSO se a função falhar. Para obter informações sobre o erro, chame a função GetLastError().
Parâmetros:
bilhete - Número de série único do pedido.
lotes - Número de lotes para fechar.
preço - O preço de fechamento.
escorregamento - O valor do escorregamento máximo em pips.
Cor - Cor da seta de fechamento na tabela. Se o parâmetro estiver faltando ou seu valor for CLR_NONE, a seta não é mostrada no gráfico.
Exemplo:

Eu sei de tudo isso.
Como posso fazer para que todos os pedidos sejam fechados, independentemente de suas características?
 
Link_x:
Eu sei tudo isso.
Como faço para que todos os pedidos sejam fechados, independentemente de suas características?

Que bom para você,

OrderClose(Symbol(),5,Ask,0) //зто твое

OrderClose(order_id,1,Ask,3,Red); // А зто пример из документации

// Найди отличие
 
artmedia70:

x - número, y - porcentagem requerida

passar o número x e a porcentagem desejada y, a saída é a porcentagem y do número x



Mesmo o que eu precisava, muito obrigado... É tão fácil, eu estive pensando por meio dia! Obrigado novamente!

 
r772ra:

Que bom para você,


No meu exemplo: número de ordem aleatório, volume 5, a preço de fechamento, com deslizamento 0, sem seta.
No exemplo do documento: cálculo do número do pedido por order_id, o volume é 1, pelo preço de fechamento, com o slippage 3, a seta é vermelha.

1 há cálculo order_id - sem cálculo order_number
2 volume (1) - volume (5)
3 escorregamento (3) - escorregamento (0)
4 seta vermelha - sem seta

Diferenças encontradas.
Agora vamos voltar à tarefa.

Tarefa 1
Escrever código que encerrará todas as ordens abertas sem exceções.

Meu raciocínio.
É possível escrever este código, mas surge a pergunta: "Como?
1 - criar um código que monitore todos os pedidos abertos (volume total, número de agrupamento de pedidos, compra/venda, deslizamento aceitável).
2 - Criar código que abre ordens e envia dados para o código que monitora todas essas ordens (é criado um tipo de banco de dados).
3 - Criar um código que feche todos os pedidos sob certas condições e que só tome os dados não utilizados do "banco de dados peculiar".
Os dados não são reutilizados.

Poderíamos fazer desta forma, mas acho que existe outra variante menos incômoda.
É por isso que pergunto "como?".