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

 
Youri Lazurenko:

Obrigado. Em mql5 não foram construídos tais labirintos. Em vez de ir directamente para o objectivo, é preciso fazer alguns desvios, passar por muitos becos sem saída e obstáculos. Uma língua por causa de uma língua.

Na MQL4 também se define um magik para uma posição.

Aqui decidiu utilizar um objecto comercial da SB. Isto significa que durante a sua criação e inicialização é necessário definir os seus parâmetros. E depois utiliza-o apenas para funções comerciais. Pode haver muitos desses objectos, e definirá parâmetros diferentes para cada um deles. E depois - aplicar ao objecto necessário para a gestão de ordens de comércio os símbolos e sinais mágicos que foram definidos para cada objecto em particular, e que são necessários em momentos diferentes, dependendo do TS.

É tão simples quanto isso.

 
Hello Artyom Trishkin! 2020.09.14_01:14 GMT+3. Peguei na média móvel padrão EA e alterei as duas condições para abrir uma troca e para fechar uma troca. Vi no testador de estratégia que o Conselheiro Especialista cumpriu apenas a segunda condição para abrir e fechar uma posição; ele ignora a primeira condição. O Expert Advisor é simples como é, mas como é que os Expert Advisor complexos escrevem EAs complexos que fazem tudo funcionar? Como fazer funcionar pelo menos duas condições de abertura e encerramento de negócios? E pode haver mais condições para a abertura de comércios. Sabe a resposta a estas perguntas? Por favor, aconselhem. Anexo um ficheiro do meu Expert Advisor. 01:26 GMT+3.
Arquivos anexados:
 
Artyom Trishkin:

Na MQL4, também se define um magik para uma posição.

Aqui decidiu utilizar um objecto comercial da SB. Isto significa que, ao criá-lo e inicializá-lo, é necessário definir os seus parâmetros. E depois utiliza-o apenas para funções comerciais. Pode haver muitos desses objectos, e definirá parâmetros diferentes para cada um deles. E depois - aplicar ao objecto necessário para a gestão de ordens de comércio os símbolos e sinais mágicos que foram definidos para cada objecto em particular, e que são necessários em momentos diferentes, dependendo do TS.

É tão simples quanto isso.

Olá. Obrigado pela sua resposta. Vou dar o meu ponto de vista. Ao abrir uma encomenda em MQL4, especificamos os seus parâmetros incluindo um magik. Em #include <Trade\OrderInfo.mqh>, tudo, excepto o magik, é especificado. Por exemplo - CTrade::BuyLimit(const volume duplo,const preço duplo,const símbolo de string string=NULL,const sl duplo=0,const duplo tp=0.0,const duplo tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const data de expiração=0,const string comment=""). Na minha opinião, isto não é uma correcção e devemos corrigi-la introduzindo outro parâmetro mágico. Ou, #include <Trade\ HistoryOrderInfo.mqh> contém tudo excepto o lucro (lucro/perda) retirado pela encomenda. Esta é uma informação importante sobre a encomenda e está em falta. Precisamos de encontrar o lucro da última encomenda fechada. Esta informação será mostrada em Comentário(). E vamos ver. Embora não haja ordem aberta (posição), o comentário mostra o lucro da última ordem. Assim que a ordem (posição) é aberta, obtemos 0 no comentário, até que a ordem seja fechada. Ou seja, a ordem ainda está no mercado, mas simultaneamente na história, permanece em duas hipóstases simultaneamente. Mas isto é um disparate. É por isso que eu digo que a língua é apenas para o bem da língua. Na minha opinião, há muitos detalhes incompletos.

 
Youri Lazurenko:


Os conceitos são confusos (em particular 'ordem'). Pode haver uma ORDEM REMOTA ou uma POSIÇÃO no mercado. Pode ler mais na ajuda:Princípios Gerais.

A classe CTrade é auto-suficiente e não há falhas nela, apenas a sua falta de vontade de ver o código de implementação. Ao enviar uma ordem de comércio (para abrir ou modificar uma POSIÇÃO), a instância da classe de comércio envia um número mágico - basta inicializá-lo imediatamente ao criar o objecto.

Общие принципы - Торговые операции - Справка по MetaTrader 5
Общие принципы - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и...
 
Youri Lazurenko:

Olá. Obrigado pela sua resposta. Vou dar a minha opinião. Ao abrir uma encomenda em MQL4, especificamos os seus parâmetros incluindo um magik. Em #include <Trade\OrderInfo.mqh>, tudo, excepto o magik, é especificado. Por exemplo - CTrade::BuyLimit(const volume duplo,const preço duplo,const símbolo de string string=NULL,const sl duplo=0,const duplo tp=0.0,const duplo tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const data de expiração=0,const string comment=""). Na minha opinião, isto não é uma correcção e devemos corrigi-la introduzindo outro parâmetro mágico. Ou, #include <Trade\ HistoryOrderInfo.mqh> contém tudo excepto o lucro (lucro/perda) retirado pela encomenda. Esta é uma informação importante sobre a encomenda e está em falta. Precisamos de encontrar o lucro da última encomenda fechada. Esta informação será mostrada em Comentário(). E vamos ver. Embora não haja ordem aberta (posição), o comentário mostra o lucro da última ordem. Assim que a ordem (posição) é aberta, obtemos 0 no comentário, até que a ordem seja fechada. Ou seja, a ordem ainda está no mercado, mas simultaneamente na história, permanece em duas hipóstases simultaneamente. Mas isto é um disparate. É por isso que eu digo que a língua é apenas para o bem da língua. Na minha opinião, há muitos detalhes inacabados.

