bugfixy highlight + batchid v dttbls
This commit is contained in:
@ -51,7 +51,7 @@ Hlavní loop:
|
||||
|
||||
"""
|
||||
def next(data, state: StrategyState):
|
||||
print(10*"*","NEXT START",10*"*")
|
||||
##print(10*"*","NEXT START",10*"*")
|
||||
# important vars state.avgp, state.positions, state.vars, data
|
||||
|
||||
#indicators moved to call_next in upper class
|
||||
|
||||
@ -48,7 +48,8 @@ from joblib import load
|
||||
#9. jiny pristup by byl ucit model na konkretnich chunkach, ktere chci aby mi identifikoval. Např. určité úseky. Vymyslet. Buď nyni jako test intervaly, ale v budoucnu to treba jen nejak oznacit a poslat k nauceni. Pripadne pak udelat nejaky vycuc.
|
||||
#10. mozna správným výběrem targetu, můžu taky naučit jen určité věci. Specializace. Stačí když se jednou dvakrát denně aktivuje.
|
||||
# 11. udelat si go IN model, ktery pomuze strategii generovat vstup - staci jen aby mel trochu lepsi edge nez conditiony, o zbytek se postara logika strategie
|
||||
# 12. model pro neagregované nebo jen filtroné či velmi lehce agregované trady?
|
||||
# 12. model pro neagregované nebo jen filtroné či velmi lehce agregované trady? - tickprice
|
||||
# 13. jako featury pouzit Fourierovo transformaci, na sekundovem baru nebo tickprice
|
||||
|
||||
#DULEZITE
|
||||
# soustredit se v modelech na predikci nasledujici hodnoty, ideálně nějaký vektor ukazující směr (např. 0 - 1, kde nula nebude růst, 1 - bude růst strmě)
|
||||
|
||||
@ -177,7 +177,7 @@
|
||||
<label data-bs-toggle="collapse" data-bs-target="#runner-table-inner">
|
||||
<h4>Running Strategies</h4>
|
||||
</label>
|
||||
<div id="runner-table-inner" class="collapse show" style="width:70%">
|
||||
<div id="runner-table-inner" class="collapse show" style="width:58%">
|
||||
<div id="controls">
|
||||
<label>API-KEY: <input type="password" id="api-key" autocomplete="off"/></label>
|
||||
<button onclick="store_api_key(event)" id="bt-store" class="btn btn-outline-success btn-sm">Store</button>
|
||||
@ -236,7 +236,7 @@
|
||||
<label data-bs-toggle="collapse" data-bs-target="#archive-table-inner">
|
||||
<h4>Past Runs</h4>
|
||||
</label>
|
||||
<div id="archive-table-inner" class="collapse show" style="width:70%">
|
||||
<div id="archive-table-inner" class="collapse show" style="width:58%">
|
||||
<!-- <div id="archive-chart">
|
||||
<div id="chartArchive" style="position: relative;"></div>
|
||||
<div class="legend" id="legendArchive"></div>
|
||||
@ -272,8 +272,9 @@
|
||||
<th>profit</th>
|
||||
<th>trade</th>
|
||||
<th>pos</th>
|
||||
<th>pos_avgp</th>
|
||||
<th>avgp</th>
|
||||
<th>metrics</th>
|
||||
<th>batchid</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
@ -345,7 +346,7 @@
|
||||
<label data-bs-toggle="collapse" data-bs-target="#stratin-table-inner">
|
||||
<h4>Strategies</h4>
|
||||
</label>
|
||||
<div id="stratin-table-inner" class="collapse show" style="width:70%">
|
||||
<div id="stratin-table-inner" class="collapse show" style="width:58%">
|
||||
<div id="controlsStratin">
|
||||
<button id="button_add" class="btn btn-outline-success btn-sm">Add</button>
|
||||
<button id="button_add_json" class="btn btn-outline-success btn-sm">Add JSON</button>
|
||||
|
||||
@ -969,14 +969,14 @@ function display_log(iterLogList, timestamp) {
|
||||
hdr = logLine.time + " " + logLine.event + ' - '+ (logLine.message == undefined ? "" : logLine.message)
|
||||
hdr = Prism.highlight(hdr, Prism.languages.log, 'log');
|
||||
|
||||
row = '<div data-bs-toggle="collapse" class="'+ highlighted + ' shj-lang-log" onclick="set_timestamp(' + logLine.time + ')" data-bs-target="#rec'+logcnt+'">'
|
||||
row = '<div data-bs-toggle="collapse" class="'+ highlighted + '" onclick="set_timestamp(' + logLine.time + ')" data-bs-target="#rec'+logcnt+'">'
|
||||
+hdr + '</div>'
|
||||
str_row = JSON.stringify(logLine.details, null, 2)
|
||||
//row_detail = '<div id="rec'+logcnt+'" data-toggle="collapse" data-target="#rec'+logcnt+'"class="collapse pidi"><pre>' + str_row + '</pre></div>'
|
||||
|
||||
const html = Prism.highlight(str_row, Prism.languages.json, 'json');
|
||||
//console.log("tady", html)
|
||||
row_detail = '<div id="rec'+logcnt+'" class="collapse pidi shj-lang-log"><pre><code class="language-log">' + html + '</code></pre></div>'
|
||||
row_detail = '<div id="rec'+logcnt+'" class="collapse pidi"><pre><code class="language-log">' + html + '</code></pre></div>'
|
||||
|
||||
var lines = document.getElementById('lines')
|
||||
var line = document.createElement('div')
|
||||
|
||||
@ -614,12 +614,14 @@ var archiveRecords =
|
||||
{data: 'end_positions', visible: true},
|
||||
{data: 'end_positions_avgp', visible: true},
|
||||
{data: 'metrics', visible: true},
|
||||
{data: 'batch_id', visible: true},
|
||||
],
|
||||
paging: false,
|
||||
processing: false,
|
||||
columnDefs: [{
|
||||
targets: [0,1],
|
||||
targets: [0,1,17],
|
||||
render: function ( data, type, row ) {
|
||||
if (!data) return data
|
||||
return '<div class="tdnowrap" title="'+data+'">'+data+'</i>'
|
||||
},
|
||||
},
|
||||
@ -695,11 +697,12 @@ var archiveRecords =
|
||||
{
|
||||
targets: [16],
|
||||
render: function ( data, type, row ) {
|
||||
//console.log("metrics", data)
|
||||
try {
|
||||
data = JSON.parse(data)
|
||||
}
|
||||
catch (error) {
|
||||
|
||||
//console.log(error)
|
||||
}
|
||||
var res = JSON.stringify(data)
|
||||
var unquoted = res.replace(/"([^"]+)":/g, '$1:')
|
||||
|
||||
13951
v2realbot/static/js/libs/bootstrap.min.css
vendored
13951
v2realbot/static/js/libs/bootstrap.min.css
vendored
File diff suppressed because one or more lines are too long
@ -24,7 +24,7 @@ Prism.languages.log = {
|
||||
|
||||
'level': [
|
||||
{
|
||||
pattern: /\b(?:ALERT|CRIT|CRITICAL|EMERG|EMERGENCY|ERR|ERROR|FAILURE|FATAL|SEVERE|-----)\b/,
|
||||
pattern: /\b(?:ALERT|CRIT|CRITICAL|EMERG|EMERGENCY|ERR|ERROR|FAILURE|FATAL|SEVERE|CONF|-----)\b/,
|
||||
alias: ['error', 'important']
|
||||
},
|
||||
{
|
||||
@ -36,7 +36,7 @@ Prism.languages.log = {
|
||||
alias: ['info', 'keyword']
|
||||
},
|
||||
{
|
||||
pattern: /\b(?:DBG|DEBUG|FINE|REVERSE|ADD|EXITADD|SIGNAL)\b/,
|
||||
pattern: /\b(?:DBG|DEBUG|FINE|REVERSE|ADD|EXITADD|SIGNAL|PRECOND)\b/,
|
||||
alias: ['debug', 'keyword']
|
||||
},
|
||||
{
|
||||
|
||||
@ -51,7 +51,7 @@ pre[class*=language-] {
|
||||
}
|
||||
|
||||
.token.boolean {
|
||||
color: #c39375;
|
||||
color: #7c7630;
|
||||
}
|
||||
|
||||
.token.function {
|
||||
@ -63,15 +63,21 @@ pre[class*=language-] {
|
||||
}
|
||||
|
||||
.token.class-name,.token.constant,.token.property,.token.symbol {
|
||||
color: #f29599;
|
||||
color: #ae4b86;
|
||||
}
|
||||
|
||||
.token.atrule,.token.builtin,.token.important,.token.selector {
|
||||
.token.atrule,.token.builtin,.token.selector {
|
||||
color: #cc99cd
|
||||
}
|
||||
|
||||
.token.important{
|
||||
color: #be6db7
|
||||
/* color: #82b3b0 */
|
||||
}
|
||||
|
||||
.token.keyword{
|
||||
color: #9d8c98
|
||||
color: #ca7474
|
||||
/* color: #9d8c98 */
|
||||
}
|
||||
|
||||
.token.attr-value,.token.char,.token.regex,.token.string,.token.variable {
|
||||
|
||||
@ -61,6 +61,7 @@ function initialize_statusheader() {
|
||||
|
||||
var rows = 2;
|
||||
var columns = 4;
|
||||
console.log("initialiting statusheader")
|
||||
console.log(JSON.stringify(statusBarConfig))
|
||||
|
||||
// Create the grid table
|
||||
@ -262,7 +263,8 @@ function initialize_chart() {
|
||||
layout: {
|
||||
background: {
|
||||
type: 'solid',
|
||||
color: '#2a2e39',
|
||||
// color: '#2a2e39',
|
||||
color: '#151824'
|
||||
},
|
||||
textColor: '#d1d4dc',
|
||||
},
|
||||
|
||||
@ -11,7 +11,8 @@
|
||||
color-scheme: dark;
|
||||
--bs-body-color: #787b86;
|
||||
--bs-body-color-rgb: 173,181,189;
|
||||
--bs-body-bg: #2a2e39;
|
||||
/* --bs-body-bg: #2a2e39; */
|
||||
--bs-body-bg: #121722;
|
||||
--bs-body-bg-rgb: 33,37,41;
|
||||
--bs-emphasis-color: #adb5bd;
|
||||
--bs-emphasis-color-rgb: 255,255,255;
|
||||
@ -225,7 +226,7 @@ html {
|
||||
flex-basis: auto;
|
||||
align-self: auto;
|
||||
order: 0;
|
||||
margin-inline-start: 50px;
|
||||
margin-inline-start: 23px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
@ -236,7 +237,7 @@ html {
|
||||
.legend {
|
||||
position: absolute;
|
||||
color: #050505;
|
||||
left: 115px;
|
||||
left: 100px;
|
||||
top: 195px;
|
||||
z-index: 1;
|
||||
font-size: 12px;
|
||||
@ -254,19 +255,12 @@ html {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#msgContainer {
|
||||
display: inline-block;
|
||||
/* overflow: auto; */
|
||||
height: 596px;
|
||||
/* width: 32%; */
|
||||
}
|
||||
|
||||
.clearbutton {
|
||||
margin-left: 29px;
|
||||
}
|
||||
|
||||
/* na male obrazovce je log pod grafem, zobrazujeme tedy prvni logy nahore */
|
||||
@media (max-width : 1680px) {
|
||||
@media (max-width : 2000px) {
|
||||
.msgContainerInner {
|
||||
display: flex;
|
||||
overflow: auto;
|
||||
@ -275,9 +269,15 @@ html {
|
||||
margin-left: 14px;
|
||||
width: 100%;
|
||||
}
|
||||
#msgContainer {
|
||||
display: inline-block;
|
||||
/* overflow: auto; */
|
||||
height: 600px;
|
||||
width: 40%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1681px) {}
|
||||
@media (min-width: 2001px) {
|
||||
.msgContainerInner {
|
||||
display: flex;
|
||||
overflow: auto;
|
||||
@ -286,6 +286,13 @@ html {
|
||||
margin-left: 14px;
|
||||
width: 130%;
|
||||
}
|
||||
#msgContainer {
|
||||
display: inline-block;
|
||||
/* overflow: auto; */
|
||||
height: 600px;
|
||||
width: max-content;
|
||||
}
|
||||
}
|
||||
|
||||
#lowercontainer {
|
||||
display: contents;
|
||||
@ -405,20 +412,37 @@ pre {
|
||||
outline: none;
|
||||
} */
|
||||
|
||||
.switcher-item {
|
||||
/* .switcher-item {
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
padding: 3px 6px;
|
||||
font-size: 14px;
|
||||
/* color: #262b3e; */
|
||||
/* background-color: #818581; */
|
||||
background-color: #0202022e;;
|
||||
margin-right: 8px;
|
||||
margin-bottom: 6px;
|
||||
border: none;
|
||||
border-radius: 5px;
|
||||
outline: none;
|
||||
} */
|
||||
|
||||
.switcher-item {
|
||||
/* cursor: pointer; */
|
||||
text-decoration: double;
|
||||
display: inline-block;
|
||||
padding: 1px 6px;
|
||||
font-size: 14px;
|
||||
/* color: #262b3e; */
|
||||
/* background-color: #818581; */
|
||||
background-color: #0202022e;
|
||||
margin-right: 8px;
|
||||
margin-bottom: 6px;
|
||||
/* border: 1px; */
|
||||
border-radius: 4px;
|
||||
outline: solid 1px;
|
||||
outline-color: #323232;
|
||||
/* outline-width: 1px; */
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
.switcher-item:hover {
|
||||
|
||||
@ -45,7 +45,17 @@ def populate_all_indicators(data, state: StrategyState):
|
||||
conf_bar = data['confirmed']
|
||||
last_update_delta, avg_delta = process_delta()
|
||||
|
||||
state.ilog(lvl=1,e=f"----- {data['index']}-{conf_bar}--delta:{last_update_delta}---AVGdelta:{avg_delta}", data=data)
|
||||
conf = "-----"
|
||||
if conf_bar == 1:
|
||||
conf = "CONF"
|
||||
|
||||
lp = data['close']
|
||||
state.ilog(lvl=1,e=f"{conf} {data['index']}-{conf_bar}--delta:{last_update_delta}---AVGdelta:{avg_delta}", data=data)
|
||||
|
||||
#TODO tento lof patri spis do nextu classic SL - je poplatny typu stratefie
|
||||
#TODO na toto se podivam, nejak moc zajasonovani a zpatky
|
||||
#PERF PROBLEM
|
||||
state.ilog(lvl=1,e="ENTRY", msg=f"LP:{lp} P:{state.positions}/{round(float(state.avgp),3)} SL:{state.vars.activeTrade.stoploss_value if state.vars.activeTrade is not None else None} profit:{round(float(state.profit),2)} Trades:{len(state.tradeList)} pend:{state.vars.pending}", activeTrade=json.loads(json.dumps(state.vars.activeTrade, default=json_serial)), prescribedTrades=json.loads(json.dumps(state.vars.prescribedTrades, default=json_serial)), pending=str(state.vars.pending))
|
||||
|
||||
#kroky pro CONFIRMED BAR only
|
||||
if conf_bar == 1:
|
||||
@ -65,12 +75,7 @@ def populate_all_indicators(data, state: StrategyState):
|
||||
#populate indicators, that have type in stratvars.indicators
|
||||
populate_dynamic_indicators(data, state)
|
||||
|
||||
lp = data['close']
|
||||
|
||||
|
||||
#TODO na toto se podivam, nejak moc zajasonovani a zpatky
|
||||
#PERF PROBLEM
|
||||
state.ilog(lvl=1,e="ENTRY", msg=f"LP:{lp} P:{state.positions}/{round(float(state.avgp),3)} SL:{state.vars.activeTrade.stoploss_value if state.vars.activeTrade is not None else None} profit:{round(float(state.profit),2)} Trades:{len(state.tradeList)} pend:{state.vars.pending}", activeTrade=json.loads(json.dumps(state.vars.activeTrade, default=json_serial)), prescribedTrades=json.loads(json.dumps(state.vars.prescribedTrades, default=json_serial)), pending=str(state.vars.pending))
|
||||
#vytiskneme si indikatory
|
||||
inds = get_last_ind_vals()
|
||||
state.ilog(lvl=1,e="Indikatory", **inds)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user