[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 497
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
inserir código no EA, eu tinha algo assim até que o apaguei, eu estava usando um cronograma de hora em hora
orderselect - selecione a última ordem na história
tomar o tempo de seu fechamento e retirar a hora de fechamento
e antes de abrir o pedido, estabelecer uma condição de que a hora atual NÃO seja igual à hora de fechamento do pedido a partir do histórico
Ajude-me com este problema, minha variável TP é zerada após a segunda atualização de preço, ou seja, o consultor abre um pedido, e TP e Bid não são ambos iguais a zero, então o preço é atualizado novamente e TP é zero, embora não exista tal comando no código, eu tive um problema em puxar SL para cima, mas agora acontece que o problema está na definição de TP
int start()
{
//
double TP;
double SL;
if (OrderTotal()==0)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,0,Bid+4*Point);
OrderSelect(OrdersTotal()-1,SELECT_BY_POS);
TP=OrderTakeProfit();
}
Alerta ("TP=" + TP);
Alerta ("Bid=" + Bid);
if (OrderTotal()>0)
{
if (TP-Bid<3*Point)
{
Alerta ("Aproximação TP por 1 ou 2");
Alerta ("TP=" + TP);
Alerta ("Bid=" + Bid);
}
}
//----
return(0);
}
Ajude-me com este problema, minha variável TP é zerada após a segunda atualização de preço, ou seja, a EA abre um pedido e exibe valores de TP e Bid, ambos não são iguais a zero, então o preço é atualizado novamente e TP é zero, embora no código, sem tais comandos, eu tive um problema com o puxar SL para cima, mas agora acontece que o problema está na definição de TP
double TP, SL;
int start()
{
//----
if (OrdersTotal()==0)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,0,Bid+4*Point);
OrderSelect(OrdersTotal()-1,SELECT_BY_POS);
TP=OrderTakeProfit();
}
Alert ("TP=" + TP);
Alert ("Bid=" + Bid);
if (OrdersTotal()>0)
{
if (TP-Bid<3*Point)
{
Alert ("Приблизился к ТП на 1 или 2");
Alert ("TP=" + TP);
Alert ("Bid=" + Bid);
}
}
//----
return(0);
}
Favor aconselhar como abrir um pedido em um novo bar somente uma vez ????
Leia aqui: https://www.mql5.com/ru/forum/134437
Olá a todos!
Há dois sinais na estratégia: um primário e um secundário. Um comércio é aberto quando o segundo sinal aparece o mais tardar 12 horas depois. Pergunta: Como posso ensinar meu Conselheiro Especialista a não reagir ao sinal, se ele aparecer após 12 horas? Por favor, se você puder dar um exemplo concreto de código
Olá a todos!
Há dois sinais na estratégia: um primário e um secundário. Um comércio se abre quando o segundo sinal aparece no máximo 12 horas mais tarde. Pergunta: Como posso ensinar meu Conselheiro Especialista a não reagir ao sinal, se ele aparecer após 12 horas? Por favor, se você puder me dar um exemplo do código
Oi Dmitry. De minha parte, estou pronto para lhe oferecer a seguinte variante. Para analogia, veja o acionamento dos critérios de negociação deste artigo - há também dois sinais - veja depois da segunda figura "A primeira coisa a esperar no gráfico do DeMarker é o momento em que o DeMarker cruza as linhas MA rápida e lenta em torno de 0,7 para uma posição curta". Este é o primeiro sinal preliminar. Em seguida, esperamos pela travessia das próprias linhas MA. Este é o sinal principal, após o qual as leituras do indicador de Taichi podem ser feitas. Se as linhas MA não forem cruzadas, é considerado um sinal falso e o movimento de preços continuará. Eis como ele é implementado no meu código - na inclusão incluída das corujas que são responsáveis pelo acionamento dos critérios comerciais.
O truque principal é trabalhar através dos dois abaixo (no final) da inclusão, ajustando e reinicializando as bandeiras quando um ou outro critério comercial é acionado.
Além disso, você salvará o tempo atual quando o critério principal for acionado usando TimeCurrent, ou seja, você especificará uma expressão do tipo x = TimeCurrent antes doretorno(OP_BUY); oureturn(OP_SELL); onde x é uma variável global do tipo datetime por analogia na primeira funçãoint_op_DeMarker. Depois faça o mesmo com a segunda funçãoint type_op_MA. - aí você memoriza a variável y = TimeCurrent;
Então você compara o valor dessas duas variáveis com o sinal de mais no cálculo do bloco de critérios comerciais (acontece que você não precisa do análogo de trabalhar com valores UTC - em vez disso, você faz uma comparação do tempo de recebimento de seus dois sinais comerciais):
P.S. Mais, estou lhe enviando uma função para a possibilidade de otimizar o valor do TF de trabalho.
P.P.S. É assim que esta estrutura de código está organizada em meu código. Não excluo que existam variantes de código muito melhores para o cumprimento de tais condições da EA. :-)))
Como posso calcular um lucro sobre um par de moedas em minha EA?
Por exemplo, tenho sete pedidos de compra abertos em euros a preços diferentes. Como calcular um lucro em euros sem afetar outros pedidos em outros pares? ????
usar o SelectOrder para escanear todas as ordens abertas
verificar o par necessário (OrderSymbol)
então adicione o lucro a qualquer variável se for o OrderProfit necessário
aqui está um link com funções úteis https://docs.mql4.com/ru/trading/OrderSelect
à esquerda há um menu com operações, todas elas são descritas ali