forked from Bitjieff/cryptochronolonic
-
Notifications
You must be signed in to change notification settings - Fork 0
/
crypto_evolution.py
109 lines (90 loc) · 2.85 KB
/
crypto_evolution.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import hist_service as hs
import datetime, time
import pandas as pd
import numpy as np
class CryptoFolio:
#assume we
fees = .002
buys = 0
sells = 0
target_amount = 0.1
ledger = {}
start = 0
def __init__(self, start_amount, coins):
self.ledger['BTC'] = start_amount
for ix in coins:
self.ledger[coins[ix]] = 0.0
self.start = start_amount
self.hs = hs.HistWorker()
def buy_coin(self, c_name, price):
amount = self.start * self.target_amount
if(amount > self.ledger['BTC']):
return
else:
coin_amount = amount/(price* 1.002)
the_fee = self.fees * amount
self.ledger['BTC'] -= (amount + the_fee)
self.ledger[c_name] += coin_amount
self.buys += 1
return
def sell_coin(self, c_name, price):
price = price -(price*.002)
if self.ledger[c_name] != 0.0:
amount = self.ledger[c_name]
self.ledger['BTC'] += ((amount*price) - ((amount * price)*self.fees))
self.ledger[c_name] = 0.0
self.sells += 1
return
else:
return
def get_total_btc_value(self, e_prices):
for c in self.ledger.keys():
if self.ledger[c] != 0.0 and c != "BTC":
current_price = e_prices[c]
self.sell_coin(c, current_price)
return self.ledger['BTC'], self.buys, self.sells
def get_total_btc_value_no_sell(self, e_prices):
btcval = self.ledger['BTC']
for c in self.ledger.keys():
if self.ledger[c] != 0.0 and c != "BTC":
current_price = e_prices[c]
btc_amt = current_price * self.ledger[c]
btcval += btc_amt
print(c, " ", btc_amt)
return btcval, self.ledger['BTC']
def evaluate_output(self, out, coin, price):
if (out == 1.0):
self.buy_coin(coin, price)
elif(out==.5):
return
else:
self.sell_coin(price,coin)
class EvoSim:
count = 0
starting_btc = 1000
bestNets = []
lastGen = []
numNets = 0
coins = []
market = {}
nextGens = []
def __init__(self, numberOfNets, coins, gens):
self.count += 1
self.numNets = numberOfNets
self.coins = coins
self.lastGen = gens
def read_hist(self, coin):
try:
df = pd.DataFrame.read_csv(coin+'_hist.txt')
self.market[coin] = df
return
except:
print("no history file found")
return
def read_all_hists(self):
for c in self.coins:
self.read_hist(c)
return
def feedNet(self, nextGens):
for ix in range(0, len(nextGens)):
print(ix)