English Русский 中文 Español Deutsch 日本語
Kit do Trader: Biblioteca Drag Trade

Kit do Trader: Biblioteca Drag Trade

MetaTrader 4Exemplos | 23 setembro 2015, 09:37
927 0
TheXpert
TheXpert

Introdução

No momento do desenvolvimento, já existia alguns produtos que em certa medida implementam a funcionalidade fornecida pela biblioteca ou com características semelhantes. Eu não posso dizer se a biblioteca é melhor ou pior do que outras. Ela perde para algumas em termos de funcionalidade, por exemplo, a conhecida Autograph, e para os outras - em praticidade. Contudo a Biblioteca Drag Trade tem suas peculiaridades e o produto terá a sua demanda.


1. Objetivo do Desenvolvimento

O planejamento inicial foi criar um Expert Advisor que negociaria e lidaria com ordens diretamente do gráfico, usando os objetos e controle do mouse, mantendo a facilidade de utilização e uma interface minimalista. Dito isso, uma das principais características do Expert Advisor foi o fato de ser desenvolvido inteiramente na língua original do terminal, sendo seguro para os usuários, uma vez que não contém códigos maliciosos. Além disso, o Expert Advisor foi originalmente destinado a ser um software livre.

O trabalho sobre o projeto deu origem à biblioteca, combinando as características acima e pode facilmente ser integrado em praticamente qualquer EA. O código da biblioteca contém um grande número de funções úteis que podem ser utilizados fora do objetivo da biblioteca.


2. Estrutura

A funcionalidade da biblioteca pode ser dividida em quatro blocos:

  1. Bloco de negociação
  2. Bloco de informação
  3. Bloco de manipulação de ordens
  4. Bloco de configurações


Fig. 1. Funcionalidade da Biblioteca

A funcionalidade é exibida com base no mesmo princípio da divisão dos blocos - interface do usuário é dividida em 3 blocos independentes que podem ser usados em conjunto e de forma independente, ativando e desativando os blocos que possam ser necessários durante a operação. Além disso, esta abordagem permite economizar recursos desperdiçados ao processar blocos lógicos desnecessários, ou até mesmo usar recursos mínimos quando os blocos de funcionalidade estão desativados. Todos os blocos da funcionalidade estão desativados por padrão.


2.1. Princípios de ativação/desativação de blocos

Todas as funções de desenho e do processamento de bloco estão localizados no Expert Advisor. No entanto, a maioria dos objetos de informação e de controle não são desenhados na janela principal da ferramenta. O espaço para desenhar é fornecido por pseudo-indicadores que também servem para ativar e desativar os blocos da funcionalidade. Isto significa que se um determinado indicador está presente no gráfico, o respectivo bloco da funcionalidade do Expert Advisor está habilitado e funcionando.

Os indicadores, como tal não são utilizados. O seu único objetivo é o de proporcionar espaço de desenho.


Fig 2. Indicadores auxiliares

Existem algumas limitações no uso de indicadores. Qualquer indicador externo pode ser arrastado para janelas de pseudo-indicadores, mas não o contrário, pois a presença de uma janela é determinado pelo nome do pseudo-indicador e o respectivo bloco da funcionalidade simplesmente não vai ficar habilitado.


3. Interface de usuário

3.1. Configurações do Expert Advisor

As configurações foram retiradas da biblioteca de modo a formar um bloco separado da funcionalidade. Isto permitiu realmente destacar e colocar toda a funcionalidade na biblioteca e fazer ajustes externamente, antes ou durante a operação do Expert Advisor. Além disso, as configurações podem ser divididas em blocos lógicos separados, sem economizar na especificação.

O próprio processo consiste em aplicar o script apropriado ao gráfico solicitado.

No momento, há 3 scripts de configuração:

  • DragTrade_CommentsSettings.mq4 – configurações de comentários (registros exibidos na sub-janela de negociação).
  • DragTrade_ObjectsSettings.mq4 – configurações gerais de interface do usuário - estilo de controle e objetos de informação.
  • DragTrade_TradeSettings.mq4 – configurações de negociação da biblioteca.

O script fornece uma descrição para cada propriedade e não deverá haver nenhum problema para descobrir como eles são definidos.

A aplicação desta característica é baseada na utilização de variáveis globais do terminal para armazenar as configurações. Isto impõe algumas limitações em seu uso - linhas não podem ser transmitidas dessa maneira, pois o tamanho máximo da informação transmitida é limitada e é igual ao tipo double, ou seja, 8 bytes.

