Monday, 2 April 2018

Um modelo de software para profesionales de forex


MetaTrader 5 - Ejemplos Otra clase POO de MQL5 Introduccin Implementar e executar um experimento orientado a um objeto que funcione realmente, seja qual for a sua opinião, uma tarefa que requeira a realização de tarefas conjuntas: discussão lógica, planejamento divergente, capacidade de análise e análise, imaginacin , etc. Digamos que o sistema de negociação automatizada que tem que resolver era uma ajuda, idéia de negociação sera a estrategia de ajedrez. Como a estratégia da estratégia do ajedrez mediante as táticas orienta a programação do robô mediante os indicadores técnicos, os dados dos grficos, conceptos econômicos, bicos e axiomas conceptuais. Figura 1. Fragmento da Escola de Atenas de Raffaello Sanzio. En this pintura podemos ver os nossos arquivos e Aristteles en una discusin profunda. Platn representa o mundo conceitual e Aristteles el mundo emprico. Soja consciente da dificuldade deste ejercicio. O programa da Asesor Experto OO não é muito difícil, mas é mais do que dificultado para pessoas com experiência no desenvolvimento de aplicações. Y debid to a lack of experiencia as en cualquier of the dictators, voy a tratar de explainle to the labs of ejemplos concrects that estoy seguro de that was a entendre. No se desanime si todava no se cmiente com o manejo dos conceptos de programação orientada a objetos, digamos que uma vez implementam seus primers cinco Asesores Experiências las cosa le resultarn mucho ms fciles. Ahora no tiene that deploy nothing from cero, solo tiene that entendre lo that voy a explicar aqu. Pode-se simplificar todo o conceito de diseo e implementação de um sistema de negociação com um cabo por varias personas, um problema que está a ser considerado um problema de comunicação. Lo the quiero decir es that the persona that disea la estrategia no est obligada a manejar los conceptos de programcin que tiene que manejar su interlocutor, el programador. Você pode pesquisar o que fazer no MQL5 sem entrar em contato com os principais aspectos da estratégia de negociação de seu cliente. This is un problem clsico en la ingenie de software that ha llevado to the creacin of methods of development of software tales as Scrum. Desarrollo guiado por pruebas (Test Driven Development TDD. Programacin extremai (eXtreme Programming XP). Etc. É fundamental ser consciente das trampas da linguagem. Por cierto, segn Wikipedia: Metodología de desarrollo de software en ingenie de software es un marco de trabajo (framework) usado para estructurar, planejar e controlar o processo de desenvolvimento em sistemas de informação Vamos fazer o que somos capazes de desencadear e implementar rpidamente e com xito idéias de negociação Podemos pôr também estamos na ltima iteração do processo de desenvolvimento donde o sistema de negociação que foi pensado como cliente foi bem definido e definido por cada um como prefigurado. Por aqui, a partir de agora nos referirmos a este artigo um livro de arte didáctica disponível nos Estados Unidos sobre programas em Enlargue MQL5 de modo que pueda comparar e registrar rapidamente algunos conceptos, cuando mar necesario, para llevar um buen trmino este ejercicio. st listo 1. Sus primeros pasos en adoptar el nuevo paradigma 1.1. Por qua POO es buena para la programación de Asesores Experiências Forex Como esta é a primeira vez que você está escrevendo, por isso que você pode começar com o que você está procurando, não é obrigatório um ser POO. De todas as formas é muito recomendable uma persona POO para dar um passo em ms em sus conocimientos de programar de sistemas de trading automatizados. O mtodo clsico para desarrollar aplicaciones, o conocido como programacinental, tem inconvenientes inconvenientes: Dificulta o modelado dos problemas. Con viejo paradigma se reduz a resolução do problema principal em uma divisão em subproblemas ms que se ressuprem por meio de mdulos funcionais, es decir, funciones y procedimientos. Hace difcil la reutilizacin del cdigo, that a suvez afecta the coste, a fiabilidad, la flexibilidad y el mantenimiento. La reutilización del cdigo es ms fcil com o novo estilo orientado a objetos. A importância é muito importante para que a reutilização do cdigo seja a solução mais eficaz de software de desenvolvimento de software. Llegados a this tyres debemos mention the tipos abstractos of datos (TAD). La POO permite a criação do TAD. Un TAD es una abstracción del concepto traditional de datos that est presente in all the lenguajes de programacin. Su usa principal es define de manera cmoda el dominio de aplicaciones de los datos. IncludeArraysArray. mqh, IncludeArraysList. mqh e IncludeArraysTree. mqh filho algunos ejemplos de tipos resumos de dados de MQL5. Em resumo, o paradigma da programação orientou-se por um tema que aborda as aplicações em um conceito conceitual para que se possa beneficiar da reutilização do cdigo, a fiabilidade, a flexibilidade e a facilidade de manejo. 1.2. Es usted de razonamiento conceitual UML acude al rescate Ha ode hablar alguna vez de UML. UML significa linguagem de modelagem unificada (Lenguaje Unificado de Modelado). Es un lenguaje grfico for the diseo de sistemas orientated a objects. Nosotros, los seres humanos, se supõe que os primeiros sistemas estão em primeiro plano na fase de análise e implementação de um sistema com uma interface de programação. Ir de arriba hacia abajo es menos descabellado para los desarrolladores. Não embargo, mi experiencia como analista me ha demostrado que as veces não são possiveis debido a varios motivos: se debe hacer la aplicacin en un tiempo muy corto, no hay nadie en el equipo that pueda aplicar rpidamente sus conocimientos de UML, o tal vezes algunas personas en el equipo in conocen algunas partes de UML. En mi opini, UML es una buena herramienta de anlisis that puede use sse siente cmodo con ella y las circunstancias that rodean el proyect lo permiten. Você também pode obter mais facilmente um link para o tema UML, onde você pode obter mais informações sobre o assunto. This artculo puede ser un poco intense, pero sirve para obtener una visin global about de cmo llevan a cable ingenieros profesionales de software sus anlisis. Você pode ter um curso de várias línguas para resolver completamente UML Por agora, basta saber o que é UML. Segn mi experiencia, esta herramienta de anlisis no se usa nosproyectos de software debido a varias circunstancias presentes en el mundo real. Figura 2. Logo UML. 1.3. O mundo é primera clase OO Si é um novato na programação orientada a objetos, a recompra é o primeiro a documentar oficialmente sobre o OO disponible no Manual de referência de MQL5 e luego echar un visitazo em Escrevendo um Asesor Experto com a programação orientada a objetos de MQL5 para conseguir os conceptos bsicos. As complementar de complementar estas lecturas con otros materiales. A partir de agora uma viagem que pode ajudar algo sobre POO, como que entendendo de forma mais simples e clássica a pessoa em MQL5: O que você quer para os futuros puristas obsessivos com a escritura de um cdigo de qualidade. A diferencia de algarismos e programas disponíveis nos artistas sobre programas na lista MQL5 e muitos outros programas disponiveis na Base de dados. la clase anterior ha used the mismas convenciones of programces by MetaQuotes Software Corp. para codificar o seu marco de trabalho (framework) MQL5. Todos os direitos reservados são idênticos ao Metaquotes. Por cierto, el hilo con titulo Sobre convenções em OOP MQL5 programs abarca este tema. These son algunas convenciones important en la escritura de Person. mqh: El nombre de la clase CPerson empieza con la letra mayscula C. Los nombres de los mtodos filho CamelCase (llevan maysculas y minsculas) y comienzan con una letra mayscula, por ejemplo, GetFirstName . SetSurname. etc. Los nombres de las propiedades protegidas comienzan con el prefijo m. por ejemplo, mfirstname. msurname y mbirth. No se usa a palabra reservada esta referência para os miembros da clase dentro da misma clase. Eche un vistazo a algunos archivos framework (framework de trabalho) de MQL5, por ejemplo, IncludeArraysArray. mqh. IncludeArraysList. mqh. IncludeTradeTrade. mqh. y observar cmo est escrito o cdigo de MQL5. 2. Vamos começar um primer nuestro Asesor Experto orientado a objetos 2.1. A idéia do sistema de negociação Nossa idéia de negociação é simples: Las tendencias um corto de los mercados voltiles filho casor aleatorias. Tudo o que você fez foi observado por vários especialistas bajo algunas circunstancias. Si esta hiptesis es cierta, nuestro robo de Forex debe funcionar por necessidade. Dado um punto aleatório em um grfico, o movimento súbito pode ser um tanto haci arriba como hacia abajo, no lo sabemos. O caso é isto que diferem entre os niveis establecidos SL e TP são variáveis ​​individuais que diferem em relação aos resultados absolutos e absolutos tanto quanto podem ser esperadas na esperança romântica. This system solo was a dejar funcionar la esperanza mademtica. Despido de obtener o cdigo do Asesor Experiencia en este artìculo e ejecutar o backtest, que requere uma poltica de gestin de dinero muy sencilla. 2.2. Estructura of the POO del robot En la seccin, we will a desarrollar la estructura the oldest through the razonamiento abstrat for the project centre orientated a objects. Como que, por que não desenvolveram o processo de pensar e aprender, este é um processo que pode ser visto em qualquer parte do mundo, mas pode ser traduzido em Forex como uma das principais partes do programa: o cerebro, uma cosa que llamaremos evolucin y un grfico. The cerebro and the part of robot that contiene los datos necesarios para funcionar, algo como uma memória de lectura solo (ROM). El grfico é a pieza da informação que emula o grfico no poder real do robô. Por ltimo, a denominao evoluiu que a torta dos ditos que conten a informao temporal como o estado do robo em um momento dado, o historial das operaes llevadas um cabo, etc. Você também pode gostar de Frankenstein, que é o que você precisa para comprar o apartame de la salud. Neste contexto, cada rgano é um conceito semântico único associado a outras partes do conjunto. Em primeiro lugar, vamos criar a carpeta MQL5IncludeMine para almacenar nuestro contenido personalizado. Esto es solo un concepto de organizacin de su cdigo. Es bueno sabre that puede hacer esto in sus desarrollos, pero est claro que no obliged a hacerlo. Despus, crearemos el archivo MQL5IncludeMineEnums. mqh para almacenar a enumeração que hemos creado: Uma continuação, tenemos que criam o embrião de nuestro Asesor Experto que llamaremos ExpertSimpleRandom. mq5. Como que, vamos criar uma pasta MQL5ExpertsSimpleRandom e dentro da misma crearemos o arquivo ExpertSimpleRandom. mq5 através deste cdigo: Este é o solo un enfoque de los muchos posibles que hay. Todo o espaço para ilustrar as operações em POO e MQL5. Cmo pode observar, a chave principal do Asesor Experimentar a lama CSimpleRandom. mqh. gurdela pt MQL5ExpertsSimpleRandomCSimpleRandom. mqh: 2.3. Enlazar CSimpleRandom a objetos de tipo complejo Observe os exemplos dos objetos de tipo CBrain. CEvolução e CGraphic a CSimpleRandom. Primeiras definições de propiedades protegidas: A continuación, creamos las instancias de estos, objetos dentro do construtor. Lo que hemos hecho es crear objetos de tipo complejo de manera dinâmica, justo se explica na documentação oficial dos punteros a objetos. Con este esquema, podemos inscrever-se diretamente nas funcionalidades do CBrain. CEvolução e CGraphic desde CSimpleRandom. Podramos, por ejemplo, ejecutar el siguiente cdigo em ExpertSimpleRandom. mq5: Para obter esta sección, escribo ahora el cdigo de CBrain. CEvolução e CGraphic. Tenga en cuenta que não está escrita no cdigo de algunas partes, ya que no filho estrategicamente necesarias para o backtest SimpleRandom. Le dejo ejercicio the escritura the cdigo of the parties that faltan of these clases, sintese libre para desarrollarlas as quiera. Por e-mail, mdeath no se tornando realmente, a idéia de que a gestão da atividade do robô é o princípio da conclusão da finalização da atividade do robô. 3. Backtesting de ExpertSimpleRandom. mq5 Como era de esperar, este sistema de negociação aleatório foi demostrado como um sucesso para os níveis de perda de stop e ter lucro. Por favor, não use os dados de aluguel do SL / TP. Você pode se informar sobre cada programa que a sua própria personalidade tem em um determinado momento, ou em outras palabras, cada par de coisas deve ser diferente em relação ao resto de pares. Por favor, identifique os primos estipulados no backtesting antes de ejecutar ExpertSimpleRandom. mq5 em um entorno real. Compartir algunos datos da mestra por os cuales a ideia presentada en este artculo resulta rentable. Você pode adicionar mais de um pacote de palavras-chave no ExpertSimpleRandom. mq5 no probador de estratégias do MetaTrader 5. Comprar cotações para EURUSD, de dezembro 2012, filho: StopLoss: 400 TakeProfit: 600 LotSize: 0.01 TimeLife: MONTH (mes) Ejecucin nmero 1: Ejecucin nmero 2: Ejecucin nmero 3: Conclusin Hemos aprendido a aplicar a programação orientada a temas e sistemas de negociação. Para ello, tenemos primer que define uma estrategia de trading mecnica. Nossa estrategia de negociacao tem sido muito sencilla: Las tendencias um corto de los mercados voltiles filho casi aleatorias. Esteve a ser observado por varios especialistas em algunas circunstancias. A continuacin, hemos pensado en nuestro Asesor Experto en trminos reales, como si fuera un ser vivo. Gracias a esta visine, hemos visto que a mestra de Forex pode ser composta por partes principais: o cerebro, um cosa que o llamado evolui e um grfico. Y por ltimo, programa programado el Asesor Experiment o sistema que incorpora a lógica necessária para o ejecutar o backteste, o hemo ejecutado o robô varias veces en enero 2012 e que descubram que o sistema é rentável na grande maioria das veces. Se ha confirmado a idéia que ele detrs deste sistema, a sua eficiência não é muito alta debido a su simplicidad. Traducción del ingls realizada por MetaQuotes Software Corp. Artículo original: mql5 / pt / articles / 703MetaTrader 5 - Integracin C243mo desarrollar un asesor experta utilizando as técnicas de UML Os cientistas investigam que existe, ingenieros crean lo que não existe nunca. Introduccin En mi artculo Simulink: una guía de los desarrolladores de asesores expertos recomiendo modelar un asesor experto utilizando os sistemas dinmicos. O embargo, este enfoque representa sozinho um aspecto do diseo de sistemas de troca: o comportamento dinâmico do sistema. Os profesionales têm suas características específicas que ampliam o processo de desenvolvimento de sistemas de negociação. En este artculo veremos cmo desarrollar un asesor experto using una herramienta universal: el lenguaje grfico UML. Em geral, todos os arquivos gráficos, UML são utilizados para o modelo visual dos sistemas de software orientados a objetos. Pero, tal yo yo lo veo, podemos utilizar suas ferramentas para desenvolver e sistema de negociação. Es ms, MQL5 pertenece a la familia de lenguajes orientados a objetos e esto a nuestra tarea sea ms sencilla. Con vistas al modelado, elijo el software livre e não comercial Software Ideas Modeler. 1. Fundamentos de UML Cmo podem ser utilizados em UML, com o objetivo de se tornar um programa de criação, com os gráficos, e o problema do modelo multifacetado pode ser aplicado utilizando as funcionalidades gráficas disponíveis na linguagem. En segundo lugar, la legibilidad. Inclusive the asesor experto es large and complete, a universalidad de UML pode ser exibida em seu modelo de diagramas. Como você pode se desenvolver na UML, a característica específica da percepção humana se apóia na vida de um texto com a mesma natureza, com o prefeito que precisa de um só texto. Vamos ver brevemente os fundamentos da UML. Está interesado no material pode aprender sobre as ferramentas de UML desde o lançamento das diferentes formas disponíveis na web. A estructura de UML mostra em um diagrama (Fig. 1). Fig. 1. Estruturas de UML A construção de blocos inclui as entidades (elementos da modelo), relaciona (que une os elementos) e diagramas (que representam os modelos de UML). Os diagramas de UML permitem visualizar a representação do sistema em relação a diferentes pontos de vista. As suas funções habituais incluem: especificações (semântica), adornos, (destacando as características importantes da imagem), comunidades (instâncias, interfaces e implementações), mecanismos de extensão (restrições, estereótipos e valores etiquetados). A arquitectura é responsável pela apresentação de um alto nível do sistema no seu entorno. A arquitectura UML pode descrever-se pela vista do arquitecto 41 (Fig. 2): Viseira da lgica Viseira do processo Viseira do desenvolvimento Viseira fsica Escenarios Figo. 2. Viso da arquitectura 41 Debate sealarse tambin que UML tiene SU propia jerarqua de diagramas cannicos (Fig. 3). A versão 2.2 do livro usa 14 tipos de diagramas UML. Fig. 3. Diagramas canónicos de UML Adems, propon to juris algunos casos speciales del uso de diagramas UML. De esta forma, pode ser abstraída de uma forma específica de uso de diagramas com a finalidade de determinar asesores perito. Una vez, o principio do diseplo multifactico de sistemas de negociação proporcionado pela jerarca de diagramas de UML contribui à solução sistémica e integral da rede de crónica de sistemas de negociação. 2. Diagramas de UML 2.1. Diagramas de casos de uso Como os dados são apresentados, são buidos comienzo la mitad de la batalla. Normalmente, não há necessidade de responder, o trabalho analítico com relação aos diagramas de casos de uso. Descreva o sistema desde a perspectiva dos usuários. All crearlos, everything is specified in the use of the trading systems the trading the lmites of the trading of the actors of the strategy of trading define the relacin between the actores and the versiones of the systems of trading. Os casos de uso do filho são uma lista de tarefas que definem as interações entre diferentes papéis (como um ator como UML) e um sistema, para um único objetivo. Un actor es un papel desp. Por usuario o cualquier otro sistema que interacciona con el sujeto. Los actores crescem papeles usuais de usuarios humanos, hardware externo u otros sujetos. Un relacin es una conexin semntica entre os elementos individuais de un modelo. Que é o tipo de diagramas que o olhar pode ser generalizado e refleza a naturalidade do conceito de sistema de negociação em lugar de su implementacin. Peras es la cuestina, ir do lo general a lo especfico, de lo abstracto a lo concreto. Quin dijo que no somos artistas Dibujamos un cuadro, comenzando con ideas generales y esquemas. Em primeiro lugar, dibujamos trazos sobre un lienzo. Luego aadimos colores. Dibujamos los detalles. Para tanto, vamos criar um formulário de diagramas de uso para um sistema de negociação. Ele elegeu os papéis de entrada os papéis mais importantes: Desarrollador, Analista de Sistemas, Gestor de Riesgo e Administrador. Debe recordarse que os rolos podem ser publicados por um ou vários personas. Quo acciones ll a cabo nuestro sistema de trading y qu otras se ejecutan con relacin a mismas De esta forma, o desenvolvedor pode implementar e implementar um sistema de negociação. Adicionalmente, l ella pueden participar da optimização do sistema de negociação. O analista do sistema otimiza o sistema de negociação. O gestor de riesgo é responsable de gestionar el riesgo. O administrador supervisiona o trabalho do sistema de negociação. En la salide que ele geralmente consiga um benefício como resultado do funcionamento do sistema de negociação. Este papel é o papel dos papéis do operador e do inversor. Você também pode, como administrador, supervisionar o trabalho do sistema de negociação. El diagrama contiene el bloque Sistema de Negociação. Representa a fronteira do sistema de negociação e a separação do exterior do mundo. As palavras-chave sobre a relação entre os actores e os casos de uso, como entre os actores e os actores e os casos de uso e outros casos de uso. La mayora de las relaciones se representa através de associações e señas com uma lnea continua. Esto significa que um determinado ator inicia um caso de uso. De forma, o gestor de riesgo inicia o processo de gestação de riesgo, etc. Os actores que iniciam os casos de uso filho de primer rango e os que usam os resultados das ações que han ejecutado filho secundarios. Por e-mail, un actor secundario es el jeffé en la salida. La asociacin puede indicar that the actor inicia o caso de uso adecuado. A generalizacina simula a generalidad adecuada de los papeles. A extensão de um tipo de dependência de dependência entre o caso de uso de base e seu caso especial. Incluem-se definir a relação do caso de uso de base para o caso de uso, o comportamento funcional que não é realizado pela base do vaso, o sino solo bajo condiciones adicionales. O embargo é, em última instância, um artigo que diz respeito a um caso de uso não significa que este papel é uma importancia secundaria. O que você vê aqui no diagrama do usuário do sistema de negociação comprende os papéis do operador e o inverso das relações de generalização mostradas como uma moeda com a ponta da seta triangular pintar. Fig. 4. Diagrama de caso de uso do sistema de negociação Os casos de uso Posição aberta y Fechar posição, em uma página, relacionada com uma generalização com Negociação. El ltimo caso é a base para os otros dos. De esta forma, inclua o caso de uso Gerenciar risco. Y su comportamiento es complemento al del caso dependiente Lucro. Como o benefício do sistema de negociacao sobre a condicao de preco de venta de um mar ativo que comprou o preco de compra, ele usou a relacin extensa para estos casos. El diagrama também é o ponto de extensão, é decir, uma condição específica é o mesmo que usar o caso para lucrar. As relações de dependência têm muestranas como as suas descontinuidades incluem uma correspondência com os correspondentes e estendem-se. Para cada caso de uso necessário criar um escenario para descrever uma série de pensamentos que conducen al objetivo perseguido. O caso de uso pode ser descrito de várias formas. As formas habitualmente aceitas incluem: descritivos de texto, seudocdigo, diagrama de atividade e diagrama de interacción. Debe sealarse that un operator on interesado en un system of trading en sentido estricto y no en el senso that se muestra na figura 4. Por que, recomendo centrar os esfuerzos no caso de uso Trading with the extendin To profit. Con el uso do diagrama de clase descreve a estrutura do sistema de negociação. Por decir, vamos apresentar um modelo de estrutura estética do sistema de negociação em trminos de programas de programação orientada a objeto. De esta forma, reflejaremos a lógica da programação do sistema de negociação. En UML un diagrama de clase é um tipo de diagrama de estructura esttica. Descreva a estrutura do sistema que se apresenta, atributos e operadores, como a relación de las clases. Cules son las ventajas d'este tipo de diagramas Quienes está algo familiarizado com as linguagens de programação orientada a um objeto que cuida de forma imediata do conceito familiar de clase. A clase funciona no diagrama de clase de UML como um bloco de construcción bsico. Por ejemplo, al crear cdigo Cse crea automticamente el bloque of the clase UML en forma de plantilla de clase. Solo es necesario that finalicemos la implementacin de cada mtodo y propiedad. Vamos agora fazer algo como ejemplo. Pero antes me gustara that recordar el artculo prototipo de un robot de trading. en el que o autor descreve as ventajas do uso de uma vez diretamente. Em mi opini, o principio de anidado é muito eficaz e produtivo: mdulos de macros-funciones-transacciones. Por ejemplo, necesitamos un asesor experto that utilice la capacidade de clas de trading of the librera estndar. Utilizando o bloqueio da clase de criamos um modelo de clase no diagrama de clase. Lo ele llamado CTradeExpert. Aadimos algunos atributos (en MQL5 filho miembros de datos de la clase) para la nueva clase. Sobre o autor: MagicNo, etrade, eaccount, edeal, esymbol, epnt. Também inserimos um construtor de clase no CTradeExpert. Gráficamente, a operação é mostrada na Fig. 5. Fig. 5. Modelo UML de la clase CTradeExpert O modelo está localizado em frente a um arquivo que tem acesso ao modo privado, sera protegido e pblico. De esta forma, para o MagicNo el especificador de acceso se establece como privado. para epnt como pblico. y para los dems protegido. Dos puntos a continuação do número do tipo indica um tipo de data para os atributos e o tipo de data devida para os mtodos. Por ejemplo, o endereço MagicNo es de tipo int, etrade es CTrade, etc. No estamos aadiendo mtodos ni atributos agora, simplemente mostramos a nossa clareza CTradeExpert se conecta com as clases de the librera estandar. Para fazer isso, clique com o botão direito do mouse em seis camadas de diagramas e os arquivos de forma siguiente: CTrade, CAccountInfo, CDealInfo, CSymbolInfo e CObject. Ahora as models of the clase CTradeExpert con 4 bloques de clashas de transacciones a través das relações de dependência com o uso estereotipo (la lnea de trazos e puntos con una flecha). Dependencia es una relación semntica entre as entidades que se convertem na independencia de puede afectar a semntica de la otra dependiente. En UML, estereotipo es una descrição do comportamento do objeto. A continuacin, enlazamos estos bloques with the block CObject através de relacin de generalizacin using unnea con una punta de flecha sin relleno. Aadimos comentios a las clases de la librera estndar. O diagrama de nuances da UML tem o aspeto mostrado na figura 6. Fig. 6. Diagrama de clase de UML Ahora, solo necesitamos generar o cdigo usando a funcionalidade Gerar da posta Gerar na barra lateral (Fig. 7). Fig. 7. Cdigo generado El ms adecuado es el lenguaje C. Usaremos C para generar o cdigo do clase do asesor experto e luego lo podremos traducir fcilmente um MQL5. Para este diagrama, o cdigo generado é o seguinte: Uma sintaxe muy familiar, verdad Ahora necesitamos adaptou o cuerpo de la clase. Para ello creamos en MetaEditor un archivo para la nueva clase TradeExpert. mqh. Copiamos en el cdigo precedido generado. Para facilitar a leitura dos borramos o indicador de acesso repetido protegido para os miembros da clase CTradeExpert. Borramos as lneas conectadas com o declaracin de las clashas da librera estndar. Livre de estojo, adicionar o arquivo com a instrução Incluir para cada pasta usada da biblioteca, e que estes conjuntos foram ajustados por o desarrollador. Y aadimos nuestros comentarios. Como resultado obtenemos o código siguiente: ahora aadimos algunos mdulos de funciones de trading ms a nuestra clase del asesor experto. Você também pode conferir: CheckSignal, OpenPosition, CheckPosition, ClosePosition etc. Espero que você conheça o principio de condicin en funcionamiento. No nosso caso, você pode usar o CTradeExpert no le result difcil. Eu particularmente centrei em algunos ejemplos ya familia de peritos para facilitar o desenvolvimento das ferramentas de UML. O modelo da clase tem o aspecto que se mostra na Fig. 8. Fig. 8. Modelo da clase CTradeExpert Para o modelo da clase atualizada pode generalizar um cdigo usando o mtodo ya descrito. 2.3 Diagrama de atividade Al use este tipo de diagramas UML podemos estudar o comportamento do sistema de imagens de fluidos e controle de fluidos. Los diagramas de actividad son representaciones grficos de flujos de trabajo de actividades y acciones paso a paso. Los diagramas de actividad se diferenciam de los diagramas de fluidos en el estos ltimos descrevem solo los pasos del algoritmo. O notacin no diagrama de atividade es ms extensa. Por e-mail, é possível especificar o estado dos objetos em ellos. Os diagramas de atividade sonoros para o desenvolvimento de aplicativos para processos de soluções e fluidos de processos alternativos de operações paralelas de programa e controle de controle lógico Asumiremos que a clase de experto creada CTradeExpert se usar no arquivo do comprador experto TestTradeExpert. mq5. Recordamos que a instalação por defeito foi criada em MetaEditor 5 oferece três funções do controlador de evento por defeito: OnInit. OnDeinit y OnTick. Vamos começar a escorrer em ellas. Vamos ver um diagrama com a contabilização de nosso primeiro experimento para o teste TestTradeExpert. mq5. Debe destinare aqu que the asesor experto, o bien su estructura, is muy primitivo. Ahora só estamos praticando. Para esta finalidades é necessário uma estructura del asesor experto simple. Você pode usar um diagrama para usar o nosso sistema experiente com o algoritmo original incluído no arquivo TestTradeExpert. mq5. Todo comienza con el nodo inicial (Fig. 9). A partir deste nodo uma medida de controle de desplaza al nodo llamando a la accin crear una instancia de asesor experto. This accinent a flujo of object (flecha azul) the state of the state of the object (myTEcreated) y control the flujo a un nodo that llama a inicializar as asesor experto. Un flujo de control se representa en nte de conexe de los une los dos nodos de actividad y sobre al mismo solo se pasan las seales de control. Un flujo de objeto se representa como uma conexo de atividad a que o solo se livra de objetos de dados. Un nodo de actividad es una clase abstracta par puntos individuales en el flujo de actividades conectadas por extremos. Un nodo de decisin en un nodo de control que seleccin entre flujos de salida. Un nodo de objeto representa objetos usados ​​na atividade. Un borde de actividad es una clase abstracta para conexiones entre dos nodos de actividad. El nodo tem uma experiência inicial com a atividade. El nodo final de una actividad completa todos los flujos de actividad. Este, a su vez, cambia el estado del objeto myTE (myTEinitialized) y pasa la seal de control al nodo de decisin. Si el asesor experto se inicializa con xito, el flujo de control va al nodo procesar el evento de trading NewTick. Si falla la inicializacin la seal de control entra primero en el nodo de generalizacin y luego el nodo de accin deinicializa el asesor experto. Las seales (tokens) son construcciones abstractas introducidas para facilitar la descripcin del proceso dinmico de ejecucin de un grfico de actividad estadsticamente definido. La seal no puede contener ninguna informacin adicional (una seal vaca), ya que en este caso se llama una seal de flujo de control o puede contener una referencia a un objeto o una estructura de datos y, en este caso, se denomina una seal de flujo de datos. Vamos a ver el primer flujo de control obtenido en el nodo de decisin. Se dirige a un rea con una accin interrumpida, segn indica el rectngulo con esquinas redondeadas dibujado mediante la lnea roja punteada y el estereotipo interrumpible. Cuando el flujo de control se encuentra en esta rea, puede pararse inesperadamente. Si activamos el nodo de accin (flag naranja) que recibe el evento Unload Expert Advisor (descargar asesor experto), interrumpir todos los flujos. La seal de control se desplaza al borde de la interrupcin (flecha naranja en zigzag) y luego al nodo de conexin. Despus de esto se deinicializa el asesor experto. A continuacin, la seal de control va al nodo Delete global variables (borrar las variables globales) y luego se completa el flujo en el nodo de actividad final. El nodo de accin Deinitilize Expert Advisor (deinicializar asesor experto) tambin cambia el estado del objeto myTE (myTEdeinitsialized) por un flujo de objeto. El nodo Delete global variables, a su vez, elimina el objeto myTE (myTEdeinitsialized). Fig. 9. Diagrama de actividad para TestTradeExpert. mq5 Asumimos que el flujo de control es estable: el asesor experto no se descarga. Desde el nodo Process the trade event NewTick (procesar el evento de trading NewTick) el flujo se desplaza a otro bloque, rea de expansin, cuyo estereotipo se define como iterativo (rectngulo verde con lneas de puntos). A esta rea la llamo Trading block (bloque de trading) para reflejar las caractersticas bsicas y mejorar la percepcin del diagrama. Un rasgo caracterstico del bloque es la ejecucin cclica de las operaciones para los objetos entrantes. Solo necesitamos 2 ciclos: controlar las direcciones largas y cortas. A la entrada y la salida del bloque hay nodos de expansin que incluyen objetos de direccin de transacciones (largas o cortas). Un nodo de expansin es una coleccin de objetos que entran o salen del rea de expansin y que son ejecutados una solo vez. El nodo de accin que enva una seal ( accin de enviar seal ) representa el envo de una seal. El nodo de accin que acepta un evento ( accin aceptar un evento ), espera a recibir un evento del tipo apropiado. De esta forma, cada direccin es controlada por nodos tales como: Check signal (nodo de envo de seal), Receive signal (nodo de recepcin de seal), Open position (nodo de envo de seal), Check position (nodo de envo de seal), Close position (nodo de envo de seal). Debe sealarse que el objeto de direccin (dir) puede pasarse en el flujo de objeto entre nodos de accin, tal y como se indic mediante flechas violetas. Las operaciones en un bloque continuarn mientras que el asesor experto siga descargado. 2.4 Diagrama de secuencia Utilizamos el diagrama de secuencia para describir la secuencia de interaccin del objeto. Un aspecto muy importante de este tipo de diagramas es el tiempo. Por tanto, el diagrama tiene dos escalas de forma implcita. La horizontal es responsable de las interacciones de la secuencia del objeto. La vertical es un eje de tiempo. El principio del intervalo de tiempo est en la parte superior del diagrama. Esta parte contiene los objetos del diagrama que interactan. Un objeto tiene su propia lnea de tiempo como una lnea de puntos vertical. Los objetos intercambian mensajes. Estos estn representados por flechas. Cuando un objeto est activo, recibe el foco de control. Grficamente, este foco se expresa como un rectngulo estrecho en la lnea de tiempo. Un objeto es un rectngulo que contiene un nombre de objeto y de clase subrayados (opcional) separados por dos puntos. Un objeto de lnea de vida es una lnea que muestra la existencia de un objeto durante un periodo de tiempo y, cuanto ms larga es la lnea, mayor es la duracin del objeto. El foco de control se dibuja como un rectngulo estrecho cuya parte superior muestra el principio de la recepcin del foco de control por el objeto (inicio de la actividad) y su parte inferior muestra el final del foco de control (final de la actividad). En UML, cada interaccin es descrita como un conjunto de mensajes. con los objetos participando en el intercambio. Vamos a practicar un poco. El terminal es un actor. Este inicial la operacin del asesor experto. Otros objetos marcados con el estereotipo evento son eventos del terminal de cliente: Init. Deinit. NewTick. Por supuesto, si queremos es posible ampliar el rango de eventos. Al iniciar un asesor experto se crea el objeto myTE a nivel global. Es una instancia de la clase CTradeExpert. El objeto de la clase est ligeramente ms abajo en el diagrama que otros objetos que indican que se ha creado despus de la funcin del constructor. Se marca un comando de creacin con una lnea de trazos y puntos y con una flecha abierta y el mensaje 1.1 CTradeExpert(). La lnea de trazos y puntos con una flecha indica el tipo create por defecto del constructor CTradeExpert(). Despus de crear una instancia de CTradeExpert se activa el paso 1.2 y el foco de control se devuelve al terminal. Para facilitar la lectura, indico mensajes sncronos en el formato ., como 1.1 y asncronos como . Luego, el terminal controla el evento Init usando la funcin OnInit() en el paso 2.1, el foco se devuelve en el paso 2.2. Los mensajes de tipo call se muestran como lneas con una flecha en forma de tringulo pintada en el extremo. Si el evento Init devuelve un valor distinto a cero al terminal, significa que la inicializacin ha fallado: se utiliza el paso 3.1 que lleva a la generacin y control del evento Deinit. En el paso 3.2 el foco de control se devuelve al terminal. Luego, se borra el objeto de la clase CTradeExpert (paso 4.1). Por cierto, al crear un diagrama de clase, no he incluido la funcin destructor CTradeExpert en la clase. Esto puede hacerse posteriormente. Esta es una de las ventajas de la construccin de un diagrama: el proceso de construccin de varios diagramas es iterativo. Los que se ha hecho en primer lugar para el diagrama puede realizarse luego para otro, y despus podemos modificar el primero. Debe sealarse que el cdigo de MQL5 para una plantilla de asesor experto estndar no contiene un bloque que controle la inicializacin fallida. Lo he especificado para guardar la secuencia lgica. El diagrama de secuencia de UML utiliza el bloque opt con una condicin de vigilancia OnInit()0, que es equivalente a la construccin de MQL5 if(OnInit() 0) . En el paso 4.2 el foco de control se devuelve al terminal. Ahora, el terminal est listo para controlar el evento NewTick . El procesamiento de este evento se encuentra en el bucle del bloque y significa un bucle infinito. Es decir, el asesor experto controlar este evento hasta que lo desactivemos. El terminal procesa el evento NewTick usando la funcin OnTick (paso 5). En el paso 6 el foco de control se devuelve al asesor experto myTE. Este implementa las siguientes funciones usando 4 mensajes reflexivos: CheckSignal, OpenPosition, CheckPosition y ClosePosition. La reflexividad se debe al hecho de que el objeto del asesor experto enva se mensajes a s mismo. Adems, estas funciones de la clase CTradeExpert se incluyen en el bloque loop(2). Dos significa que el bucle comprende dos fases. Por qu dos Porque controla dos direccin de las transacciones: largas y cortas (del paso 7 al 10). En el paso 11 el foco se pasa al terminal. Los pasos 12 y 13 son responsables de la deinicializacin y borrado del objeto del asesor experto, respectivamente. Fig. 10. Diagrama SD para TestTradeExpert. mq5 De esta forma, hemos adquirido las principales habilidades de diseo. Con la ayuda de los diagramas creados se optimiza el trabajo del desarrollador. Ahora podemos comenzar a escribir cdigo para el archivo TestTradeExpert. mq5. Por supuesto, lo podemos hacer sin los diagramas. Pero cuando tenemos un asesor experto complejo, el uso de los diagramas reduce la probabilidad de errores y nos permite gestionar eficientemente el desarrollo de nuestro sistema de trading. Usando la plantilla del asesor experto creamos ahora TestTradeExpert. mq5 Creamos una instancia de la clase CTradeExpert myTE a nivel global. Ahora vamos a completar el cuerpo de la funcin OnTick() . Escribimos las funciones de la clase de la forma siguiente: El control del evento NewTick ser algo similar a esto. Por supuesto, necesitamos an especificar cada una de las funciones que sern utilizadas por los miembros de los datos de la clase, entre otros. Pero vamos a dejar este trabajo para un futuro. Ahora, nuestro objetivo es transferir la lgica de los diagramas UML al cdigo de MQL5. 3. Desarrollo y presentacin de un asesor experto basado en diagramas UML Como ejemplo, vamos a crear diagramas para un asesor experto complejo. Vamos a definir sus caractersticas en el contexto de una determinada estrategia implementada en MQL 5. En general, nuestro asesor experto realizar las operaciones de trading y, en particular, generar las seales de trading y mantendr posiciones abiertas y la gestin del dinero. Es ms bien una plantilla de estrategia de trading. Sin embargo, intentaremos trabajar con ella para poder realizar ejercicios prcticos. En primer lugar, creamos un diagrama de caso de uso para nuestro asesor experto. Ser diferente del que hemos visto anteriormente solo hasta cierto punto. Prest atencin al entorno interno del sistema de trading, ignorando el exterior (Fig. 11) ya que implementaremos en el cdigo solo las tareas de trading. Fig. 11. Diagrama de caso de uso del sistema de trading Vamos ahora a definir la estructura del asesor experto. Asumimos que vamos a utilizar los desarrollos de la librera estndar ya que son consistentes con los objetivos establecidos para el sistema de trading. Ha sido ampliada de forma sustancial recientemente. Y sobre todo afecta a las clases de estrategias de trading. Por tanto, nuestro objetivo es crear un diagrama de clase. No ser sencillo, as que tenga paciencia. Aqu me gustara mencionar que hemos usado la librera estndar por varias razones. Primero, con ella intentamos crear un robot de trading. Y, segundo, que tambin es importante, tenemos algo de prctica trabajando con diagramas UML. En tercer lugar, quizs la propia librera es de gran valor. Podemos aprender muchas cosas tiles de la librera y, al mismo tiempo, intentar aprender su no tan simple estructura. La conversin de cdigo en la estructura de un diagrama UML se llama ingeniera inversa. De hecho, es lo que estamos haciendo manualmente. Existe un software profesional que nos permite hacer esto automticamente (IBM Rational Rose, Visual Paradigm for UML, etc.). Pero por razones prcticas creo que necesitamos trabajar manualmente. Vamos a crear un modelo de la clase bsica para implementar estrategias de trading CExpert usando el bloque Class. Vamos a ver qu otras clases y construcciones se utilizan en el cuerpo de la clase C Expert. Primero debe sealarse que la clase C Expert deriva de la clase bsica CExpertBase. que, a su vez, deriva de la clase bsica CObject. En el diagrama creamos bloques para estas clases y definimos la relacin entre las clases usando una lnea con una punta de flecha triangular sin pintar (generalizacin). Aadimos un comentario al modelo de la clase CExpert (un rectngulo amarillo con una esquina doblada). Ahora, la estructura de la clase intermedia es como esta, Fig. 12. Vamos a llamar al diagrama Expert . Fig. 12. El diagrama Expert, la vista inicial Vamos a ver el cdigo en el archivo Expert. mqh. La clase CExpert. entre otras cosas, implica las enumeraciones ENUMTRADEEVENTS y ENUMTIMEFRAMES. una de las 8 estructuras predefinidas MqlDateTime. La clase tambin utiliza otras instancias de clase como: CExpertTrade, CExpertSignal. CExpertMoney. CExpertTrailing. CIndicators. CPositiontInfo. COrderInfo . Ahora necesitamos realizar algunos cambios en el diagrama. Primero especificamos que las clases CExpertSignal. CExpertMoney. CExpertTrailing derivan de la clase bsica CExpertBase. y las clases CPositiontInfo. COrderInfo derivan de CObject (he establecido el estereotipo metaclass para ellas). Vamos a marcar las relaciones de dependencia con el uso estereotipo entre el bloque de la clase CExpert y otras clases sin olvidarnos de la estructura y enumeraciones de MqlDateTime. Cambiamos el estilo de color de los bloques y obtenemos la siguiente estructura, Fig. 13. Fig. 13. El diagrama Expert, la vista inicial No obstante, esta estructura no proporciona una visin completa, ya que hay una serie de clases que son utilizadas indirectamente por las clases ya citadas. Qu tipo de clases son En primer lugar, la clase CExpertTrade deriva de CTrade. La ltima es una subclase de CObject. La clase CExpertTrade utiliza la enumeracin ENUMORDERTYPETIME y las clases CSymbolInfo y CAccountInfo tambin son hijas de CObject. La clase CTrade tambin utiliza instancias de la clase CSymbolInfo. Vamos a hacer cambios en el diagrama. Ahora, nuestro diagrama tiene la siguiente forma, Fig. 14. Fig. 14. El diagrama Expert, la vista inicial De nuevo, el diagrama est incompleto. Por ejemplo, si miramos en el archivo de la librera estndar Trade. mqh. veremos que CTrade utiliza diferentes estructuras y enumeraciones y la clase CSymbolInfo. Si todas estuvieran cargadas en un diagrama, este quedara demasiado sobrecargado. Y esto lo hara difcil de comprender. Para solucionar este inconveniente he usado un paquete para el diagrama. Este encapsula las clases, enumeraciones y otros paquetes relacionados. He conectado el paquete con los elementos del diagrama a travs de la interfaz. Por ejemplo, el diagrama para el paquete CTrade puede representarse de la siguiente forma - Fig. 15. Fig. 15. Diagrama de la clase para el paquete CTrade El diagrama del paquete CTrade muestra las relaciones de dependencia de la clase CTrade con las enumeraciones y la estructura. Relaciones con la clase bsica CObject y la clase CSymbolInfo usada se implementa a travs de una interfaz. Cerca de las interfaces hay un icono de relacin con el diagrama de la clase que contiene el paquete CTrade como un nico elemento. Al hacer clic en cualquiera de las interfaces vamos automticamente al diagrama original (Fig. 16). Figura 16. Diagrama del experto con interfaces Las relaciones de la interfaz son de color naranja. El icono del diagrama de la clase junto al paquete CTrade indica la posibilidad de desplazarnos a este diagrama. De esta forma, al usar la encapsulacin podemos mejor de forma significativa la legibilidad del diagrama de la clase. As que vamos con ello. La clase CObject utiliza punteros e instancias de la misma clase en su cuerpo. Por tanto, podemos establecer la relacin de dependencia para el bloque CObject con el estereotipo use relativo a s mismo. Veamos el bloque del modelo de clase CExpertBase . En base a las primeras lneas del archivo de cabecera ExpertBase. mqh podemos decir que esta clase utiliza mltiples instancias de varias clases y enumeraciones. Por tanto, para el modelo de clase y sus relaciones es razonable crear el paquete CE xpertBase . Por ello, vamos primero a definir el modelo de clase CExpertBase en el diagrama del paquete. A travs de la interfaz mostramos la relacin con la clase bsica CObject. y la relacin de uso con las clases CSymbolInfo y CAccountInfo. A continuacin, usando los bloques de clases y relaciones de dependencia especificamos que la clase CExpertBase utiliza las siguientes clases: CiOpen. CiHigh. CiLow. CiSpread. CiTime. CiTickVolume. CiRealVolume . Las primeras cuatro clases derivan de CPriceSeries. y las ltimas cuatro de CSeries. Adems, la clase CSeries tiene una hija CPriceSeries que es, a su vez, hija de CArrayObj. Las relaciones de herencia ya se han usado con anterioridad, como recordamos. Las denominamos como una relacin de generalizacin en el diagrama. No olvide que la clase CExpertBase utiliza en su cuerpo enumeraciones como: ENUMTYPETREND. ENUMUSEDSERIES. ENUMINITPHASE. ENUMTIMEFRAMES. La ltima enumeracin tambin es utilizada por las hijas de la clase CPriceSeries y la clase CSeries. Para no perder las relaciones y hacer el diagrama ms claro, vamos a ajustar el estilo de cada uno de los elementos del diagrama. Como resultado obtenemos el siguiente diagrama (Fig. 17): Fig. 17. Diagrama de la clase para el paquete CExpertBase An no est completo y tendremos que trabajar algo ms en l. Resulta que las cuatro clases que heredan la clase CPriceSeries tambin utilizan la clase CDoubleBuffer. Adems, cada una de las cuatro clases usa su clase de buffer que deriva de CDoubleBuffer. Por tanto, COpen usa COpenBuffer etc. CDoubleBuffer tiene una clase bsica (CArrayDouble ) y usa ENUMTIMEFRAMES. CArrayDouble hereda CArray. usa punteros a las instancias de la misma clase y la enumeracin ENUMDATATYPE. La clase COpenBuffer y otras clases de buffer de las series de precio (CHighBuffer. CLowBuffer. CCloseBuffer ) usan la enumeracin ENUMTIMEFRAMES. Las cuatro clases que heredan la clase CSeries solo usan sus propias clases de buffer (CSpreadBuffer. CTimeBuffer. CTickVolumeBuffer. CRealVolumeBuffer ). El primero de los buffers de la clase CSpreadBuffer hereda CArrayInt. otros heredan CArrayLong . Las ltimas dos clases utilizan punteros a las instancias de su propia clase, la enumeracin ENUMDATATYPE y derivan de CArray. que, a su vez, es hija de la clase CObject. La clase CPriceSeries y sus hijas usan la clase CDoubleBuffer y la enumeracin ENUMTIMEFRAMES. CSeries usa las enumeraciones ENUMSERIESINFOINTEGER. ENUMTIMEFRAMES. Y hereda CArrayObj. La ltima hereda CArray. usa los punteros ENUMPOINTERTYPE. a las instancias de su propia clase y la clase CObject. Como resultado, obtenemos el grfico mostrado en la Figura 18. Fig. 18. Diagrama de la clase extendido para el paquete CExpertBase Y el diagrama original Expert para las clases y paquetes CExpert. CExpertBase . CSymbolInfo. CAccountInfo y CObject con interfaces tiene es el siguiente (Fig.19). Fig. 19. Diagrama del experto con interfaces Tambin he aadido la enumeracin ENUMORDERTYPE usada por CExpertTrade. Para facilitar la legibilidad he marcado el grupo de relaciones con diferentes colores. Continuamos con nuestro trabajo. Espero que comprenda la lgica. El modelo de una clase en el diagrama puede tener muchas relaciones con otras clases y entidades. Por ello solo sustituyo algunos grupos con un paquete en el diagrama base. Vamos a estudiar CSymbolInfo. Si miramos el cdigo de SymbolInfo. mqh. veremos que la clase base CSymbolInfo usa algunas enumeraciones y estructuras MQL5. Est bien usar un paquete y sus relaciones para ello (Fig. 20). Fig. 20. Diagrama del paquete CSymbolInfo Puede usarse algo de espacio libre en el diagrama para los comentarios. Tambin he marcado la relacin de la interfaz con la clase padre CObject. El diagrama original Expert de paquetes y clases ser ligeramente modificado. Dar su versin actualizada ms tarde, cuando todas las clases y paquetes se muestren en el diagrama. As que vamos con ello. Veamos el cdigo MQL en AccountInfo. mqh. Como resultado, CAccountInfo tambin utiliza algunas enumeraciones. Las reflejamos en el diagrama del paquete que vamos a crear para esta clase y sus relaciones con otras entidades (Fig. 21). Fig. 21. Diagrama del paquete CAccountlInfo Ahora vamos a trabajar con la clase CExpert. Para esta clase tambin creamos un paquete CExpert . que aparecer como se indica en la Fig. 22. Seguimos mejorando la legibilidad de nuestro diagrama principal. La clase CExpert est conectada con algunas otras clases como indican las lneas naranjas de la interfaz con una flecha. Fig. 22. Diagrama del paquete CExpert Vamos a explorar otras clases. Crearemos ms paquetes para ellas. CExpertSignal deriva de CExpertBase. Esta relacin ya ha sido mostrada en el diagrama original Expert . Adems, la clase CExpertSignal usa CArrayObj. COrderInfo. CIndicators e instancias de su propia clase (Fig .23). En particular, la interfaz de la relacin con la clase CArrayOb j nos llevar al diagrama del paquete CExpertBase que muestra la relacin de la clase CArrayObj con otras entidades. Fig. 23. Diagrama del paquete CExpertSignal No estoy mostrando ahora todos los diagramas, ya que todos se encuentran disponibles en el archivo Expert. simp. Vamos a ver ahora nuestro diagrama de paquetes y clases actualizado Expert (Fig. 24). Como puede ver, casi todas las clases principales en el diagrama se han encapsulado en paquetes para facilitar la comprensin del diagrama. He cambiado el color de la lnea de generalizacin a marrn, para distinguirla de la lnea de la relacin de dependencia. Fig. 24. El diagrama de paquetes y clases Expert Por tanto, hemos reflejado todo lo que puede obtenerse del cdigo disponible en la librera estndar para crear diagramas. Solo necesitamos aadir algunos bloques ms que especifiquen las operaciones de trading del asesor experto. El primer bloque es CmyExpert que hereda las habilidades de trading de la clase CExpert. Este es el bloque por el que hemos dedicado tanto tiempo a trabajar en la ingeniera inversa. Implementar una estrategia de trading especfica. Tambin necesitamos especificar las funciones virtuales de las clases bsicas del asesor experto. Para esta finalidad creamos el bloque de clases CmyExpertSignal, CmyExpertMoney. CmyExpertTrailing e indicamos que tienen la procedencia adecuada (Fig. 25). Fig. 25. El diagrama ampliado de paquetes y clases Expert Las funciones y datos que cada una de estas clases deben incluir es una decisin a tomar por el desarrollador. Aqu estoy intentando mostrar el esquema ms general, no una implementacin especfica de una clase derivada. Por tanto, para cada una de las clases derivadas podemos crear un diagrama independiente con una lista detallada de mtodos y propiedades incluidas, tal y como se ha hecho, por ejemplo, en la Fig. 8. Ahora vamos a ver cmo podemos usar el diagrama de la serie en nuestro trabajo. Permtanme que les recuerde que este muestra cmo nuestro asesor experto opera con respecto a la lnea cronolgica. Escribimos la informacin del trabajo del asesor experto en orden cronolgico (Fig. 26). Fig. 26. Secuencia del diagrama del asesor experto El terminal sirve como un actor. A nivel global crea el objeto myTrader, una instancia de CmyExpert (paso 1.1). El verde hace referencia a los eventos predefinidos del terminal de cliente (Init. Deinit. NewTick. Trade .) La lgica del diagrama de la secuencia ha sido descrita antes. Aqu me gustara destacar algunos puntos especficos. Cuando crece el cuerpo del asesor experto y hay cada vez ms cdigo, se hace ms difcil mostrarlo en un diagrama. Para resolver este problema usamos el enfoque del bloque. Se visualiza un conjunto de funciones habituales en forma de bloque. Por regla general es otro diagrama de secuencia. Se dice que es un uso de interaccin. Por tanto, en este caso, he creado un diagrama de secuencia llamado OnInit para reflejar la lgica de gestionar el evento del terminal Init en un diagrama separado. Sintcticamente se define como una frontera con la palabra clave ref (referencia) y se usa cuando la seal de control pase de OnInit (paso 2.1) a la lnea cronolgica del objeto Init. Adems, he establecido un desplazamiento de la interfaz hacia este diagrama de secuencia para OnInit. Es decir, si hacemos clic dos veces en el borde, podemos realmente abrir un diagrama de secuencia detallado de OnInit (Fig. 27). Fig. 27. El diagrama de secuencia de OnInit Los desplazamientos a otros diagramas de secuencia son muy adecuados cuando hay que repetir las mismas acciones. Por ejemplo, el diagrama OnInit contiene acciones conectadas con la deinicializacin del asesor experto cuyo procesamiento se hace en myTrader Deinit (Fig. 28). Fig. 28. El diagrama de secuencia de myTraderDeinit En general, en esta etapa del diseo del asesor experto tengo cuatro diagramas de secuencia. Naturalmente, en un desarrollo ms serio puede que necesitemos diagramas adicionales. Por ejemplo, no he controlado otros eventos del terminal de cliente (NewTick. Trade ). Conclusiones En este artculo he recomendado tener en cuenta la naturaleza multidimensional del proceso de desarrollo de un asesor experto usando el lenguaje grfico UML, que se utiliza para el modelado visual de los sistemas de software orientados a objeto. La principal ventaja de este enfoque es la visualizacin del diseador. Al igual que ocurre con cualquier fenmeno complejo, UML tiene sus propias desventajas que el desarrollador debe tener en cuenta (redundancia, semntica imprecisa, etc.). Espero que la metodologa descrita del desarrollo del asesor experto les resulte interesante. Estar agradecido de recibir cualquier comentario y crtica constructiva. Ubicacin de los archivos:Uml lenguaje unificado de modelamiento El desarrollo de sistemas de informacin empleando el lenguaje de modelado unificado UML Enviado por aleidabarrientose barrientos MapInfo OnDemand / Online Your workspaces (.wor) on the web Sign up Get 10 Mb of free space mapworkspace Forex soft - Metatrader MT 4 para novatos profesionales. Forex software alpari-us/es/1. Resumen 2. Introduccin 3. La Ingeniera de Software 4. La complejidad del Software 5. Principios de Modelado 6. El Lenguaje de Modelado Unificado UML 7. El proceso Unificado de Modelado (RUP) 8. Diagramas de UML 9. Conclusiones 10. Bibliografa El presente artculo describe la evolucin de las notaciones que dieron lugar a UML (Lenguaje de ModeladoUnificado), detalla ampliamente sobre el surgimiento de la Ingeniera del Software, expone los principios de modelado en que se fundamenta la notacin de UML, asimismo muestra y explica como el UML adopta el RUP(Proceso Unificado de Desarrollo) para modelar las actividades de un proyecto. Finalmente se propone la organizacin de los diagramas a utilizar en las diferentes etapas del desarrollo de lossistemas de informacin. A lo largo de los aos, el desarrollo de los proyectos de software causan bastantes confusiones y malas interpretaciones en los requerimientos de los clientes y usuarios, en parte debido a la abundancia de notaciones, metodologas y conceptos que hace que los desarrolladores de sistemas no se pongan de acuerdo en que es lo que realmente estn elaborando. En un esfuerzo para estndarizar las notaciones y procesos a utilizar, se conform un consorcio liderado por la empresa Rational y por las principales empresas del mundo de la industria de la informtica, entre ellas, Microsoft, Oracle, Sun Microsystems, Intellicorp, IBM, AMD y otras, quienes desarrollaron una notacin llamada UML y el proceso de desarrollo RUP. 2. La Ingeniera de Software. La ingeniera del Software nace como una disciplina para aplicar los principios tcnicas y herramientas de desarrollo de software, surgi porque todos los desarrolladores en la dcada de los 80s, realizaban el software de forma artstica, es decir utilizando mtodos y tcnicas adhoc donde la experiencia (el ensayo-error) era el camino a seguir. Este enfoque produjo grandes y exitosos productos deprogramacin pero conforme los proyectos se volvieron ms complejos debido al avance del hardware y software y la penetracin cada vez mayor de la informtica en todos los mbitos de la sociedad, llev a que se produjera software sin calidad, se incumplieran los presupuestos y se incrementara dramticamente los costos de mantenimiento. La solucin propuesta fue aplicar mtodos y principios quehan sido utilizados y probados en la experiencia de desarrollo de software para producir de forma inequvoca productos que corran eficientemente y se ejecuten sobre mquinas reales. En la dcada de los 70 surgieron una gran variedad de metologistas y metodologas entre ellos se destacan Yourdon y Demarco cuyas investigaciones se basaban en los principios de la programacin estructurada. En los80s y 90s el paradigma estructurado evolucion hacia el paradigma orientado a objetos, en el perodo de 1989 y 1994 se cre la llamada guerra de mtodos dentro de la comunidad orientada a objetos existiendo un incremento de menos de diez a ms de cincuenta metodologas, es as que los desarrolladores de software quedaron muy confundidos sin saber cual era la metodologa ms adecuada para elaborarsus proyectos. Ante lo enunciado, el UML oficialmente se present cuando Rumbaugh, Booch y Jacobson unifican sus estudios con una semntica y notacin, para lograr compatibilidad en el anlisis y diseo orientado a objetos, permitiendo que los proyectos se asentaran en un lenguaje de modelado maduro, permitiendo a los constructores de herramientas enfocarse en producir caractersticas ms. Regra para leer o documento completo.

No comments:

Post a Comment