Forex Python Api




Forex Python ApiPara receber dados historicos da API, um usuario deve ter assinaturas de dados de mercado de nivel 1 para esse contrato. Os dados historicos estao disponiveis em graficos TWS para muitos tipos de instrumentos sem ter assinaturas de dados de mercado, mas nao estarao disponiveis para a API a menos que todos os requisitos para os dados do mercado ao vivo sejam atendidos. Ao recuperar dados historicos do TWS, esteja ciente das Limitacoes de Dados Historicos. Solicitando Dados Historicos Os dados historicos sao obtidos do TWS atraves da funcao IBApi. EClient. reqHistoricalData. Cada solicitacao precisa: Um identificador exclusivo que servira para identificar os dados de entrada. O IBApi. Contract voce esta interessado polegadas A data e hora de conclusao dos pedidos. A quantidade de tempo (ou unidades de Cadeia de Duracao valida) para voltar dos pedidos dados data e hora de termino. A granularidade de dados ou tamanhos de barra validos O tipo de dados a serem recuperados. Consulte Tipos de Dados Historicos (whatToShow) Se deve ou nao recuperar dados gerados apenas dentro das Horas de Negociacao Regular (RTH) O formato no qual a data das barras de entrada deve ser apresentada. Observe que, para as barras diarias, apenas o formato aaaaMMdd esta disponivel. Por exemplo, fazer uma solicitacao com uma data e hora de termino de 20160127 23:59:59, uma sequencia de duracao de 3 D e um tamanho de barra de 1 hora retornara tres dias de valores de dados de barras de 1 hora em que a barra mais recente sera Ser o mais proximo possivel de 20160127 23:59:59. String queryTime DateTime. Now. AddMonths (-6).ToString (quotyyyyMMdd HH: mm: ssquot) client. reqHistoricalData (4001, ContractSamples. EurGbpFx (), queryTime, quot1 Mquot. Quot1 dayquot. QuotMIDPOINTt 1, 1, null) client. reqHistoricalData (4002, ContractSamples. EuropeanStock (), queryTime, quot10 Dquot. Quot1 minquotquotTRADES 1, 1, null) Calendar cal Calendar. getInstance () SimpleDateFormat form novo SimpleDateFormat (quotyyyyMMdd HH: mm: ssquot) Formato (cal. getTime ()) client. reqHistoricalData (4001, ContractSamples. EurGbpFx (), formatado, quot1 Mquot. Quot1 dayquot. quotMIDPOINT 1, 1, null) client. reqHistoricalData (4002, ContractSamples. EuropeanStock () Quot10 Quot1 min QUOTTRADES 1, 1, null) Cancelar pedidos de dados historicos Dim queryTime As String DateTime. Now. AddMonths (-6).ToString (quotyyyyMMdd HH: mm: ssquot) client. reqHistoricalData (4001, ContractSamples. EurGbpFx (), QueryTime, quot1 M quot1 dayquot. QuotMIDPOINTquot. 1, 1, Nothing) client. reqHistoricalData (4002, ContractSamples. EuropeanStock (), queryTime, quot10 Quot1 min 1 quotTRADES 1, 1, Nothing) char queryTime 80 std :: strftime (queryTime, 80, quotYmd H: M : TimeTools) TimeTime (4001, ContractSamples :: EuropeanStock (), queryTime (4002, ContractSamples :: EuropeanStock (), TimeTime, Quot1QuantityMotOutput 1, 1, TagValueListSPtr ()) mpClient-gtreqHistoricalData (4001, ContractSamples :: EurGbpFx , Quot10 Quot1 min QUOTTRADES 1, 1, TagValueListSPtr ()) 1 160 queryTime (datetime. datetime. today () - 2 160 datetime. timedelta (dias180)). Strftime (quotYmd H: M: Squot) 3 160 String queryTime DateTime. Now. AddMonths (-6).ToString (quotyyyyMMdd HH: mm: ssquot) 4 160 self. reqHistoricalData (4101, ContractSamples. USStockAtSmart (), queryTime, 5 160 quot1 M quot1 dayQuotMIDPOINT 1, 1 ,) 6 160. AutoDataDatos (4001, ContractSamples. EurGbpFx (), queryTime, 7 160 quot1 M quot1 dayQuotMIDPOINT 1, 1,) 8 1 60 self. reqHistoricalData (4002, ContractSamples. EuropeanStock (), queryTime, 9 160 quot10 Dquot. Quot1 min. QuotTRADESquot. 1, 1) Consultando o inicio dos dados historicos Para encontrar o ponto de dados disponivel mais antigo para um dado tipo de instrumento e dados, uma funcao esta na API a partir de v973.02 e v963 do TWSIBG, IBApi :: EClient :: reqHeadTimestamp client. reqHeadTimestamp (14001, ContractSamples. USStock (), quotTRADES 1, 1) client. reqHeadTimestamp (4003, ContractSamples. USStock (), quotTRADES 1, 1) client. reqHeadTimestamp (14001, ContractSamples. USStock (), quotTRADES 1, 1 ) MpClient-gtreqHeadTimestamp (14001, ContractSamples :: EurGbpFx (), quotMIDPOINT 1, 1) 1 160 self. reqHeadTimeStamp (4103, ContractSamples. USStockAtSmart (), quotTRADES 0, 1) O timestamp da cabeca resultante e retornado para a funcao IBApi :: Client :: headTimestamp public class EWrapperImpl. EWrapper public void headTimestamp (int reqId, string headTimestamp) Console. WriteLine (quotHead carimbo de data / hora, Id. De solicitacao:, Head time stamp: quot. ReqId, headTimestamp) public class EWrapperImpl implementa EWrapper public void headTimestamp (int reqId, String headTimestamp) System. Out. println (quotHead timestamp. Req Id: quot reqId quot, headTimestamp: quot headTimestamp) Classe publica EWrapperImpl Public Sub headTimestamp (requestId como Integer, timeStamp As String) implementa IBApi. EWrapper. headTimestamp Console. WriteLine (quotHead carimbo de tempo. :, Carimbo tempo principal: quot. RequestId, timeStamp) classe TestCppClient. Public EWrapper void TestCppClient :: headTimestamp (int reqId, const std :: stringamp headTimestamp) printf (quotHead carimbo de tempo ReqId: d - Head carimbo de tempo: s, nquot. ReqId, headTimestamp. cstr ()) 1 160 classe TestWrapper (wrapper. EWrapper): 1 160 def headTimestamp (self, reqId: int, headTimestamp: str): 2 160 print (quotHeadTimestamp: quot. ReqId, quot headTimestamp) Recebendo Dados Historicos Os dados historicos serao entregues atraves do IBApi :: EWrapper :: metodo historicalData na forma de casticais. Uma vez que todos os casticais tenham sido recebidos o IBApi. EWrapper. historicalDataEnd marcador sera enviado classe publica EWrapperImpl. EWrapper virtual virtual void historicalData (int reqId, string data, double open, duplo alto, duplo baixo, fechamento duplo, int volume, int contagem, duplo WAP, bool hasGaps) Console. WriteLine (quotHistoricalData. quot reqId quot - Date: quot date Quot, Open: quot open quot, High: quot high quot, Low: quot lowquot, Close: quot close quot, Volume: quot volume quot, Count: quot count quot, WAP: quot WAP quot, HasGaps: Virtual void historicalDataEnd (int reqId, string startDate, string endDate) Console. WriteLine (quotHistoricalDataEnd - quot reqId quot de quot startDate quot para quot endDate) public class EWrapperImpl implementa EWrapper public void historicalData (int reqId, String data, double open, double high , Double low, fechamento duplo, int volume, int count, double WAP, boolean hasGaps) System. out. println (quotHistoricalData. Quot reqId quot - Data: quot date quot, Open: quot open quot, High: quot high quot, Low : Quot low quot, Close: quot close quot, Volume: quot vo Lume quot, Contagem: quot count quot, WAP: quot WAP quot, HasGaps: quot hasGaps) public void historicalDataEnd (int reqId, String startDateStr, String endDateStr) System. out. println (quotHistoricalDataEnd. Quot reqId quot - Data de Inicio: quot startDateStr quot, End Date: quot endDateStr) Classe Publica EWrapperImpl Public Sub historicalData (reqId Como Inteiro, data Como String, aberto Como Duplo, alto Como Duplo, baixo Como Duplo, fechar Como Duplo, volume Como Inteiro, contagem Como Inteiro, WAP Como Duplo, hasGaps Como Booleano) Implementa IBApi. EWrapper. historicalData Console. WriteLine (quotHistoricalData - ReqId quot amp reqId amp quot Data quot amp amp amp Baixo quot amp baixo amp quot Volume quot amp amp volume quot Count quot amplificador amp quotquot) Public Sub historicalDataEnd (reqId Como Integer, start As String, end As String) Implementa IBApi. EWrapper. historicalDataEnd Console. WriteLine (quotHistoricalDataEnd - ReqId quot amp ReqId amp quot Iniciar quot amp amp start quot Terminar quot amp amp amp quotquot) class TestCppClient. Public EWrapper void TestCppClient :: historicalData (TickerId reqId, constante std :: stringamp data, duplo aberto, duplo alto, duplo baixo, fechamento duplo, int volume, int barCount, double WAP, int hasGaps) printf (quotHistoricalData. ReqId: ld - Data: s, Aberto: g, Alto: g, Baixo: g, Fechar: g, Volume: d, Contagem: d, WAP: g, HasGaps: dnquot reqId, date. cstr () Fechar, volume, barCount, WAP, hasGaps) void TestCppClient :: historicalDataEnd (int reqId, std :: string startDateStr, std :: string endDateStr) std :: cout ltlt quotHistoricalDataEnd. ReqId: quot ltlt reqId ltlt quot - Data de inicio: quot ltlt startDateStr ltlt quot, Data final: ltlt endDateStr ltlt std :: endl 1 160 classe TestWrapper (wrapper. EWrapper): 1 160 def historicalData (self, reqId: TickerId, date : Str, open: float, high: flutuante, 2 160 low: float, close: float, volume: int, barCount: int, 3 160 wAP: float, hasGaps: int): 4 160 historico (reqId, Data, aberto, alto, baixo, fechar, volume, 5 160 barCount, WAP, hasGaps) 6 160 print (quotHistoricalData. quot. ReqId, quot Data: quot. Date, quotOpen: quot. Open, 7 160 quotHigh: , QuotLow: quot, low, quotClose: quot, close volume, volume, 8 160 quotCount: barCount, wAP: WAP, questHasGaps: isGaps) 1 160 def historicalDataEnd (self, reqId: int, Start: str): 2 160 super (). HistoricalDataEnd (reqId, start, end) 3 160 print (quotHistoricalDataEnd quot. ReqId, quotfromquot. Start, quottoquot. End) (WhatToShow) Av Ailable Dados por ProductUpdate: Eu atualizei o codigo para que ele funciona com Oandas nova API. Obter aqui Tempo para falar sobre corretores, como colocar um comercio de forma programatica e mais importante como nao ficar enganado. Um corretor nao e nada mais do que uma empresa que permite que voce comercio (comprar ou vender) ativos em um mercado atraves de sua plataforma. O que e muito importante para algotrading e: O corretor oferece uma API para que possamos fazer pedidos Voce pode ter uma conta demo para executar seu ambiente de teste e experimentar A propagacao e tao pequena quanto possivel No nosso caso, nos realmente nao se preocupam com propagacao Como nos nao estaremos fazendo negociacao de alta frequencia em breve. Mesmo que os corretores sao regulamentados, houve incidentes nos ultimos dois anos, foram corretores dobrado devido a certas condicoes. Se o broker oferece-lhe alguma alavanca louca (como 1: 200) Se o corretor parece estar em um pais muito estranho O que poderia acontecer E que voce comeca a fazer algum dinheiro e voce arent ser capaz de puxa-los para fora. A serio. Situacao super estressante. Mas vamos mudar para uma nota mais feliz que esta abrindo uma conta e colocando o nosso primeiro comercio programatico. Whooha eu estou usando Oanda como um corretor (eu nao sou afiliado com eles) e eles oferecem uma API bastante decente, bibliotecas no github e uma conta demo gratuita. Depois de iniciar sessao na sua conta demo, va para Gerir o Acesso a API. La voce pode encontrar sua chave de API que vamos usar em nosso sistema para colocar comercios. CERTIFIQUE-SE DE NAO COMPARTILHAR ESTA CHAVE. O codigo para isso e e todos os outros posts esta em github e voce pode instala-lo e executa-lo muito facilmente. Atualizacao: Oanda lancou um novo mecanismo de execucao (kickass) chamado v20 e lancaram uma nova API (melhorada). Esta postagem foi atualizada para usar a nova API, mas se (por qualquer motivo) voce quiser verificar o codigo antigo, ele esta aqui. Voce tem sorte Voce conectar-se a Oanda precisa de um arquivo conf - que voce pode gerar usando um script que Oanda fornece aqui ou voce pode apenas cria-lo sozinho. Por que voce quer que Primeiro de tudo quando se trata de credenciais (e meu dinheiro), eu prefiro saber tudo o que esta acontecendo. E eu nao gosto de ter que instalar PyYAML apenas para ler um arquivo conf. Sinta-se livre para usar qualquer metodo. Agora, prepare-se para ser espantado. O codigo e direto. Inicializamos a API: e agora vamos colocar uma ordem (comprar 5000 unidades de EURUSD) Verifique o preco atual e tao facil Super facil. Nao se preocupe com o que e EURUSD ou quantas unidades estamos comprando ou o que uma ordem de mercado e. Por agora, nos colocamos nosso primeiro comercio de nosso laptop e nos estamos indo construir nossa propria API para colocar comercios. Material emocionante Voce pode ler a documentacao do Oandas aqui para ver o que mais voce pode fazer com sua API e encontrar a biblioteca do Python aqui. Tons de exemplos estao disponiveis na pagina do github de Oandas aqui. Vindo acima em seguida, conectando a um sistema real de algotrading AO VIVO, funcionando de meu RaspberryPI em casa. Voce sera capaz de ver o (quase) programa final em execucao e bem falar mais sobre Forex e estrategias. Se voce tiver mais comentarios, me ping no jonromero ou cadastre-se para o boletim. Legal outro. Este e um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentacao e diversao. Todas as sugestoes aqui nao sao conselhos financeiros. Se voce perder algum (ou todos) voce dinheiro porque voce seguiu qualquer negociacao conselhos ou implantado este sistema em producao, voce nao pode culpar este blog aleatorio (andor me). Aproveite a seu proprio risco. Isto e mais de como construir a sua propria estrategia algotrading - a edicao Ethereum e nao um blog ganhar dinheiro rapido. Tambem e um exemplo real com retornos reais (e erros reais de producao que me custaram dinheiro), onde voce pode ver como identificar oportunidades, por que algotrading e incrivel e por que o gerenciamento de riscos pode salvar sua bunda. Recebo essa pergunta quase diariamente. Como posso encontrar uma boa estrategia Como posso construir meu proprio Eu preciso ter um PhD em matematica Newsflash: Se eu posso escrever uma estrategia, qualquer pessoa pode escrever uma estrategia. Confie em mim. O unico truque e procurar um simples. Update: Este post foi reescrito pelo menos cinco vezes (como o drama DAO escalado) e e o exemplo perfeito de uma estrategia de fazer um circulo completo. Eu comecei a me envolver com Ethereum no inicio, como eu realmente gostava de executar seus algoritmos sobre a coisa blockchain. Quando TheDAO saiu, eu li tudo sobre ele e amei a ideia. Voce nao precisa entender o que Ethereum, theDAO, blockchain e neste momento (eu prometo que vou ramble em um outro post). As mesmas ideias se aplicam ao Forex, estoques mesmo bolas Pokemon. Meu quatro passo - capitao obvio - sistema Eu pessoalmente, tenho uma maneira especifica que eu trabalho. Passo um . Identifique uma ideia. Minha ideia neste caso e que ha um par de trocas oferecendo Ethereum e tokens DAO. E se houvesse uma arbitragem entre aqueles dois passos. Teste manualmente a ideia. Se algo kinda funciona, eu estou em algo. Tudo o que eu tinha a fazer e executar todos os passos manualmente e anote quaisquer taxas, condicoes ou qualquer coisa que deve ser documentada. Passo tres . Automatizar Este algoritmo nao e um algoritmo de negociacao de alta frequencia. Ha uma quantidade consideravel de tempo de risco (que voce pode eliminar, bem ver mais tarde), mas o que eu fiz poderia ser feito manualmente. O problema e que eu teria que gastar todo o tempo na frente do meu computador, verificando se ha uma condicao de arbitragem e se houve, eu tive que agir rapido e sem estragar. Oh e eu tive que recrutar cinco dos meus amigos para escalar isso. Longa historia curta, passei Presidentes Day escrevendo um programa simples que ira reproduzir todas as minhas etapas manuais. O programa iria falhar e nao era mais que 100 linhas de codigo. Esta e a fase de coleta de dados onde eu vejo se ha uma vantagem que os algoritmos podem me dar. As vantagens podem ser: Algo que seja automatizado e executado 1000 vezes por segundos ou 1000 vezes em paralelo Algo que pensa mais rapido do que eu posso Algo que nao tem sentimentos para estragar o meu sistema Se houver pelo menos uma ou mais condicoes cumpridas, vou Comecar a construir e reescrever o algo. Passo quatro. Tudo em eu estou brincando e voce vera em um pouco por gerenciamento de risco e super importante neste negocio. Vamos discutir um pouco sobre o que essa arbitragem foi. A ideia e: eu me pergunto se Kraken e Shapeshift tem precos diferentes para os mesmos ativos. Este e um caso de arbitragem classico (Kraken e Shapeshift sao trocas). Eu poderia trocar DAO por ETH em Kraken, transferir ETH para Shapeshift, trocar ETH por DAO e envia-los de volta para Kraken e devido a inconsintencies de preco eu iria acabar com mais DAO do que eu inicialmente comecou Dinheiro sem risco, o melhor tipo de dinheiro . Voce pode ganhar dinheiro enquanto ETHDAO de Kraken DAOETH de ShapeShift gt 1 (taxas de gas). Formula muito simples, a direita Todo ciclo, foi um retorno de 2 a 10 do meu capital. Depois de um tempo, eu comecei a bater os limites do Shapeshift e eu tive que fazer isso correr em paralelo. A questao e o que voce faria se voce tivesse um algoritmo que faz 10 de seu dinheiro a cada 20 minutos. A coisa mais estupida que voce poderia fazer e colocar toneladas de dinheiro nele. Se voce nao estiver familiarizado com a palavra grega hybris. Considere-se afortunado. Hybris e quando voce pensa que voce e invencivel, melhor do que deuses. E este e o maior NAO NAO voce pode fazer na negociacao. Depois de algumas semanas, o ADO foi invadido. 160 milhoes de dolares foram roubados (ou devo dizer congelados) e ninguem sabia o que iria acontecer. Para mim, isso aconteceu, 10 minutos antes de embarcar em um aviao para voar para Nova York. Hybris. Ou como as pessoas nos EUA dizem: Foda-se. Eu era inteligente (sorte) o suficiente para ter bons habitos de gestao de risco (obrigado Forex). Eu nunca, nunca, sempre risco mais que 2 do meu capital, mesmo que parece o melhor tipo de negocio. Felizmente, o dinheiro foi restaurado e eu poderia retirar o meu DAO para Ethereum (mas sim, eu comprei em voo WiFi para acompanhar o que esta acontecendo). Toda esta experiencia e um lembrete de que ha sempre coisas que voce nao pode prever. Coisas que voce nao pode controlar. Este era um risco sistematico e nao havia nenhuma maneira que eu poderia ter visto isso acontecer. Empurrar botoes e construir algoritmos nao e suficiente. Gestao de risco adequada e saber quando voce precisa tomar uma pilula chill e o que pode mante-lo no jogo. No proximo post, vou postar todo o algoritmo e ir linha por linha. Eu tambem planejo discutir um pouco mais sobre o ADO e Ethereum. Se voce nao quer perder nenhum destes e obter mais informacoes adicionais, sinta-se livre para se inscrever para o boletim onde eu falo sobre fintech, algoritmos e os mercados. By the way, se voce quiser fazer sua propria cryptocurrency e aprender mais sobre Ethereum, eu tenho um grande post com o codigo postado aqui. Proxima: Mergulhar no ETHDAO algotrading programa Se voce tiver mais comentarios, ping-me em jonromero ou inscricao para o boletim. Legal outro. Este e um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentacao e diversao. Todas as sugestoes aqui nao sao conselhos financeiros. Se voce perder algum (ou todos) voce dinheiro porque voce seguiu qualquer negociacao conselhos ou implantado este sistema em producao, voce nao pode culpar este blog aleatorio (andor me). Aproveite a seu proprio risco. Aprendizagem e negociacao de maquinas e um assunto muito interessante. E tambem um assunto onde voce pode gastar toneladas de tempo escrevendo codigo e papeis de leitura e, em seguida, um garoto pode vence-lo enquanto joga Mario Kart. Nas postagens nexts, vamos falar sobre: ??Otimizar entradas e saidas. Isso e so isso poderia fazer uma tonelada de diferenca em seu rolo de banco. Calcule o tamanho da posicao (caso voce nao goste do criterio de Kelly) Encontre a possivel correlacao entre pares diferentes (negociacao de pares). Eu amo a correlacao EURUSD vs GBPJPY Calcular as linhas de resistencia do amplificador de suporte Mas o que e Machine Learning Machine algoritmos de aprendizagem sao algoritmos onde uma maquina pode identificar padroes em seus dados. Yeap, e assim tao simples. Por exemplo, encontrar todos os animais nesta foto e desenhar uma caixa em torno deles. Tambem, nome esse animal. Louco, eu sei. Para negociar como voce pode imaginar e bastante semelhante: Para que uma maquina de aprender, voce precisa ensinar-lhe o que e certo ou errado (aprendizagem supervisionada) ou dar-lhe um grande conjunto de dados e deixa-lo selvagem (nao supervisionado). Para identificar objetos, isso e direto, mas o que acontece com a negociacao? Olhei ao redor para ver se existe algum programa de aprendizado de maquina que possa identificar linhas SR, mas sem sucesso. Entao eu decidi escrever o primeiro programa de aprendizagem da maquina em python que identifica linhas de suporte e resistencia em Python. Outro primeiro Hooray Mas como pode um algoritmo identificar essas areas Hoooooow Senhoras e senhores (e robos), deixe-me apresenta-lo a MeanShift. Um algoritmo unsupervised que seja usado na maior parte para o recognition da imagem e e consideravelmente trivial setup e funcionar (mas tambem muito lento). A ideia e que este algoritmo vai me deixar particionar meus dados (carrapatos forex) em areas e, em seguida, eu posso usar as bordas como suporte e linhas de resistencia. Ideia legal, mas funciona? Analisamos cerca de 12 milhoes de pontos de dados de EURUSD em 2014 e um par de meses de 2015. As linhas de resistencia sao colocadas automagicamente por um algoritmo de aprendizagem de maquina. O que e realmente legal (e assustador) e que o algoritmo praticamente prega-lo. CLAVOS-lo dificil. Fica realmente assustador quando vamos usar o algoritmo para identificar micro-estruturas e comecar scalping. O sistema e capaz de processar qualquer tipo de dados timeseries (acoes, forex, ouro, qualquer) e ele ira tornar um html grafico interativo (como o grafico acima) com os seus dados ea maquina gerada SL. O codigo esta aqui para ficar louco. Agora vamos percorrer o codigo. Depois de ter o seu conjunto de dados que voce precisa para le-los e limpa-los. Prepare-se para a magia de alguns pandas. Nos soltamos os valores vazios (fins de semana) e, em seguida, resample os dados para candelabros 24 horas (ohcl). Isso torna muito mais facil tracar. Os dados agrupados sao os dados que vamos alimentar no algoritmo ml. Em seguida, preparamos os dados que vamos usar no algo. No proximo post, bem discutir como fazer este trabalho ainda melhor, discutir alguns resultados muito interessantes (pode o algoritmo realmente prever sobre o futuro) e comecar a usa-lo em nossa propria negociacao. Se voce quiser verificar o proximo artigo e ler mais sobre negociacao e investimento usando algoritmos, cadastre-se para o boletim. Proxima proxima: Aprendizagem da maquina Gone Wild - Usando o codigo Se voce tiver mais comentarios, ping-me no jonromero ou inscricao para o boletim. Legal outro. Este e um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentacao e diversao. Todas as sugestoes aqui nao sao conselhos financeiros. Se voce perder algum (ou todos) voce dinheiro porque voce seguiu qualquer negociacao conselhos ou implantado este sistema em producao, voce nao pode culpar este blog aleatorio (andor me). Aproveite a seu proprio risco. Atualizacao: O posto de aprendizado da maquina vai ser epico, mas leva muito tempo para tornar o codigo apresentavel. Urso comigo, coisas legais estao vindo (como voce leu no boletim de noticias) Disclaimer: ESTE NAO E CONSELHO FISCAL. O que e realmente surpreendente e que a maioria dos pedidos no boletim sao: Use ferramentas para ajudar Trading Machine Learning para otimizar negocios Impostos Os dois primeiros, eu posso entender. Todo mundo quer ser um melhor trader. Entendi. Mas impostos TAXES Este e o seu dia de sorte. Forex impostos sao super facil. A serio. Por padrao (isso e chamado de Secao 988), todas as suas perdas vao compensar seus impostos de renda sem o limite de 3k por ano. Isso e muito melhor do que a negociacao de acoes, onde as perdas compensam seus ganhos de capital. Mas o que acontece com os ganhos por que voce se importa por que a maioria dos comerciantes de Forex perdem dinheiro (eu chama-lo de pagar mensalidades) no primeiro ano (s), entao voce e melhor mante-lo simples ate que voce tenha uma estrategia comprovada e consistente. Dito isto, se voce realmente fazer um lucro, voce e tributado no ganho de capital de curto prazo (as vezes ate 40). As solucoes para quando voce comecar a ganhar dinheiro sao: Optando fora da Secao 988 e ficar tributado sob a Secao 1256 onde 60 dos lucros sao tributados como ganhos de capital a longo prazo e 40 como curto prazo (mas agora as perdas nao podem compensar sua renda). Isso e muito bom quando voce ganhar dinheiro, muito ruim quando voce nao faz. Iniciar uma LLC Para as pessoas que comecaram a experimentar com Forex e algotrading, eu sempre sugeri-los para ficar com a Secao 988 (o padrao) e quando eles comecam a ganhar algum dinheiro (consistentemente) ou eles querem ir a tempo inteiro, fale comigo :) Seriamente, ha assim que muitas coisas que voce comecara fazer diferentemente quando voce vai do estagio do passatempo a segunda renda ao trabalho a tempo completo que nao ha nenhuma razao para over-optimize este. Proxima proxima: Machine Learning Gone Wild Se voce tem mais comentarios, me ping no jonromero ou inscreva-se para o boletim. Legal outro. Este e um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentacao e diversao. Todas as sugestoes aqui nao sao conselhos financeiros. Se voce perder algum (ou todos) voce dinheiro porque voce seguiu qualquer negociacao conselhos ou implantado este sistema em producao, voce nao pode culpar este blog aleatorio (andor me). Aproveite a seu proprio risco. Da ultima vez que falamos sobre o para-looper backtester (como eu amo para chama-los). Agora e hora de ver algum codigo Nos dissemos que temos algo parecido: python para cada elemento de readhistoricaldata (): applystrategy () howourstrategydid () Doce, vamos carregar a nossa estrategia, carregar alguns dados historicos, executar o nosso algoritmo e imprimir alguns resultados Eu prefiro ter minhas estrategias em um formato JSON que contem o nome da estrategia e algumas especificacoes (como quantos pips para stoploss ou takeprofit etc). Dessa forma, quando comecar bem usando um backtestter baseado em eventos, podemos passar a estrategia atraves de um algoritmo de aprendizado de maquina e tentar otimiza-lo. A proxima linha esta carregando nossos dados. Eu sei que as pessoas nao gostam de pickle e outras formas de carregar dados (e nos vamos falar sobre BColz em algum momento), mas por agora, apenas nua comigo. A proxima linha e auto-explicativo. Passamos os dados historicos para o nosso algo e voltamos algumas estatisticas para imprimir. Deixa o foco no algoritmo um pouco e nos podemos discutir tracar etc em um ponto mais atrasado. A magia do sistema de backtesting simples Prepare-se para se surpreender com o quao ridiculamente facil fazer isso. Curiosidades O que acontece com este tipo de backtesting e que 1. voce provavelmente cometera erros quando voce quiser usar exatamente o mesmo algoritmo 2. Voce nao sera capaz de escrever uma estrategia muito complexa (pelo menos isso facil) 3. Muito dificil de escalar (Em comparacao com o evento baseado) 4. Voce precisa ter a sua simulacao e execucao no mesmo idioma, mas lembre-se que esta e a maneira melhor e mais rapida para comecar e descobrir como todas essas coisas funcionam. Coming up next, usando outros backtesters bem conhecidos em Python e adicionando graficos para o nosso proprio Se voce tiver mais comentarios, me ping no jonromero ou inscreva-se para o boletim. Legal outro. Este e um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentacao e diversao. Todas as sugestoes aqui nao sao conselhos financeiros. Se voce perder algum (ou todos) voce dinheiro porque voce seguiu qualquer negociacao conselhos ou implantado este sistema em producao, voce nao pode culpar este blog aleatorio (andor me). Aproveite a seu proprio risco. O que e um bom sistema algotrading sem algumas estrategias legais para implantar Abaixo ha uma lista de estrategias que eu encontrei on-line (ou enviado para mim por comerciantes que estao no boletim). Eu pretendo atualizar a lista como eu continuo chegando a novas ideias. O conceito e que, a medida que continuamos a mergulhar cada vez mais no nosso sistema algotrading, vou mostrar-lhe como codificar e implementar estas estrategias. Eu sei com certeza que a maioria deles trabalham com mudancas minimas. Pior cenario, voce tera um sistema para testar suas suposicoes. Aqui esta a lista (e por favor me envie qualquer outra estrategia que voce acha que deve ser incluido): Proxima proxima, compartilhando e discutindo meu mais simples (mas mais bem sucedido) backtester Se voce tiver mais comentarios, me ping no jonromero ou cadastre-se para o Boletim de Noticias. Legal outro. Este e um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentacao e diversao. Todas as sugestoes aqui nao sao conselhos financeiros. Se voce perder algum (ou todos) voce dinheiro porque voce seguiu qualquer negociacao conselhos ou implantado este sistema em producao, voce nao pode culpar este blog aleatorio (andor me). Aproveite a seu proprio risco. Construir um sistema de backtest e realmente muito facil. Facil de estragar, quero dizer. Mesmo que haja toneladas de excelentes bibliotecas la fora (e bem passa-las em algum ponto), eu sempre gosto de fazer isso por conta propria, a fim de ajusta-lo. De todos os sistemas de backtesting que eu tenho visto, podemos supor que existem duas categorias: O for-loopers Os geradores de eventos Hoje, bem falar sobre for-loopers. Os for-loopers sao o meu tipo favorito de backtesters. Eles sao triviais para escrever e super divertido para expandir, mas eles tem alguns fluxos vitais e infelizmente a maioria dos backtesters la fora e para-loopers (ps: eu preciso encontrar um nome melhor para isso). Como os for-loopers funcionam Usando um loop for (como voce deve ter adivinhado). E algo como isto: Direito muito simples E assim que funciona um sistema de backtesting, que executa uma estrategia de impulso: Entao, qual e o problema Muito dificil de escalar (horizontalmente) Precisa de muito trabalho para manter seu applystrategy () trabalhando em backtesting e Producao Voce precisa ter tudo na mesma linguagem de programacao Permite mergulhar nesses, um por um. Escalabilidade. Eu estava experimentando um casal ha algumas semanas com um algoritmo de escalada para otimizar uma de minhas estrategias. Ele ainda esta em execucao. Depois de duas semanas. E eu construir sistemas uber-escalavel para a vida. Por que ele ainda esta sendo executado Voce pode usar multiprocessamento. Discoteca. Produtor (usando ZeroMQ) ou apenas threads para acelerar isso, mas alguns problemas nao sao constrangedor paralelo (sim, este e um termo real, nao uma das minhas palavras inventadas). A quantidade de trabalho para escalar um backtester como este (especialmente quando voce quer fazer o mesmo aprendizado de maquina em cima dele) e enorme. Voce pode faze-lo, mas e o caminho errado. Producao e backtesting em sincronia. As vezes eu fui mordido por isto. Eu posso recordar os comercios perdidos onde eu era hm, porque eu incorporei este comercio ou meu favorito velho do tempo POR QUE TRAILING STOP FOI APLICADO AGORA. Tempo de historia: tive uma ideia para otimizar a minha estrategia, para executar um backtester para ver o que aconteceria se eu pudesse colocar uma parada a direita apos o comercio foi rentavel, a fim de sempre garantir os lucros. Backtesting funcionou como um encanto em um aumento de 13 de ganhos ea producao perdeu todos os negocios. Eu percebi isso depois que o meu algo perdeu 3400 em um par de horas (uma licao muito cara). Manter o applystrategy em sincronia e muito dificil e torna-se quase impossivel quando voce quer faze-lo de forma distribuida. E voce nao quer ter duas versoes de sua estrategia que sao quase identicas. A menos que voce tenha 3400 para poupar. Usando linguas diferentes eu amo Python. E Erlang. E Clojure. E J. E C. E R. E Ruby (na verdade, eu odeio Ruby). Eu quero ser capaz de aproveitar a forca de outras linguas no meu sistema. Eu quero experimentar estrategias em R, onde existem bibliotecas muito bem testadas e ha uma enorme comunidade por tras dele. Eu quero ter Erlang para escalar o meu codigo e C para trituracao de dados. Se voce quer ser bem-sucedido (nao apenas na negociacao), voce precisa ser capaz de usar todos os recursos disponiveis sem preconceitos. Eu aprendi toneladas de coisas de sair com desenvolvedores R sobre como voce pode delta hedge bonds e visualiza-los ou por razao Sharpe pode ser uma mentira. Cada lingua tem uma multidao diferente e voce quer como muitas pessoas derramando ideias em seu sistema. Se voce tentar ter applystrategy em linguagem diferente, entao boa sorte com (2). Voce esta convencido agora Bem, eu nao estou tentando convence-lo como for-loopers e uma otima maneira de executar seus testes iniciais. E como eu comecei e para muitas estrategias que eu nao envia-los para baixo para o pipeline. Uma maneira melhor (para que voce possa dormir a noite) e o evento geradores. Coming up next, compartilhando e discutindo meu mais simples (mas mais bem sucedido) backtester Se voce tiver mais comentarios, me ping no jonromero ou inscricao para o boletim. Legal outro. Este e um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentacao e diversao. Todas as sugestoes aqui nao sao conselhos financeiros. Se voce perder algum (ou todos) voce dinheiro porque voce seguiu qualquer negociacao conselhos ou implantado este sistema em producao, voce nao pode culpar este blog aleatorio (andor me). Aproveite a seu proprio risco. Antes de executar qualquer sistema algotrading ao vivo, e uma boa pratica backtest (que significa executar uma simulacao) os nossos algoritmos. Tenha em mente que isso nao significa que se o seu sistema esta matando-o para os ultimos 5 anos, ele vai fazer um lucro, mas e um bom indicador que voce pode estar em algo. Ha quatro coisas que precisamos levar em consideracao quando fazemos nosso backtesting: A qualidade dos dados Como carrega-los eficientemente Como construir nosso sistema de backtesting Tente ter nosso backtesting e nosso sistema ao vivo compartilhar tanto codigo quanto pudermos Hoje , Vamos nos concentrar em (1) e (2). Para dados de Forex, estou usando GainCapital. Seus dados estao na forma de carrapatos. Para uma fonte livre e bom o suficiente. Eu costumava usar Oandas servico de dados historicos, mas parece que eles se mudou para um produto premium. Que pena. Certifique-se de que utiliza dados de GainCapitals apenas para experimentacao. Para qualquer outro tipo de dados historicos pagos (ETFs, acoes, opcoes stc), estou usando eoddata (eles tambem tem alguns dados historicos forex, mas eu havent usou-los). Permite baixar dados por uma semana e experimentar um pouco. O link para os dados e ratedata. gaincapital20151120NovemberEURUSDWeek1.zip para a primeira semana de novembro de 2015. Primeiro precisamos descompactar o arquivo. Python gtunzip EURUSDWeek1.zip e voce obtera um arquivo de 25MB chamado EURUSDWeek1.csv. Estes sao dados para uma semana para um par de moedas. Voce pode imaginar a quantidade de dados que voce precisa processar para todas as moedas nos ultimos cinco anos (dica: muito). Mas nao se preocupe, vamos otimizar isso. Por enquanto, vamos abrir o arquivo e inspecionar. As coisas que nos preocupam e o RateDateTime, RateBid e RateAsk. Como voce pode understade cada linha tem um carimbo de data e o quanto era o preco para comprar ou vender. Os formatos baixados por outros servicos sao bastante semelhantes. Ha muitas maneiras de carregar esses dados em Python, mas o mais preferivel quando se trata de cortar dados e manipular e usando Pandas. Podemos sempre usar a biblioteca csv para carregar dados (e pode ser mais rapido), mas precisamos fazer algumas otimizacoes e processamento primeiro que, como voce vai ver, e muito facil com pandas. Outra otima ferramenta para carregar TONELADAS de GBs muito eficiente e muito rapido e usando Bcolz. Manipulando dados usando Pandas Os dados que baixamos estao em ticks. A menos que estejamos construindo um algoritmo UHFT (ultra high frequency trading), e Muito mais eficiente (memoria, armazenamento e processamento) para agrupar estes ticks em segundos (ou minutos ou horas, dependendo da sua estrategia). Isso fara com que a nossa escala baixar de 25MB para apenas 35KB que se traduzem em enorme desempenho e beneficios de memoria. Vamos agrupar todos esses dados em 15 minutos. Como Tempo para se apaixonar por resample. O resampled o conjunto de dados tem este aspecto: Isto e chamado OHLC (Open High Low Close) bar para cada 15 minutos. Voce pode ver agora que os carrapatos sao Agrupados em segmentos de 15 minutos e voce tem o ponto mais alto e mais baixo que o preco atingido durante estes 15 minutos e tambem o openclose para comprar e vender. Ouro puro Nao so voce tem todas as informacoes que voce precisa, mas agora e extremamente rapido para carrega-lo . Voce apenas Precisa salvar os dados: e entao voce pode reutilizar este arquivo de 35kb. Podemos escrever um algoritmo de momento simples que verifica se houve um movimento enorme nos ultimos 15 minutos e se esse fosse o caso, vamos comprar. Vamos mergulhar nisso em um post posterior. Voce pode ver o codigo como sempre no github. Se voce tiver mais comentarios, me ping no jonromero ou cadastre-se para o boletim. Legal outro. Este e um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentacao e diversao. Todas as sugestoes aqui nao sao conselhos financeiros. Se voce perder algum (ou todos) voce dinheiro porque voce seguiu qualquer negociacao conselhos ou implantado este sistema em producao, voce nao pode culpar este blog aleatorio (andor me). Aproveite a seu proprio risco. Antes de construir qualquer algotrading sistemas, voce precisa saber como trocar manualmente. O que isso realmente significa e que voce precisa perder dinheiro em seu proprio antes de culpar a maquina. Tao simples como isso. Entao, vamos falar sobre cambio ou Forex como os caras legais chama-lo. Primeiro de tudo, por que nos escolhemos Forex para algotrading Por que nos nao nos tornamos milionarios comerciais como todo mundo Por que nao basta comprar Tesla, Amazon, Google, Facebook, Twitter e esperanca para o melhor (PS: por favor leia o outro legal no final de Este blog antes de comprar qualquer acoes). Resposta facil. Voce nao pode ganhar (ou perder) dinheiro rapido o suficiente comprando acoes. Forex tem um bom (ou terrivel, dependendo de qual lado da moeda voce e) coisa chamada alavancagem. A alavancagem pode ser 1:10, 1:50, 1: 100, 1: 200, 1: 1000, dependendo de como voce e suicida ou como esbocado seu corretor e (nao se preocupe, bem falar sobre corretores no proximo post). Vejamos um exemplo. Queremos colocar um comercio de 1k. A coisa logica e que, a fim de comprar algo que custa 1k, voce precisa ter em sua conta 1k, direito Nope. Voce sempre pode obter um emprestimo. Oooooooor: Digite alavancagem. Se tivermos uma alavancagem de 1: 100, podemos colocar um trade e um controle de 1k com apenas 10. Para aqueles que falharam em matematica (nao tenha vergonha, eu sou um de voces), 10 x 100 (alavancagem) 1.000. Isso significa que voce pode negociar grande e ganhar grande Na verdade 100 vezes mais grande. A captura e que voce pode realmente ir 100 vezes mais pequeno. Vamos ter outro exemplo. Eu so tenho o meu bonus (1k) e eu quero jogar no Forex. Sem qualquer alavancagem, eu posso comprar 1.000 unidades de Forex que custam 1 (por sinal, nao ha unidades de Forex, mas bem falar sobre isso mais tarde). Quantas unidades posso comprar com alavancagem de 1:50 Se voce responder se 100.000, voce fez algo errado. A resposta e 50.000 (1.000 x 50 de alavancagem). La voce tem. Uma das razoes que estamos fazendo Forex, e porque voce pode perder vitoria grande. Bem voltar para alavancar quando comecamos a colocar comercios. Existem tres razoes mais emocionantes, na verdade, que sao ainda mais impressionante (ousar dizer awesomer). Forex (quase) nunca dorme. Os mercados estao abertos TODO O DIA, seis dias por semana. Para ser mais exato, nao ha um mercado, mas quatro e eles estao se sobrepoem fornecendo o efeito de todos os dias. Forex e muito volatil e ha toneladas de dinheiro movendo-se (mais de 5 trilhoes por dia). Direito louco Nenhumas taxas em comercios. Voce nao paga 10 por o comercio como voce esta fazendo com acoes. Aqui voce paga a propagacao que e apenas uma fracao de um centavo (novamente, bem falar sobre isso em outro post). Todas essas razoes (alavancagem, dia inteiro, volatilidade, taxas) tornam o Forex a plataforma mais excitante para construir e implantar seus algoritmos. Em seguida, os corretores de Forex. Como nao ser scammed antes mesmo de escrever uma linha de codigo. Se voce tiver mais comentarios, me ping no jonromero ou cadastre-se para o boletim. Legal outro. Este e um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentacao e diversao. Todas as sugestoes aqui nao sao conselhos financeiros. Se voce perder algum (ou todos) voce dinheiro porque voce seguiu qualquer negociacao conselhos ou implantado este sistema em producao, voce nao pode culpar este blog aleatorio (andor me). Aproveite a seu proprio risco. E isso ai. Every week, I get at least 10 DMs on twitter asking on how to experiment with algotrading, Forex and portfolio analysis and Ive decided that its time to do something about it. Update: Find the posts here . So, I am planning to cover the basics of how to build your own trading platform, write your own strategies and go on vacations while electrons are making you money. Or zeroing your account. Either way, it is going to be fun The majority of the examples are going to be in Python even though there might be parts in Erlang and Ill try to keep it as easy as it can be. Lets talk now about what the final product will look like. We are building a system where you will be able to: Simulate your strategy (this is called backtesting ) Execute your strategy without supervision Alert you via smsemail for trades and errors Be scalable and trivial to deploy new updates Being able to run even from your home (from a raspberrypi for example) I assume this is going to be a total of 20 chapters, give or take. That is a system similar to the one that I am running the last year and includes a UI, sms alerts, backtesting pipeline, continuous delivery and all the cool stuff that us geeks love. All code will be on github and if everything goes well, Ill wrap it up in a book for everyone to enjoy. I have like three chapters almost done, so if you want early access just ping me at - jonromero . These are all the post that have been written up until now. I may addremove post as I get more feedback. I love Forex because: It has enormous amount of data (volume) These data are coming extremely fast (velocity) You need to consider multiple resources when you are building your strategy (variety) My definition of BigData is that you have volume-velocity-variety information and you need to react on it right now (realtime). It is one of the main reasons why I dont like Hadoop (ok, the other is because I dont like Java:). Forex is the best place if you want to start playing with BigData. You have (at least) one data channel, hitting you with data, you need to keep running algorithms on this stream (sometimes doing correlations up to a week) and you need be able to respond very fast. If a garbage collector kicks in or if you need to grab data from a database (even if this DB is in memory - long live Redis) then you will have issues. Thats the reason why most of the trading databases have all their data in the same memory space and have custom languages doing the analysis (like Kdb ). That was the inspiration for LDB. Millions of data sources (mobile phones), hitting your database and calculatingupdating for each one of the requests thousands of counters and running all sorts of algorithms. Per request. In realtime. But lets face it. The vast majority of userscompanies will never have millions (or even thousands) of requests hitting their servers. Thats why I started a new opensource database with codename: HybrisDB. HDB has the following characteristics: Simple to install (no moving parts) Simple to use (pre-defined dashboards) It will be perfect for the 99 of userscompanies but not for the 1 like Facebook or Google (sacrificing Enterprise features) The concept is to have a dashboard, to watch indicators going onoff and then (maybe) connect to a system to place an order. Sounds like an interesting cool hobby project and I still try to decide between using Erlang or Clojure for this. Ping me on twitter if you have any ideas One of my new years resolution was study one of your habits each month and I decided to focus on what activities I am spending my online time. So, I installed RescueTime which is a very cool app that sits on the background and creates reports about which apps and sites you are using the most. And no, it is not sending that info to NSA (you are not that important). Even though I spent most of my time working, writing and communicating, I also spent around 2 hours on average on Facebook (gasp). No biggie. What I hated was that for the majority of times I was scrollingrefreshing for new updates. Like opening your refrigirator every two minutes even though you know it is empty Damn you habits So, spending 2 hours every day (sometimes more) on Facebook, means 60 hours per month or 7 working days . 7 freaking working days each month. 7 days, each day with 8 full hours, to sleep, go out, exercise, write a book, learn something new. What I did was installing StayFocused. a free plugin for your browser that doesnt let you spent more than 10 minutes on specific sites everyday. E adivinha. The I am just using facebook to communicate is such a lame excuse as I had no problem communicating with my friends, even by using facebook for 10 minutes. Now, give it a shot and tell me what you built in your spare timeReal Volume Indicator I coded some indicators in the python programming language, which scrape retail-sentiment data from different sources and put them into MT4. E como um OrderBook em tempo real, onde ao preco atual e historico todas as posicoes foram mostradas. De uma olhada na foto para saber o que quero dizer. O primeiro indicador e o sentimento geral eo segundo mostra a soma de todas as ordens (shortlong) na vela correspondente. Aqui esta o problema Im enfrentando: Um de meus tradepeer disse-me, se eu fizesse este material o sentimento publico estaria mudando e os indicadores se tornam inuteis e teriam o impacto a meu proprio sucesso negociando. Qual e a sua opiniao sobre isso O que devo fazer? Tome-o por favor como uma verdadeira discussao e desculpe-FF-pessoal, se e a placa errada. Agradecemos antecipadamente Ola Trader-Comunidade, eu codifiquei alguns indicadores na linguagem de programacao python, que raspam os dados de varejo-sentimento de diferentes fontes e coloca-los em MT4. E como um OrderBook em tempo real, onde ao preco atual e historico todas as posicoes foram mostradas. De uma olhada na foto para saber o que quero dizer. O primeiro indicador e o sentimento geral eo segundo mostra a soma de todas as ordens (shortlong) na vela correspondente. Aqui esta o problema Im enfrentando: Um dos meus tradepeer me disse, se eu gostaria de fazer este material publico. Bom trabalho aqui, mas eu gostaria de perguntar se voce sabe alguma coisa sobre o On Balance Volume (OBV) E como voce define consistente que e key. I seguido o sentimento por algum tempo e mesmo que nem sempre pode dar direcao clara, ele Parece ser capaz de dar pontos muito consistentes onde o mercado esta prestes a fazer grandes movimentos, e que so pode melhorar someones comercial muito. O resto e ate os comerciantes RR, e experiencia, mas informacoes como esta sao boas para o tempo. Ser um comerciante e solitario, mas ser um grande comerciante e mais solitario ainda Iniciou-se em dezembro de 2013 Status: Membro 546 Posts Pensar os jogadores do mercado de varejo mudar o mercado e muito engracado. Ha tantas maneiras diferentes os movimentos de mercados. Pensar uma ideia vai mudar o mercado e engracado. Eu sigo um comerciante que levou 100 posicoes em menos de um minuto com 10 contratos de Lote. Isso e 1000 contratos. No minuto que ela fez esses negocios o mercado mudou de 1.13010 para 1.13017. Entao sobre o preco da hora seguinte subiu 190 pontos (nao pips). A vela se fecha com um grande empurrao para cima e ela fecha todas as suas posicoes. Nao mudou uma coisa. Sim, ela fez 118K, tenho estado a segui-la por algum tempo. Muito bom comerciante editar: encontrado este publicado em 25 de agosto de 2014. lol editar: como para REAL VOLUME estes sao semelhantes, eles so custam dinheiro. Mas lembre-se que leva dinheiro para ganhar dinheiro Os membros devem ter pelo menos 0 vales para postar neste topico. 0 traders visualizando agora Forex Factoryreg e uma marca registada.