Desejos para MT5 - página 55

 
-Alexey-:

Se estamos a falar de versatilidade, é desejável poder alterar o volume de uma posição não só em incrementos, mas também em lotes. Isto é, aproximadamente como isto:

1) Abrir uma posição com um determinado lote: PositionOpen(...,lot,....); /esta função é inequívoca e não muda, permanece como está agora/

2) Mudar o volume da posição, por exemplo, aumentar:

a) PositionIncrease(..., 2, mode_lot_change,....) - aumento do volume da posição em 2 lotes; / para o caso em que seja conveniente mudá-lo em lotes.

b) PositionIncrease(..., 2, mode_multiply_change,....) - aumentar o volume da posição em 2 vezes; / para o caso em que seja conveniente mudá-la em múltiplos/


O CTrade tem um conjunto de métodos, de acordo com a ajuda:"Operações com posições". Aí estão: abertura de posição, fechamento de posição, mudança de SL ou TP de uma posição. Sugerimos que seja completado. Inverter uma posição significa executar um comércio oposto com um volume maior do que o actual, de modo a que a direcção da posição aberta seja invertida. Reduzir uma posição é reduzir o volume da posição aberta. Aumentar é o oposto.

Я за то чтобы в библиотеку включались универсальные вещи, которые устраивают всех (чтобы потом не пришлось переопределять функционал стандартных классов).

Sim, este é um ponto muito importante.
O PositionOpen() é um método universal de classe CTrade, que permite não só abrir uma posição, mas também aumentar (diminuir) o volume da existente ou revertê-la. Basta chamá-lo com o tipo_de_ordem apropriado na direcção da posição a acrescentar, na direcção oposta para aparar a posição com o volume requerido, ou duplicar o volume na direcção oposta para o virar.
 
Valmars:
PositionOpen() é um método tão universal da classe CTrade que permite não só abrir uma posição mas também aumentar (diminuir) o seu volume ou invertê-lo. Basta chamá-lo com o tipo_de_ordem apropriado na direcção da posição a acrescentar, na direcção oposta para cortar a posição com o volume requerido ou duplicar o volume na direcção oposta para o virar.

Quero dizer a mesma coisa. Talvez devesse haver funcionalidade especializada para aparar ou inverter, mas obviamente não no CTrade (se estamos a falar de uma biblioteca padrão).

Se a pergunta fosse sobre qualquer uma das classes de "especialistas", eu pessoalmente não me importaria.

 

1. Por favor, devolva a alavanca 1:500 (de preferência 1:200), tenho estado à espera de um tal presente da sua parte há algumas semanas.

2. Tenho outra pergunta: se a minha conta é 1:500 e a alavancagem máxima disponível no testador é 1:100, quais os parâmetros que o testador irá considerar?

EU QUERO-O REALMENTE!

 
Valmars:
PositionOpen() é um método universal da classe CTrade que lhe permite não só abrir uma posição, mas também aumentar (diminuir) o tamanho da posição existente ou revertê-la. Basta chamá-lo com o tipo_de_ordem apropriado na direcção da posição para adicionar, na direcção oposta para aparar o volume requerido, ou duplicar o volume na direcção oposta para virar.

Vamos ver o que é preciso fazer para inverter uma posição, por exemplo, para que o seu volume seja duplicado.

1) Determinar se existe uma posição aberta.

2) Determinar a direcção da posição aberta.

3) Determinar o volume da posição aberta.

4) Determinar quanto dinheiro é necessário para abrir a posição oposta com 3 vezes o volume (ou fechar a mesma posição primeiro, e depois abrir uma posição dupla).

5) Determinar se os fundos necessários estão disponíveis.

6) Determinar o múltiplo mínimo de um lote.

7) Determinar o volume mais próximo, em múltiplo, do necessário.

8) Verificar novamente se há fundos suficientes.

9) Remover SL e TP da posição existente utilizando PositionModify.

10) Definir o deslizamento permitido.

11) Abrir a posição oposta.

12) Determinar o preço de abertura resultante da inversão.

13) Configurar os novos SL e TP usando PositionModify.


Quando estava a escrever isto, cometi alguns erros.


Este é um pedaço de código que dezenas de milhares de pessoas têm de escrever tudo de novo com erros. Porquê, quando se pode fazê-lo uma vez numa biblioteca?

Este é um código que nem todos seriam capazes de orientar correctamente como um novo método de uma classe derivada. Porquê, se os criadores o podem fazer correctamente?

É uma coisa inconveniente. Porquê escrever um monte de código quando se pode usar uma função pronta PositionReverse e uma string?

