Erros, bugs, perguntas - página 872

 
Olá!
Ao instalar o Meta Trader 5, que servidor Proxy devo instalar?
 
Vladon:

em obras do mt5.

Sim funciona - erros de cálculo - 01.10.20112 a 06.10.2012 em euros/$
Arquivos anexados:
20121111.log  60 kb
 
mario065:
Sim funciona - erros de cálculo - 01.10.20112 a 06.10.2012 em Euro/$

o que quer dizer?

modificar não conseguiu comprar 0.10 EURUSD sl: 1.29120, tp: 1.29370 -> sl: 1.29120, tp: 1.29370 [Paragens inválidas]

JF 0 Core 1 19:48:37 2012.10.03 16:20:27 Modificar erro =4756

Stop Loss and Take Profit não pode ser modificado em si mesmo, é por isso que diz stop error, porque é surpreendente.

 
Vladon:

o que quer dizer?

modificar não conseguiu comprar 0.10 EURUSD sl: 1.29120, tp: 1.29370 -> sl: 1.29120, tp: 1.29370 [Paragens inválidas]

JF 0 Core 1 19:48:37 2012.10.03 16:20:27 Modificar erro =4756

Eu diria que o stoploss e o takeprofit não podem ser modificados em si mesmos, é por isso que diz stop error, porque é surpreendente.

Sim, e o que está escrito no código:
  if(PositionSelect(Symbol())){
    if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
      {
      if(MStop > 0)
       {
        if(NormalizeDouble(Bid - MStop,4) >= Open)
          if(SL == 0 || NormalizeDouble(Bid - MStop,4) >= SL) 
           {
            ModifyPosition(Symbol(),NormalizeDouble(Bid - MStop,4),TP);
           }
        }
      }
    if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
      {
      if(MStop > 0)
       { 
        if(NormalizeDouble(Ask + MStop,4) <= Open)
          if(SL == 0 || NormalizeDouble(Ask + MStop,4) <=SL) 
           {
            ModifyPosition(Symbol(),NormalizeDouble(Ask + MStop,4),TP);
           }
        }
      }
     } 
  }

mudar de roupa parar depois de 10 pips ou não?

Como posso calcular 10 pips como caros se especificar quando devo mudar a paragem?

if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)

se houver uma posição de compra

if(MStop > 0)

Se o MStop estiver acima de zero

if(NormalizeDouble(Bid - MStop,4) >= Aberto)

Se o preço de licitação menos o preço MStop for maior do que o dobro do preço Open Open = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),4)

que é especificado por 4 dígitos.

if(SL == 0 || NormalizeDouble(Bid - MStop,4) >= SL)

Se Stoploop = 0 ou preço Bid menos pontos pips mais alto ou igual ao nível Stoploop.

O que é que não está claro?

Funciona bem no MT4.

Utilizo-a no MT5, é uma falha.

No MT5 defino mais devido a StopLevel(SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL)). ainda uma falha.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций - Документация по MQL5
 
mas comenta. procure por si próprio.
 
mario065:
Sim, e o que está escrito no código:

A paragem deve ser mudada após 10 pips?

Então como calcular 10 pips como caros se especifiquei quando devo mudar a paragem?

if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)

se houver uma posição de compra

if(MStop > 0)

Se o MStop estiver acima de zero

if(NormalizeDouble(Bid - MStop,4) >= Aberto)

Se o preço de licitação menos o preço MStop for maior do que o dobro do preço Open Open = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),4)

que é especificado por 4 dígitos.

if(SL == 0 || NormalizeDouble(Bid - MStop,4) >= SL)

Se Stoploop = 0 ou preço Bid menos pontos pips mais alto ou igual ao nível Stoploop.

O que é que não está claro?

Funciona bem no MT4.

Utilizo-a no MT5, é uma falha.

Faço os meus cálculos e funciona bem no MT4, ponho mais nível de paragem no MT5 (SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL)). ainda uma falha.


if(NormalizeDouble(Bid - MStop,4) >= Open)
                                  ^^^^^^
                                Что за хрень?

if(SL == 0 || NormalizeDouble(Ask + MStop,4) <=SL) 
  ^^^^^^^^                 ^^^^^^^^^^^^^^
Почему не нормализовано? Нахрена это нормализовать?

 

É simples, é o nível errado de paragens, ou seja, uma paragem inferior ao mínimo.

O que é que não se deve entender?

 
Vladon:

É simples, é o nível errado de paragens, ou seja, uma paragem inferior ao mínimo.

O que é que não se deve entender?

Aí está tudo errado, pois há mais juntas do que é necessário.
 
Reshetov:

Olá Reshetov,

Para si é "Mas que raio?", para mim é a condição quando tenho de fazer uma chamada para a função de modificação.

Se tivesse olhado para o código, não o teria escrito.

if(NormalizeDouble(Bid - MStop,4) >= Open)
                                  ^^^^^^
                                Что за хрень?

if(SL == 0 || NormalizeDouble(Ask + MStop,4) <=SL) 
  ^^^^^^^^                 ^^^^^^^^^^^^^^
Почему не нормализовано? Нахрена это нормализовать?

O código faz:

  double Bid  = NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),4);
  double Ask  = NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),4);
  double Open = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),4);
  double SL   = NormalizeDouble(PositionGetDouble(POSITION_SL),4);
  double TP   = NormalizeDouble(PositionGetDouble(POSITION_TP),4);

Condição de tradução:

input double MStop  = 0.001;
double Open = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),4);
if(NormalizeDouble(Bid - MStop,4) >= Open)

Se o preço no Bid-MStop for superior ou igual ao nível de abertura da posição, então é possível fazer uma chamada de função de modificação - não mais cedo.

Além disso, esta não é a forma correcta de o fazer - está no código e deve ser feita correctamente:

if(SL == 0 || NormalizeDouble(Bid - MStop,4) >= SL)

A segunda normalização é apenas para o caso de, penso que não é má.

A condição em si (que retirou da condição para uma Venda Positiva):

Se a perda stop for zero ou Bid menos 10 pips a mais ou igual para parar o nível de perda - então podemos chamar a função modificar.

Se o preço for mais alto e o stop loss mudar, a próxima chamada será feita após 10 pips, para que não aconteça em cada tick.

Foi o que escrevi - penso que está certo.

Estava à espera que me dissesse se está certo ou errado, se é um erro meu ou um insecto?

 
mario065:

Olá Reshetov,

Para si é "Que caralho?", para mim é a condição quando tenho de fazer uma chamada de função de modificação.

...
Penso que o que Reshetov quis dizer foi que não é necessário normalizar a variável para se. Devemos normalizar o valor do preço quando a encomenda é enviada para o servidor. Em vez de NormalizeDouble(Bid - MStop,4) do NormalizeDouble( (Bid- MStop),4).