-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
55 lines (42 loc) · 1.24 KB
/
main.py
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())