Este é um scanner de ações de negociação de um dia e robo-traseiro que procura todas as ações dos EUA e tenta encontrar e comprar ações com uma boa proporção de risco-recompensa e que estão no início de uma tendência ascendente, e depois vendê-los quando começa a tendência de baixa, Ou atinge sua meta de lucro, parada ou tempo limite.
No config.yml, adicione sua chave alpaca, em segredo, alternativamente, esses valores podem ser armazenados como variáveis de ambiente em
Configurações adicionais podem ser encontradas dentro de config/config.yml para controlar riscos, recompensa e assim por diante, estes podem ser superestimados por variáveis ambientais com o BUNNY_
prefixo_
Os valores de configuração já fornecidos foram testados para serem lucrativos em contas de negociação em papel.
Se desejar alterar esses valores para atender às suas próprias preferências, certifique -se de testá -las em uma conta de negociação em papel.
Coisas engraçadas sempre podem acontecer ao mexer com os valores; portanto, teste para garantir que você não exploda sua conta!
Pré-requisitos:
Clone ou faça o download do pacote - e RUN go run bunny.go
A Alpaca é um primeiro corretor de comissão da API, 0 que é usado por este comércio de robôs para interagir com os mercados de ações
func meetsRiskGoal ( stock * stock. Stock ) bool {
tradeRisk := viper . GetFloat64 ( "stop-loss-atr-ratio" ) * stock . Atr [ len ( stock . Atr ) - 1 ] / stock . Price . Peek ()
upperRisk := viper . GetFloat64 ( "risk" ) * ( 1 + viper . GetFloat64 ( "exposure-tolerance" ))
lowerRisk := viper . GetFloat64 ( "risk" ) * ( 1 - viper . GetFloat64 ( "exposure-tolerance" ))
return tradeRisk > lowerRisk && tradeRisk < upperRisk
}
func ( s * Stock ) IsReadyToBuy () bool {
return s . IsBelowTrend () && s . IsUpwardsTrend () && s . IsBuyingMacdCrossOver ()
}
func getOrderParameters ( s stock. Stock , a * io. Alpaca , budget float64 ) ( float64 , float64 , float64 , float64 , float64 ) {
quote := a . GetQuote ( s . Symbol )
exposure := budget * viper . GetFloat64 ( "risk" )
price := float64 ( quote . Last . AskPrice - ( quote . Last . AskPrice - quote . Last . BidPrice ) / 2 )
tradeRisk := viper . GetFloat64 ( "stop-loss-atr-ratio" ) * s . Atr [ len ( s . Atr ) - 1 ]
rewardToRisk := viper . GetFloat64 ( "risk-reward" )
stopLossMax := viper . GetFloat64 ( "stop-loss-max" )
takeProfit := price + ( rewardToRisk * tradeRisk )
stopLoss := price - tradeRisk
stopLimit := price - ( 1 + stopLossMax ) * tradeRisk
qty := math . Round ( exposure / tradeRisk )
//ensure we dont go over
for qty * price > budget {
qty = qty - 1
}
return price , qty , takeProfit , stopLoss , stopLimit
}
func ( s * Stock ) IsReadyToSell () bool {
return ! s . IsBelowTrend () && s . IsDownwardsTrend () && s . IsSellingMacdCrossUnder ()
}
Enquanto o programa estiver em execução, o console registrará todas as negociações, incluindo símbolo, preço, lucro, prejuízo de parada, limite de parada e Qty
2020/11/29 02:34:08 buying NHC:
total: 22332.509254
qty: 349.000000
maxProfit: 375.502682
maxLoss: 250.33512142059453
price: 63.989998
takeProfit: 65.065937
stopLoss: 63.272705
Dentro do diretório de instantâneos, haverá páginas HTML mostrando os gráficos do estoque comprado que baseia sua decisão em
Eles serão nomeados com o tempo em que foi comprado e as ações dadas
Como em todas as coisas, tanto o bom senso quanto dentro da licença GPL-3.0 acordada com o uso deste programa, não há garantia, garantia ou responsabilidade acordada ou expressa ao usar este programa.
Embora este programa seja feito de boa fé para ser lucrativo e livre de insetos - não há promessa de lucros. No entanto, há risco. Risco de perder dinheiro. Risco de chamada margem. Risco de software de buggy.
Este programa foi desenvolvido para negociar qualquer estoque que atenda a certos indicadores técnicos matemáticos. Não há consultoria envolvida e vê as ações como uma coleção de números potencialmente falhos e suas decisões como uma série de equações potencialmente falhas. É importante entender que há um risco significativo em
Este programa também usa a margem por padrão - se não estiver familiarizado com esse risco - ou se não quiser esse risco adicional, certifique -se de definir "margem -multiplieiro" na configuração para 1,00 ou menos
Como regra geral: não negocie com dinheiro que você não pode perder. Como uma recomendação - leia esse código para entender o que faz e como funciona.
Se você vir algo que pode ser melhorado ou guardado com segurança - abra um incidente ou um PR e vamos consertá -lo!