Como copiar sinais pelas suas regras usando um EA ?
Índice
- Aviso de Risco
- 1. Preparação
- 1.1. A idéia da copiadora (copier)
- 2. Características do Serviço de Sinais
- 2.1. Amigo ou inimigo
- 2.2. Substituir o número mágico ou não?
- 2.3. O que acontece com a posição "inimiga", se o provedor fecha a sua posição?
- 3. Como detectar o surgimento de uma operação?
- 4. Quando é possível realizar uma assinatura e quando não é
- 5. Armazenar informações sobre a cópia
- Conclusão
Aviso de Risco
Antes de utilizar este método, é necessário confiar principalmente no senso comum, pois o aumento do coeficiente de cópia implica no aumento dos riscos.
Durante a cópia, o sistema verifica periodicamente se as posições na conta do comprador e do provedor são compatíveis. Se for detectada uma incompatibilidade, por exemplo, se apenas tiver sido copiada uma parte da posição, então, o sistema tentará resolvê-la, em particular, copiando as que faltam. Depois disso, contrariamente à sincronização inicial, o lucro total flutuante do provedor não será verificado. Se o assinante começar a copiar, então, ele deve seguir meticulosamente a estratégia de negociação do provedor. Não é possível copiar uma posição sem copiar as outras.
Se na conta do assinante forem detectadas posições abertas sem ter em conta quaisquer sinais, o sistema solicitará o seu fechamento ou as fechará automaticamente, dependendo da configuração."Sincronizar posições sem confirmação".
O método para ampliar a taxa de cópia do sinal pode ser utilizado quando o provedor negocia um lote mínimo, a capacidade de depósito é ajustado para 95% nas configurações (máxima utilização do depósito) e ao mesmo tempo, o coeficiente de cópia negociada é ainda muito pequena para que uma inscrição seja significativa. Voce pode especular o coeficiente de cópia de uma negociação futura antes de assinar um sinal da sua preferência com a ajuda do artigo Calculadora de Sinais.
O expert assistente utilizado para copiar os sinais de negociação apresentados neste artigo pode ser baixado gratuitamente a partir do Mercado:
1. Preparação
Antes de iniciarmos, consulte os vídeos tutoriais:
- Selecionando um sinal de negociação
- Assinatura dos Sinais
- Locação de hospedagem virtual
- Migrando a assinatura e utilizando o Expert Advisor na hospedagem virtual
1.1. A idéia da copiadora (copier)
O copiadora opera na hospedagem virtual, através de uma conta de negociação que esteja inscrita num sinal. Seu principal objetivo é aumentar as posições abertas no serviço de sinais por um número de vezes determinado. Fig. 1 mostra a ideia da copiadora que está anexada numa conta hedge:
Fig. 1. Aa ideia da copiadora que está anexada numa conta hedge
Fig. 2 demonstra a operação da copiadora numa conta de negociação com a compensação no sistema de registro de posições:
Fig. O conceito de cópia em uma conta de compensação
Sendo assim, logo que o serviço de Sinais executa com êxito uma operação na conta inscrita, a copiadora imediatamente executa uma operação com o volume determinado pela fórmula:
"
O parâmetro "Deal multiply by" é responsável pelo aumento das taxas de operações e pode ser definido nos parâmetros de entrada:
Fig. 3. Parâmetros de Entrada
Quando se trabalha com uma conta de negociação no MetaTrader 5, as ações da copiadora conduzem um aumento no volume da posição copiada. Em conta hedge no MetaTrader 5, as ações da copiadora ocasionam uma nova posição com um aumento do volume a ser aberto. Abaixo está um exemplo da operação da copiadora para contas de compensação e hedge no MetaTrader 5 com o parâmetro "Deal multiply by" igual a 5 , com o objetivo de aumentar as operações:
Ação do Serviço de Sinais | Ação da copiadora em Conta hedge | Ação da copiadora em Conta de compensação |
---|---|---|
Operação copiada com lote BUY EURUSD igual a 0.01 | Abrindo uma nova posição no lote BUY EURUSD igual a 0.05 — assim, o assinante tem duas posições: lote BUY EURUSD = 0.01 e BUY EURUSD = 0.06 | Abrindo operação no lote BUY EURUSD = 0.05 — assim, o assinante tem uma posição no lote BUY EURUSD = 0.06 |
2. Características do Serviço de Sinais
Como a copiadora monitora todos as operações realizadas pelo Serviço de Sinais, é necessário saber certas características do funcionamento deste serviço. Por exemplo, esse serviço mantém apenas as posições "amigáveis" - aquelas copiadas através do serviço.
Quando uma posição inscrita é aberta com sucesso, o serviço de Sinais escreve o nome do sinal para comentar a posição copiada e um identificador único no campo de número mágico referente a posição aberta.
Este identificador é posteriormente utilizado na identificação da posição aberta através do Serviço de Sinais com mais sincronizações da assinatura.
Este é o comentário para a operação BUY 0.01 EURUSD copiada do sinal "Test3443431". Ele pode ser visto ao passar o mouse sobre ao ordem copiada na guia "Histórico" da janela "Caixa de ferramentas":
Fig. 4. Comentário da operação copiada (aba "Histórico")
Aqui:
- "#69801797" — ticket de uma operação aberta;
- "Test3443431" — nome do sinal da operação que foi copiada a partir dele;
- "361104976048745684" — Numero Mágico — oferta indentificada.
Na aba "Negociação" pode se ver que a posição atual do assinante tem a mesma descrição, mas sem o ticket:
Fig. 5. Comentário da operação copiada (aba "Negociação")
Em outras palavras, o serviço de Sinais descreve as posições usando o campo do Número Mágico da operação. As posições contabilizadas serão identificadas como "amigáveis". E o serviço des Sinais podem modificar os volumes ou fechar somente as posições "amigáveis".
posições não contabilizadas serão apresentadas como "inimigas". O serviço de Sinais não tem força sobre estas posições.
2.2. Substituir o número mágico ou não?
O terminal MetaTrader 5 permite conectar ambas as contas do assinante, negociação hedge e compensação . Dependendo do tipo de conta conectada, a conduta da copiadora em relação à substituição do Número Mágico na posição copiada pode diferir drasticamente. Para responder esta questão, vamos considerar a figura a seguir:
Fig. 6. Conta de compensação, sem substituição do Número Mágico
Como podemos ver, numa conta de compensação, a copiadora aumentou a posição sem substituir o Número Mágico - por causa disso a posição se tornou "inimiga" dos Sinais de serviço. Isso é, o funcionamento da copiadora sem substituir o Número Mágico é um erro. Isto significa que numa conta de compensação, a copiadora sempre dever substituir o Número Mágico ao aumentar a posição. Mas quando se trata de uma conta hedge, tudo deve ser feito de modo contrário: ao aumentar a posição, a copiadora deve substituir o Número Mágico com o mesmo.
2.3. O que acontece com a posição "inimiga", se o provedor fecha a sua posição?
No exemplo de uma conta hedge: uma posição de BUY 0,01 EURUSD foi copiada para a conta de negociação inscrita. Em seguida, o assinante decidiu intervir no funcionamento do serviço, abrindo uma posição BUY 0,01 EURUSD. Durante uma das sincronizações os Sinais de serviço mais próximo irão gerir este erro:
Sinal '3447880': posições locais não correspondem ao provedor de sinais [#85639429 buy 0.04 EURUSD 1.11697]
Isto é, a posição BUY 0.01 EURUSD, aberta manualmente pelo assinante, foi identificada como "inimiga" pelo serviço de Sinais. Agora vamos ver o que acontece quando o provedor fecha a sua posição: o serviço de Sinais fechaa posi ção "amigável", entretando a posição aberta manualmente BUY 0,01 EURUSD permanece no terminal. Não é admissível a intervenção manual no trabalho do serviço de Sinais, está claramente estabelecido nas regras:
IV. Assinatura de Sinais
20. A Execução de seus próprios negócios na conta onde está a assinatura para um Sinal constitui uma interferência e pode levar a resultados imprevisíveis.
3. Como detectar o surgimento de uma operação?
A escolha do método para identificar o surgimento de uma operação, por um lado, afeta o coeficiente de resposta da cópia, e por outro - poderia conduzir a custos financeiros adicionais para cobrir o aumento, se uma operação for aberta por engano com um aumento de volume.
Devemos lembrar que assinamos um sinal, o que significa que os eventos de negociação do provedor de sinais são monitorados pelo serviço de Sinais. Se necessário, este serviço pode abrir ou fechar posição(ões). Qualquer abertura/fechamento de uma posição ou várias posições provoca uma alteração na conta de negociação do assinante. Esta mesma modificação deve ser monitorada, e o evento OnTradeTransaction() informará sobre isso.
3.1. Rastreamento utilizando o OnTradeTransaction()
Por que foi escolhido o OnTradeTransaction() e não o OnTrade()? Porque o OnTradeTransaction() contém ua informação muito útil - tipo de transação da negociação. Entre todo tipo de transações possíveis, somente uma é de nosso interesse:
TRADE_TRANSACTION_DEAL_ADD — a adição de uma ordem de operação no histórico. É realizado como um resultado da execução da ordem ou operando com o saldo da conta.
Isto é, espera-se que a copiadora adicione a ordem de operação ao histórico (garantindo uma operação de negócio bem sucedida na conta do assinante) e somente depois ela começa a processar a situação.
4. Quando a assinatura é ou não possível.
A assinatura será bem sucedida se ambas as contas têm a mesma posição no sistema de registro:
Assinatura | Resultado |
---|---|
Provedor — conta de compesação, inscrito — conta hedge | Uma tentativa de inscrever uma conta hedge no sistema de registro para um provedor com o sistema de registro de compesação falhou. 2016.05.11 11:15:07.086 Signal '*******': assinatura do sinal [*****] começou 2016.05.11 11:15:07.141 Signal '*******': assinatura/renovação proibida Se o provedor tem conta de de compesação e o assinante tenha conta hedge, o sinal não pode ser assinado. |
Provedor — conta de hedge, assinante — conta de compensação | Uma tentativa de inscrever uma conta de compensação no sistema de registro para um provedor com o sistema de registro de conta hedge falhou. 2016.05.11 11:39:54.506 Signal '*******': assinatura do sinal [*****] começou 2016.05.11 11:39:54.560 Signal '*******': assinatura/renovação proibida Se o provedor tem conta hedge e o assinante tem conta de compesação, o sinal não pode ser assinado. |
Provedor — conta hedge, assinante — conta hedge | Assinatura com sucesso. |
Provedor — conta de compensação, assinante — conta de compensação | Assinatura com sucesso. |
5. Armazenar informações sobre a cópia
Qual é o melhor lugar para armazenar as informações sobre a cópia executada? E uma questão mais global - é necessário armazenar tais informações do todo? Nesta versão da copiadora, as informações são armazenadas em uma estrutura. Declaração de estrutura:
//+------------------------------------------------------------------+ //| Estrutura de congruências de posições do terminal e | //| posições da copiadora | //+------------------------------------------------------------------+ struct correlation { long POSITION_IDENTIFIER_terminal; // Identificador de posição (terminal) //+------------------------------------------------------------------+ //| Identificador de posição é um número único que é atribuído | //| para cada posição recém aberta e não muda durante | //| toda a vida útil da posição. | //| O volume de negócio da posição não muda seu identificador. | //+------------------------------------------------------------------+ double POSITION_VOLUME_terminal; // Volume da posição aberta pelo serviço de Sinais long POSITION_IDENTIFIER_copier; // identificador de posição (copiadora) //+------------------------------------------------------------------+ //| Identificador de posição é um número único que é atribuído | //| para cada posição recém aberta e não muda durante | //| toda a vida útil da posição. | //| O volume de negócio da posição não muda seu identificador. | //+------------------------------------------------------------------+ ulong DEAL_ticket; // Ticket da ordem de operação, se o negócio for executado. };
A estrutura contém somente quatro elementos:
- "POSITION_IDENTIFIER_terminal" — esta estrutura armazena o identificador da posição aberta pelo terminal (serviço de Sinais)
- "POSITION_VOLUME_terminal" — esta armazena o volume da posição aberta pelo terminal (serviço de Sinais)
- "POSITION_IDENTIFIER_copier" — esta armazena o identificador da posição aberta pela copiadora
- "DEAL_ticket" — este contém ticket da ordem de operação aberta pela copiadora, sendo esse negócio bem-sucedido
Todas as ações são executadas pela copiadora somente dentro da função OnTradeTransaction e somente se o tipo de transação de negociação for TRADE_TRANSACTION_DEAL_ADD. Quando essas condições forem atendidas, procure sempre o negócio que gerou essa transação, e recupere seus parâmetros:
//+------------------------------------------------------------------+ //| Função TradeTransaction | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- obter o tipo de transação como valor de enumeração ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- se a transação é resultado da adição da ordem de operação no histórico if(type==TRADE_TRANSACTION_DEAL_ADD) { long deal_entry =0; double deal_volume =0; string deal_symbol =""; long deal_type =0; long deal_magic =0; long deal_positions_id =0; string deal_comment =""; if(HistoryDealSelect(trans.deal)) { deal_entry=HistoryDealGetInteger(trans.deal,DEAL_ENTRY); deal_volume=HistoryDealGetDouble(trans.deal,DEAL_VOLUME); deal_symbol=HistoryDealGetString(trans.deal,DEAL_SYMBOL); deal_type=HistoryDealGetInteger(trans.deal,DEAL_TYPE); deal_magic=HistoryDealGetInteger(trans.deal,DEAL_MAGIC); deal_positions_id=HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID); deal_comment=HistoryDealGetString(trans.deal,DEAL_COMMENT); //Se (deal_magic==0 && SignalInfoGetString(SIGNAL_INFO_NAME)!=HistoryDealGetString(trans.deal,DEAL_COMMENT)) // retorno; } else return; ...
A tabela abaixo mostra a lógica de operação da copiadora numa conta de hedge e de compensação:
O sinal ✔ sinal significa que um registo foi realizado neste elemento da estrutura
O sinal ✔ significa que a copiadora não pode fazer quaisquer alterações aos elementos da estrutura
O terminal do cliente | POSITION_IDENTIFIER terminal | POSITION_VOLUME terminal | POSITION_IDENTIFIER copiadora | deal_ticket |
---|---|---|---|---|
Hedge. Compensação. DEAL_ENTRY_IN Procurando os elementos de estrutura deal_ticket para o valor de trans.deal. | ||||
Se não foi encontrado combinações: aumentar a estrutura por 1 ... | 0 | 0 | 0 | 0 |
...e considerá-la como uma ordem de operação do serviço - portanto, ao abrir uma posição (DEAL_VOLUME * coeficiente) e se CTrade.ResultDeal() != 0, escreva no elemento POSITION_IDENTIFIER_terminal de valor do DEAL_POSITION_ID, o valor de CTrade.ResultDeal() é escrito ao elemento deal_ticket, e o deal_volume — para POSITION_VOLUME_terminal. | ✔ | ✔ | 0 | ✔ |
Se for encontrado - então é uma ordem de operação aberta pela copiadora, portanto escreva o elemento DEAL_POSITOIN_ID em POSITION_IDENTIFIER_copier. | ✔ | ✔ | ✔ | ✔ |
Hedge. Compensação. DEAL_ENTRY_OUT Procurando por DEAL_POSITION_ID nos elementos das estruturas POSITION_IDENTIFIER_terminal e POSITION_IDENTIFIER_copier. | ||||
Hedge. ... encontrado DEAL_POSITION_ID... | ||||
... ... no elemento POSITION_IDENTIFIER_copier – não fazer nada e deixar | ✔ | ✔ | ✔ | ✔ |
... ... no elemento POSITION_IDENTIFIER_terminal –... | ✔ | ✔ | ✔ | ✔ |
... ... ... esta posição ainda existe? Se existe, fechar a posição aberta pela copiadora... | ✔ | ✔ | ✔ | ✔ |
... ... ... ... abre uma posição (o volume da posição encontrada * coeficiente) e se CTrade.ResultDeal() != 0, escreva o valor de CTrade.ResultDeal() para o deal_ticket elemento. | ✔ | ✔ | ✔ | ✔ |
... ... ... não, esta posição não existe. Fecha a posição aberta pela copiadora. | ✔ | ✔ | ✔ | ✔ |
Compensação. ... encontrado DEAL_POSITION_ID... | ||||
... ... no elemento POSITION_IDENTIFIER_terminal – (o volume anterior aberto pelo serviço de Sinais está armazenado na estrutura) calcule o novo volume, e se CTrade.ResultDeal() != 0, então escreva o valor do CTrade.ResultDeal() no elemento deal_ticket. | ✔ | ✔ | ✔ | ✔ |
Conclusão
Se você se assinou um sinal, alugou a hospedagem virtual, porém o provedor negocia a lote mínimo (ou muito pequeno) - você pode enviar a copiadora considerada neste artigo para a hospedagem virtual. Dessa forma, todas as operações serão aumentadas em função das configurações da copiadora.
Atenção: os arquivos incluídos "copier.mq5" e o "languages.mqh" da copiadora devem ficar na mesma pasta.
Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/2438
- 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