Yury, isto não é uma massa de detalhes inacabados, mas sim uma massa de mal-entendidos.

Porquê, em cada abertura de uma ordem ou posição, escrever um mágico, se é suficiente para o indicar uma vez no OnInit().

#include <Trade\Trade.mqh>
CTrade trade;

sinput  int Magic = 1; //  Идентификатор эксперта

int OnInit()
 {
  trade.SetExpertMagicNumber(Magic);
  return(INIT_SUCCEEDED);
 }/******************************************************************/

É tudo!!! Então a magia de uma ordem, negócio ou posição será verificada da mesma maneira para identificar "amigo ou inimigo". O problema está na sua mente.

Uma encomenda pode não ter lucro! Uma posição tem um lucro no tempo actual. E uma posição tem um comércio de fecho, ou parte de uma posição, mas isso está na história do comércio. Uma ordem é apenas uma ordem para fazer uma transacção no mercado.

Deixe-me tentar explicar em kolkhoznyy. Vem ao mercado, decide comprar um pickle.

Mandado: dê-me um quilo deles...

negócio: dás-me o dinheiro, levas o peixe...

posição: na sua bolsa está o damasco...

Do ponto de vista do vendedor:

posição: tem o guisado de peixe no balcão...

encomenda: recebe uma encomenda para pesar um quilo de peixe...

transacção: entregar os damascos, pôr o dinheiro no saco...

 
Youri Lazurenko:

Olá. Obrigado pela sua resposta. Vou dar a minha opinião. Ao abrir uma encomenda em MQL4, especificamos os seus parâmetros incluindo o magik. Em #include <Trade\OrderInfo.mqh>, tudo, excepto o magik, é especificado. Por exemplo - CTrade::BuyLimit(const volume duplo,const preço duplo,const símbolo de string string=NULL,const sl duplo=0,const duplo tp=0.0,const duplo tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const data de expiração=0,const string comment=""). Na minha opinião, isto não é uma correcção e devemos corrigi-la introduzindo outro parâmetro mágico. Ou, #include <Trade\ HistoryOrderInfo.mqh> contém tudo excepto o lucro (lucro/perda) retirado pela encomenda. Esta é uma informação importante sobre a encomenda e está em falta. Precisamos de encontrar o lucro da última encomenda fechada. Esta informação será mostrada em Comentário(). E vamos ver. Embora não haja ordem aberta (posição), o comentário mostra o lucro da última ordem. Assim que a ordem (posição) é aberta, obtemos 0 no comentário, até que a ordem seja fechada. Ou seja, a ordem ainda está no mercado, mas simultaneamente na história, permanece em duas hipóstases simultaneamente. Mas isto é um disparate. É por isso que eu digo que a língua é apenas para o bem da língua. Na minha opinião, há muitos detalhes inacabados.

Pensa-se em termos de procedimentos, mas tenta-se utilizar os objectos do OOP. São tratados de uma forma diferente. Por exemplo:

É criado um objecto. Um mágico está preparado para isso.
Um segundo objecto é criado. Um segundo mágico está pronto.
É criado um terceiro objecto. Um terceiro mágico é-lhe entregue.

Agora tem três objectos de comércio para três estratégias numa só EA.
Deve utilizar o primeiro objecto comercial para abrir uma posição ou colocar uma ordem pendente para o primeiro TS.
A fim de abrir uma posição ou estabelecer uma ordem pendente para o segundo TS, deve referir-se ao segundo objecto comercial.
Para abrir uma posição ou colocar uma ordem pendente para um terceiro TS, deve referir-se a um terceiro objecto comercial.

As encomendas não têm um parâmetro de lucro. Por uma razão simples - uma ordem é uma ordem (uma ordem pendente é uma ordem a um corretor para executar alguma acção quando o preço atinge um determinado nível, ou seja, uma ordem para executar uma negociação após algum tempo quando o critério especificado é atingido). Uma transacção (ordem) pode resultar numa transacção (já tem o parâmetro de lucro DEAL_PROFIT) que levará ou à criação de uma posição ou à sua alteração ou encerramento (a posição também tem o parâmetro de lucro, mas apenas uma corrente - POSIÇÃO_PROFIT flutuante).

E depois há a ordem de mercado (ordem de mercado), que aparece sempre antes da negociação quando se envia uma ordem de negociação - esta é a sua ordem de negociação. E é visível na lista de encomendas existentes. Ou seja, qualquer abertura de posição gera uma cadeia: ordem --> comércio --> posição. Qualquer acção sobre uma posição aberta cria uma cadeia: posição --> ordem --> comércio --> sem posição, ou uma posição menor, ou uma posição maior (netting), ou uma inversão de posição (netting).