Um exemplo de configuração das propriedades Expert Advisor pode ser visto abaixo. Configurações para comentário e saída de objeto são alteradas para um Expert Advisor em execução:

Para testar livremente estratégias no testador, sem ter medo de repor ou alterar os parâmetros para negociação on-line, não existe parâmetro diferente de transmissão para o modo teste e on-line. A configuração dos parâmetros não afeta uma ou outra.

Portanto, se você deseja alterar os parâmetros padrão no testador, você deve usar os scripts semelhantes ao modo teste:

  • DragTrade_TesterCommentsSettings.mq4 – configurações de comentários (registros exibidos na sub-janela de negociação).
  • DragTrade_TesterObjectsSettings.mq4 – configurações gerais de interface do usuário - estilo de controle e objetos de informação.
  • DragTrade_TesterTradeSettings.mq4 – configurações de negociação da biblioteca.
3.2. Funcionalidade

A interface é dividida em 3 áreas independentes que podem ser desativadas:

  • DragTrade_Infobar (Bloco de Informações)
  • DragTrade_OrdersBar (Bloco de manipulação da ordem)
  • DragTrade_Toolbar (Bloco de negociação)

É mais ou menos isso:


Vamos olhar com mais detalhes a cada um deles.

3.2.1. Painel de informação

É uma área para a exibição de informações, esta parte é a mais simples da funcionalidade. Exibe uma conta geral ou informações de instrumento, bem como configurações de biblioteca atual.

Fig. 3. Painel de informação

A informação para exibição pode ser facilmente expandida, contudo exige modificações no código da biblioteca.

Se não se assustou ainda, a funcionalidade é representada pelas seguintes funções: void ClearInformation() e void DrawInformation()

3.2.2. Painel de ordens

Esse painel exibe informações sobre as ordens atuais (abertas) dos instrumentos e contém controles para lidar com elas.

Fig 4. Painel de ordens

O que você pode fazer habilitando este painel:

  • fechar qualquer operação da lista das ordens colocadas a um determinado par de moedas (em conformidade com as configurações do número mágico do EA), incluindo ordens a mercado e pendentes.
  • fechar todas as ordens de compra
  • fechar todas as ordens de venda
  • excluir todos as ordens pendentes
  • excluir e fechar todas as ordens

O vídeo a seguir fornece uma demonstração gráfica das funcionalidades deste painel:

3.2.3. Painel de Negociação

Este painel é utilizado para mostrar a funcionalidade da negociação. É o painel mais importante e necessário, uma vez que contém a funcionalidade principal da biblioteca. Este painel estando habilitado lhe dá a oportunidade de colocar ordens e lidar com elas usando certos controles diretamente no gráfico.


Fig. 5. Painel de Negociação

O que você pode fazer habilitando este painel:

  • Colocar e fechar ordens a mercado.
  • Abrir ordens pendentes, stop e limitadas. Eu ainda não encontrei uma maneira boa o suficiente para fixar os níveis de stop às ordens pendentes, atualmente está em falta esta funcionalidade e somente podem ser definidos usando os recursos do terminal (ou seja, modificação na janela de ordem).
  • Excluir ordens pendentes
  • Alterar níveis de stop das ordens.
  • Mudar preço para desencadear as ordens limitadas e stop.

As ordens a mercado são colocadas como segue:

  • configurar o preço de stop loss de ordem futura usando o ponteiro do preço
  • sobrepor os controles para "Open Market Order"

Uma ordem a mercado é fechada simplesmente arrastando qualquer um dos níveis de stop ao outro lado do preço.

O vídeo abaixo mostra exemplos de manipulação das ordens a mercado

Manipulação de ordens de compra:




Manipulação de ordens de venda:




As ordens pendentes são colocados como segue:

  • configurar o preço de desencadeamento da ordem futura usando o ponteiro de preço
  • sobrepor os controles para "Open Stop Order", se você quiser colocar uma ordem stop, ou "Open Limit Order", se você quiser colocar uma ordem limitada.

Um ordem pendente é fechada simplesmente arrastando a linha ao outro lado do preço.

O vídeo abaixo mostra exemplos de manipulação das ordens pendentes.

Manipulação de ordens stop:




Manipulação de ordens limitadas:



4. Integração no Expert Advisor

Finalmente a parte mais interessante.

