mirror of
https://github.com/chrisnov-it/quantumbotx.git
synced 2026-07-28 11:17:44 +00:00
7b74743d58
Refactor the JavaScript code to use a single modal for both forex and stock profiles. Update error handling to display server error messages. Remove unused app.py and fetch.py files. Adjust various routes and strategies for consistency.
106 lines
3.2 KiB
Python
106 lines
3.2 KiB
Python
import sqlite3
|
|
import os
|
|
|
|
# Nama file database
|
|
DB_FILE = "bots.db"
|
|
|
|
def create_connection(db_file):
|
|
""" Membuat koneksi ke database SQLite """
|
|
conn = None
|
|
try:
|
|
conn = sqlite3.connect(db_file)
|
|
print(f"Berhasil terhubung ke SQLite versi {sqlite3.version}")
|
|
return conn
|
|
except sqlite3.Error as e:
|
|
print(e)
|
|
return conn
|
|
|
|
def create_table(conn, create_table_sql):
|
|
""" Membuat tabel dari statement SQL """
|
|
try:
|
|
c = conn.cursor()
|
|
c.execute(create_table_sql)
|
|
print("Tabel berhasil dibuat.")
|
|
except sqlite3.Error as e:
|
|
print(e)
|
|
|
|
def main():
|
|
# Hapus database lama jika ada, untuk memastikan mulai dari awal
|
|
if os.path.exists(DB_FILE):
|
|
os.remove(DB_FILE)
|
|
print(f"File database lama '{DB_FILE}' telah dihapus.")
|
|
|
|
# SQL statement untuk membuat tabel 'bots'
|
|
sql_create_bots_table = """
|
|
CREATE TABLE IF NOT EXISTS bots (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL,
|
|
market TEXT NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'Dijeda',
|
|
lot_size REAL NOT NULL DEFAULT 0.01,
|
|
sl_pips INTEGER NOT NULL DEFAULT 100,
|
|
tp_pips INTEGER NOT NULL DEFAULT 200,
|
|
timeframe TEXT NOT NULL DEFAULT 'H1',
|
|
check_interval_seconds INTEGER NOT NULL DEFAULT 60,
|
|
strategy TEXT NOT NULL,
|
|
strategy_params TEXT
|
|
);
|
|
"""
|
|
|
|
# SQL statement untuk membuat tabel 'trade_history'
|
|
sql_create_history_table = """
|
|
CREATE TABLE IF NOT EXISTS trade_history (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
bot_id INTEGER NOT NULL,
|
|
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
action TEXT NOT NULL,
|
|
details TEXT,
|
|
is_notification INTEGER NOT NULL DEFAULT 0,
|
|
is_read INTEGER NOT NULL DEFAULT 0,
|
|
FOREIGN KEY (bot_id) REFERENCES bots (id) ON DELETE CASCADE
|
|
);
|
|
"""
|
|
|
|
|
|
|
|
# Buat koneksi database
|
|
conn = create_connection(DB_FILE)
|
|
|
|
# Buat tabel-tabel
|
|
if conn is not None:
|
|
print("\nMembuat tabel 'bots'...")
|
|
create_table(conn, sql_create_bots_table)
|
|
|
|
print("\nMembuat tabel 'trade_history'...")
|
|
create_table(conn, sql_create_history_table)
|
|
|
|
|
|
|
|
# --- TAMBAHKAN INI ---
|
|
print("\nMembuat tabel 'backtest_results'...")
|
|
sql_create_backtest_results_table = """
|
|
CREATE TABLE IF NOT EXISTS backtest_results (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
strategy_name TEXT NOT NULL,
|
|
data_filename TEXT NOT NULL,
|
|
total_profit_pips REAL NOT NULL,
|
|
total_trades INTEGER NOT NULL,
|
|
win_rate_percent REAL NOT NULL,
|
|
max_drawdown_percent REAL NOT NULL,
|
|
equity_curve TEXT, -- Disimpan sebagai JSON
|
|
trade_log TEXT, -- Disimpan sebagai JSON
|
|
parameters TEXT -- Disimpan sebagai JSON
|
|
);
|
|
"""
|
|
create_table(conn, sql_create_backtest_results_table)
|
|
# --- SELESAI PENAMBAHAN ---
|
|
|
|
conn.close()
|
|
print(f"\nDatabase '{DB_FILE}' berhasil dibuat dengan semua tabel yang diperlukan.")
|
|
else:
|
|
print("Error! Tidak dapat membuat koneksi database.")
|
|
|
|
if __name__ == '__main__':
|
|
main()
|