Estudar a referência.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Сделка является отражением факта совершения торговой операции на основании ордера, содержащего торговый приказ. Каждая сделка описывается свойствами, позволяющими получить информацию о ней. Для чтения значений свойств используются функции вида Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая...
 
Olá! É possível fazer períodos não-standard no código do indicador de "média móvel" para o MT5? Por exemplo, não por 1 vela, mas por 0,5? Compreendo que a plataforma ainda tem dados de preços e o indicador irá dividi-los e arredondá-los...
 

Obrigado a todos vós. Especialmente Alexey Viktorov- claro e específico. Já o reprocessei e verifiquei. Agora temos a informação sobre o lucro da última encomenda, e a EA usa-a. Isto é demasiado complicado, existe uma confusão desnecessária e supérflua. Existem ordens actuais (pendentes, comprometidas /market/) e ordens que entraram para a história, mas todas as mesmas ordens. Não tenho uma bicha auricular, tenho uma bicha auricular - o processo de transferência é de curta duração e absolutamente irrelevante. Acontece que enquanto a encomenda do vendedor está a ser pesada, a do comprador já se foi. Isto é, há confusão e confusão no intervalo. Quanto mais simples, melhor.

Mas obrigado a todos, de qualquer forma, e boa sorte.

 
Youri Lazurenko:

Obrigado a todos vós. Especialmente Alexey Viktorov- claro e específico. Já o reprocessei e verifiquei. Agora temos a informação sobre o lucro da última encomenda, e a EA usa-a. Isto é demasiado complicado, existe uma confusão desnecessária e supérflua. Existem ordens actuais (pendentes, comprometidas /market/) e ordens que entraram para a história, mas todas as mesmas ordens. Não tenho uma bicha auricular, tenho uma bicha auricular - o processo de transferência é de curta duração e absolutamente irrelevante. Acontece que enquanto a encomenda do vendedor está a ser pesada, a do comprador já se foi. Isto é, há confusão e confusão no intervalo. Quanto mais simples, melhor.

Mas, mesmo assim, obrigado, desejo-vos boa sorte a todos.

Não é uma peculiaridade dos desenvolvedores de terminais. Foi uma peculiaridade encaixar toda a cadeia num único conceito de "ordem" em 4. Tudo está agora de acordo com o que realmente acontece.

E o tempo para mudar um toco da prateleira para a bolsa é o tempo de execução de uma ordem de comércio. E assim, tendo absolutamente todos os dados sobre os acontecimentos actuais, pode facilmente controlar a rapidez com que as ordens estão a ser executadas. E não só isso. Agora tem uma vasta gama de possibilidades para a implementação de quaisquer estatísticas em qualquer um dos servidores, e como eles podem executar as suas encomendas.

 
Artyom Trishkin:

Isto não é uma peculiaridade dos desenvolvedores de terminais. Foi uma peculiaridade encaixar toda a cadeia num único conceito de "ordem" em quádruplo. Está agora em sintonia com o que está realmente a acontecer.

E o tempo para mudar um toco da prateleira para a bolsa é o tempo de execução de uma ordem comercial. E assim, tendo absolutamente todos os dados sobre os eventos que ocorrem, pode facilmente controlar a rapidez com que as ordens estão a ser executadas. E não só isso. Agora tem muitas oportunidades para implementar quaisquer estatísticas em qualquer um dos servidores, e como eles podem satisfazer as suas necessidades.

Sem desrespeito, puramente de acordo com a discussão. Há muito tempo que negoceio os meus EAs (não os vendo), com corretores diferentes e não estou interessadonos dados absolutos sobre eventos. Estou interessado no resultado final - a qualidade das encomendas executadas a pedido de uma EA. Se as ordens forem abertas apenas uma vez (figurativamente falando), simplesmente não vou trabalhar com este corretor. Se a ordem de um corretor abre meio segundo mais depressa do que o outro, não é importante para mim (assim como a diferença nas citações).

Porque é fácil escrever uma EA em mql4 e quão incómoda é com mql5? Porque é que as perguntas sobre mql5? Ouvi bons relatos sobre o testador MT5 e tive de me familiarizar com o mql5 para o experimentar. Já experimentei e não estou satisfeito. É conveniente descarregar citações, é muito mais rápido, mas o MT4 é mais informativo. Por exemplo, quero saber não só a que preço as encomendas foram fechadas, mas também que lucro (perda) elas tiraram. A optimização para a frente é tão intensiva em termos de processador que o computador se desliga. Já tentei uma vez (isto não é uma prova, claro) gerir um e o mesmo Expert Advisor num e no mesmo corretor. Os resultados são diferentes; o mt5 é melhor - mais lucro, significativamente menos esgotamento, o que é stressante. Talvez isto seja eu estar senil, mas por agora tenho mais críticas do que positividade. Ainda não vou negociar no mt5, mas o interesse em escrever um bom Conselheiro Especialista permanece. Apenas por uma questão de interesse.

Desejo-lhe boa sorte.