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 513
![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
Estou fazendo isso bem.
y = OrderOpenPrice()-Ask;
Eu subtraio o preço atual do preço do último pedido aberto?
int i_buy=0; int i_sell=0;
for(int i=0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol()){
switch(OrderType()){// Есть ли открыте ордера
case OP_BUY:
i_buy++;
break;
case OP_SELL:
i_sell++;
break;
}
y = OrderOpenPrice()-Ask;
}
}
if((i_buy==0 && i_sell==0) || y > Step) //--- нет открытых ордеров, открываем или расстояние от последнего ордера до текущей цены. Больше step
OrderSend(Symbol(), OP_BUY,StartLot,Ask,Slippage,0,Ask+TakeProfit*Point(),WindowExpertName()+" "+(string)0,0,0,clrBlue);
https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots
duplo z; //declararregar a variável "z
duplo y; //declararregar a variável "y
if(OrderSelect(10,SELECT_BY_POS)==verdadeiro) // se a ordem selecionada (por bilhete) estiver presente
{
OrderLots()=z //atribuir o lote para esta ordem para a variável "z".
OrderOpenPrice()=y //atribuir o preço aberto à variável "y".
}
tente isto
Só não confunda as pessoas e diga besteiras, por favor. Você diz por bilhete, mas você escreve a seleção por índice. E se você selecionar por bilhete, não precisa especificar o pool - a função o ignora e o seleciona em qualquer uma das duas listas - naquela em que se encontra. E para verificar de qual lista a ordem é selecionada, devemos verificar o tempo de fechamento da ordem após a seleção bem sucedida e se é maior que zero - então a ordem já foi fechada, caso contrário - ela é selecionada da lista de posições abertas
Você não está atribuindo o valor do lote a uma variável, e vice-versa - você está tentando atribuir o valor da variável à função que devolve o lote da ordem selecionada - isso é um absurdo
Exatamente a mesma coisa que você está tentando fazer com a função que retorna o preço de abertura.
artmedia70:
Diga-me o que estou fazendo de errado. Tudo parece estar correto.
if((i_buy==0 && i_sell==0) |||| y > Etapa)
Ou (i_buy==0 && i_sell==0) ou y > Step. Se qualquer uma delas for verdadeira. Em seguida, pulamos e abrimos um pedido.
Se Alpari - você nunca poderia. Se outra empresa de corretagem, depende da conta. Se tivermos uma boa relação de trabalho com a Alpari, teremos uma melhor compreensão do mercado. Os termos de troca devem ser estudados antes de começar a fazer algo, está tudo escrito ali.
O helpdesk 8-800-200-01-31 explicou que no final da semana passada eles tinham consertado um bug que permitia a abertura de pedidos em contas ECN ao mesmo tempo em que SL e TP eram configurados. Eu fechei a última posição na quinta-feira.
Você está certo no fato de que as regulamentações comerciais não dizem nada sobre isso e que somente OrderModify() economizará agora.
Obrigado pela resposta.
artmedia70:
Diga-me o que estou fazendo de errado. Tudo parece estar correto.
if((i_buy==0 && i_sell==0) |||| y > Etapa)
Ou (i_buy==0 && i_sell==0) ou y > Step. Se qualquer uma delas for verdadeira. Em seguida, pulamos e abrimos um pedido.
Eu praticamente não entendo a pergunta...
Não sei o que nos falta, mas uma ordem pode ser aberta... Isto é, se esta condição for cumprida e uma ordem deve ser aberta, então
Posso lhe dizer o que diz aqui:
Se i_buy e i_sell forem ambos iguais a zero, uma ordem pode ser aberta. Ou, se algum deles não for igual a zero, ou talvez até ambos não sejam iguais, mas se y for maior que Step, então abra também uma ordem.
Eu praticamente não entendo a pergunta...
Não sei o que nos falta, mas uma ordem pode ser aberta... Isto é, se esta condição for respeitada e uma ordem deve ser aberta.
Posso lhe dizer o que diz aqui:
"Abra um pedido se i_buy e i_sell forem ambos iguais a zero. Ou se algum deles não for igual a zero, ou talvez até ambos não sejam iguais, mas se y for maior que Step, então também deve ser aberta uma ordem.
Eu entendo corretamente no loop. Prosseguimos da primeira ordem aberta até a última. Por conseguinte, devemos tomar o preço do último pedido.
Há mais. Eu coloquei Alert("d") no OnTick. Eu executei o código no testador, mas não ouvi nenhum sinal sonoro nem janelas.
No ciclo de bifurcação, entendo corretamente. Estamos indo da primeira ordem aberta até a última. De forma correspondente, tomo o preço do último pedido.
Eu também tenho isto. Eu coloquei Alert("d") no OnTick. Eu executei o código no testador, mas não ouvi nenhum sinal sonoro nem janelas.
Boa tarde!
Como lutar com o "MetaEditor não encontrado" ao tentar editar um EA? MetaTrader build 600.
Parece que não me lembro de tal problema em construções mais antigas.
Pode ser explicado pelo fato de que o computador em que estou trabalhando é de baixa potência e carregado 50-75% do tempo. Tenho 7 instâncias MT4 rodando nele, mas em condições normais (isto é, sem carga externa como acesso via TeamViewer e tentando lançar o MetaEditor) seu desempenho é suficiente, e o Task Manager rodando em segundo plano mostra o uso de CPU avg <=45-50% durante 15-20 min.
Este problema não ocorre em 100% dos casos e o MetaEditor, após demonstrar paciência e persistência incomuns, funcionará todas as vezes da 5ª-10ª-25ª vez. Mas é realmente irritante tentar iniciar o MetaEditor por meia hora.
Os alertas no testador são impressos no registro do testador. E quanto ao laço, saltar, selecionar e forçar o bruto não são claros. Você pode obter a essência do que você quer como resultado?
Eu só quero escrever o robô mais simples. Funciona por martin, por si só.
É aqui que reside o erro.
y = OrderOpenPrice()-Ask;
Eu não recebo números inteiros como eu pensava. Mas, por exemplo, 0,0044. Como eu consigo 44, um número inteiro?
Eu só quero escrever o robô mais simples. Funciona por martin, por si só.
É aqui que reside o erro.
y = OrderOpenPrice()-Ask;
Eu não recebo números inteiros como eu pensava. Mas, por exemplo, 0,0044. Como eu consigo 44, um número inteiro?