Quero dizer a mesma coisa. Pode ser necessário escrever aparagem especializada ou funcionalidade de inverter, mas obviamente não no CTrade (se estivermos a falar da biblioteca padrão).

E onde, que deve estar disponível para um utilizador médio e estar presente na ajuda? Porque não no CTrade (assumindo que estes métodos não causarão problemas)?

Afinal, é possível abrir um negócio sem PositionOpen. Porque introduziram este método no Ctrade? Penso que este invólucro foi introduzido por conveniência, porque tem em conta muitas coisas que não são óbvias para um utilizador principiante.

 
-Alexey-:

Vamos ver o que é preciso fazer para inverter uma posição, por exemplo, para que o seu volume seja duplicado.

1) Determinar se existe uma posição aberta.


3) Determinar o volume da posição aberta.

4) Determinar quanto dinheiro é necessário para abrir a posição oposta com 3 vezes o volume (ou fechar a mesma posição primeiro, e depois abrir uma posição dupla).

5) Determinar se os fundos necessários estão disponíveis.

6) Determinar o múltiplo mínimo de um lote.

7) Determinar o volume mais próximo em múltiplo do necessário.

8) Verificar novamente se há fundos suficientes.

9) Remover SL e TP da posição existente utilizando PositionModify.

10) Definir o deslizamento permitido.

11) Abrir a posição oposta.

12) Determinar o preço de abertura resultante da inversão.

13) Configurar os novos SL e TP usando PositionModify.


Ao escrever isto, cometi alguns erros.


Este é um pedaço de código que dezenas de milhares de pessoas têm de escrever tudo de novo com erros. Porquê, quando se pode fazê-lo uma vez numa biblioteca?

Este é um código que nem todos podem orientar correctamente sob a forma de um novo método de uma classe derivada. Porquê, se os criadores o podem fazer correctamente?

É uma coisa inconveniente. Porquê escrever um monte de código quando se pode usar uma função PositionReverse pronta e uma linha?

E onde, para que possa estar disponível para um utilizador comum e estar presente na ajuda? Porque não em STrade (assumindo que estes métodos não causarão problemas)?

Afinal, é possível abrir um negócio sem PositionOpen. Porque introduziram este método no Ctrade? Penso que este invólucro foi introduzido por conveniência, porque tem em conta muitas coisas que não são óbvias para um utilizador principiante.

Tem razão em muitas coisas. Para abrir uma posição com PositionOpen(...), deve também especificar o volume, abrir o preço, SL e TP e verificar se todos estes parâmetros são válidos, se não quiser obter um erro ao abrir a posição.
O mesmo se passa com o capotamento. Bem, especifica "Reverter uma posição para tal e tal símbolo" e é tudo, e tem-no invertido por 100 pontos de 4 dígitos
superior ou inferior. Poderá não ficar satisfeito com isto.
Mas vamos examinar os seus argumentos um a um.
1) Determinar se existe uma posição aberta.

Penso que isto ainda terá de ser feito antes de se decidir inverter uma posição.

2) Determinar a direcção de uma posição aberta.

Penso que isto também é obrigatório se decidir virar. Em qualquer caso, é elementar, uma vez escolhida a posição.

3) Determinar o volume da posição aberta.

Semelhante ao ponto 2.

4) Determinar quanto dinheiro precisa para abrir a posição oposta com 3 vezes o volume (ou fechar o mesmo primeiro e depois abrir um duplo).

Verificar a suficiência dos fundos antes de enviar um pedido.

5) Determinar se os fundos necessários estão disponíveis.

A ser combinado com o ponto 4.

6) Determinar o múltiplo mínimo do lote

Claro que sim.

7) Determinar o volume que está mais próximo da multiplicidade necessária.

Está a abrir posições, não está? Por conseguinte, já tem esta funcionalidade. Tudo o que tem de fazer é chamar a função.

8) Verificar novamente se há fundos suficientes.

O método padrão.

9) Remover SL e TP da posição existente utilizando PositionModify.

Não é necessário.

10) Definir um deslizamento permitido.

Claro. O mais pequeno é uma entrada mais precisa, mas com mais exigências.

11) Abrir uma posição oposta.

É aqui que aplicamos a PositionOpen.

12) Determinar o preço de abertura resultante da inversão.

É também bastante elementar. Só temos de re-seleccionar a posição.

13) Definir novos SL e TP usando PositionModify.

Se não o calculou e o definiu imediatamente, pode fazê-lo agora.

