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 1154

 
KhuKhu:

Olá amigos.

Como fazer com que os valores de stop loss, tekprofit e trailing sejam exibidos como uma porcentagem ao invés de pips.

Esta fórmula é muito desordenada e não funciona em absoluto

StopLoss=NormalizeDouble(Bid-(Bid-TrailingStop)/100*TRAL_PERCENT,Digits);

Eu gostaria de ter a forma mais simples de porcentagem.

Duplo Stoploss = 0,05;

--------

Lucro=Bid-Stoploss em porcentagem(é um exemplo sujo, mas apenas para maior clareza)

Obrigado.

Um exemplo descuidado leva a uma resposta descuidada. Para entendê-lo, é preciso entender de que porcentagem é medida.

 
Андрей Касторский:
.. Quem quer que precise ajudar a escrever um EA, você pode me enviar um e-mail. Eu vou ajudar

ajudar a tomar o preço a partir da barra zero, aqui está a discussão

https://www.mql5.com/ru/forum/160683/page237#comment_5350688

 
Alexey Viktorov:

Um exemplo frágil dá origem a uma resposta frágil. Para entender, é preciso entender contra o que as porcentagens são medidas.

Entendi.

Vou tentar ser mais claro.

Meu código está originalmente escrito da seguinte maneira:

StopLoss duplo externo =0;

duplo TakeProfit externo =0;

duplo SL_PERCENT externo = 0,02;

duplo TP_PERCENT externo = 0,03;

duplo externo TRALL_PERCENT = 0,01;

Lotes duplos externos =0,5;


Ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,NormalizeDouble(OrderOpenPrice+(OrderOpenPrice + StopLoss)/100*SL_PERCENT,Digits),NormalizeDouble(OrderOpenPrice(OrderOpenPrice - TakeProfit)/100*TP_PERCENT,Digits),",Magic,0,Red);

O StopLoss é acionado mas não por 0,02% mas por 0,43%, o que é incorreto. Não sei sobre TakeProfit como nunca o experimentei antes, mas parece estar incorreto também.

Tenho algumas sugestões de que o código não está correto.

Mais uma coisa, talvez seja importante. Minhas ordens estão abertas para todos os meus depoimentos para 3-4 pares. Às vezes por cinco.


Também quero mudar parâmetros como StopLoss, Takeprofit, TrailingStop em porcentagem, não em pontos.

Por exemplo,

1) Takeprofit=OrderOnProfit+%TP_PERCENT

2) Stoploss=OrderOnPrice-%SL_PERCENT

Isto é

ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,%,%,",Magic,0,clrGreen);


Não sei como modificá-lo ainda mais para fins de rastreamento.

Eu tirei uma amostra do tutorial, mas obviamente estou fazendo algo errado.

3.) TrailingStop=Bid-%TRALL_PERCENT

caso 0: // Pedido de compra

if (NormalizeDouble(OrderOpenPrice-SL*Point,Digits)*SL_PERCENT/100<=(OrderOpenPrice-Ask) // Se abaixo

NormalizeDuplo(Bid-(Bid-TS)/100*TRAL_PERCENT,Dígitos)

|| NormalizeDouble(SL,Digits)==0)

{

SL=Bid-TS*Point; //então modificá-lo

string Text="Buy "; // Texto para compra

Modify=true; // designado para modificar.

}


Espero realmente ter sido capaz de explicar.

Obrigado.

 

Como implementar corretamente a abertura de um negócio (OrderSend) estritamente no início da vela - OnTimer e/ou OnTick,

A fim de não sobrecarregar o terminal (20-30 cartas abertas e rastreadas simultaneamente)?

descobriu que o atraso no aparecimento de um novo tique no início de um castiçal pode ser de até 5-10 segundos; o intervalo com o tique anterior é significativo (negativo para as condições da transação)

p.s. ao mesmo tempo no Expert Advisor é suposto notificar sobre um possível negócio 1-2 minutos antes da abertura do negócio, ou seja, antes do início da abertura de uma vela.

 
maxsoft:

Como implementar corretamente a abertura de um negócio (OrderSend) estritamente no início da vela - OnTimer e/ou OnTick,

a fim de não sobrecarregar o terminal (20-30 cartas abertas e rastreadas simultaneamente)?

Foi descoberto que o atraso no aparecimento de um novo tick no início de uma vela pode ser de até 5-10 segundos com um intervalo significativo em relação ao tick anterior (é negativo para as condições do negócio)

p.s. neste caso, o Consultor Especialista deve informar preliminarmente sobre um possível negócio 1-2 minutos antes da abertura do negócio, ou seja, antes do início da abertura de uma vela.

Você precisa visualizar todos os gráficos abertos no temporizador para ver se uma nova barra aparece.

Você tem que criar uma série de indicadores para instâncias de classes - uma classe para cada período de tempo de cada gráfico aberto.

A classe que irá monitorar a abertura de um novo bar pode ser encontrada neste artigo.

Abra o gráfico - acrescente-o ao conjunto de gráficos abertos. Feche a tabela - exclua-a da matriz.

No laço do temporizador você passa por uma série de indicações para instâncias de aulas e verifica o fato da abertura de uma nova barra, que a classe retornará no caso da formação de uma nova barra.

 
Artyom Trishkin:

Você precisa visualizar todos os gráficos abertos no temporizador para ver se uma nova barra aparece.

Você tem que criar uma série de indicadores para as instâncias de classe ...

E quanto ao uso da MQL4?

E o que fazer com - "...é suposto notificar preliminarmente sobre um possível negócio 1-2 minutos antes da abertura do negócio, ou seja, antes de uma vela abrir...", ou seja, dentro de um bar

 

Bem-vindo ao tópico https://www.mql5.com/ru/forum/208120#comment_5412193

Não é possível encontrar um consenso.

Играем в блиц ЧТО? ГДЕ? КОГДА? 3 вопроса по 20 секунд
Играем в блиц ЧТО? ГДЕ? КОГДА? 3 вопроса по 20 секунд
  • 2017.07.07
  • www.mql5.com
Народ, подскажите пожалуйста, заморочился я тут по поводу AccountBalance() и AccountLeverage(). 1...
 

Antes de exibir o tipo duplo, eu o normalizo para 2 casas decimais, mas às vezes ele não funciona. Por quê? Aqui está uma parte do código.

prof[num]=(string)NormalizeDouble((double)prof[num]+(double)profit2,2);

Tipo prof[] é string

E falha da seguinte maneira


 
Vladimir Tkach:

Antes de exibir o tipo duplo, eu o normalizo para 2 casas decimais, mas às vezes ele não funciona. Por quê? Aqui está uma parte do código.

Tipo prof[] é string

Apresenta falhas da seguinte maneira


DoubleToString()

DoubleToString

Converte um valor numérico em uma cadeia de texto.

CordelDoubleToString(
valor duplo,//número
dígitos int=8//número de casas decimais
);

Parâmetros

valor

[em] O valor é um valor de ponto flutuante.

dígitos

[em] O formato da precisão. Se o valor dos dígitos estiver entre 0 e 16, então será obtida a representação em cadeia do número, com o número de casas decimais especificado. Se o valor dos dígitos estiver entre -1 e -16, então será obtida uma representação em cadeia do número em formato científico com o número de casas decimais especificado. Em todos os outros casos, a representação em cadeia do número terá 8 casas decimais.

Valor retornado

Uma cadeia contendo a representação de caracteres do número no formato de precisão especificado.

Exemplo:

Imprimir("DoubleToString(120.0+M_PI) : ",DoubleToString(120.0+M_PI);
Print("DoubleToString(120.0+M_PI,16) : ",DoubleToString(120.0+M_PI,16);
Print("DoubleToString(120.0+M_PI,-16) : ",DoubleToString(120.0+M_PI,-16);
Imprimir("DoubleToString(120.0+M_PI,-1) : ",DoubleToString(120.0+M_PI,-1));
Print("DoubleToString(120.0+M_PI,-20) : ",DoubleToString(120.0+M_PI,-20);

 

Um bicho maravilhoso ou outro.

Acrescentamos as entradas:

input datetime test                                =0;

Compilar. Com a data 1970.01.01.01 zero, não é possível ajustar a hora para 00, 01 ou 02 nos ajustes.