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

 
secret:

Obrigado pela resposta, olhei tanto para a documentação como para o vosso exemplo, mas ainda não descobri como obter um parâmetro semelhante ao OrderClosePrice() em MT4.

Se ENUM_DEAL_ENTRY ==DEAL_ENTRY_OUT && ENUM_DEAL_TYPE == DEAL_TYPE_SELL --- significa que a posição de COMPRA foi fechada e, portanto, DEAL_PRICE é o preço de fecho.

 
secret:

Obrigado pela resposta, olhei tanto para a documentação como para o vosso exemplo, mas ainda não descobri como obter um parâmetro semelhante ao OrderClosePrice() em MT4.

Não há analogia directa. A posição consiste em ofícios. Se quiser dados precisos exactamente para uma posição - deve primeiro reunir a posição de volta do histórico de negociação.

Por conseguinte, é melhor trabalhar com o conceito de "acordo".


Geralmente, a implementação depende muito da resposta à pergunta: "Porquê?". Ou seja, descreva primeiro exactamente o que pretende e porquê.

 
secret:

Como posso obter o preço de fecho de uma encomenda (comércio, posição - qualquer coisa)?

Procurei no Google o fórum, não o consegui encontrar.

https://www.mql5.com/ru/forum/162461

Как определить последнюю цену закрытия ордера (MQL5)?
Как определить последнюю цену закрытия ордера (MQL5)?
  • 2016.12.05
  • www.mql5.com
Подскажите как определить последнюю цену закрытия ордера (MQL5)? В MQL4 было просто OrderClosePrice...
 
Igor Makanu:

em alternativa, abrirhttps://www.mql5.com/ru/code/16006

e veja a implementação de@fxsaber

É irrealista arrancar daí a implementação, uma vez que esta tem uma forte dependência de todas as outras partes da biblioteca.

 

Amigos, por favor aconselhem como resolver um problema aparentemente simples. Um pedaço de código:

double stavkariska;

//ставка риска по инструментам

if(StringCompare(_Symbol,"VTBR")==0||StringCompare(_Symbol,"LKOH")==0)

   {double stavkariska=0.3;}

else double stavkariska=1;

  int lot=int (depozit/(d*stoimkontr)*stavkariska); 

Aviso de compilação:

declaração de 'stavkariska' esconde declaração local na linha 25 script.mq5 32 12

possível utilização da variável não-inicializada 'stavkariska' script.mq5 33 39

Qual é a forma correcta de resolver este problema, de modo a que se compila sem quaisquer avisos?


Компиляция - Разработка программ - MetaTrader 5
Компиляция - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Компиляция — это процесс перевода исходного кода MQL4/MQL5-программы на машинный язык. Ее результатом является создание исполняемого файла программы (*EX4 или *.EX5), который может быть запущен в торговой платформе. Скомпилировать можно любой файл (*.MQ4, *.MQ5 или *.MQH), однако исполняемый файл (*.EX4 или *.EX5) может быть получен только в...
 
TrueSam:

Amigos, por favor aconselhem como resolver um problema aparentemente simples. Um pedaço de código:

Aviso de compilação:

declaração de 'stavkariska' esconde declaração local na linha 25 script.mq5 32 12

possível utilização da variável não-inicializada 'stavkariska' script.mq5 33 39

Como resolver o problema correctamente, de modo a que se compila sem quaisquer avisos?


Utilizar um tradutor:

декларация 'stavkariska' скрывает локальную декларацию в строке 25 скрипт.mq5 32 12

возможно использование неинициализированной переменной 'stavkariska' скрипт.mq5 33 39


Ou seja, declarar variáveis com mais cuidado - evitar declarar as mesmas variáveis no mesmo âmbito.

Ao declarar uma variável , crie o hábito de a inicializar imediatamente.

   double StavkaRiska=0.0;// ставка риска по инструментам

   if(StringCompare(_Symbol,"VTBR")==0 || StringCompare(_Symbol,"LKOH")==0)
     double StavkaRiska=0.3;
   else StavkaRiska=1;

   int lot=int(depozit/(d*stoimkontr)*StavkaRiska);
 
Vladimir Karputov:

Fazer uso do tradutor:


Ou seja, declarar variáveis com mais cuidado - evitar declarar as mesmas variáveis no mesmo âmbito.

Ao declarar uma variável , faça o hábito de a rubricar imediatamente.

O problema é que, se eu declarar outra variável na declaração If else, tenho a necessidade de a declarar novamente, caso contrário o erro "'stavkariska1' - identificador não declarado. Um círculo vicioso para um novato. Talvez haja outras formas de implementar a selecção?
 
TrueSam:
O problema é que ao declarar outra variável no Se outro operador, tenho a necessidade de a declarar novamente, caso contrário o erro "'stavkariska1' - identificador não declarado. Um círculo vicioso para um principiante. Talvez haja outras formas de implementar a selecção?

O pequeno robot também cometeu um erro com pressa.

   double StavkaRiska=0.0;// ставка риска по инструментам

   if(StringCompare(_Symbol,"VTBR")==0 || StringCompare(_Symbol,"LKOH")==0)
     double  StavkaRiska=0.3;
   else StavkaRiska=1;

   int lot=int(depozit/(d*stoimkontr)*StavkaRiska);

O destacado é desnecessário. Sem nova declaração, deve funcionar como deve funcionar.

 
Alexey Viktorov:

O pequeno ladrãozeco também cometeu um erro na sua pressa.

O destacado é redundante. Sem o re-anúncio, deve funcionar como deve funcionar.

Obrigado pela vossa atenção. Desculpe, escrevi directamente no meu browser usando copypaste.

 
Alexey Viktorov:

O pequeno ladrãozeco também cometeu um erro na sua pressa.

O destacado é redundante. Sem um novo anúncio, deve funcionar como deve funcionar.

Muito obrigado! O graal está a funcionar :)
Razão: