Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 2103
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Por acaso você tem uma função que calcula tanto o patrimônio líquido quanto a comissão?
Por acaso você tem uma função que calcula tanto o patrimônio líquido quanto a comissão?
Linguagem, troca, forex? Não percebo.
Língua, bolsa de valores, forex? Não sei do que se trata.
R-ka, forex.
Bem, uma função que calcularia um gráfico de balanço de negócios + comissão\spread (custos)
Eu escrevi isto, não sei se está correcto.
calc.balance <- function(sig,x, comision=0){ sig <- ifelse(sig>0, 1, -1) trades.count <- length(rle(c(sig))$values) # сколько было сделок comis <- comision*trades.count sig <- na.omit( dplyr::lag(sig) ) dC <- c(NA, diff(x)) bal <- cumsum(sig * tail(dC, length(sig) ) ) bal <- bal-comis return(bal)}Exemplo de um script em R que usa o pacote "MetaTrader5" (Python) para fazer o download de citações. A biblioteca "reticulada" deve ser instalada em R. Esta biblioteca proporciona interação com Python. Leia com atenção aqui e aqui. Quando você executar a biblioteca de reticulação pela primeira vez, você será oferecido para instalar a miniconda. Recomendo-lhe que não recuse. Isto irá criar o ambiente conda r-reticulado com python(3.6.xx) e um conjunto inicial de pacotes instalados. Se você já instalou o Pyhon (ou várias versões), você deve ativar o ambiente necessário no início do script. Todos os comandos do pacote MetaTrader5 estão aqui.
Roteiro de inicialização
Para fazer o download de citações, escreveremos a função
#---Function------------------------------- GetCotirPy <- function(sym){ selected = mt5$symbol_select(sym,TRUE) if (selected) py_run_string(" import pandas as pd import MetaTrader5 as mt5 rates = pd.DataFrame(mt5.copy_rates_from_pos(r.sym, r.tf, 1, r.bar))" ) return(py$rates) }Vamos ver a estrutura dos dados obtidos.
Além disso, vamos fazer os cálculos necessários.
R-card, forex.
Bem, uma função que calcularia um gráfico de balanço de negócios + comissão/spread (custos)
escreveu isto, não sei se está certo.
Eu não entendo aqui.
R-card, forex.
Bem, uma função que calcularia um gráfico de balanço de negócios + comissão/spread (custos)
Eu escrevi isto, não sei se está certo.
Acho que o número de acordos não deve ser contado aqui. Só precisamos de subtrair a propagação com comissão de cada negócio. Então é assim:
calc.balance <- function(sig,x, comision=0){ sig <- ifelse(sig>0, 1, -1) sig <- na.omit( dplyr::lag(sig) ) dC <- c(NA, diff(x)) bal <- cumsum(sig * tail(dC, length(sig) ) ) bal <- bal-comision return(bal)}Acho que o número de negócios não precisa de ser contado aqui. Basta subtrair o spread e a comissão de cada comércio. É assim que as coisas são:
Não desta maneira. Por exemplo
A comissão não será cobrada em todos os sinais, mas apenas quando o sinal for invertido. Eu uso a função
cnt<-function(x){ n <- 1:(length(x)-1) cnt <- 0 for(i in n) {if(x[i]!=x[i+1]) {cnt<-cnt+1}} return(cnt) }Para o vector de sinal acima
A diferença não é clara.
E para o cálculo do saldo a função
test_bal <- function(sig, CO){ import::here(poorman, Lag = lag) import::here(.from = fTrading, maxDrawDown) sig %>% Lag() %>% na.omit()->sig CO %>% tail(length(sig))-> CO bal <- cumsum(CO * sig) K <- (last(bal)/length(bal) * 10^Dig)%>% round() Kmax <- max(bal)/which.max(bal) * 10^Dig %>% round() dd <- maxDrawDown(bal)[[1]] %>% round() op <-cnt(sig) tst<-list(bal = bal, k = K, k.max = Kmax, op = op, dd = dd) return(tst) }Boa sorte.
Eu não entendo aqui.
Com "rle" você pode calcular o número de mudanças de sinal, ou seja, o número de negócios
Você pode ver por "valores" que o sinal mudou 5 vezes, isso significa que houve 5 negócios.
Eu não entendo a diferença.
Penso que a minha implementação leva em conta como se a comissão de "a primeira negociação, cuja abertura não temos, só existe o fechamento".
como para este negócio, a minha variante leva uma comissão
e a sua versão começa a carregar esta. A sua versão é mais correcta mas é fácil de corrigir, basta subtrair "1".
Exemplo de script em R usando ...
Obrigado, eu vou investigar.
Com "rle" você pode calcular o número de mudanças de sinal, ou seja, o número de negócios.
Você pode ver por "valores" que o sinal mudou 5 vezes, isso significa que houve 5 trocas.
Penso que a minha implementação também tem em conta a comissão e como "a primeira transacção, cuja abertura não temos, há apenas o fecho".
como para este negócio, a minha variante leva uma comissão
e a sua variante começa a tirar desta, a sua variante é mais correcta, mas é fácil de corrigir, basta fazer, basta subtrair "1".
Sim, a sua versão é mais correcta.