Il s'agit d'un scanner d'actions de trading de jours et d'un trader robo-trader qui recherche toutes les actions américaines et tente de trouver et d'acheter des actions avec un bon ratio risque-récompense et qui sont au début d'une tendance à la hausse, puis les vendent comme une tendance à la baisse, commence, ou il atteint son objectif de profit, son stoploss ou son temps mort.
Dans la config.yml, ajoutez votre clé alpaca, secrètement, ces valeurs peuvent être stockées comme variables d'environnement à
Des configurations supplémentaires peuvent être trouvées à l'intérieur de config / config.yml pour contrôler le risque, la récompense, et ainsi de suite, elles peuvent être remplacées par des variables d'environnement avec le préfixe BUNNY_
Les valeurs de configuration déjà fournies ont été testées pour être rentables dans les comptes de trading de papier.
Si vous souhaitez modifier ces valeurs pour répondre à vos propres préférences, veuillez vous assurer de les tester dans un compte de trading papier.
Des choses drôles peuvent toujours se produire lorsque vous jouez avec des valeurs, alors testez pour vous assurer de ne pas faire exploser votre compte!
Pré-requis:
clone ou télécharger le package - et run go run bunny.go
Alpaca est une API d'abord, 0 courtier de commission qui est utilisé par ce robo-trader pour interagir avec les marchés boursiers
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 ()
}
Pendant que le programme est en cours d'exécution, la console enregistrera tous les métiers, y compris le symbole, le prix, le profit, la perte d'arrêt, la limite d'arrêt et la qté
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
À l'intérieur du répertoire des instantanés, il y aura des pages HTML montrant les graphiques du stock achetés sur lesquels il a basé sa décision sur
Ils seront nommés avec le temps qu'il a été acheté et le stock donné
Comme pour toutes choses, le bon sens et dans la licence GPL-3.0 ont convenu d'utiliser ce programme, il n'y a aucune garantie, garantie ou responsabilité convenu ou exprimé lors de l'utilisation de ce programme.
Bien que ce programme soit fait de bonne foi pour être rentable et sans bug - il n'y a aucune promesse de bénéfices. Il y a cependant un risque. Risque de perdre de l'argent. Risque de marge d'appel. Risque de logiciel de buggy.
Ce programme est conçu pour le jour de tout stock qui répond à certains indicateurs techniques mathématiques. Il n'y a aucun avis impliqué, et il considère les actions comme une collection de nombres potentiellement imparfaits et ses décisions comme une série d'équations potentiellement imparfaites. Il est important de comprendre qu'il existe un risque important dans
Ce programme utilise également la marge par défaut - si ce n'est pas familier avec ce risque - ou si vous ne voulez pas ce risque supplémentaire, veuillez vous assurer de définir le "marge-multiplicateur" dans la configuration à 1,00 ou moins
En règle générale: ne pas échanger avec de l'argent, vous ne pouvez pas perdre. En tant que recommandation - lisez ce code vous-même pour comprendre ce qu'il fait et comment il fonctionne.
Si vous voyez quelque chose qui pourrait être amélioré ou en toute sécurité contre - veuillez ouvrir un incident ou un RP et réparer!