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

 

Boa tarde,

Existe alguma maneira de mudar o diretório para escrever/leitura de arquivos de "Tester/Files" para "MQL/Files" quando o Expert Advisor estiver trabalhando com esses arquivos durante os testes?

 
Asa saas:

Boa tarde,

É possível mudar o diretório de leitura/escrita de "Tester/Files" para "MQL/Files" quando o Expert Advisor usa esses arquivos durante os testes?

Com MQL - de jeito nenhum, somente através do WinAPI.

 

Obrigado por sua resposta!

 
PolarSeaman:

Como calcular o volume do lote em incrementos? Se depósito =1000, lote = 0,1, o depósito tornou-se lote 2000 = 0,2. Ou seja, se o depósito for de 1500 ou 1700, o lote não aumenta.

lot = MathCeil(depo / 1000) * 0.1;
 
Ihor Herasko:

Não com ferramentas MQL, somente com WinAPI.

Asa saas:

Obrigado pela resposta!

Neste caso, é melhor usar a bandeira FILE_COMMON e os arquivos estarão disponíveis tanto no testador quanto no terminal. Somente problemas podem ocorrer ao testar na rede. Mas, pessoalmente, não o testei.

FileOpen - Файловые операции - Справочник MQL4
FileOpen - Файловые операции - Справочник MQL4
  • docs.mql4.com
[in]  Имя открываемого файла, может содержать подпапки. Если файл открывается для записи, то указанные подпапки будут созданы в случае их отсутствия. [in]  значение, используемое в качестве разделителя в txt или csv-файле. Если для csv-файла разделитель не указан, то по умолчанию используется ";". Если для txt-файла разделитель не указан, то...
 

Taras Slobodyanik:

lot = MathCeil(depo / 1000) * 0.1;

Vamos fazer as contas:

Depósito = 1.700. Divididos por 1.000, recebemos 1,7 e arredondados para o inteiro mais próximo no topo, recebemos 2.

Multiplicar por 0,1 e o resultado não é o que você quer.

Aparentemente, é melhor levar o arredondamento para o piso matemático inferior mais próximo.

MathFloor - Математические функции - Справочник MQL4
MathFloor - Математические функции - Справочник MQL4
  • docs.mql4.com
MathFloor - Математические функции - Справочник MQL4
 
PolarSeaman:

Não, não, com um depósito de 1100, o lote será de 0,11, e eu preciso que o lote não aumente até 2000. Como especificar uma etapa =1000 em configurações?

Eu corrigi isso.

double percentLot = 0.01,
       lot = NormalizeDouble(MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)*percentLot/10)/10, 1);

Embora o princípio esteja lá, e isto é uma nuance

 
Alexey Viktorov:

Vamos fazer as contas:

Depósito = 1.700. Divididos por 1.000, recebemos 1,7 e arredondados para o número inteiro mais próximo no topo, recebemos 2.

Multiplicar por 0,1 e o resultado não é o que você quer.

Aparentemente, é melhor arredondar para o piso matemático inteiro inferior mais próximo.

ou, em vez de 1000, use 1999.99 )

1000 e 0,1 são variáveis externas.

 
E por que todos estão agarrados a 0,1. Hoje um homem quer 0,1, amanhã ele quer 0,5. Você tem que baseá-lo nas porcentagens. Não há sentido em estar rigidamente vinculado pela inteligência.
 

Obrigado, eu o fiz:

   input double _lot=0.1;
   input int _depo=1000;
//***************************
   lot=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/_depo)*_lot;
   lot=NormalizeDouble(lot,2);

Espero colocar_depo do tipoint corretamente.