É na verdade muito simples. O processo de integração é consideravelmente simplificado, devido ao fato de que apenas o mínimo necessário das configurações são transmitidas à biblioteca durante a integração; as configurações restantes são cobertas por scripts externos.

Abaixo, exemplo de um simples Expert Advisor usando a bilbioteca. Ele aparecerá como segue:

//+------------------------------------------------------------------+
//|                                      DragTrade_Example_v_1.0.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, TheXpert"
#property link      "theforexpert@gmail.com"

extern int      Magic          = 1111;
extern int      EAMagic        = 1234;
extern int      TimesToRepeat  = 3;
extern int      Slippage       = 3;

#include <DragTrade_v_1.0/DragTradeLib_v_1.0.mqh>

bool Testing;

int init()
{
   Testing = IsTesting();
   DragTrade_Init(Magic, EAMagic, TimesToRepeat, Slippage, "Exemplo Drag Trade");

   Comment_("Exemplo de Teste da Biblioteca Drag Trade");

   return(0);
}

int deinit()
{
   DragTrade_Deinit();
   return(0);
}

int start()
{
   DragTrade_Start();
   
   return(0);
}

O código acima pode ser aplicado como um Expert Advisor pronto para uso, negociando com o mouse.

Eventos neste código são manipulados a cada novo tick.

Os principais pontos de integração biblioteca:

  • Funções init e deinit são essenciais e necessárias no Expert Advisor.
  • Incluir o arquivo da biblioteca DragTradeLib_v_1.mqh e certifique-se de que os componentes da biblioteca estão todos nos lugares apropriados.
  • As seguintes funções da biblioteca são chamadas nas funções correspondentes do EA:
  1. DragTrade_Init
  2. DragTrade_Deinit
  3. DragTrade_Start

A função DragTrade_Init é a seguinte:

   void DragTrade_Init(int magic, int eaMagic, int timesToRepeat, int slippage, string ordersComment = "");

Vamos dar um olhada detalhada nos parâmetros a serem transmitidos:

  • int magic – O número mágico utilizado pela biblioteca. Ordens usando a biblioteca suportarão este número. Se o valor transmitido é igual a -1, as ordens serão abertas com o número mágico 0 e a opção de filtragem peloo número mágico não estará disponivel durante a exibição.
  • int eaMagic – O número mágico da estratégia. Deve ser Introduzido de modo que as ordens colocadas automaticamente ou manualmente possam ser distinguidas através da estratégia implementada. Se você quiser que a estratégia "veja" estas ordens, deve definir números mágicos idênticos ou implementar a rastreabilidade de dois números mágicos diferentes. Se o valor for -1, número mágico adicional não será usado.
  • int timesToRepeat – Parâmetro de negociação. O número de tentativas de colocar uma ordem, isto se a causa do erro permitir a repetição imediatamente.
  • int slippage – Parâmetro de negociação. Deslizamento.
  • string ordersComment – O comentário para ordens colocadas usando a biblioteca.

Se você quer uma execução rápida dos comandos, a função start do EA pode ser mediante um loop:

int start()
{
   while (!IsStopped())
   {
      DragTrade_Start();
      Sleep(200);
   }
   return(0);
}

No entanto, será impossível analisar um Expert Advisor no testador - ele irá congelar.

Uma solução pode ser encontrada, fazendo uma provisão para um comportamento diferente no testador:

int start()
{
   if (Testing)
   {
      DragTrade_Start();
   }
   else
   {
      while (!IsStopped())
      {
         RefreshRates();
         
         DragTrade_Start();
         Sleep(200);
      }
   }
   
   return(0);
}

O pacote padrão anexado ao artigo contém este particular e simples Expert Advisor.

Além disso, o pacote inclui um Expert Advisor padrão MACD Sample caracterizando a biblioteca integrada e as suas funções de negociação.

Para ir além das funções necessárias para a integração, o arquivo DragTradeLib_v_1.0.mqh fornece um conjunto de funções que podem ser úteis na implementação de estratégias de negociação a serem usadas pela biblioteca e podem ser usadas para implementar seu código.


5. Instalação da Biblioteca

A instalação é simples - você precisa descompactar o arquivo anexado em sua pasta de terminal e reiniciar o terminal, de modo que os arquivos executáveis apareçam na lista de arquivos disponíveis no terminal.


6. Licença

