Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1204

 
leonerd:

O que significa a escala temporal na história do comércio?

escala X. O que significam os valores na escala?

Diga-me, o que significam os números no gráfico da declaração comercial?

 
leonerd:

O que significam estes números no gráfico da declaração comercial?

O número do comércio que levou à alteração da balança.

 
Não o recebi imediatamente, é uma questão infantil:

Como posso testar o meu TS no MT5 sem considerar a propagação?

No MT4 tudo é imediatamente visível no testador, no MT5 devo gerar um símbolo de licitação personalizado?
 
Para trabalhar com a Json, isto é o melhor ou há algo mais novo e mais correcto?
JSON Serialization and Deserialization (native MQL)
JSON Serialization and Deserialization (native MQL)
  • www.mql5.com
ForecastOscilator_HTF The ForecastOscilator indicator with the timeframe selection option available in the input parameters. Flat_HTF The Flat indicator with the timeframe selection option available in the input parameters. FX5_SelfAdjustingRSI_HTF The FX5_SelfAdjustingRSI...
 
Igor Makanu:
Não o recebi imediatamente, é uma questão infantil:

Como posso testar o meu TS no MT5 sem considerar a propagação?

No MT4 tudo é imediatamente visível no testador, no MT5 devo gerar um símbolo de licitação personalizado?

Pode tentar abrir a janela"Strategy Tester", separador "Settings" - premir o botão ao lado do símbolo e corrigir o símbolo - definir o spread para "0".

 

MT5

Aconselhar como implementar o aumento do lote em função do equilíbrio.

Mas não por %, mas por passo por valor de crescimento de equilíbrio.

Com cada aumento de saldo de $1000 quero aumentar o lote em um passo de 0,1

Os meus dados iniciais são opar EUR/USD

Depósito (saldo inicial) 1000$

Lote inicial 0.1

Necessidade.

Se o depósito:

1000 e depois lote 0,1

2000 e depois lote 0,2

3000 e depois lote 0,3

Etc.

Utilizo agora este método:

if (Balance>= 1000 && Balance<=2000)  Lot = 0.1;
if (Balance>= 2000 && Balance<=3000)  Lot = 0.2;
if (Balance>= 3000 && Balance<=3000)  Lot = 0.3;

Etc.

Mas em vez desta enumeração interminável, eu gostaria de ter uma função.

Eu próprio tentei inventar, mas não funcionou muito bem.

Talvez devido a problemas de normalização...

Por favor aconselhem, talvez alguém tenha uma solução já feita ou um exemplo.

Пара EUR/USD: технический анализ, новости Forex, фундаментальный анализ - Блоги трейдеров и аналитика финансовых рынков
Пара EUR/USD: технический анализ, новости Forex, фундаментальный анализ - Блоги трейдеров и аналитика финансовых рынков
  • www.mql5.com
Валютная пара EUR/USD — самая ликвидная, поскольку в ней участвуют первая и вторая по значимости мировые резервные валюты. Это подтверждается и статистически: доллар и евро самые крупные по объему
 
Vladpedro:

MT5

Aconselhar como implementar o aumento do lote em função do equilíbrio.

Mas não por %, mas por passo por valor de crescimento de equilíbrio.

Com cada aumento de saldo de $1000 quero aumentar o lote em um passo de 0,1

Os meus dados iniciais são opar EUR/USD

Depósito (saldo inicial) 1000$

Lote inicial 0.1

Necessidade.

Se o depósito:

1000 e depois lote 0,1

2000 e depois lote 0,2

3000 e depois lote 0,3

Etc.

Utilizo agora este método:

Etc.

Mas em vez desta enumeração interminável, eu gostaria de ter uma função.

Eu próprio tentei inventar, mas não funcionou muito bem.

Talvez devido a problemas de normalização...

Talvez alguém tenha uma solução pronta ou um exemplo.

Preste atenção ao quociente ao dividir o depósito por 1000. Num depósito < 2000 haverá 1 inteiro e uns décimos, centésimos... que não têm qualquer interesse. O depósito de 2000 será de 2 e assim por diante. Acontece que é suficiente multiplicar a parte inteira desta fracção por 0,1 e obter o que queremos.

E na sua lista há um erro, embora insignificante. A forma correcta é a seguinte

if (Balance>= 1000 && Balance<2000)  Lot = 0.1;
if (Balance>= 2000 && Balance<3000)  Lot = 0.2;
if (Balance>= 3000 && Balance<3000)  Lot = 0.3;
 
Vladpedro:

MT5

Aconselhar como implementar o aumento do lote em função do equilíbrio.

Mas não por %, mas por passo por valor de crescimento de equilíbrio.

Com cada aumento de saldo de $1000 quero aumentar o lote num passo de 0,1

Os meus dados iniciais são opar EUR/USD

Depósito (saldo inicial) 1000$

Lote inicial 0.1

Necessidade.

Se o depósito:

1000 e depois lote 0,1

2000 e depois lote 0,2

3000 e depois lote 0,3

Etc.

Utilizo agora este método:

Etc.

Mas em vez desta enumeração interminável, eu gostaria de ter uma função.

Eu próprio tentei inventar, mas não funcionou muito bem.

Talvez devido a problemas de normalização...

Pode ser que alguém tenha uma solução pronta ou um exemplo.

Encontrar arredondamento usando MathCeil,MathRound ou MathFloor.

Veja o exemplo de como eles funcionam:

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2018, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property version "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   double start_balance=1000;
   double step_balance=1000;

   Print("Step ",DoubleToString(step_balance,1));

   for(int i=0; i<12; i++)
     {
      double division=start_balance/step_balance;
      Print("Balance ",DoubleToString(start_balance,1),
            ", division ",DoubleToString(division,1),
            ", MathCeil(",DoubleToString(division,1),") ->  ",MathCeil(division),
            ", MathRound(",DoubleToString(division,1),") ->  ",MathRound(division),
            ", MathFloor(",DoubleToString(division,1),") ->  ",MathFloor(division));
      start_balance=start_balance+step_balance/3;
     }
  }
//+------------------------------------------------------------------+

e resultado.

Step 1000.0
Balance 1000.0, division 1.0, MathCeil(1.0) ->  1.0, MathRound(1.0) ->  1.0, MathFloor(1.0) ->  1.0
Balance 1333.3, division 1.3, MathCeil(1.3) ->  2.0, MathRound(1.3) ->  1.0, MathFloor(1.3) ->  1.0
Balance 1666.7, division 1.7, MathCeil(1.7) ->  2.0, MathRound(1.7) ->  2.0, MathFloor(1.7) ->  1.0
Balance 2000.0, division 2.0, MathCeil(2.0) ->  2.0, MathRound(2.0) ->  2.0, MathFloor(2.0) ->  1.0
Balance 2333.3, division 2.3, MathCeil(2.3) ->  3.0, MathRound(2.3) ->  2.0, MathFloor(2.3) ->  2.0
Balance 2666.7, division 2.7, MathCeil(2.7) ->  3.0, MathRound(2.7) ->  3.0, MathFloor(2.7) ->  2.0
Balance 3000.0, division 3.0, MathCeil(3.0) ->  3.0, MathRound(3.0) ->  3.0, MathFloor(3.0) ->  3.0
Balance 3333.3, division 3.3, MathCeil(3.3) ->  4.0, MathRound(3.3) ->  3.0, MathFloor(3.3) ->  3.0
Balance 3666.7, division 3.7, MathCeil(3.7) ->  4.0, MathRound(3.7) ->  4.0, MathFloor(3.7) ->  3.0
Balance 4000.0, division 4.0, MathCeil(4.0) ->  5.0, MathRound(4.0) ->  4.0, MathFloor(4.0) ->  4.0
Balance 4333.3, division 4.3, MathCeil(4.3) ->  5.0, MathRound(4.3) ->  4.0, MathFloor(4.3) ->  4.0
Balance 4666.7, division 4.7, MathCeil(4.7) ->  5.0, MathRound(4.7) ->  5.0, MathFloor(4.7) ->  4.0

Recomendo a utilização doMathFloor.

Документация по MQL5: Математические функции / MathFloor
Документация по MQL5: Математические функции / MathFloor
  • www.mql5.com
Математические функции / MathFloor - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Arquivos anexados:
1.mq5  3 kb
 
Alexey Viktorov:

Preste atenção ao quociente ao dividir o depósito por 1000. Se o depósito < 2000 será de 1 número inteiro e cerca de décimos, centésimos. que não são de interesse. O depósito de 2000 conterá 2 e assim por diante. Acontece que é suficiente multiplicar a parte inteira desta fracção por 0,1 e obter o que queremos.

E na sua enumeração, embora menor, há um erro. Correcto é

Alexey

Obrigado. Tive a ideia de dividir por 1000 e reduzir a inteiro, vou tentar implementá-lo.

<= foi definido para automaticamente, não a partir do código. Escrever com as minhas mãos, e as canetas são tais ...))

 
Vladimir Karputov:

Seleccione uma operação de arredondamento de MathCeil , MathRound ou MathFloor.

Um exemplo de como eles funcionam:

e resultado.

Recomendaria a utilização doMathFloor.

Obrigado, exactamente o que precisa.