-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlumibot_swing_high.py
More file actions
55 lines (38 loc) · 1.52 KB
/
Copy pathlumibot_swing_high.py
File metadata and controls
55 lines (38 loc) · 1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from config import ALPACA_CONFIG
from lumibot.brokers import Alpaca
from lumibot.strategies import Strategy
from lumibot.traders import Trader
class SwingHigh(Strategy):
data = []
order_number = 0
def initialize(self):
self.sleeptime = "10S"
def on_trading_iteration(self):
symbol ="SPY"
entry_price = self.get_last_price(symbol)
self.log_message(f"Position: {self.get_position(symbol)}")
self.data.append(self.get_last_price(symbol))
if len(self.data) > 3:
temp = self.data[-3:]
if temp[-1] > temp[1] > temp[0]:
self.log_message(f"Last 3 prints: {temp}")
order = self.create_order(symbol, quantity = 10, side = "buy")
self.submit_order(order)
self.order_number += 1
if self.order_number == 1:
self.log_message(f"Entry price: {temp[-1]}")
entry_price = temp[-1] # filled price
if self.get_position(symbol) and self.data[-1] < entry_price * .995:
self.sell_all()
self.order_number = 0
elif self.get_position(symbol) and self.data[-1] >= entry_price * 1.015:
self.sell_all()
self.order_number = 0
def before_market_closes(self):
self.sell_all()
if __name__ == "__main__":
broker = Alpaca(ALPACA_CONFIG)
strategy = SwingHigh(broker=broker)
trader = Trader()
trader.add_strategy(strategy)
trader.run_all()