# строка заголовка CSV
title=csv.title
# строки данных CSV
data=csv.InData
# подсоединяемся к БД. Если БД отсутствует, создается новая с эти именем - наш случай.
con=sql.connect('csvdb.db')
# создаем курсор
cur=con.cursor()
# выполняем запрос создания таблицы SBER и ее полей (для упрощения все поля текстовые)
cur.execute("""create table SBER ('%s' text, '%s' text,
'%s' text, '%s' text, '%s' text,
'%s' text, '%s' text, '%s' text,
'%s' text)""" % tuple(title))
#заполняем таблицу данными из CSV строк
cur.executemany("insert into SBER values (?,?,?,?,?,?,?,?,?)", data)
#Записываем данные в таблицу БД
con.commit()
#если БД больше не нужна, закрываем соединение.
con.close()
#отметка времени начала
Tb=dt.datetime.today()
#готовим и передаем в БД SQL запрос
cur.execute('select * from SBER where id=27568')
#читаем ответ, одну строку
s=cur.fetchone()
#отметка времени конца
Te=dt.datetime.today()
#все распечатываем.
print('Tb=' + str(Tb) +', Te=' + str(Te))
print('Te-Tb='+str(Te-Tb))
print(s)
#это значение точно есть в строке №55420
cur.execute('select * from SBER where CLOSE=22730.0000000')
# читаем все строки, возвращаемые запросом.
s=cur.fetchall()
そう、MQL4-5の開発者にとって、生活は決して楽なものではない。MTとSQLiteを接続するソリューションがないかググってみた。SQL5.comの記事「SQL AND MQL5: WORKING WITH SQLITE DATABASE」をMQから直接、またサードパーティの開発者からいくつかの資料が提供されています。SQLiteデータベースは複雑すぎるし、Pythonの類似品と違ってプログラムもそれほど単純ではない。
PSSQL AND MQL5: WORKING WITH SQLITE DATABASE の記事をもっと詳しく見てください。実は、もしかしたらうまくいくかもしれない。MT用のx64 DLLを準備するために、そこではx86 DLLしか使いません。何しろ2014年の記事ですからね。でも、私の記憶違いでなければ、すでにx64のSQLite DLLがあるはずです。これでコンパイルしてみてください。
For the most recent news and developments, please see the news page. About System.Data.SQLite System.Data.SQLite is an ADO.NET provider for SQLite. System.Data.SQLite was started by Robert Simpson. Robert still has commit privileges on this repository but is no longer an active contributor. Development and maintenance work is now mostly...
昨日、突然SQLite データベースの魅力に取り憑かれました。そのためのPythonのインターフェースが用意されている -https://docs.python.org/3.6/library/sqlite3.html.
その結果、夜遅くまでデータベース本体とPythonインターフェースのドキュメントを読み、その混乱の一端を知るために、SQLite用の全く役に立たないプログラムを2つほどブッこんでしまいました。一般的に、魅了される。放置の前に浪費。今回初めて知ったのは、SQLiteのデータベースはメモリ上に整理できることです。たった一つのコマンドで: conn = sqlite3.connect(":memory:") - これはPythonでの話です。それだけでいいんです。そして、いくつかのクエリで、テーブルを作成し、作業します。
以前は、同じ目的でMS SQL ServerやBD Accessを使用し、NETライブラリのDataTableテーブルを介してメモリ上にデータベースを整理していました。そしてここでは、1.5MBの長さのDLLとコマンド1つ,)))で、何もしなくていいのです。
さて、何のために?必要なんです、必要なんです。システムがそこで何かをカウントしている間に、取引所から新しいデータ(市場、取引、相場)が入ってきて、それをメモリ内のデータベースに押し込むのです。そして、システムが新しいデータを必要とするとき、そのデータはすべて手元のメモリにあるのです。手に取って使ってみるのです。ダニとか待たなくていいし。また、何かあったときには、いつでも計算から頭を切り離して対処することができます。繰り返しになりますが、すべての情報はすでに、あなたの記憶の中にあるのです。もちろん、ユーザーイベントやスレッドは必要ですが、どこでも問題ないです。
では、メモリーデータベースの情報は、バックグラウンドでメインデータベースに保存されますね。
それと、SQLiteは小さいながらも、マルチユーザーによる読み書きのアクセスをサポートしています。そして、一般的には、ほとんどすべてが大人と同じように、いくつかの制限はありますが、ほとんどの場合、それは取るに足らないか、まったく邪魔になりません。
SQLiteデータベースを始めたが、何か役に立つことをするのは悪くない。まずは、CSVファイルをデータベースに取り込んでみましょう。
以下は、ファイル自体のスニペットで、全部で約55,000行になります。
以前、CSVファイルをPythonにインポートする方法について説明しましたが、ここではそれだけにとどまりません。その結果、CSVのタイトル文字列とデータ文字列が出来上がりました。
さて、Pythonのプログラムそのものです。
SQLiteStudioでSBERテーブルを見てみる。
はい、CSVファイルを開いて読み込むなど、プログラムを起動してから3~4秒ですべてのお楽しみが終了します。ちなみに、データベースファイルのサイズは、同様のCSVファイルよりも小さくなっています。データベース全体は4.3MB、CSVサイズは5.2MBです。
まあ、あとは同じような感じでやってますけど))。
原住民に不評な話題を 続けよう。
フォーラムには、CSVファイルからのデータ読み込みに関する定期的なスレッドがあります。先週だけでもすでに2回、最後から2行目まで読む必要がありました。
前回はCSVファイルからデータベースにデータを書き込んだが、今日はデータベースから行を読み込む問題を解決しよう。
データベースのテーブルには、約55,000行があります。最後の1枚ではなく、27568枚目あたりを読んでみよう。そのために、SQLクエリを書いて、データベースに送信してみましょう。
それだけです。結果を出すことができた。
実行時間 ~0.003004秒
課題をもっと難しくしよう。Close=22730.0000000の行を検索します。
全て同じですが、クエリの見た目が違います。
その結果
20行が返された。実行時間 ~0.0625c.
最後に、カラム(フィールド)CLOSEの最高値を求めよう
B反応。
さて、そして実行時間-0.035s
ご覧のように、すべてが非常にシンプルでスピーディです。私がCSVファイルの消費者だったら、MTの下に5~6個の機能を持つDLを書いて、CSVファイルの代わりにDBを使ったらどうだろうか、と考えます。
PS データベースが操作されたCSVファイルは、数回前の投稿で添付されたアーカイブの中にあります。そう、MQL4-5の開発者にとって、生活は決して楽なものではない。MTとSQLiteを接続するソリューションがないかググってみた。SQL5.comの記事「SQL AND MQL5: WORKING WITH SQLITE DATABASE」をMQから直接、またサードパーティの開発者からいくつかの資料が提供されています。SQLiteデータベースは複雑すぎるし、Pythonの類似品と違ってプログラムもそれほど単純ではない。
実際、初めてSQLiteを使う場合、SQLiteの7-8個の高度な関数をMQLにインポートするだけで十分です。あとは大体、必要だとしたら遠い未来に必要になるものです。この作業は、C++のプログラマーであれば、最悪の場合、2〜3日で完了することができます。しかし、既成のソリューションも試すことができます。
PSSQL AND MQL5: WORKING WITH SQLITE DATABASE の記事をもっと詳しく見てください。実は、もしかしたらうまくいくかもしれない。MT用のx64 DLLを準備するために、そこではx86 DLLしか使いません。何しろ2014年の記事ですからね。でも、私の記憶違いでなければ、すでにx64のSQLite DLLがあるはずです。これでコンパイルしてみてください。
Yuriy Asaulenko:
ああ、MQL4-5の開発者は楽な人生ではないですね。.....複 雑化しすぎていると思いますし、プログラムもPythonの類似品と違って単純ではありません。
Pythonの場合、履歴が必要で、バーチャートが必要で、テクニカル 指標が必要で...と、問題は少なくないのですが、テスターとトレードも考えないといけませんね...。
さて、「万年筆は百人百様」という言葉があるように、フェルトペンは好みが分かれるもの。
Pythonの場合、ヒストリーが必要だったり、バーチャートが必要だったり、テクニカル 指標が必要だったり、いろいろな問題があります。
さて、「万年筆は百人百様」という言葉があるように、フェルトペンは好みが分かれるもの。
歴史は問題ではないし、汲々としているのも同じ。テクニカル指標は問題ありませんし、ましてや私は自分の指標しか持っていません。必要であれば、そこに簡単なアルゴリズムがあります。
Pythonで棒グラフを描くツールを持っています。私のオートシステムに本当に必要なのか?- ターミナルを書いているわけではありません)
また、このようなシステムは初めてではなく、VB Excelにも、C++にも、C#にも、以前からありました。Pythonが選ばれた理由は、ライブラリの豊富さであり、これらのライブラリにアクセスするために、異なる言語やインターフェースの混在から動物園を作ることを望まなかったからです。また、Pythonはモデリングをすることができます。そのために設計されているので、システム開発ではとても重要なのです。仮にMathLabの直接のライバルとしましょう)。
質問です。
mql-kimとpython kanvasをリンクで交換することは可能でしょうか?
C++では簡単にできるのですが、pythonではわかりません。
質問です。
mql-kimとpython kanvasをリンクで交換することは可能でしょうか?
C++では簡単にできるのですが、pythonではわかりません。
しないんです。
朗報です)))-BetaMetaTrader 5 build 1910: チャートの無料ドラッグ&ドロップとMQL5の.Netライブラリ . さて、ベータ版が動作しているときは、SQLite(他の多くのライブラリも同様)に接続するために何も記述する必要はありません。は必要ありません。 であろう DLL のことです。
SQLite Net-librariesはすでに利用可能です -http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki
今なら(というか、後にMTの実用版が登場すれば)、MTの取引システムとのファイル交換による通信は忘れて、データベースによる通信を行うことができるのです。このスレッドの最初の方で、非常に高速で、ほとんどのシステムで十分すぎるほどであることが示されました。
朗報です))-ベータ版MetaTrader 5 build 1910: MQL5 におけるチャートおよび .Net ライブラリの無料ドラッグ&ドロップ . ベータ版では、SQLite(他の多くのライブラリも同様)に接続するために何も記述する必要がありません。は必要ありません。 であろう DLL のことです。
SQLite Net-librariesはすでに利用可能です -http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki
今なら(というか、後にMTの実用版が登場すれば)、MTの取引システムとのファイル交換による通信は忘れて、データベースによる通信を行うことができます。このスレッドの最初の方で、これは非常に高速で、ほとんどのシステムで十分すぎるほどであることが示されました。
あなたはニュースを誤解していました。
.NETライブラリに対応したからといって、DLLに対するセキュリティ制御が無効になるわけではありません。DLLコントロールはこれまでも、そしてこれからも機能します。
何もいじらずに.NETを読み込ませるだけです。というか、.NETの仮想マシンと通信するための面倒で自明でない作業をすべて引き受け、不便な点はすべて隠したのです。
しかし、以前からMQL5でSQliteのサポートを追加することを計画していました。そうなる可能性が高いです。