Boa tarde Connoisseurs! Você já esgotou o dia mais difícil do ano? Podemos começar a trabalhar? ;=).
Eu desenhei um EA, tudo é bom, mas o MQL, como eu entendo, funciona no ambiente MT4. Quero que funcione com um software que funcione diretamente com a troca. Existem outros compiladores MQL? Se não, que linguagem devo usar para reescrever o MQL?
Não tenho uma pausa. Qual é a razão pela qual a EA pode não "ver" suas ordens? Tenho diferentes tempos de servidor e computador, talvez por causa disso?
Anatoliy Ryzhakov: Não tenho uma pausa. Qual a razão pela qual a EA não pode "ver" suas ordens? Meu tempo de servidor e meu tempo de computador são diferentes.
O tempo de cada um é diferente. Comece sem se apressar de longe. 1. Verifique o que a função OrdersTotal lhe dá. Seu valor depende das configurações do histórico: Hoje, últimos 3 dias, semana passada, ... Ajuste-o como preferir. 2. Em seguida, crie um ciclo e dê saída a todos os pedidos com Alerta. Isto se chama depuração - é uma parte muito importante do trabalho de um programador. Mais importante do que escrever código.
Favor informar como corrigir o erro de quantidade de lotes inválidos para a função FreeMarginCheck na EA, ao definir acidentalmente o valor negativo do volume (lote). Ter uma mensagem sobre o lote errado, sem mensagem de erro, no testador .
O tempo de cada um é diferente. Comece sem se apressar de longe. 1. Verifique o que a função OrdersTotal lhe dá. Seu valor depende das configurações do histórico: Hoje, últimos 3 dias, semana passada, ... Ajuste-o como quiser. 2. Em seguida, crie um ciclo e produza todos os pedidos usando Alert. Isto se chama depuração - é uma parte muito importante do trabalho de um programador. Mais importante do que escrever o código.
Ela compila bem, sem erros, mas não é apropriada para o meu caso.
Encontrei o seguinte código
#property copyright"Влад Сергеев для mmgp"#property version"1.00"#property strict#property script_show_inputsinputint orders = 4; //всего ордеров в серии inputbool buy = true; //флаг разрешающий/запрещающий покупки inputbool sell = false; //флаг разрешающий/запрещающий продажи inputint magic = 100500; //уникальный номер для ордеров, открываемых этим скриптом inputdouble lot = 0.01; //объем каждого ордера серии inputint tp = 100; //тейк профит, в пунктах inputint sl = 100; //стоп лосс, в пунктах inputint slip = 2; //допустимое проскальзывание на открытии, в пунктах (для ECN, где открытие по рынку - игнор) //+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnStart()
{
int i=0; // для чего эта переменная
int ticket=0;
if(buy)
{
while(i<orders) // здесь эта переменная используется чтобы сравнивать ордера или для чего
{
RefreshRates(); // если убрать эту функцию коду хуже не становится
ticket=OrderSend(Symbol(),OP_BUY,lot,NormalizeDouble(Ask,Digits),slip,0,0,"",magic,0,clrBlue); //здесь понятно
if(ticket!=-1) // эта строчка тоже не понятна
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) // функция для выбора ордера это логично но тоже не понятно как ей пользоваться
{
OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-sl*Point,Digits),NormalizeDouble(OrderOpenPrice()+tp*Point,Digits),0,clrBlue);
// эту строчку тоже хотел бы чтобы объяснили
}
}
i++; // что увеличивается на оду единицу это относится к магическому номеру ордера чтобы программа понимала что у неё есть ордера
}
}
i=0;
if(sell) // прошлая запись была для покупак эта для продаж
{
while(i<orders)
{
RefreshRates();
ticket=OrderSend(Symbol(),OP_SELL,lot,NormalizeDouble(Bid,Digits),slip,0,0,"",magic,0,clrRed);
if(ticket!=-1)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+sl*Point,Digits),NormalizeDouble(OrderOpenPrice()-tp*Point,Digits),0,clrRed);
}
}
i++;
}
}
}
//+------------------------------------------------------------------+
Talvez possa ser usado, mas não entendo o significado das cordas. Este código pode ser usado quando reescrito para se adequar à minha condição?
Vocês podem me dizer como escrever no código do Expert Advisor para abrir 3 negócios ao mesmo tempo com a capacidade de definir SL?
Esta é minha condição
Fui aconselhado a usar a função (OrderTotal()), mas ela não se encaixa no meu caso. Eu tenho-o assim
Ela compila bem, sem erros, mas não é apropriada para o meu caso.
Encontrei o seguinte código
Talvez possa ser usado, mas não entendo o significado das cordas. Posso usar este código se eu o reescrever para se adequar à minha condição?
Tente desta forma
pos=0; // contador de pedidos
for(int i=OrdensTotal()-1;i>=0;i--) //ler ordens de mercado
{
se (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continuar;//selecione das ordens de mercado
{
se (OrderSymbol()!=Symbol()&&OrderMagicNumber()!=Magic) continuar;//selecione apenas ordens EA (se houver Magic e ele for negociado em qualquer par de moedas)
A ordem de venda é encerrada a preço de pedido
Estou um pouco confuso! Aponte o dedo onde o bug está no código!!!(o log diz ORDER CLOSE ERROR 4108) Obrigado de antemão!
Boa tarde Connoisseurs! Você já esgotou o dia mais difícil do ano? Podemos começar a trabalhar? ;=).
Eu desenhei um EA, tudo é bom, mas o MQL, como eu entendo, funciona no ambiente MT4. Quero que funcione com um software que funcione diretamente com a troca. Existem outros compiladores MQL? Se não, que linguagem devo usar para reescrever o MQL?
Você tem uma pausa e precisa continuar.
Não tenho uma pausa. Qual é a razão pela qual a EA pode não "ver" suas ordens? Tenho diferentes tempos de servidor e computador, talvez por causa disso?
O tempo de cada um é diferente. Comece sem se apressar de longe. 1. Verifique o que a função OrdersTotal lhe dá. Seu valor depende das configurações do histórico: Hoje, últimos 3 dias, semana passada, ... Ajuste-o como preferir. 2. Em seguida, crie um ciclo e dê saída a todos os pedidos com Alerta. Isto se chama depuração - é uma parte muito importante do trabalho de um programador. Mais importante do que escrever código.
O tempo de cada um é diferente. Comece sem se apressar de longe. 1. Verifique o que a função OrdersTotal lhe dá. Seu valor depende das configurações do histórico: Hoje, últimos 3 dias, semana passada, ... Ajuste-o como quiser. 2. Em seguida, crie um ciclo e produza todos os pedidos usando Alert. Isto se chama depuração - é uma parte muito importante do trabalho de um programador. Mais importante do que escrever o código.
Obrigado!
Vocês podem me dizer como escrever no código do Expert Advisor para abrir 3 negócios ao mesmo tempo com a capacidade de definir SL?
Esta é minha condição
Fui aconselhado a usar a função (OrderTotal()), mas ela não se encaixa no meu caso. Eu tenho-o assim
Ela compila bem, sem erros, mas não é apropriada para o meu caso.
Encontrei o seguinte código
Talvez possa ser usado, mas não entendo o significado das cordas. Este código pode ser usado quando reescrito para se adequar à minha condição?
Vocês podem me dizer como escrever no código do Expert Advisor para abrir 3 negócios ao mesmo tempo com a capacidade de definir SL?
Esta é minha condição
Fui aconselhado a usar a função (OrderTotal()), mas ela não se encaixa no meu caso. Eu tenho-o assim
Ela compila bem, sem erros, mas não é apropriada para o meu caso.
Encontrei o seguinte código
Talvez possa ser usado, mas não entendo o significado das cordas. Posso usar este código se eu o reescrever para se adequar à minha condição?
Tente desta forma
pos=0; // contador de pedidos
for(int i=OrdensTotal()-1;i>=0;i--) //ler ordens de mercado
{
se (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continuar;//selecione das ordens de mercado
{
se (OrderSymbol()!=Symbol()&&OrderMagicNumber()!=Magic) continuar;//selecione apenas ordens EA (se houver Magic e ele for negociado em qualquer par de moedas)
pos++; // se selecionado, aumentar pos em um
}
}
Vocês podem me dizer como escrever no código da EA para abrir 3 negócios de uma só vez com a capacidade de definir SL?