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 815

 
evillive:

E quando você acha que este ciclo deve fechar?

?

Corrigido:

if(R==0)

{

 while(true)

 {

  Sleep(30000);

  Alert("Ошибка!");

  DeleteBuy=OrderDelete(OrderTicketBuy);

  DeleteSell=OrderDelete(OrderTicketSell);

  return(1);

 }

}

O cálculo do lucro também.

Eu inseri uma mensagem e manipulação de erros no laço do while (verdadeiro). O laço funciona, a mensagem é escrita, sem erros. Mas não passa a condição, os dados não parecem estar atualizados.

Arquivos anexados:
test3_7.mq4  16 kb
 
CJIeCaPb:

Eu inseri uma mensagem e manipulação de erros no laço do while (verdadeiro). O laço funciona, a mensagem é escrita, sem erros. Mas não passa a condição, os dados não são atualizados.

Aqui estão mais algumas dicas.

Este ciclo não considera todos os pedidos; além disso, se houver mais de um pedido de um tipo (por exemplo, são feitos três pedidos bystop), então o que acontecerá?

for(i=1;i<=OrdersTotal();i++)
{
 Alert(i);
 if(OrderSelect(i-1,SELECT_BY_POS)==true)
 {
  if(OrderSymbol()!=Symb)continue;
  if(OrderType()==OP_BUYSTOP)
  {
   OrderTicketBuy=OrderTicket();
   Alert("Buy");
   }
   if(OrderType()==OP_SELLSTOP)
   {
   OrderTicketSell=OrderTicket();
   Alert("Sell");
   }
  }
}


Na verdade, deveria ser vice-versa: primeiro devemos escolher um pedido, e somente se um pedido for escolhido devemos verificar seu tipo e fazer todo tipo de bobagem sobre ele:

while(OrderType()==OP_BUY)//Buy
{
 RefreshRates();
 
 SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);
 ...
}
 
//--------------------------------------------------------------------------
//Sell
while(OrderType()==OP_SELL)
{
 RefreshRates();
  
 SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET);
 ...
}
 


E no "sweep-switch-wich-type-traits-stoploss", por que exatamente???? E quando esta linha será executada, em um e no segundo interruptor?

    CloseBuy=OrderClose(OrderTicketBuy,Lote,Bid,1); continue;//119
-----
    CloseSell=OrderClose(OrderTicketSell,Lote,Ask,1); continue;//119
 
evillive:


Aqui o tipo de ordem é considerado primeiro, e então a ordem é selecionada. Na verdade deveria ser o contrário, primeiro selecione a ordem, e então se a ordem é selecionada olhe para seu tipo e faça todo tipo de zombaria dela:

portanto:

if(R==1)//238

{

 Alert("yes");

 R=0;

 SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);

}


if(R==2)//245

{

 Alert("yes");

 R=0;

 SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET);

}

E no "scroll-type-tralit-stoploss"( =D. Do que você não gosta? Eu acho que é normal, é muito claro. ), por que exatamente em todos os lugares??? E quando esta linha será executada, em um e no segundo interruptor?

Dessa forma, ela se quebrará por condição:

 Timen=OrderCloseTime();

 if(Timen>0)

 {

  DeleteSell=OrderDelete(OrderTicketSell);

  OldProfit=0;

  WarBuy=true;

  break;

 }

Bem, sim, a quebra ficará melhor na seqüência OrderClose. Então, precisamos acrescentar OrderDelete.

evillive:

Aqui estão mais algumas dicas.

Além disso, se houver mais pedidos de um tipo do que um (por exemplo, são feitos três pedidos bystop), então o que acontecerá?

OrderTotal a partir de 1 e OrderSelect a partir de 0.

Existe mais de uma ordem do mesmo tipo em 1 símbolo? Não. Mas vou dar outra olhada.

Precisamos de uma condição próxima a esta: "Se MA==preço, então".

Isto servirá:

if((MA>Open[0] && MA<Close[0]) || (MA<Open[0] && MA>Open[0]))

P.S.: Feliz Ano Novo!

 
Não é véspera de Ano Novo para alguns. Feliz Ano Novo!!!
 

Feliz Ano Novo!

Comecei recentemente a estudar a MQL 4 e queria fazer uma pergunta:

Por exemplo, tenho uma condição para abrir um pedido:

se (Licitação>=SS+5*Ponto)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

A questão é: que condição deve ser especificada para abrir a segunda ordem caso a primeira ordem tenha um lucro de 10 pontos ou mais?

 
lexdemon:

Feliz Ano Novo!

Comecei recentemente a estudar a MQL 4 e queria fazer uma pergunta:

Por exemplo, tenho uma condição para abrir um pedido:

se (Licitação>=SS+5*Ponto)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

A questão é: que condição é necessária para especificar para abrir a segunda ordem caso a primeira ordem tenha um lucro de 10 pontos ou mais?

Veja aqui, há muitas funções para quase todos os casos.

https://www.mql5.com/ru/forum/131859

 
lexdemon:

Feliz Ano Novo!

Comecei recentemente a estudar a MQL 4 e queria fazer uma pergunta:

Por exemplo, tenho uma condição para abrir um pedido:

se (Licitação>=SS+5*Ponto)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

Agora a questão, que condições devem ser especificadas para abrir a segunda ordem caso a primeira ordem tenha um lucro de 10 pontos ou mais?

Pré-selecionar o pedido OrderSelect (Ticket_first_order, SELECT_BY_TICKET);

if(OrderOpenPrice()+10*Point==Ask)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

 
CJIeCaPb

 Нужно условие максимально приближенное к этому: "если MA==цене, то".

Такое  пойдет:

if((MA>Open[0] && MA<Close[0]) || (MA<Open[0] && MA>Open[0]))


Hurra, parece estar funcionando. Eu inseri retorno e operador "O" em cada laço para evitar operações desnecessárias.

Um problema: as ordens são incômodas - não sei como formular a condição.

Arquivos anexados:
test3.mq4  16 kb
 

Tenho um trader chamado forexstart, se isso fizer diferença. o problema é que escrevi um robô comercial que funciona em gráficos de 1 minuto. ele analisa a história em muitos gráficos, a história é dada por cerca de um mês e meio e não mais.

tenho um robô comercial que funciona em um gráfico de um minuto. ele analisa a história. em muitos gráficos a história é dada por cerca de um mês e meio e não mais, embora o gráfico horário - diário - anual mostre a história.

Como posso lidar com isso?


 
pycha:

Tenho um comerciante chamado forexstart, se isso fizer diferença. o problema é que escrevi um robô que funciona em gráficos de 1 minuto. ele analisa a história em muitos gráficos, a história não está presente por cerca de um mês e meio e não mais.

tenho um robô comercial que funciona no gráfico de um minuto. ele exibe a história. em muitos gráficos a história é dada por cerca de um mês e meio e não mais, embora o gráfico horário - diário - anual exiba a história. há também casos em que o robô retorna a uma determinada data e depois quebra e o jogo continua alguns meses atrás, embora os gráficos superiores o mostrem novamente.

Como posso lidar com isso?


Se após alguns ciclos de eliminação - download do histórico do servidor DC, os intervalos ainda estiverem lá, isso significa que eles lhe darão o histórico. Google Tickstory Lite e prepare muito espaço em disco para o histórico do tick, depois alimente este histórico para o testador e você terá uma M1 por uma década ou mais.