OrderSend() perguntas - página 6

 
maryan.dirtyn:

Estou a bater o meu cérebro... a paragem não se estabelece... e muitos erros. isto é o que resta da experiência, e não vai funcionar mais

Se o fizer, não há erros, mas o stop-loss ainda não está definido

respondeu aqui
 
Yedelkin:

Aparentemente, não expliquei o problema anterior de forma muito clara. Deixe-me tentar novamente.

Durante o último ano, a descrição da lista de valores de enumeraçãoENUM_ORDER_TYPE_FILLING foi alterada pelo menos três vezes. A descrição anterior era a seguinte

ENUM_ORDER_TYPE_FILLING

Identificador

Descrição

ORDER_FILLING_FOK

Uma transacção só pode ser executada no volume especificado e a um preço igual ou melhor do que o especificado na encomenda. Se não houver oferta suficiente no mercado neste momento para o símbolo da encomenda, então a encomenda não será preenchida. Este tipo de preenchimento é utilizado no modo de execução SYMBOL_TRADE_EXECUTION_INSTANT ouSYMBOL_TRADE_EXECUTION_REQUEST.

ORDER_FILLING_IOC

Um acordo para executar uma transacção no volume máximo disponível no mercado dentro do volume especificado na ordem e a um preço igual ou melhor do que o especificado na ordem. Neste caso, não serão feitas encomendas adicionais para o volume em falta. Este tipo de preenchimento só pode estar disponível nos modos de execução SYMBOL_TRADE_EXECUTION_MARKET eSYMBOL_TRADE_EXECUTION_EXCHANGE dependendo das definições no servidor de negociação.

ORDER_FILLING_RETURN

Acordo para tornar uma transacção no volume máximo disponível no mercado dentro do volume especificado na ordem e a um preço igual ou melhor do que o especificado na ordem. Neste caso, será feita uma encomenda adicional para o volume em falta ao preço especificado nesta encomenda. Este tipo de enchimento é utilizado apenas para encomendas pendentes (TRADE_ACTION_PENDING).

Como podemos facilmente ver, existe uma correspondência um-para-um entre ORDER_FILLING_RETURN e ordens pendentes, nomeadamente ORDER_FILLING_RETURN só poderia ser aplicado a encomendas pendentes e o campo type_filling de todas as encomendas pendentes só poderia ser preenchido com o valor de ORDER_FILLING_RETURN.

Para ordens de mercado(action===TRADE_ACTION_DEAL) o campo type_filling deveria ter sido preenchido em função dos modos de execução definidos no lado do servidor.

Assim, tínhamos um certo paradigma: se houvesse uma ordem pendente,ORDER_FILLING_RETURN; se houvesse uma ordem de mercado, ORDER_FILLING_FOK ou ORDER_FILLING_IOC (dependendo do modo).

Agora tudo está um pouco virado do avesso, nomeadamente:

ENUM_ORDER_TYPE_FILLING

Identificador

Descrição

ORDER_FILLING_FOK

Esta política de preenchimento de encomendas significa que a encomenda só pode ser preenchida até ao volume especificado. Se não houver volume suficiente do instrumento financeiro no mercado neste momento, a ordem não será executada. O volume necessário pode ser compilado a partir de várias ofertas actualmente disponíveis no mercado.

ORDER_FILLING_IOC

Indica acordo para executar uma transacção até ao volume máximo disponível no mercado dentro do volume especificado na ordem. Se a execução completa não for possível, a encomenda será preenchida até ao volume disponível, e o volume não preenchido será cancelado.

ORDER_FILLING_RETURN

Este modo só é utilizado para encomendas de ORDER_TYPE_BUY_LIMIT e ORDER_TYPE_SELLL_LIMIT. Em caso de execução parcial, a ordem limite com o volume restante não é eliminada, mas permanece em vigor.

Para ORDER_TYPE_BUY_BUY_STOP_LIMIT e ORDER_TYPE_SELLL_STOP_LIMIT ordena a ordem correspondente ORDER_TYPE_BUY_LIMIT/ORDER_TYPE_SELLL_LIMIT com o tipo de execução ORDER_FILLING_RETURN será criada aquando da activação.

A restrição de utilizar ORDER_FILLING_FOK e ORDER_FILLING_IOC apenas com ordens do mercado desapareceu. Também não há restrições à utilização de ORDER_FILLING_FOK e ORDER_FILLING_IOC com ordens de mercado, dependendo do modo de execução definido no servidor. Existe uma restrição ao uso de ORDER_FILLING_RETURN apenas com ordens de limite e stop_limit .

Então a minha pergunta é: É aceitável usar ORDER_FILLING_FOK e ORDER_FILLING_IOC para todas as ordens (tanto de mercado como pendentes), incluindo ordens de limite e stop_limit? Alguém descobriu as mudanças?

Sim, é um pouco obscuro nesta questão.

Se houver correspondência completa entre ENUM_SYMBOL_TRADE_EXECUTION e ENUM_ORDER_TYPE_FILLING , então a segunda é obviamente desnecessária.

Assim, não há moralidade, e muito provavelmente são permitidos valores diferentes deENUM_ORDER_TYPE_FILLINGpara um e o mesmoENUM_SYMBOL_TRADE_EXECUTION . MQ descreveria aqui um quadro de possibilidades, mas muito provavelmente estes dados dependem das configurações do servidor de negociação.

E daí a segunda moral, o que afinal é necessário:

é necessária uma função que devolva uma lista de opções válidas (ENUM_ORDER_TYPE_FILLING), para o tipo de encomenda solicitada (imediata ou pendente).

Não há muitas opções, por isso pode entrar no int através do "|".

Se eu estiver errado, dê-me um feiticeiro mágico, onde procurar esta pergunta.



 

Para resolver esta questão, fui à biblioteca padrão (por uma questão de hábito, se não é claro como os outros o fazem).

A função de herança conveniente foi aí dada, enquanto na classe SetTypeFilling() da CTrade não é utilizada, o campo type_filling é inicializado por defeito zero que corresponde a ORDER_FILLING_FOK de acordo com a enumeração.

É tudo, acabou-se o trabalho. E eu pensei que por este campo não estar presente na interface, significa que o enchimento é automatizado na classe.

SZY em geral, à espera de uma resposta, como resolvê-lo :)
 
Por agora, vejo uma saída: bater no servidor até que ele lhe dê a resposta de que necessita.
 
her.human:
Até agora, vejo uma solução: bater no servidor até obter a resposta que deseja.

Uma boa noite de diversão, fez-me rir até ao estômago.

Os chineses invadiram o servidor principal do Pentágono.

Todos os chineses tentaram uma vez digitar a senha.

Todas as outras pessoas escreveram "Mao Tse Tung".

Em 5*10^7 tentativas, o servidor diz que a senha é "Mao Tse Tung".

 
her.human:
Por agora, vejo uma saída: bater no servidor até obter a resposta certa.

saída estúpida.

Deve falar primeiro com o seu CD. Descubra que tipos de execução suportam e que tipos de lista de metaquotas correspondem aos seus tipos de execução.

porque só porque as metaquotas surgiram - 3 tipos de preenchimento e 3 tipos de tempo - não significa que elas sejam um reflexo da realidade quando se trata de preencher encomendas num corretor real.

 
sergeev:

saída estúpida.

Deve falar primeiro com o seu CD. descubra que tipos de execução suportam e que tipos de lista de metaquotas correspondem aos seus tipos de execução.

porque só porque as metaquotas surgiram - 3 tipos de preenchimento e 3 tipos de vezes - não significa que sejam um reflexo da realidade quando se trata de preencher encomendas num corretor real.

É isso que estou a dizer, tudo depende das configurações do servidor,

Mas bater em todas as empresas de corretagem é também um problema,

por exemplo, numa empresa de corretagem pode obter uma encomenda para uma corretagem real,

mas contornar tudo e escrever os aneis de troca no seu código é exagero.

Se sentir que já se registou connosco, pode começar do zero com um verdadeiro corretor ou pode abri-los do zero,

PS concorda que o código normal é escrito de uma forma unificada, para qualquer negociação, são possíveis excepções, mas em primeiro lugar confirmam as regras, e em segundo lugar, se houver excepções, tem de escrever as excepções.

