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

 

Olá. Você pode me dizer como organizar um atraso na execução? Para que, após uma vela nova, passem 10 segundos antes da atualização.

#define   WM_COMMAND                    0x0111
#property indicator_chart_window
#import "user32.dll"
int RegisterWindowMessageA(string lpstring);
int PostMessageA(int  hWnd,int  Msg,int  wParam,string lParam);
int New_Bar;
datetime Time_0;
#import
int start()
 {
     New_Bar=0;                   // Для начала обнулимся
  if (Time_0 != Time[0])          // Если уже другое время начала бара
      {
      New_Bar= 1;                 // А вот и новый бар
      Time_0 = Time[0];           // Запомним время начала нового бара
      PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, 0);
      PostMessageA (WindowHandle (Symbol(), 0), RegisterWindowMessageA ("MetaTrader4_Internal_Message"), 2, 1);
      } 
 return(0);
 }
 
Olá, escreva o código na condição de que se você remover 1 objeto do gráfico, o resto (uma escolha) será removido.

Eu tenho outros objetos anexados a 1 objeto, e quando você apaga este objeto, o resto fica pendurado na tabela
 
Dmitry Ivkin:
Olá, peço-lhe que escreva o código com a condição de que se você remover um objeto do gráfico, então o resto (como você escolher) será removido

Eu tenho outros objetos anexados a um objeto, e quando eu removo este objeto, o resto apenas fica pendurado no gráfico
Ao criar objetos, uso prefixos, ou seja, nomes que começam. Por exemplo: ObjectCreate("777_a" ... ObjectCreate("777_z" e depois apagar o grupo ObjectsDelete(0, "777_")
 
werter:

Olá. Você pode me dizer como organizar um atraso na execução? Quero esperar 10 segundos após o novo castiçal antes de executar a atualização.

A maneira mais fácil é adicionar Sleep(10000); depois de Time_0 = Time[0]; e eu acho que a diretiva de #importância mais baixa deve ser levantada 2 linhas

 
STARIJ:

A maneira mais fácil é inserir Sleep(10000); depois de Time_0 = Time[0]; e eu acho que a diretiva de #importância mais baixa deve ser elevada 2 linhas mais alta

Sim, isso seria um consultor especializado... Infelizmente, no indicador de sono não se pode dormir.
 
STARIJ:
Na criação dos objetos eu uso um prefixo, ou seja, o início de um nome. Por exemplo: ObjectCreate("777_a" ... ObjectCreate("777_z" e então eu excluo o grupo ObjectsDelete(0, "777_")

Obrigado por responder, não você não entende, eu tenho outros objetos anexados ao objeto, e se você remover o indicador então tudo está normal, mas se você clicar com o botão direito do mouse e excluir então remover exatamente 1 objeto e precisar de todos anexados, eu espero que você entenda)

 
Dmitry Ivkin:

Obrigado por responder, não você não entende, eu tenho outros objetos anexados ao objeto e se você apagar o indicador então tudo está bem, mas se você clicar com o botão direito e apagar então 1 objeto será apagado e eu preciso de todos os objetos anexados, eu espero que você entenda)

Periodicamente(cada carrapato?) verifique a presença do objeto principal e remova os objetos menores pelo prefixo se ele estiver ausente
 
werter Sim, bem, se fosse um especialista... Infelizmente, no indicador de sono não se pode dormir.
datetime Time_0=0;

void ...
{
   if (Time_0 < TimeCurrent())
   {
      Alert(TimeCurrent());
      Time_0 = Time[0]+PeriodSeconds()+10; 
   }
 

Faz muito tempo desde que escrevi na MQL4, agora preciso reescrever minha EA da MQL5. O código que deve abrir 1 comércio sobre o símbolo onde a EA está localizada está correto?

No Testador de Estratégia 2 as negociações são abertas por algum motivo

...
if(!Orderex(_Symbol))
{
   OrderSend(NULL,OP_SELL,lot,Bid,30,Bid+stop*Point,Bid-take*Point,NULL,magicf,0,clrRed);
}
...
bool Orderex(string symbol)
{
   for(int i=OrdersTotal(); i>0; i--)
      {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==symbol && OrderMagicNumber()==magicf) return true;
      
      
      
      }


   return false;
}
 

Encontrei outra nuance que não tinha pensado antes.

1) Temos muitos Expert Advisors instalados nos pares

2) Ao abrir um pedido por qualquer consultor especializado com suas próprias configurações (alguns EA abrem 0,1 ou 0,5, por exemplo), este registro aparecerá na linha EAs

3) A linha "Especialistas" é lida e outros robôs se apagarão se houver posições abertas para mais de x lotes.


A questão é como lê-lo e processá-lo ? não está incluído nos arquivos de registro.