Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 221

 
ax00071: O registro mostra uma tentativa de fechar a compra2, bilhete desconhecido para a função de fechamento do pedido. Código de memória enquanto estou no trabalho

Ah. Escrever de memória enquanto também estou no trabalho. Tente: e Ticket compare com o que está no relatório de fechamento do pedido. No testador parece ser 0, 1, 2, 3, ....

RefreshRates(); // Это обязательно ДО OrderSelect() и лучше в таком виде: while (! RefreshRates()) ;
for(int i=OrdersTotal()-1; i>=0; i--)
  if (! OrderSelect(i,SELECT_BY_POS)) continue;
  Ticket=OrderTicket(); 
  Lot   =OrderLots();

  // Сообщение о попытке следует выдавать ДО ее осуществления, т.к. попытка может что-то изменить
  Alert ("Попытка закрыть Buy Ticket=",Ticket, "  Lot=",Lot);  // Кажется Alert в тестере бестолкова, попробуйте Print
  Ans=OrderClose(Ticket,Lot,OrderClosePrice() ... );
}

 
novikov433:

Quero aprender como fazer um EA. Talvez o mercado mude e eu tenha que pagar mais, por exemplo, para mudar um pouco o algoritmo?

Não sei se realmente posso fazer um TS em qualquer construtor de corujas, mas prefiro entender as funções básicas como fazer uma parada em um determinado lugar ou encomendar uma ordem para negociar em determinados dias.

Não tenho idéia do que fazer com 1,2,3 etc. mesmo no construtor, e por que é importante conectar tudo nesta ordem com flechas. Quem entrega treinamento mql 4 de A a Z e não como os guerreiros da Internet que criam cursos que não explicam nada em detalhes por que isso acontece desta maneira, em palavras, você não fará nada de novo por si mesmo, você só terá que copiar o código deles .... Eles sabem que ordem é responsável pelo quê, e não apontaram apenas para o aleatório ..... Bem, deixe os profissionais fazerem pirâmide, lote dinâmico, parada inteligente; minha tarefa é diferente - baixar os filtros necessários e entender a essência da formação de tendências. Obrigado por sua ajuda!

Você só precisa de documentação, que está disponível, e você precisa ser capaz de ler e entender o que leu. Se você não conseguiu compreendê-lo desde a primeira vez, leia várias vezes e de preferência a um ritmo mais lento, para que seu cérebro tenha tempo de reconhecer o significado do que você leu.

E depois disso, a imaginação tem mão livre.

Quero abrir um pedido com a condição Abra a seção "Funções Comerciais" da documentação e encontre a função que abre a ordem e escreva-a de acordo com a sintaxe...

Ah, sim... você tem que cumprir a condição... ...abrir a seção "Operadores", ler"Declaração Condicional "if-else"" e escrever a condição necessária.

Quando isso é feito, você lê a documentação do início ao fim para descobrir o que está no idioma, o que você pode obter.

Торговые функции - Справочник MQL4
Торговые функции - Справочник MQL4
  • docs.mql4.com
Торговые функции - Справочник MQL4
 
eu novamente :)
Escreveu uma função que não permite mais do que n ordens para abrir em 1 dia.
Agora a função está drenando o depósito - ou seja, ordens abertas em cada tic.

Onde eu estraguei tudo de novo?)

int OrderMax = 3; // número máximo de pedidos que podem ser abertos durante 1 dia.
OpenOrders() vazio
{
para (int i = 1; i <= 5; i++)
{
se (DayOfWeek() == i)
{
int count_max = 0;
if (count_max <= OrderMax)
{
for(int cn = OrdersTotal()-1; cn>=0; cn--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderType() == OP_BUY)
count_max+++;
}
}
}
}
}
 
Rapazes, é possível abrir pedidos em outros pares com um EA? Por exemplo, um EA só está em EURAUD e na condição de abrir uma negociação em pares EURAUD e GBPUSD. Qual deve ser a condição, se possível?
 
ivan-baaton:
Eu novamente:)
Escrevi uma função que permite abrir não mais do que n ordens em 1 dia.
Agora esta função está perdendo o depósito, ou seja, as ordens são abertas a cada tick.

Onde eu estraguei tudo de novo?)

int OrderMax = 3; // número máximo de pedidos que podem ser abertos durante 1 dia.
OpenOrders() vazio
{
para (int i = 1; i <= 5; i++)
{
se (DayOfWeek() == i)
{
int count_max = 0;
if (count_max <= OrderMax)
{
for(int cn = OrdersTotal()-1; cn>=0; cn--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderType() == OP_BUY)
count_max+++;
}
}
}
}
}

Na minha opinião, a abordagem não é de modo algum lógica. Por que definir o dia da semana? Que diferença faz em que dia é, se a condição deve dizer "não abrir mais do que xxx ordens hoje"?

Parece-me mais razoável contar os pedidos abertos hoje e colocar uma condição apropriada na condição.

                     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderType() == OP_BUY)
                     count_max++; 
faltando a definição da data de abertura do pedido.
 

Rustam Bikbulatov:
Ребята, можно ли с помощью одного советника открывать ордера на других парах? Например Советник только стоит на паре EURAUD и при условии открытии открывается сделка на парах EURAUD и GBPUSD. Какое должно быть условие если будет возможность?

Ele pode.

Somente no testador não funciona.

int  OrderSend(
   string   symbol,              // символ
   int      cmd,                 // торговая операция
   double   volume,              // количество лотов
   double   price,               // цена
   int      slippage,            // проскальзывание
   double   stoploss,            // stop loss
   double   takeprofit,          // take profit
   string   comment=NULL,        // комментарий
   int      magic=0,             // идентификатор
   datetime expiration=0,        // срок истечения ордера
   color    arrow_color=clrNONE  // цвет
   );
 
Alexey Viktorov:
Sim, é verdade.

Somente no testador não funciona.


Como você os lista, vírgula ou &&?
 
Rustam Bikbulatov:

Como você os lista? vírgula ou &&?

Eles são o quê? uma lista de personagens? ou o quê?

Cada OrderSend tem seu próprio caráter único. Sem vírgulas ou outras coisas...

 
Alexey Viktorov:

Eles são o quê? uma lista de personagens? ou o quê?

Cada OrderSend tem seu próprio caráter único. Sem vírgulas ou outras coisas...


pares de listas
 
LRA:

Ah. Escrever de memória como também estou no trabalho. Tente: e Ticket compare com o que a ordem tem no relatório. No testador parece ser 0, 1, 2, 3, ....

Obrigado pelos cabeçalhos )) Sou um otário ... ... ao fechar, tive a condição de fechar o negócio às 22:00 de sexta-feira, sem condições adicionais para verificar o tipo de negócio. O negócio em si foi fechado algumas horas antes. Assim, quando chegaram as 22h00, o Consultor Especialista começou a enviar ordens de fechamento de uma ordem que já estava fechada ...
Razão: