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
import (
"fmt"
"os"
"time"
@ -86,7 +87,12 @@ func (s *IchimokuStrategy) Next(t *auto.Trader) {
}
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{
Broker: auto.NewTestBroker(broker, nil, 10000, 50, 0.0002, 0),
Strategy: &IchimokuStrategy{convPeriod: 9, basePeriod: 26, leadingPeriods: 52},

View File

@ -3,13 +3,19 @@
package main
import (
"fmt"
"os"
"github.com/fivemoreminix/autotrader/oanda"
)
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)
if err != nil {
panic(err)

View File

@ -3,6 +3,7 @@
package main
import (
"fmt"
"os"
auto "github.com/fivemoreminix/autotrader"
@ -33,7 +34,11 @@ func main() {
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{
Broker: auto.NewTestBroker(broker /* data, */, nil, 10000, 50, 0.0002, 0),

View File

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