Comments (6)
Просто иллюстрация в продолжение темы, куда можно это дальше применить
quotes = {}
quotes['open']=numpy.asarray([item['open'] for item in data])
quotes['close']=numpy.asarray([item['close'] for item in data])
quotes['high']=numpy.asarray([item['high'] for item in data])
quotes['low']=numpy.asarray([item['low'] for item in data])
quotes['datetime']=numpy.asarray([item['datetime'] for item in data])
fig, ax = plt.subplots(3, sharex=True)
candlestick2_ohlc(ax[0],quotes['open'],quotes['high'],quotes['low'],quotes['close'],width=0.6)
ax[0].xaxis.set_major_locator(ticker.MaxNLocator(6))
def chart_date(x,pos):
try:
return quotes['datetime'][int(x)]
except IndexError:
return ''
ax[0].xaxis.set_major_formatter(ticker.FuncFormatter(chart_date))
fig.autofmt_xdate()
fig.tight_layout()
quotes['close'] = numpy.array([float(x) for x in quotes['close']])
sma = talib.SMA(quotes['close'], timeperiod=50)
ax[0].plot(sma)
ema = talib.EMA(quotes['close'], timeperiod=20)
ax[0].plot(ema)
macd, macdsignal, macdhist = talib.MACD(quotes['close'], fastperiod=12, slowperiod=26, signalperiod=9)
ax[1].plot(macd, color="y")
ax[1].plot(macdsignal)
hist_data = []
for elem in macdhist:
if not numpy.isnan(elem):
v = 0 if numpy.isnan(elem) else elem
hist_data.append(v*100)
ax[2].fill_between([x for x in range(len(macdhist))], 0,macdhist)
plt.show()
from quik-lua-rpc.
Функция getCandlesByIndex
на стороне QLua не назначает выходным свечам индекс. И свечи там идут вразнобой тоже по времени. У меня на терминале всё ещё 7 версии возвращается там таблица, в которой есть элемент с индексом [0], и остальные элементы без индексов. Как-то так это выглядит:
t = {
[0] = {какая-то свеча, может быть, даже первая в требуемой выгрузке, но я не обратил внимание},
{другая свеча},
{другая свеча},
...
}
Соответственно, если итерироваться через ipairs
, то свеча с ключом [0] не встретится. Поэтому я итерируюсь по этой таблице через pairs
который уже не гарантирует никакого порядка, но даже если бы и гарантировал, то, как я уже сказал, в самом результате, судя по всему, порядок не предусмотрен.
Поправьте, если я не прав, но и тогда, когда я писал обработчик, и сейчас у меня в этой таблице свечи не упорядочены (опять же, чтобы это увидеть, используются всё те же самые pairs
и ipairs
, а также библиотека inspect
, которая наверняка использует те же самые ключевые слова при превращении таблицы в строку).
P.S. Спасибо, что подняли тему -- как раз поправил один маленький баг, когда легенда графика написана на русском языке (не было преобразования в UTF-8 при отдаче на сторону клиента).
from quik-lua-rpc.
Практически, вижу два решения: либо сортировать результат на стороне сервиса (медленно, но удобно), либо сортировать результат на месте получения (скорее всего быстрее, но менее удобно). Лично я за то, чтобы оставить как есть, т.е. производить сортировку на стороне клиента, тем более если известно, что эта функция в QLua также не гарантирует порядок, т.е., с этой точки зрения, сервис не привносит никаких изменений и самодеятельности.
from quik-lua-rpc.
Если исходить из того, что getCandlesByIndex полезна в основном тогда, когда торги не идут и можно неспеша тестировать на исторических данных, то сортировать результат на стороне клиента (медленно, но удобно) - вполне приемлемый вариант.
from quik-lua-rpc.
Примерно так можно на клиенте отсортировать по времени свечи?
socket.send_string('{"method":"getCandlesByIndex","args":{"tag":"siu9_price_chart","line":0,"first_candle":0,"count":%d}}' % (num_candles))
result = json.loads(socket.recv_string())
data = result['result']['t']
for item in data:
item['datetime'] = datetime.datetime(item['datetime']['year'], item['datetime']['month'], item['datetime']['day'], item['datetime']['hour'], item['datetime']['min'], item['datetime']['sec'], item['datetime']['ms'])
data = sorted(data, key=lambda k: k['datetime'])
print(data)
from quik-lua-rpc.
Да, таким способом можно.
from quik-lua-rpc.
Related Issues (20)
- Сломана обработка сделок в Quik 8.8.4 HOT 5
- assert error в protobuf_request_response_serde.lua:46 HOT 2
- Падает при вызове getQuoteLevel2_pb2 HOT 12
- Иногда скрипт падает после нескольких минут(или секунд) работы HOT 1
- Скрипт отъедает 30% процессорного времени на холостом ходу. HOT 6
- Ошибка после создания OTC заявки HOT 3
- Открытый список вызываемых функций HOT 5
- Использовать последнюю версию lzmq с поддержкой ZMQ_LOOPBACK_FASTPATH.
- Иногда падает ошибка на OnAllTrade HOT 1
- sendTransaction HOT 3
- У меня периодически падает quik с ошибкой Exception code: 0xc0000374 HOT 5
- get_depo возвращает 0 по всем позициям, get_depo_ex ничего не возвращают
- Скрипт луа не запускается, если в config.json только один endpoint типа PUB
- Асинхронные вызовы из Python (пример кода) и ACCESS_VIOLATION HOT 3
- AsyncIO Python клиент для работы с Quik Lua RPC
- Не работает сборка докер-образа с zeromq 4.3.4
- Ошибка при получении T на стороне сервера HOT 1
- python abrosimov.a.a/qlua getCandlesByIndex - возвращает итерации одной свечи HOT 1
- Сборка через docker падает на libsodium HOT 3
- Вызов datasource_T падает
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from quik-lua-rpc.