-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
55 lines (42 loc) · 1.24 KB
/
main.py
File metadata and controls
55 lines (42 loc) · 1.24 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
import asyncio
import json
import os
from dotenv import load_dotenv
from solana.keypair import Keypair
from solana.rpc.commitment import Confirmed, Finalized, Processed
from solana.rpc.types import TxOpts
from zo import Zo
from src import Arbitragoor
from src import FtxClearingHouse
from src import ZoClearingHouse
async def main():
load_dotenv()
priv_key = json.loads(os.environ["PRIVATE_KEY"])
key = Keypair.from_secret_key(bytes(priv_key))
zo_client = await Zo.new(
cluster=os.environ["CLUSTER"],
payer=key,
url=os.environ["RPC_URL"],
tx_opts=TxOpts(
max_retries=None,
preflight_commitment=Processed,
skip_confirmation=False,
skip_preflight=False,
),
)
zo_house = ZoClearingHouse(zo_client)
await zo_house.init_data()
ftx_house = FtxClearingHouse(
os.environ["API_KEY"], os.environ["API_SECRET"], os.environ["SUBACCOUNT"]
)
arber = Arbitragoor(
zo_house,
ftx_house,
os.environ["MARKET"],
float(os.environ["MIN_PROFIT"]),
float(os.environ["ORDER_SIZE"]),
float(os.environ["MAX_NOTIONAL"]),
)
await arber.run()
if __name__ == "__main__":
asyncio.run(main())