예제 #1
0
from avera.feature_generators.W2VCompositeGenerator import W2VCompositeGenerator
from avera.feature_generators.W2VScaleGenerator import W2VScaleGenerator
from avera.feature_generators.W2VRelativeDiffGenerator import W2VRelativeDiffGenerator
from avera.datamanagement.SymbolDataManager import SymbolDataManager
from avera.datamanagement.SymbolDataUpdater import SymbolDataUpdater
from avera.terminal.MT5Terminal import MT5Terminal
from avera.mods.HeikenAshiMod import HeikenAshiMod

symbol = "EURUSD_i"
timeframe = "M15"
hkFeatList = ["open", "close", "low", "high"]
volumeFeatList = ["tick_volume"]

#terminal = MT5Terminal()
#dataUpdater = SymbolDataUpdater("../../data/raw/")
dataManager = SymbolDataManager("../../data/raw/")

#dataUpdater.fullUpdate(terminal, symbol, timeframe, startDate="2015-01-01 00:00:00")
df = SymbolDataManager().getData(symbol, timeframe)
df = df.tail(10000)

########
#df = df.tail(10000)
#print("applying heiken ashi mod...")
#enMod = HeikenAshiMod()
#df = enMod.modHistory(df)
#enMod.checkQuality(df)
########
"""priceDiffGenerator = W2VRelativeDiffGenerator(featureList=hkFeatList, nDiffs=1, nPoints = 21, flatStack = False, fitOnStep = False,
                 nIntervals = 10000, w2vSize=32, window=3, iter=100, min_count=0, sample=0.0, sg=0)
volumeDiffGenerator = W2VRelativeDiffGenerator(featureList=volumeFeatList, nDiffs=1, nPoints = 21, flatStack = False, fitOnStep = False,
예제 #2
0
    sellerAgent = DQNAgent(testEnv.observation_space["seller"], testEnv.action_space["seller"].n)
    agent = CompositeAgent(openerAgent, buyerAgent, sellerAgent)
    agent  = agent.load_agent("./", "best_composite")
    print("start using agent")
    dealsStatistics = agent.use_agent(testEnv)
    return dealsStatistics
#########################################################################################################
timeframe = "M15"
symbolList = ["GBPCHF_i", "NZDJPY_i", "AUDCAD_i", "EURUSD_i"]
priceFeatList = ["open", "close", "low", "high"]
volumeFeatList = ["tick_volume"]
spreadDict = { "GBPCHF_i": 83, "NZDJPY_i": 37, "AUDCAD_i": 83, "EURUSD_i": 18 }
spreadCoefDict = { "GBPCHF_i": 0.00001, "NZDJPY_i": 0.001, "AUDCAD_i": 0.00001, "EURUSD_i": 0.00001 }
terminal = MT5Terminal()
dataUpdater = SymbolDataUpdater("../../data/raw/")
dataManager = SymbolDataManager("../../data/raw/")
###########################################################################################################

for symbol in symbolList:
    dataUpdater.fullUpdate(terminal, symbol, timeframe, startDate="2016-01-01 00:00:00")
    df = SymbolDataManager("../../data/raw/").getData(symbol, timeframe)
    createGenerators(df, priceFeatList, volumeFeatList)

    trainTestSets = getTrainTestSets(df, nExperiments=10, mainPackSize=2044, trainSize=0.5)
    trainDealsStatistics = []
    testDealsStatistics = []
    nStep = 0
    for trainX, testX in trainTestSets:
        nStep += 1
        print("Experiment №{}".format(nStep))
        trainAgent(trainX.copy(), spread=spreadDict[symbol], spreadCoef=spreadCoefDict[symbol])
예제 #3
0
    "EURUSD_i": 18,
    "AUDUSD_i": 18,
    "GBPUSD_i": 18,
    "USDCHF_i": 18,
    "USDCAD_i": 18
}
spreadCoefDict = {
    "EURUSD_i": 0.00001,
    "AUDUSD_i": 0.00001,
    "GBPUSD_i": 0.00001,
    "USDCHF_i": 0.00001,
    "USDCAD_i": 0.00001
}
terminal = MT5Terminal()
dataUpdater = SymbolDataUpdater()
dataManager = SymbolDataManager()
###########################################################################################################

for symbol in symbolList:
    dataUpdater.fullUpdate(terminal,
                           symbol,
                           timeframe,
                           startDate="2015-01-01 00:00:00")

saveEpInfo = []
for symbol in symbolList:
    df = SymbolDataManager().getData(symbol, timeframe)
    ########
    historyMod = VSASpread()
    df = historyMod.modHistory(df)
    historyMod = HeikenAshiMod()
예제 #4
0
import matplotlib.pyplot as plt
from datetime import datetime
import numpy as np
from sklearn.linear_model import HuberRegressor

startTime = datetime.now()
print("start time: {}".format(startTime))

symbol = "EURUSD_i"
timeframe = "H1"
hkFeatList = [
    "open", "close", "low", "high", "vsa_spread", "tick_volume", "hkopen",
    "hkclose", "enopen", "enclose", "enlow", "enhigh"
]

dataManager = SymbolDataManager()
df = SymbolDataManager().getData(symbol, timeframe)
df = df.tail(10000)

########
historyMod = HeikenAshiMod()
modDf = historyMod.modHistory(df)
########

nIntervals = 100
nLevels = 8
featVals = modDf["hkclose"].values
minVal = np.min(featVals)
maxVal = np.max(featVals)
step = (maxVal - minVal) / nIntervals
borders = []
예제 #5
0
    "EURUSD_i": 18,
    "AUDUSD_i": 18,
    "GBPUSD_i": 18,
    "USDCHF_i": 18,
    "USDCAD_i": 18
}
spreadCoefDict = {
    "EURUSD_i": 0.00001,
    "AUDUSD_i": 0.00001,
    "GBPUSD_i": 0.00001,
    "USDCHF_i": 0.00001,
    "USDCAD_i": 0.00001
}
#terminal = MT5Terminal()
dataUpdater = SymbolDataUpdater()
dataManager = SymbolDataManager()
################################################


def getCumulativeReward(dealsStatistics):
    sumRew = 0
    cumulativeReward = []
    for i in range(len(dealsStatistics)):
        sumRew += dealsStatistics[i]
        cumulativeReward.append(sumRew)
    return cumulativeReward


def convertToLinearSet(dealsStatistics):
    dealsStatistics = np.reshape(dealsStatistics, (-1, ))
    X = np.array([x for x in range(len(dealsStatistics))])
예제 #6
0
from avera.feature_generators.FeatureDiff import FeatureDiff
from avera.feature_generators.FeatureScaler import FeatureScaler
from avera.datamanagement.SymbolDataManager import SymbolDataManager
from matplotlib import pyplot as plt

df = SymbolDataManager().getData("EURUSD_i", "H1")
df = FeatureDiff().extractFeature(df, featList=["open"], nDiffs=1)
df = FeatureScaler().extractFeature(df, featList=["open"])
print(df)

print(df["open"].mean())
print(df["open"].std())

y = df["open"].values
x = [x for x in range(y.shape[0])]
plt.plot(x, y)
plt.show()
예제 #7
0
from avera.feature_generators.W2VScaleGenerator import W2VScaleGenerator
from avera.feature_generators.W2VDiffGenerator import W2VDiffGenerator
from avera.datamanagement.SymbolDataManager import SymbolDataManager
from avera.datamanagement.SymbolDataUpdater import SymbolDataUpdater
from avera.terminal.MT5Terminal import MT5Terminal
from avera.mods.HeikenAshiMod import HeikenAshiMod


symbol = "EURUSD_i"
timeframe = "M15"
hkFeatList = ["hkopen", "hkclose", "low", "high"]
volumeFeatList = ["tick_volume"]

#terminal = MT5Terminal()
#dataUpdater = SymbolDataUpdater()
dataManager = SymbolDataManager()

#dataUpdater.fullUpdate(terminal, symbol, timeframe, startDate="2015-01-01 00:00:00")
df = SymbolDataManager().getData(symbol, timeframe)

########
#df = df.tail(10000)
print("applying heiken ashi mod...")
enMod = HeikenAshiMod()
df = enMod.modHistory(df)
#enMod.checkQuality(df)
########


priceDiffGenerator = W2VDiffGenerator(featureList=hkFeatList, nDiffs=1, nPoints = 21, flatStack = False, fitOnStep = False,
                 nIntervals = 10000, w2vSize=32, window=3, iter=100, min_count=0, sample=0.0, sg=0)
예제 #8
0
from avera.datamanagement.SymbolDataManager import SymbolDataManager
from avera.envs.SimpleEnv import SimpleEnv

df = SymbolDataManager().getData("TEST", "H1")
#featureScaler = FeatureScaler()
#df = featureScaler.extractFeature(df)

simpleEnv = SimpleEnv(df)
obs = simpleEnv.reset()
print(str(obs[0]) + " | " + str(obs[1]))

#check buy
obs, reward, done, info = simpleEnv.step(0)
print(str(obs[0]) + " | " + str(obs[1]))
print(reward)

#check hold
obs, reward, done, info = simpleEnv.step(1)
print(str(obs[0]) + " | " + str(obs[1]))
print(reward)

#check sell
obs, reward, done, info = simpleEnv.step(2)
print(str(obs[0]) + " | " + str(obs[1]))
print(reward)
예제 #9
0
from avera.feature_generators.W2VScaleGenerator import W2VScaleGenerator
from avera.feature_generators.W2VDiffGenerator import W2VDiffGenerator
from avera.datamanagement.SymbolDataManager import SymbolDataManager
from avera.mods.VSASpread import VSASpread
from datetime import datetime
import matplotlib.pyplot as plt

symbol = "EURUSD_i"
timeframe = "H1"
priceFeatList = ["open", "close", "low", "high"]
#energyFeatList = ["vsa_spread"]
volumeFeatList = ["tick_volume"]

#terminal = MT5Terminal()
#dataUpdater = SymbolDataUpdater("../../data/raw/")
dataManager = SymbolDataManager("../../data/raw/")

#dataUpdater.fullUpdate(terminal, symbol, timeframe, startDate="2015-01-01 00:00:00")
df = SymbolDataManager("../../data/raw/").getData(symbol, timeframe)

priceDiffGenerator = W2VDiffGenerator(featureList=priceFeatList,
                                      nDiffs=1,
                                      nPoints=21,
                                      flatStack=False,
                                      fitOnStep=False,
                                      nIntervals=10000,
                                      w2vSize=32,
                                      window=3,
                                      iter=100,
                                      min_count=0,
                                      sample=0.0,
예제 #10
0
from avera.agents.CompositeAgent import CompositeAgent
from avera.envs.CompositeEnv import CompositeEnv
from avera.envs.RealEnv import RealEnv
from avera.terminal.MT5Terminal import MT5Terminal
#from avera.feature_generators.FeatureScaler import FeatureScaler
from avera.feature_generators.ScalerGenerator import ScalerGenerator
from avera.datamanagement.SymbolDataManager import SymbolDataManager
from avera.datamanagement.SymbolDataUpdater import SymbolDataUpdater

symbol = "TEST"
timeframe = "H1"
obsFeatList = ["open", "close"]

#terminal = MT5Terminal()
#dataUpdater = SymbolDataUpdater()
dataManager = SymbolDataManager()

#dataUpdater.fullUpdate(terminal, symbol, timeframe, startDate="2015-01-01 00:00:00")
df = SymbolDataManager().getData(symbol, timeframe, normalizeNames=True, normalizeDateTime=True)
openerFeatureFactory = ScalerGenerator(featureList=obsFeatList, nPoints=10, flatStack=True, fitOnStep=False)
buyerFeatureFactory = ScalerGenerator(featureList=obsFeatList, nPoints=10, flatStack=True, fitOnStep=False)
sellerFatureFactory = ScalerGenerator(featureList=obsFeatList, nPoints=10, flatStack=True, fitOnStep=False)
openerFeatureFactory.globalFit(df[:int(len(df)*0.9)])
buyerFeatureFactory.globalFit(df[:int(len(df)*0.9)])
sellerFatureFactory.globalFit(df[:int(len(df)*0.9)])

print("data updated")
print("start train")
################################
# train agent
################################
예제 #11
0
from avera.terminal.MT5Terminal import MT5Terminal
from avera.datamanagement.SymbolDataUpdater import SymbolDataUpdater
from avera.datamanagement.SymbolDataManager import SymbolDataManager
from datetime import datetime, timedelta
from dateutil import parser
import time

terminal = MT5Terminal()
symbolUpdater = SymbolDataUpdater()
symbolManager = SymbolDataManager()

symbol = "EURUSD_i"
timeframe = "M5"

symbolUpdater.partialUpdate(terminal, symbol, timeframe)
rawData = symbolManager.getData(symbol, timeframe)
lastRow = rawData.tail(1)
lastDateTime = parser.parse(lastRow["datetime"].values[0])
while (True):
    symbolUpdater.partialUpdate(terminal, symbol, timeframe)
    rawData = symbolManager.getData(symbol, timeframe)
    lastRow = rawData.tail(1)
    freshDateTime = parser.parse(lastRow["datetime"].values[0])
    if freshDateTime != lastDateTime:
        lastDateTime = freshDateTime
        break
    else:
        time.sleep(10)
# place order (buy/sell by market)
orderType = "sell"
lotSize = 0.01
예제 #12
0
from avera.feature_generators.ScalerGenerator import ScalerGenerator
from avera.feature_generators.FeatureScaler import FeatureScaler
from avera.datamanagement.SymbolDataManager import SymbolDataManager
from matplotlib import pyplot as plt
from dateutil import parser

featureList = ["open", "close"]
df = SymbolDataManager().getData("TEST",
                                 "H1",
                                 normalizeDateTime=True,
                                 normalizeNames=True)
df.set_index("datetime", drop=True, inplace=True)
featureScaler = ScalerGenerator(featureList=featureList,
                                nPoints=4,
                                flatStack=True)
featureScaler = featureScaler.globalFit(df)

print(df.tail(1))
lastDt = list(df.tail(1).index)[0]
print(lastDt)
print(df.loc[lastDt])
print(featureScaler.getFeatByDatetime(lastDt, df))

featureScaler = FeatureScaler()
df = featureScaler.extractFeature(df, featureList)
print(df.loc[lastDt])