/* =============================================================================================== */
/* Copyright (c) 2010 Andrey Nikolaevich Trukhanovich (aka TheXpert)                               */
/*                                                                                                 */
/* A permissão é concedida, a título gratuito, a qualquer pessoa que obtenha uma cópia deste       */
/* software  e arquivos de documentação associados (ao "Software"),                                */
/* para lidar com o Software sem restrição, incluindo, sem limitação, os direitos                  */
/* para usar, copiar, modificar, mesclar, publicar, distribuir,                                    */
/* sublicenciar e/ou vender cópias do Software, e permitir que as pessoas                          */
/* a quem o Software é fornecido o façam, sujeito às seguintes condições:                          */
/*                                                                                                 */
/*                                                                                                 */
/* O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos                */
/* em todas as cópias ou substancial parte deste Software.                                         */
/*                                                                                                 */
/* ESTE SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA                  */
/* OU IMPLÍCITA, INCLUINDO, SEM LIMITAÇÃO, AS GARANTIAS DE COMERCIALIZAÇÃO,                        */
/* ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM NENHUM CASO OS AUTORES OU                     */
/* DETENTORES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRAS     */ 
/* RESPONSABILIDADES, SEJA EM UMA AÇÃO DE CONTRATO, DELITO OU OUTRA, DECORRENTE DE, OU             */
/* EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.                           */
/* =============================================================================================== */

Conclusão

A biblioteca foi testada com uma conta real e provou ser uma ferramenta útil, confiável e estável.

Mais uma vez, gostaria de manifestar a minha profunda gratidão a Viktor Khabibulaevich Rustamov. Ele foi o autor da idéia de criar a biblioteca, bem como um testador e uma valiosa fonte de aconselhamento na implementação da idéia.

Há um monte de código, pequenos erros e falhas são bastante prováveis que estejam presentes. Eu adoraria se você me informasse sobre eles.

E eu vou tentar fazer a (não garantida) manutenção do código. Novos desenvolvimentos de projetos sob os termos da licença por outras pessoas terão o meu total apoio. Quaisquer comentários e sugestões com relação à biblioteca serão levados em conta, na medida do possível, nas versões futuras.

Boa sorte e bons negócios!


Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/1354

Arquivos anexados |
Uma Introdução à Lógica Fuzzy Uma Introdução à Lógica Fuzzy
A lógica fuzzy expande nossos limites da lógica matemática e da teoria dos conjuntos. Este artigo revela os princípios básicos da lógica fuzzy, bem como a descrição de dois sistemas de inferência fuzzy usando os modelos do tipo Mamdani e Sugeno. Os exemplos fornecidos descreverão a implementação de modelos difusos (fuzzy) baseados nesses dois sistemas, que utilizam a biblioteca FuzzyNet para MQL5.
Barras sintéticas - Uma Nova Dimensão para Exibição de Informações Gráficas dos Preços Barras sintéticas - Uma Nova Dimensão para Exibição de Informações Gráficas dos Preços
A principal desvantagem dos métodos tradicionais para a exibição de informações dos preços utilizando as barras e as velas japonesas é que estão vinculadas ao período de tempo. Estes métodos eram ideais ao momento em que foram criados, mas hoje com os movimentos do mercado demasiadamente rápidos, os preços exibidos no gráfico desta forma não contribuem para uma resposta rápida ao novo movimento. O método de exibição dos gráficos de preços proposto não tem esta desvantagem e oferece um layout muito familiar.
MetaTrader 4 no Mac OS MetaTrader 4 no Mac OS
Os produtos da Apple se tornaram muito populares. A MetaQuotes Software Corp segue atentamente o progresso da indústria TI e já lançou aplicativos especiais para dispositivos baseados em iOS - MetaTrader 4 para iPhone e MetaTrader 5 para iPhone. Há muitos temas no Fórum MQL4.community, onde as pessoas estão buscando uma solução para a execução de MetaTrader 4 no sistema operacional Mac OS. Neste artigo, você vai descobrir como trabalhar com MetaTrader 4 através do popular sistema operacional da Apple.
Sistema de Negociação mecânica "Chuvashov's Fork" Sistema de Negociação mecânica "Chuvashov's Fork"
Este artigo, numa breve revisão, chama a sua atenção ao método e programa de código do sistema de negociação mecânica baseado na técnica proposta por Stanislav Chuvashov. A análise de mercado considerada no artigo tem algo em comum com a abordagem de Thomas DeMark, desenhando linhas de tendência ao último intervalo de tempo mais próximo, fractais são os pontos de referência na construção de linhas de tendências.