Error when the Oanda token or account ID is not set

This commit is contained in:
Luke Wilson 2024-10-31 20:30:22 -05:00
parent 5fc4a6e2d6
commit 5ee2df12b5
4 changed files with 28 additions and 5 deletions

View File

@ -3,6 +3,7 @@
package main package main
import ( import (
"fmt"
"os" "os"
"time" "time"
@ -86,7 +87,12 @@ func (s *IchimokuStrategy) Next(t *auto.Trader) {
} }
func main() { func main() {
broker := oanda.NewOandaBroker(os.Getenv("OANDA_TOKEN"), os.Getenv("OANDA_ACCOUNT_ID"), true) broker, err := oanda.NewOandaBroker(os.Getenv("OANDA_TOKEN"), os.Getenv("OANDA_ACCOUNT_ID"), true)
if err != nil {
fmt.Println("error:", err)
return
}
auto.Backtest(auto.NewTrader(auto.TraderConfig{ auto.Backtest(auto.NewTrader(auto.TraderConfig{
Broker: auto.NewTestBroker(broker, nil, 10000, 50, 0.0002, 0), Broker: auto.NewTestBroker(broker, nil, 10000, 50, 0.0002, 0),
Strategy: &IchimokuStrategy{convPeriod: 9, basePeriod: 26, leadingPeriods: 52}, Strategy: &IchimokuStrategy{convPeriod: 9, basePeriod: 26, leadingPeriods: 52},

View File

@ -3,13 +3,19 @@
package main package main
import ( import (
"fmt"
"os" "os"
"github.com/fivemoreminix/autotrader/oanda" "github.com/fivemoreminix/autotrader/oanda"
) )
func main() { func main() {
broker := oanda.NewOandaBroker(os.Getenv("OANDA_TOKEN"), os.Getenv("OANDA_ACCOUNT_ID"), true) broker, err := oanda.NewOandaBroker(os.Getenv("OANDA_TOKEN"), os.Getenv("OANDA_ACCOUNT_ID"), true)
if err != nil {
fmt.Println("error:", err)
return
}
candles, err := broker.Candles("EUR_USD", "D", 100) candles, err := broker.Candles("EUR_USD", "D", 100)
if err != nil { if err != nil {
panic(err) panic(err)

View File

@ -3,6 +3,7 @@
package main package main
import ( import (
"fmt"
"os" "os"
auto "github.com/fivemoreminix/autotrader" auto "github.com/fivemoreminix/autotrader"
@ -33,7 +34,11 @@ func main() {
panic(err) panic(err)
} }
*/ */
broker := oanda.NewOandaBroker(os.Getenv("OANDA_TOKEN"), os.Getenv("OANDA_ACCOUNT_ID"), true) broker, err := oanda.NewOandaBroker(os.Getenv("OANDA_TOKEN"), os.Getenv("OANDA_ACCOUNT_ID"), true)
if err != nil {
fmt.Println("error:", err)
return
}
auto.Backtest(auto.NewTrader(auto.TraderConfig{ auto.Backtest(auto.NewTrader(auto.TraderConfig{
Broker: auto.NewTestBroker(broker /* data, */, nil, 10000, 50, 0.0002, 0), Broker: auto.NewTestBroker(broker /* data, */, nil, 10000, 50, 0.0002, 0),

View File

@ -16,6 +16,8 @@ const (
TimeLayout = time.RFC3339 TimeLayout = time.RFC3339
) )
var ErrInvalidCred = fmt.Errorf("invalid credentials, token or account ID is invalid")
var _ auto.Broker = (*OandaBroker)(nil) // Compile-time interface check. var _ auto.Broker = (*OandaBroker)(nil) // Compile-time interface check.
type OandaBroker struct { type OandaBroker struct {
@ -26,7 +28,11 @@ type OandaBroker struct {
baseUrl string // Either oandaLiveURL or oandaPracticeURL. baseUrl string // Either oandaLiveURL or oandaPracticeURL.
} }
func NewOandaBroker(token, accountID string, practice bool) *OandaBroker { func NewOandaBroker(token, accountID string, practice bool) (*OandaBroker, error) {
if token == "" || accountID == "" {
return nil, ErrInvalidCred
}
var baseUrl string var baseUrl string
if practice { if practice {
baseUrl = oandaPracticeURL baseUrl = oandaPracticeURL
@ -39,7 +45,7 @@ func NewOandaBroker(token, accountID string, practice bool) *OandaBroker {
token: token, token: token,
accountID: accountID, accountID: accountID,
baseUrl: baseUrl, baseUrl: baseUrl,
} }, nil
} }
// Price returns the ask price if wantToBuy is true and the bid price if wantToBuy is false. // Price returns the ask price if wantToBuy is true and the bid price if wantToBuy is false.