Aqui, tal tautologia acaba por se revelar.

 
Urain:

Este é o meu ponto de vista, tudo depende das configurações do servidor,

Mas seria problemático bater em cada empresa de corretagem,

Se não souber a diferença entre os dois, pode pensar que a ordem será copiada para a ordem correcta,

mas contornar tudo e escrever os aneis de troca no seu código é exagero.

PS deve concordar que o código normal é escrito de uma forma unificada, para qualquer tipo de negociação,

PS concorda que o código normal é escrito de uma forma unificada para cada negociação, as excepções são possíveis, mas primeiro as excepções apenas confirmam as regras e segundo se houver excepções, terá de escrever as excepções. Aqui, tal tautologia acaba por se revelar.

eis o que se passa.

as metaquotas são confundidas com os tipos e tempos de execução. são não normalizadas no sentido em que na realidade as ordens IOC e FOK se referem a tempos de execução.

O tipo de execução da ordem costumava ser adequadamente nomeado AON. mas foi depois removido.

Veja a especificação FIX que a CAF utiliza e executa as encomendas

FIX 4.4 : TimeInForce <59> field

Type: char

Used In
Description

Specifies how long the order remains in effect. Absence of this field is interpreted as DAY. NOTE not applicable to CIV Orders.

Valid values:
0 = Day (or session)
1 = Good Till Cancel (GTC)
2 = At the Opening (OPG)
3 = Immediate or Cancel (IOC)
4 = Fill or Kill (FOK)
5 = Good Till Crossing (GTX)
6 = Good Till Date
7 = At the Close

Marquei tipos que levaram meta-cotas para si próprios. Mas como podem ver, todos eles estão num grupo da etiqueta TimeInForce <59>.

E agora por favor digam-me como o corretor que coloca ofertas no mercado irá processar a colocação tipo IOC e tempo GTD na ordem MT. Porque este é um campo, não dois diferentes.

Por conseguinte, cada corretor pensará por si próprio o que fazer com o enchimento e que tipo de utilização e como retirar a encomenda.


A única graça de poupança é a diferença entre o mercado e a ordem pendente, ou seja, alguns tipos de execução de ordens são utilizados apenas para ordens pendentes e outros para ordens de mercado. Em geral, devemos olhar para este ponto e discuti-lo.


O nome All-Or-Nothing está na etiqueta completamente diferente ExecInst <18>, que não é passada na ordem MT de forma alguma. É implicitamente assumido (provavelmente) para o tipo FOK

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
sergeev:
...

Alex assume este tópico, por favor. Infelizmente, sou um flutuador nestas questões.

Faça sugestões para o SD, fale com eles.

Temos de colocar o tema em alguma ordem.

O que temos agora não é de modo algum utilizável para programação profissional.

 
Urain:

Alex, assuma este tópico, por favor. Infelizmente, estou a nadar nestas matérias.
Fazer sugestões para o sd, falar com eles.
Precisamos de pôr o tema em ordem.
Não tenho a certeza se o que temos agora é adequado para programação profissional.

Ha. Ou eu sou estúpido ou os meus esquis não estão a correr.

Vê você mesmo que todos os meses as metaquotas fazem uma ligação a uma nova bolsa ou mercado.
Do qual concluo que, neste estado de coisas, os seus programadores atracam MT e FIX sem problemas (ou com alguma tensão com limitação de um deles).
Assim, podem combinar os tipos de tempo FOK e GTC, o que significa que é pouco provável que mudem alguma coisa num futuro previsível, uma vez que o trabalho está em curso.
Ao mesmo tempo (compreendo) que para a ponte de troca da MT só podem definir dois tipos - AON ou Parcial. E inventado em MT Return - provavelmente vai para Partial.

Em geral, as questões de interacção entre o corretor FIX e o servidor de MT situam-se no plano dos programas de perícia e compreensão no corretor, que fazem pontes da MT para os seus fornecedores. E não creio que as metaquotas mudem alguma coisa, porque têm uma longa e activa promoção da plataforma para os mercados, e portanto a estrutura interna do servidor de MT é bastante consistente com as realidades.