Auto-aprendizagem da linguagem MQL5 a partir do zero - página 81

 
Alexey Viktorov #:

Espero realmente que não tenha escrito isto...

Aqui está uma função de trabalho

Tudo o que você precisa fazer é inserir o tamanho do risco, para que ele não conte a partir da margem livre total...

Obrigado, Alexey, por seu feedback! Minha versão de cálculo de lote funciona, e somente a parte do código onde a matriz está escrita não funciona.

Originalmente eu o projetei para ser capaz de definir diferentes tamanhos de risco para diferentes pares de moedas.

Para ser honesto, não entendo bem como usar seu código para uma EA com várias moedas.

Cumprimentos, Vladimir.

 
MrBrooklin #:

Obrigado, Alexey, por seu feedback! O cálculo do lote em minha versão funciona, e apenas aquela parte do código, onde a matriz é escrita, não funciona.

Foi originalmente projetado para permitir a especificação de diferentes tamanhos de risco para diferentes pares de moedas.

Para ser honesto, não entendo bem como usar seu código para uma EA com várias moedas.

Atenciosamente, Vladimir.

Muito simples. Não pensei que você teria dificuldades com isso depois de tudo o que aprendeu.

/********************************************************************\
|   Calculate optimal lot size     Расчет объема лота                |
/********************************************************************/
//double contractSize(double Lot)
double contractSize(string symbol, double risk)
 {
//  double volume = Lot > 0.0 ? Lot : AccountInfoDouble(ACCOUNT_MARGIN_FREE)/10000,
  double volume = AccountInfoDouble(ACCOUNT_MARGIN_FREE)*risk/10000,
         v = volume,
         volumeStep = SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP),
         minLot = SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN),
         maxLot = SymbolInfoDouble(symbol, SYMBOL_VOLUME_MAX);
  v = round(volume/volumeStep)*volumeStep;
  return(fmin(maxLot, fmax(minLot, v)));
 }/******************************************************************/

E a função é chamada

double lot = contractSize(symbol[Number], Risk[Number]);
 
Alexey Viktorov #:

Muito simples. Não pensei, depois de tudo o que você aprendeu, que teria problemas com isto...

E a função é chamada.

Mais uma vez obrigado, Alexey! Vou tentar usá-lo em minha EA esta noite.

Sou bastante novo em arrays, daí as dificuldades. Até agora eu não precisava deles, mas agora percebo que esta é uma grande lacuna que terei que preencher no futuro próximo. Comecei a estudar o artigo de Dmitry Fedoseyev, mas até agora há muito que não está claro. Eu preciso de tempo para assimilar o material.

Cumprimentos, Vladimir.

 
SanAlex #:

Aqui está algo com o qual tenho me metido.

Talvez você devesse saber o essencial primeiro.
 
SanAlex #:

algo - eu tentei o código em todo lugar - parece funcionar.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Está prestes a começar - tenho outro galo na estrada.

Sasha, você também escreve tais códigos sob demanda em freelancer? Eu sempre me perguntei como você escreve códigos de 2 ou mais MESMOS de linhas. Mas agora estou começando a entender... Calcule o número de linhas no meu código e no seu... E verificar o spread máximo, é um absurdo... É muito mais fácil usar a opção "não sei".

  MqlTick tick;
    if(!SymbolInfoTick(posSymbol, tick))
      return;
    if(tick.ask-tick.bid > inpSpred)
      return;

Se você quiser que funcione, mas nem todos são capazes de entender o que você escreveu, você pode fazer com três linhas

  MqlTick tick;
    if(!SymbolInfoTick(posSymbol, tick) || tick.ask-tick.bid > inpSpred)
      return;
 
SanAlex #:

este código é retirado do terminal

Continue com o bom trabalho.
 
SanAlex #:

Eu mesmo não sei escrever código - retiro todas as funções da documentação e, com um pouco de manipulação, as modifico para meus próprios propósitos.

\\\\\\\\\\\\\\\\\\\\

Eu também olho para seus códigos e na base de códigos. Eu estou aprendendo - não sou um teórico - é mais fácil cavar a mim mesmo do que explicar - como cavar.

Já está claro que você só pode cavar. Por que colocar os códigos aqui?
 
SanAlex #:

só para - só para entreter você.

A quem mais você vai fazer suas perguntas inteligentes?

Eles lhe deram dez anos por uma razão.
 
SanAlex #:

Deixe o Golfo da Finlândia e venha para o Mar Negro conosco

Na verdade estou em Kaliningrado
 
SanAlex #:

Deixe o Golfo da Finlândia e venha para o Mar Negro conosco

Razão: