Obrigado, Eugene, pelo artigo! Muitas lacunas no quebra-cabeça do meu conhecimento sobre o mercado de moedas foram quase totalmente preenchidas.
Há uma única nuance: alguns leitores do seu artigo podem não iniciar o Expert Advisor no testador de estratégia se o par de moedas que está sendo testado tiver um sufixo ou prefixo. Eles devem levar isso em consideração e especificá-lo nas configurações dos parâmetros do Expert Advisor.
Mas, de qualquer forma, tudo é SUPER!!!
Abraços, Vladimir.
Obrigado, Eugene, pelo artigo! Muitas lacunas no quebra-cabeça do meu conhecimento sobre o mercado de moedas foram quase completamente preenchidas.
Há uma única nuance: alguns leitores do seu artigo podem não iniciar o Expert Advisor no testador de estratégia se o par de moedas que está sendo testado tiver um sufixo ou prefixo. Eles devem levar isso em conta e especificá-lo nas configurações dos parâmetros do Expert Advisor.
Caso contrário, está tudo ótimo!!!
Atenciosamente, Vladimir.
Muito obrigado! Vou verificar amanhã com os prefixos em outra corretora. Se for o caso, farei um acréscimo)
Eugene, ontem eu não examinei atentamente o código do Expert Advisor, pois estava mais interessado na parte do texto do artigo e, portanto, não fiz uma pergunta sobre a parte do código destacada em amarelo:
//+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ int CountOrders(string symb,ENUM_ORDER_TYPE type) { int count=0; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(OrderGetTicket(i))) { if(OrderGetInteger(ORDER_TYPE)==type && PositionGetString(POSITION_SYMBOL)==symb && PositionGetInteger(POSITION_MAGIC)==Magic) count++; } } return(count); }
Prestei atenção ao seu aviso imediatamente: Aqui estão as funções para contar ordens abertas e posições abertas. CountOrders e CountTrades tratam da contagem de ordens e posições abertas para um determinado símbolo, levando em conta o número mágico do EA. Na verdade, elas ainda não são usadas no código, mas serão usadas em versões futuras, quando eu finalmente escrever uma função normal para centralizar o spread entre limites....
Mas não entendi muito bem: a ideia foi sua ou deveria ser diferente?
Atenciosamente, Vladimir.
Mas não entendi muito bem - a ideia foi sua ou deveria ser diferente?
Atenciosamente, Vladimir.
Foi intencional - caso contrário, o Expert Advisor pode começar a confundir as ordens de seu mágico com outras). A Symb pretende criar uma versão multimoeda do Expert Advisor no futuro. Ainda não consegui fazer isso)))))
Isso se deve ao fato de que, caso contrário, o EA pode começar a confundir as ordens de seu mágico com as de outros). Por símbolo, pretende-se criar uma versão multimoeda do EA no futuro. Ainda não consegui criá-la)))))
Tudo está claro com relação às ordens, mas por que as posições do símbolo e do mágico são verificadas nessa função? ))
Atenciosamente, Vladimir.
Isso é uma vergonha para a MQ, não um artigo. Como é possível permitir a publicação de uma coisa dessas?
//+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ int CountTrades(string symb) { int count=0; for(int i=PositionsTotal()-1; i>=0; i--) { if(PositionSelectByTicket(PositionGetTicket(i))) { if(PositionGetString(POSITION_SYMBOL)==symb && PositionGetInteger(POSITION_MAGIC)==Magic) { count++; } } } return(count); }
PositionGetTicket(i), de acordo com a documentação,"A função retorna um tíquete de uma posição por índice na lista de posições abertas e seleciona automaticamente essa posição para trabalhar mais com ela...". E por que selecionar uma posição por seu tíquete usando a função PositionSelectByTicket se ela já está selecionada? Você está ensinando aos novatos como não fazer isso?
A observação de Vladimir é bastante justa. E sua resposta não tem nada a ver com isso... Por que verificar o símbolo e a mágica POSITION se trabalhamos com ordens????
Além do código, também não gostei da parte do texto.
É um lixo, nada mais é do que um pedaço de papel.
É um tópico interessante, sem discussão.
Que tipo de criação de mercado estamos criando, qual é o objetivo?
O fato de não ter sido possível criá-lo é um fato, porque faltou matriz ao autor.
E há muitas delas por aí.
É preciso pensar nisso por pelo menos mais ...dez anos, talvez consigamos fazer.
como um começo e como uma forma de melhorar - ok, nisso eu apoio.
Renat Akhtyamov #:
Que tipo de criação de mercado estamos criando, qual é o objetivo?
O fato de não ter sido possível criá-lo é um fato, pois o autor não tinha a matriz necessária
Você deve ler oartigo não na diagonal, mas do início ao fim, ou seja, completamente, para que essas perguntas não surjam.
Concordo plenamente com a crítica de Alexey Viktorov sobre o uso da funçãoPositionSelectByTicket() quando um bilhete já foi selecionado sem ela. A propósito, eu mesmo não prestei atenção a isso.
Mas, de qualquer forma, obrigado pelo artigo!
Saudações, Vladimir.
Oartigo não deve ser lido na diagonal, mas do começo ao fim, ou seja, completamente, para que não surjam dúvidas.
Concordo plenamente com a crítica de Alexey Viktorov sobre o uso da função PositionSelectByTicket () quando um bilhete já foi selecionado sem ela. A propósito, eu mesmo não prestei atenção a isso.
Mas, de qualquer forma, obrigado pelo artigo!
Saudações, Vladimir.
Não é selecionado um tíquete, mas uma posição é selecionada para trabalhar com suas propriedades por meio das funções correspondentes.
Não é selecionado um tíquete, mas uma posição é selecionada para trabalhar com suas propriedades por meio das funções apropriadas.
Olá Alexei, obrigado pelo esclarecimento. )) Quando escrevi minha mensagem, me baseei na mesma documentação (destacada em amarelo):
Функция возвращает тикет позиции по индексу в списке открытых позиций и автоматически выбирает эту позицию для дальнейшей работы с ней при помощи функций PositionGetDouble, PositionGetInteger, PositionGetString. ulong PositionGetTicket( int index // número na lista de itens ); Параметры index [in] Индекс позиции в списке открытых позиций, начиная с 0. Возвращаемое значение Тикет позиции. В случае неудачного выполнения возвращает 0.
Atenciosamente, Vladimir.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Criando um algoritmo de market making no MQL5 foi publicado:
Como funcionam os market makers no mercado? Vamos explorar isso e criar um algoritmo simples de market making.
Muitos pensam que o market maker não corre riscos. Mas não é assim. O principal risco do market maker é o risco de inventário, ou inventory risk. Isso ocorre quando há uma acumulação repentina de posições em uma direção sem possibilidade de concretizá-las e lucrar com o spread. Por exemplo, quando a multidão vende um ativo sem parar e o market maker tem que comprar toda a oferta, a queda do preço leva o market maker ao prejuízo.
As empresas tentam evitar esse risco usando fórmulas especiais para centralizar o spread e determinar o preço ideal de compra e venda. Mas isso nem sempre é possível: mesmo que o preço não seja ótimo, sua função é fornecer liquidez ao mercado, mesmo que isso signifique operar com prejuízo temporário.
Autor: Yevgeniy Koshtenko