[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 72

 

http://www.soft-sib.ru/articles/programs/10/

Outra vantagem de usar o SGBD e a arquitetura cliente-servidor sobre a abordagem de arquivo-servidor é a possibilidade de usar um mecanismo de manipulação de dados transacional. Este serviço, fornecido pelo servidor de dados, permite que várias ações de modificação de dados sejam combinadas em uma única operação indivisível (transação). O uso de transações garante a proteção confiável das informações contra falhas de hardware e software tanto no lado do cliente quanto no lado do servidor do SI.

 
Sim, ou eu sou invisível ou ninguém quer ajudar ou pode ajudar((
 
PerlOF:


O manual e o tutorial apontam a necessidade de conexão a um servidor (para a EA, scripts, indicadores).

É possível chamar funções especiais sem conexão com o servidor (em princípio)?


Sim, é. O servidor, de fato, é necessário para receber um tick que lança a função start().

start() - função principal. Ele é chamado a especialistas após o recebimento do próximo tick. Para indicadores personalizados, ele é chamado durante o recálculo após anexar o indicador ao gráfico, na abertura do terminal do cliente (se o indicador estiver anexado ao gráfico), bem como após a chegada do próximo tick. Nos roteiros é executado imediatamente após anexado ao gráfico e inicializado. Senão houver função start() no módulo, este módulo (Expert Advisor, script ou indicador personalizado) não poderá ser lançado.

O script pode funcionar em um loop infinito, e portanto não precisa de ticks, ticks são necessários para indicadores e Expert Advisors (na configuração padrão (porque os Expert Advisors também podem funcionar em um loop infinito)).

Mas os carrapatos podem ser causados artificialmente - com VINAPI. Além disso, existe uma característica padrão como o testador de estratégia (que também é capaz de gerar carrapatos).

Você só precisa usar seu cérebro e PESQUISAR NO SITE (FÓRUM).

E não trazer as vantagens ou desvantagens da tecnologia file-server.

 
MXDEEM:

Olá, eu tenho este código, verifique a presença de pedidos, se eu tenho um pedido aberto, então verifique novamente e assim por diante, até que o pedido chegue a 0. Mas o especialista ignora claramente este código e abre um número infinito de pedidos, por favor avise qual é o erro?

int FunctionBUYnext()
{
int b=OrdensTotal();
se (b>0)
{FunçãoBUYnext();}
senão {FunçãoSELL();}
}



Navegador do Fórum Comunitário MQL4
RegrasBuscaComo postarAdministração do fórumDenunciar abusosClube Telepath
Perguntas que você não deve fazer
Como fazer as perguntas certas
Literatura útilSoftware útilProcura de um Indicador (Expert Advisor ou roteiro)
 

Há uma necessidade de traçar uma linha em um consultor especializado em comércio usando a função iCustom.
Eu usei ZigZag como teste:

for(int cnt=0; cnt<10000; cnt++) {
   double zigzag1=iCustom(NULL,0,"ZigZag",15,0,3,  0,cnt+1);
   if( zigzag1!=0 ) 
      break;
}


Como o objetivo do iCustom no meu caso é apenas traçar uma linha
(os dados indicadores não são usados no Expert Advisor ), decidi colocar o código em deinit(). Mas não funciona lá e não desenha nada.
No início(), tudo está bem.
1. Por que ele não funciona em deinit()?
2. Você precisa evitar executar o código acima sem sentido ao testar e otimizar
(evite desperdiçar tempo de CPU) e fazer com que ele seja executado apenas na última barra da história sendo testada.
- Como isso pode ser conseguido?
Obrigado!
 
Roll:

código é absurdo.

POR QUÊ? TODOS COMO TAUGHT
 
MXDEEM:

POR QUE ???? TODOS PORQUÊ?

Você foi ensinado de uma maneira estranha...

Onde estão as funções chamadas a partir do corpo de seu "código"?

O próprio "código" também é bem engraçado...

int FunctionBUYnext()
{
int b=OrdersTotal();
if (b>0)
{FunctionBUYnext();}
else {FunctionSELL();}
} 

Usando uma chamada para si mesmo... Por que não simplesmente sair da FunctionBUYnext() quando não há pedidos?

Além disso - sem verificação de tipo de pedido, sem verificação de símbolo e magik...

Eu enviaria seu "professor" para a prateleira...

 

Diante de um problema...

O script funciona com a função MessageBox() nesta forma

//+------------------------------------------------------------------+

#include <WinUser32.mqh>
#import "user32.dll"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   int result = MessageBox("Are you ok?", "Caption",MB_YESNO|MB_ICONQUESTION);
   if(result != IDYES) Alert("Кнопка да не нажата");
//----
   return(0);
  }
//+------------------------------------------------------------------+

Mas falha completamente ao usar a função MessageBoxTimeoutA() não documentada:

//+------------------------------------------------------------------+

#include <WinUser32.mqh>
#import "user32.dll"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   int result = MessageBoxTimeoutA(0, "Are you ok?", "Caption",MB_YESNO|MB_ICONQUESTION, 0, 10000);
   if(result != IDYES) Alert("Кнопка да не нажата");
//----
   return(0);
  }
//+------------------------------------------------------------------+

Mesmo uma janela de mensagem com botões Sim/Não não aparecerá.

Quem o encontrou - diga-me onde o cão está enterrado?

 
artmedia70:

É estranho como você foi ensinado...

Onde estão as funções chamadas a partir do corpo de seu "código"?

O próprio "código" também é bem engraçado...

Usando uma chamada para si mesmo... Por que não simplesmente sair da FunctionBUYnext() quando não há pedidos?

Além disso - sem verificação de tipo de pedido, sem verificação de símbolo e magik...

Eu enviaria seu "professor" para a prateleira...

EU EXPLICO O SIGNIFICADO, CHAMA-SE A SI MESMO PORQUE VOCÊ PRECISA DE UM CHEQUE NESTA PARTE, SE VOCÊ FIZER UMA RETIRADA ELA VOLTARÁ NOVAMENTE AO INÍCIO DA EXECUÇÃO, EU NÃO PRECISO, O SÍMBOLO E O MÁGICO NÃO SÃO CONSIDERADOS, MEU PROFESSOR INTERNET)))) SE NÃO FOR DIFÍCIL, POR FAVOR, ME ENVIE ALGO SEMELHANTE, MAS FUNCIONANDO, A IDÉIA PRINCIPAL - NÃO DEIXAR PASSAR SE HOUVER UMA ORDEM, SE NÃO, ENTÃO PULAR PARA UMA FUNÇÃO ESPECÍFICA.

 
MXDEEM:

EU EXPLICO O SIGNIFICADO, CHAMA-SE A SI MESMO PORQUE PRECISAMOS DE UMA VERIFICAÇÃO NESTA PARTE, SE VOCÊ SAIR ELA VOLTARÁ NOVAMENTE AO INÍCIO DA EXECUÇÃO, EU NÃO PRECISO DELA, O SÍMBOLO E O MÁGICO NÃO SÃO LEVADOS EM CONTA, MEU PROFESSOR INTERNET)))) SE VOCÊ NÃO SE IMPORTA EM ENVIAR ALGO SEMELHANTE, MAS QUE FUNCIONE, A IDÉIA PRINCIPAL - NÃO DEIXAR PASSAR SE O PEDIDO, SE NÃO, ENTÃO PULAR PARA UMA FUNÇÃO ESPECÍFICA.

Oh, não grite assim ... Acho que tem o CapsLock preso... O tamanho da fonte deveria ser dobrado, e seria ousado.

É apenas um... um aparte.

Agora deixe-me explicar a você:

Vou explicar o ponto. Ao fazer uma chamada recursiva, você está fazendo com que sua EA faça um loop exatamente para esta parte... Ou seja, se houver quaisquer ordens ou posições de mercado, a EA deve pendurar e não fazer nada (apenas pendurar) até que você apague manualmente todas as ordens e feche posições? Então qual é o objetivo de tal comércio automatizado, se a EA ficará pendurada ali sem sua intervenção?

Reconsiderar sua abordagem à lógica da EA