Se cometeu um erro algures ou se esqueceu de alguma coisa, os programadores trataram disso, primeiro os parâmetros do pedido são verificados quanto à validade utilizando a função OrderCheck(m_request,m_check_result) e, em caso de erro, o pedido não será enviado para o servidor com uma mensagem correspondente no diário.

Como quer que o método padrão decida tudo por si: o desvio, o preço, o volume e as paragens?

 
Como quer que o método padrão trate de tudo: o desvio, o preço de inversão, o volume e as paragens? <br / translate="no">.
O método padrão com desvio faz exactamente o mesmo (decide por mim) - é especificado dentro da classe por defeito. Ou seja, é um parâmetro opcional, e não está presente no PositionOpen. Se necessário, é alterado utilizando um método especial, STrade.deviation...., mas - quando necessário, nem sempre especificado. Isto é conveniente. O mesmo se aplica a alguns outros parâmetros definidos no CTrade por defeito.

O preço do rolo, evidentemente, é fixado pela estratégia ou pelo utilizador. No entanto, depois de o preço ter sido alterado, deve ser verificado porque há deslizamento e dispersão. É por isso que a paragem ou lucro calculado antecipadamente (e especificado na função) pode acabar por ser diferente. Mencionei preço apenas por causa disso, isto é, se novos valores de paragem e lucro forem especificados na função rollover (se - então não é necessário verificar e definir). O algoritmo é simples - resolvido pela função rollover automaticamente - sem o meu envolvimento. Isto é conveniente.

Se existir uma posição aberta, que é o caso da proposta, então surgem acções que podem ser levadas a cabo sem verificações. Por exemplo:

- Não é necessário especificar a compra ou venda ao chamar a função em questão, porque o programa pode detectar automaticamente a direcção do comércio para a inversão, para o curto prazo e para o aumento. Não há nada para verificar a existência de erros. Aqui temos: menos um parâmetro na chamada de função (sem compra/venda). É conveniente? Sim. O método padrão resolveu-o para mim.

- o volume da posição é conhecido, o que significa que de acordo com o pedido do utilizador, a função Pivot ou Reduzir/ampliar pode calcular o volume necessário da transacção para o modo especificado (em lotes, ou em incrementos) em relação ao volume já conhecido, utilizando o múltiplo mais próximo do lote mínimo. Estas são acções típicas e podem ser programadas uma vez. São principalmente aquilo de que estou a falar.

Quanto à verificação da correcção - parece que tem razão, tem de ser você mesmo a fazê-lo.

Bem, especificou "posição inversa para tal e tal carácter" e é isso, e é invertida por 100 pontos de 4 dígitos

É assim que se faz no PositionOpen. Mas, pode especificar parâmetros opcionais, se desejar, para que isso não aconteça. Isto é quando chamado: parar e tomar (parâmetros opcionais da função), separadamente antes de o método de desvio ser chamado. Isto é, a protecção contra tal situação no CTrade 1) está presente e 2) é convenientemente concebida. O utilizador não tem de pensar em como criar toda esta estrutura. É disso que se trata. A única coisa é que não há verificação de propagação.
 

Não sei se foi mencionado ou não, mas gostaria que o MetaEditor conseguisse fazer cair algumas partes do código... Por exemplo, se de parênteses para parênteses, para, funções, etc.

Por outras palavras, tal como é implementado em ambientes de programação, tais como o Visual Studio. Porque às vezes cansas-te de percorrer todo o ecrã em busca de algo...

Desta forma, pode deixar a descoberto apenas os fragmentos de código com que está a trabalhar e triturar o resto...

Obrigado... :-)

 
St0nE:

Não sei se isto foi mencionado ou não, mas gostaria que o MetaEditor pudesse derrubar algumas secções do código...

foi dito. pode dar-lhe um sinal de mais aqui https://www.mql5.com/ru/forum/2931
 
Obrigado... Registado em... :-)
 

Analisei o tema daMetaQuotes Software assinou um acordo de parceria a longo prazo com o International Business Times e lembrei-me do que há muito queria sugerir:

1. Adicionar um item "Marcar como Lido" ao menu de conteúdo do separador "Notícias", com a possibilidade de o aplicar a várias notícias seleccionadas ao mesmo tempo (agora tem de abrir cada notícia separadamente). Isto permitirá saltar notícias "não interessantes" e manter o registo de novas notícias.

2.Mostrar o número de novas notícias não lidas num separador como é feito no MetaEditor:Bookmarks

Esta pode não ser a tarefa principal, mas acrescentará conveniência ao seu trabalho...