beast-agent 2.76.6 → 2.77.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/package.json +1 -1
  2. package/src/agent/bots.js +669 -664
  3. package/src/agent/customtools.js +6 -19
  4. package/src/agent/engine.js +55 -307
  5. package/src/agent/seeds/tool-yazma/SKILL.md +13 -16
  6. package/src/agent/skills.js +14 -35
  7. package/src/agent/supertonic.js +622 -0
  8. package/src/agent/tools.js +3 -7
  9. package/src/main.js +77 -6164
  10. package/src/preload.js +2 -18
  11. package/src/renderer/i18n.js +14 -8
  12. package/src/renderer/index.html +0 -297
  13. package/src/renderer/renderer.js +142 -2301
  14. package/src/renderer/style.css +3 -825
  15. package/src/agent/defaulttools/mt5_barlar2/run.js +0 -188
  16. package/src/agent/defaulttools/mt5_barlar2/tool.json +0 -23
  17. package/src/agent/defaulttools/mt5_bekleyen/run.js +0 -105
  18. package/src/agent/defaulttools/mt5_bekleyen/tool.json +0 -18
  19. package/src/agent/defaulttools/mt5_durum/run.js +0 -93
  20. package/src/agent/defaulttools/mt5_durum/tool.json +0 -10
  21. package/src/agent/defaulttools/mt5_emir/run.js +0 -98
  22. package/src/agent/defaulttools/mt5_emir/tool.json +0 -17
  23. package/src/agent/defaulttools/mt5_emir_iptal/run.js +0 -90
  24. package/src/agent/defaulttools/mt5_emir_iptal/tool.json +0 -12
  25. package/src/agent/defaulttools/mt5_fiyat/run.js +0 -87
  26. package/src/agent/defaulttools/mt5_fiyat/tool.json +0 -16
  27. package/src/agent/defaulttools/mt5_gecmis/run.js +0 -87
  28. package/src/agent/defaulttools/mt5_gecmis/tool.json +0 -12
  29. package/src/agent/defaulttools/mt5_kapat/run.js +0 -108
  30. package/src/agent/defaulttools/mt5_kapat/tool.json +0 -15
  31. package/src/agent/defaulttools/mt5_m15_m5/m15m5.py +0 -60
  32. package/src/agent/defaulttools/mt5_m15_m5/run.js +0 -73
  33. package/src/agent/defaulttools/mt5_m15_m5/tool.json +0 -10
  34. package/src/agent/defaulttools/mt5_pozisyon_gecmis/run.js +0 -144
  35. package/src/agent/defaulttools/mt5_pozisyon_gecmis/tool.json +0 -12
  36. package/src/agent/defaulttools/mt5_shot/run.js +0 -649
  37. package/src/agent/defaulttools/mt5_shot/stitch.js +0 -151
  38. package/src/agent/defaulttools/mt5_shot/tool.json +0 -25
  39. package/src/agent/defaulttools/mt5_sltp/run.js +0 -92
  40. package/src/agent/defaulttools/mt5_sltp/tool.json +0 -14
  41. package/src/agent/financetools.js +0 -1025
  42. package/src/agent/finindicators.js +0 -254
  43. package/src/agent/finrisk.js +0 -289
  44. package/src/agent/finstats.js +0 -239
  45. package/src/agent/finwatch.js +0 -302
  46. package/src/agent/mt5/BeastFinance.mq5 +0 -498
  47. package/src/agent/mt5/BeastShot.tpl +0 -0
  48. package/src/agent/mt5setup.js +0 -542
  49. package/src/agent/scripts/mt5_bridge.py +0 -575
  50. package/src/agent/seeds/haber-duygu/SKILL.md +0 -49
  51. package/src/agent/seeds/mql5/SKILL.md +0 -154
  52. package/src/agent/seeds/price-action/SKILL.md +0 -60
  53. package/src/agent/seeds/risk-yonetimi/SKILL.md +0 -52
  54. package/src/mt5bridge.js +0 -215
@@ -324,8 +324,8 @@ body:not(.ide-mode):not(.studio-mode):not(.sandbox-mode) #watchPane { display: f
324
324
  #studioBtn.on { background: var(--accent-dim); color: var(--accent); }
325
325
 
326
326
  /* model refresh butonları — çekerken döner */
327
- #modelRefreshBtn.spin, #finModelRefreshBtn.spin { opacity: .7; pointer-events: none; }
328
- #modelRefreshBtn.spin, #finModelRefreshBtn.spin { animation: beast-spin 0.9s linear infinite; }
327
+ #modelRefreshBtn.spin { opacity: .7; pointer-events: none; }
328
+ #modelRefreshBtn.spin { animation: beast-spin 0.9s linear infinite; }
329
329
  @keyframes beast-spin { to { transform: rotate(360deg); } }
330
330
 
331
331
  /* ---------- cron modülü (ayarlar sekmesi) ---------- */
@@ -1504,8 +1504,6 @@ body.browser-open .mini-overlay { right: var(--bw, 480px); }
1504
1504
  .mini-row.off .mr-name, .mini-row.off .mr-meta { opacity: 0.45; }
1505
1505
  .mr-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--ok); flex: none; }
1506
1506
  .mini-row.off .mr-dot { background: var(--muted); }
1507
- /* Beast Finance fiyat alarmları: izleyici listesinde turuncu nokta ile ayrılır */
1508
- .wp-row.alarm .wp-dot, .mini-row.alarm .mr-dot { background: #e6a117; }
1509
1507
  .mr-main { flex: 1; min-width: 0; }
1510
1508
  .mr-name { font-weight: 700; font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
1511
1509
  .mr-meta { color: var(--muted); font-size: 11px; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@@ -2325,7 +2323,7 @@ body.browser-open #settingsDialog { width: min(70vw, calc(100vw - var(--bw, 480p
2325
2323
  color: var(--muted);
2326
2324
  margin-top: 2px;
2327
2325
  }
2328
- /* ajan DM görseli (mt5_shot / ekran görüntüsü paylaşımı) */
2326
+ /* ajan DM görseli (ekran görüntüsü paylaşımı) */
2329
2327
  .dmt-msg .dmt-img {
2330
2328
  display: block;
2331
2329
  max-width: 100%;
@@ -2469,20 +2467,6 @@ body.browser-open #settingsDialog { width: min(70vw, calc(100vw - var(--bw, 480p
2469
2467
  letter-spacing: 0.4px;
2470
2468
  }
2471
2469
 
2472
- /* sembol seçicide bölüm başlıkları (geçmiş / tüm semboller) */
2473
- .fin-sym-sec {
2474
- font-size: 10px;
2475
- font-weight: 800;
2476
- letter-spacing: 0.6px;
2477
- color: var(--accent);
2478
- padding: 8px 4px 3px;
2479
- border-bottom: 1px solid var(--border);
2480
- margin-bottom: 3px;
2481
- white-space: nowrap;
2482
- overflow: hidden;
2483
- text-overflow: ellipsis;
2484
- }
2485
-
2486
2470
  /* ---------- BOT SİSTEMİ (sol panel alt bölümü + bot sayfası) ---------- */
2487
2471
 
2488
2472
  /* üst bardaki aktif bot rozeti */
@@ -5280,809 +5264,3 @@ body.mcp-mode #mcpRow { display: flex; flex-direction: row; }
5280
5264
  pointer-events: none;
5281
5265
  }
5282
5266
 
5283
- /* ================= BEAST FINANCE MODU =================
5284
- Studio/Sandbox'tan farklı düzen: SOL sidebar (sohbet geçmişi + izleyiciler)
5285
- ve ORTA chat AYNI kalır; SAĞDA MT5 işlem paneli açılır. İki ajan:
5286
- chat copilot'ı (aktif sohbet) + otonom TRADER (farklı API/model). */
5287
-
5288
- #finPanel { display: none; }
5289
-
5290
- body.finance-mode #main { position: relative; }
5291
-
5292
- body.finance-mode #finPanel {
5293
- display: flex;
5294
- flex-direction: column;
5295
- position: absolute;
5296
- top: 46px;
5297
- right: 0;
5298
- bottom: 0;
5299
- width: var(--finW, 400px);
5300
- min-width: 320px;
5301
- background: var(--bg);
5302
- border-left: 1px solid var(--border);
5303
- z-index: 40;
5304
- }
5305
-
5306
- /* chat alanı sağda panel payı kadar kırpılır */
5307
- body.finance-mode #chatScroll,
5308
- body.finance-mode #composerWrap { margin-right: var(--finW, 400px); }
5309
-
5310
- #finBtn.on { background: var(--accent-dim); color: var(--accent); }
5311
-
5312
- #finHead {
5313
- flex: none;
5314
- display: flex;
5315
- align-items: center;
5316
- gap: 7px;
5317
- padding: 9px 12px;
5318
- border-bottom: 1px solid var(--border);
5319
- background: var(--panel);
5320
- }
5321
- #finTitle { font-size: 11px; font-weight: 800; letter-spacing: 1px; color: var(--accent); }
5322
- #finTerm {
5323
- font-size: 11px;
5324
- color: var(--muted);
5325
- max-width: 150px;
5326
- white-space: nowrap;
5327
- overflow: hidden;
5328
- text-overflow: ellipsis;
5329
- }
5330
- #finHead button {
5331
- background: none;
5332
- border: none;
5333
- color: var(--muted);
5334
- font-size: 13px;
5335
- cursor: pointer;
5336
- padding: 3px 7px;
5337
- border-radius: 6px;
5338
- }
5339
- #finHead button:hover { background: var(--panel2); color: var(--text); }
5340
-
5341
- .fin-dot {
5342
- flex: none;
5343
- width: 9px;
5344
- height: 9px;
5345
- border-radius: 50%;
5346
- background: var(--muted);
5347
- }
5348
- .fin-dot.on { background: #22c55e; box-shadow: 0 0 6px rgba(34, 197, 94, 0.7); }
5349
- .fin-dot.off { background: #ef4444; }
5350
- .fin-dot.busy { background: #eab308; box-shadow: 0 0 6px rgba(234, 179, 8, 0.7); }
5351
-
5352
- #finBody {
5353
- flex: 1;
5354
- min-height: 0;
5355
- overflow-y: auto;
5356
- display: flex;
5357
- flex-direction: column;
5358
- gap: 8px;
5359
- padding: 10px;
5360
- }
5361
-
5362
- .fin-card {
5363
- flex: none;
5364
- border: 1px solid var(--border);
5365
- border-radius: 10px;
5366
- background: var(--panel);
5367
- padding: 9px 10px;
5368
- }
5369
- .fin-card.fin-grow { flex: 1 1 auto; min-height: 90px; display: flex; flex-direction: column; }
5370
- .fin-card-title {
5371
- font-size: 10px;
5372
- font-weight: 800;
5373
- letter-spacing: 1px;
5374
- color: var(--muted);
5375
- margin-bottom: 7px;
5376
- display: flex;
5377
- align-items: center;
5378
- gap: 6px;
5379
- }
5380
- .fin-grip {
5381
- flex: none;
5382
- cursor: grab;
5383
- color: var(--muted);
5384
- font-size: 12px;
5385
- line-height: 1;
5386
- letter-spacing: -1px;
5387
- opacity: 0.7;
5388
- user-select: none;
5389
- -webkit-user-select: none;
5390
- }
5391
- .fin-grip:hover { color: var(--accent); opacity: 1; }
5392
- .fin-grip:active { cursor: grabbing; }
5393
- .fin-card.fin-dragging { opacity: 0.45; border-style: dashed; }
5394
- .fin-card.fin-drop-top { box-shadow: 0 -3px 0 0 var(--accent); }
5395
- .fin-card.fin-drop-bottom { box-shadow: 0 3px 0 0 var(--accent); }
5396
-
5397
- .fin-grid {
5398
- display: grid;
5399
- grid-template-columns: 1fr 1fr;
5400
- gap: 6px 10px;
5401
- }
5402
- .fin-kv { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
5403
- .fin-kv span { font-size: 10px; color: var(--muted); }
5404
- .fin-kv b { font-size: 13px; font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
5405
-
5406
- .fin-row { display: flex; align-items: center; gap: 8px; margin-bottom: 7px; }
5407
- .fin-row:last-child { margin-bottom: 0; }
5408
- .fin-row.fin-mini { gap: 6px; }
5409
- .fin-row.fin-mini label { flex: none; font-size: 10px; color: var(--muted); min-width: 44px; }
5410
- .fin-row.fin-mini input { width: 60px; }
5411
- .fin-row input, .fin-row select {
5412
- flex: 1;
5413
- min-width: 0;
5414
- background: var(--panel2);
5415
- border: 1px solid var(--border);
5416
- color: var(--text);
5417
- font-size: 12px;
5418
- padding: 4px 7px;
5419
- border-radius: 6px;
5420
- }
5421
- .fin-row input:focus, .fin-row select:focus { border-color: var(--accent); outline: none; }
5422
-
5423
- /* TRADE AJANI formu — etiket üstte, kontrol altta; tur/max lot 2 kolon */
5424
- .fin-field { display: flex; flex-direction: column; gap: 3px; min-width: 0; margin-bottom: 8px; }
5425
- .fin-field > span { font-size: 10px; color: var(--muted); }
5426
- .fin-field input, .fin-field select, .fin-field textarea {
5427
- width: 100%;
5428
- min-width: 0;
5429
- background: var(--panel2);
5430
- border: 1px solid var(--border);
5431
- color: var(--text);
5432
- font-size: 12px;
5433
- padding: 4px 7px;
5434
- border-radius: 6px;
5435
- }
5436
- .fin-field input:focus, .fin-field select:focus, .fin-field textarea:focus { border-color: var(--accent); outline: none; }
5437
- .fin-time-row { display: flex; gap: 6px; }
5438
- .fin-time-row input { flex: 1; min-width: 0; }
5439
- /* Ajan talimatı: çok satırlı not alanı (dikey büyütülebilir) */
5440
- .fin-field textarea {
5441
- resize: vertical;
5442
- min-height: 46px;
5443
- max-height: 140px;
5444
- line-height: 1.35;
5445
- font-family: inherit;
5446
- }
5447
- .fin-field .fin-sym-select { width: 100%; }
5448
- .fin-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
5449
- .fin-grid2 .fin-field { margin-bottom: 8px; }
5450
- .fin-grid3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
5451
- .fin-grid3 .fin-field { margin-bottom: 8px; }
5452
- .fin-hint { font-style: normal; opacity: 0.75; }
5453
- /* RİSK OTOMASYONU + PERFORMANS kartları */
5454
- .fin-check label { display: flex; align-items: center; gap: 6px; font-size: 11px; color: var(--text); cursor: pointer; }
5455
- .fin-check input { accent-color: var(--accent); margin: 0; }
5456
- .fin-kv b.pos { color: #22c55e; }
5457
- .fin-kv b.neg { color: #ef4444; }
5458
- .fin-equity { height: 34px; margin-bottom: 8px; color: var(--muted); }
5459
- .fin-equity svg { width: 100%; height: 100%; display: block; }
5460
- .fin-equity svg.up { color: #22c55e; }
5461
- .fin-equity svg.down { color: #ef4444; }
5462
- .fin-alerts { margin-top: 6px; display: flex; flex-direction: column; gap: 4px; }
5463
- .fin-alert {
5464
- display: flex;
5465
- align-items: center;
5466
- gap: 6px;
5467
- font-size: 11px;
5468
- background: var(--panel2);
5469
- border-radius: 4px;
5470
- padding: 3px 6px;
5471
- min-width: 0;
5472
- }
5473
- .fin-alert .fa-sym { font-weight: 700; }
5474
- .fin-alert .fa-cond { color: #eab308; font-variant-numeric: tabular-nums; }
5475
- .fin-alert .fa-note { color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
5476
- /* ekib sayısı + otomatik atama özeti */
5477
- .fin-team { display: flex; align-items: center; gap: 8px; min-width: 0; }
5478
- .fin-team-btn { font-weight: 600; display: inline-flex; align-items: center; gap: 5px; }
5479
- .fin-team-item {
5480
- display: flex; align-items: flex-start; gap: 8px;
5481
- padding: 6px 8px; border-radius: 6px;
5482
- cursor: pointer;
5483
- }
5484
- .fin-team-item:hover { background: var(--panel2); }
5485
- .fin-team-item input { flex: none; width: auto; margin: 2px 0 0 0; }
5486
- .fin-team-txt { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
5487
- .fin-team-txt b { font-size: 12px; color: var(--text); }
5488
- .fin-team-txt i { font-size: 10.5px; font-style: normal; color: var(--muted); }
5489
- .fin-team-hint {
5490
- flex: 1;
5491
- min-width: 0;
5492
- font-size: 10.5px;
5493
- color: var(--muted);
5494
- white-space: nowrap;
5495
- overflow: hidden;
5496
- text-overflow: ellipsis;
5497
- }
5498
- /* POZİSYONLAR kartı içi bölüm başlığı (bekleyen emirler) */
5499
- .fin-sect-title {
5500
- display: flex;
5501
- align-items: center;
5502
- gap: 6px;
5503
- margin: 9px 0 6px;
5504
- padding-top: 8px;
5505
- border-top: 1px dashed var(--border);
5506
- font-size: 10px;
5507
- font-weight: 800;
5508
- letter-spacing: 1px;
5509
- color: var(--muted);
5510
- }
5511
-
5512
- /* TRADE AJANI sembol seçme düğmesi — tıklayınca MT5 sembol seçici açılır */
5513
- .fin-sym-select {
5514
- flex: 1;
5515
- min-width: 0;
5516
- text-align: left;
5517
- background: var(--panel2);
5518
- border: 1px solid var(--border);
5519
- color: var(--text);
5520
- font-size: 12px;
5521
- padding: 4px 8px;
5522
- border-radius: 6px;
5523
- cursor: pointer;
5524
- white-space: nowrap;
5525
- overflow: hidden;
5526
- text-overflow: ellipsis;
5527
- }
5528
- .fin-sym-select:hover { border-color: var(--accent); color: var(--accent); }
5529
- .fin-check {
5530
- flex: 1;
5531
- display: flex;
5532
- align-items: center;
5533
- gap: 6px;
5534
- font-size: 11px;
5535
- color: var(--text);
5536
- cursor: pointer;
5537
- min-width: 0;
5538
- white-space: nowrap;
5539
- overflow: hidden;
5540
- text-overflow: ellipsis;
5541
- }
5542
- .fin-check input { flex: none; width: auto; }
5543
- /* ANALİZ EKİBİ: rol seçim kutuları (Risk / Teknik / Makro) */
5544
- .fin-roles-row label { flex: none; font-size: 10px; color: var(--muted); min-width: 44px; }
5545
- .fin-roles {
5546
- flex: 1; min-width: 0;
5547
- display: flex; flex-wrap: wrap; gap: 4px;
5548
- }
5549
- .fin-role {
5550
- flex: none;
5551
- display: inline-flex; align-items: center; gap: 4px;
5552
- font-size: 10.5px; color: var(--text);
5553
- background: var(--panel2);
5554
- border: 1px solid var(--border);
5555
- border-radius: 8px;
5556
- padding: 2px 8px 2px 5px;
5557
- cursor: pointer;
5558
- user-select: none;
5559
- }
5560
- .fin-role:hover { border-color: var(--accent); }
5561
- .fin-role:has(input:checked) { border-color: var(--accent); color: var(--accent); background: var(--accent-dim); }
5562
- .fin-role input { flex: none; width: auto; margin: 0; }
5563
- .fin-role input:disabled { opacity: 0.45; cursor: default; }
5564
- .fin-role-auto { font-weight: 700; }
5565
- /* Otomatik moddaki SAYI girişi */
5566
- .fin-field .fin-role-count {
5567
- flex: none; width: 52px;
5568
- background: var(--panel2); color: var(--text);
5569
- border: 1px solid var(--border); border-radius: 8px;
5570
- font-size: 12px; font-weight: 700; text-align: center;
5571
- padding: 3px 3px;
5572
- }
5573
- .fin-field .fin-role-count:focus { border-color: var(--accent); outline: none; }
5574
- .fin-field .fin-role-count:disabled { opacity: 0.45; }
5575
- .fin-start {
5576
- flex: none;
5577
- background: var(--accent);
5578
- border: 1px solid var(--accent);
5579
- /* dark modda accent beyazımsı olur — sabit beyaz yazı butonda kaybolurdu;
5580
- --accent-contrast iki temada da doğru kontrastı verir (siyah↔beyaz) */
5581
- color: var(--accent-contrast);
5582
- font-size: 11px;
5583
- font-weight: 800;
5584
- letter-spacing: 0.2px;
5585
- padding: 6px 14px;
5586
- border-radius: 7px;
5587
- cursor: pointer;
5588
- transition: filter 0.12s ease, box-shadow 0.12s ease, transform 0.06s ease;
5589
- }
5590
- .fin-start:hover { filter: brightness(1.08); box-shadow: 0 1px 6px rgba(0, 0, 0, 0.22); }
5591
- .fin-start:active { transform: translateY(1px); filter: brightness(0.96); }
5592
- .fin-start.stop {
5593
- background: #b91c1c;
5594
- border-color: #b91c1c;
5595
- color: #fff; /* kırmızı zeminde beyaz her iki temada da okunur */
5596
- }
5597
- .fin-start.stop:hover { background: #991b1b; border-color: #991b1b; }
5598
-
5599
- /* TRADE AJANI kartı — vurgulu görünüm (accent çerçeve + yumuşak zemin) */
5600
- .fin-card-trader {
5601
- border-color: var(--accent);
5602
- box-shadow: 0 0 0 1px var(--accent-dim), 0 2px 10px rgba(0, 0, 0, 0.1);
5603
- background: linear-gradient(180deg, var(--accent-dim), transparent 46%), var(--panel);
5604
- }
5605
- .fin-card-trader .fin-card-title { color: var(--text); }
5606
- .fin-card-trader .fin-row { margin-bottom: 8px; }
5607
- .fin-card-trader .fin-btn-row { margin-top: 2px; }
5608
- .fin-btn-row .fin-start { flex: 1; width: 100%; padding: 7px 14px; }
5609
-
5610
- #finTraderStatus {
5611
- margin-top: 8px;
5612
- font-size: 10.5px;
5613
- color: var(--muted);
5614
- background: var(--panel2);
5615
- border: 1px solid var(--border);
5616
- border-radius: 7px;
5617
- padding: 5px 8px;
5618
- white-space: nowrap;
5619
- overflow: hidden;
5620
- text-overflow: ellipsis;
5621
- }
5622
- #finTraderStatus::before { content: '● '; font-size: 9px; color: var(--muted); }
5623
- #finTraderStatus.on { color: var(--text); border-color: var(--accent); }
5624
- #finTraderStatus.on::before { color: #22c55e; }
5625
- #finTraderStatus.on.busy { color: var(--accent); }
5626
- #finTraderStatus.on.busy::before { color: #f59e0b; }
5627
-
5628
- /* POZİSYON YÖNETİCİSİ kartı — trader durum satırıyla aynı görünüm */
5629
- #finPosStatus {
5630
- margin-top: 8px;
5631
- font-size: 10.5px;
5632
- color: var(--muted);
5633
- background: var(--panel2);
5634
- border: 1px solid var(--border);
5635
- border-radius: 7px;
5636
- padding: 5px 8px;
5637
- white-space: nowrap;
5638
- overflow: hidden;
5639
- text-overflow: ellipsis;
5640
- }
5641
- #finPosStatus::before { content: '● '; font-size: 9px; color: var(--muted); }
5642
- #finPosStatus.on { color: var(--text); border-color: var(--accent); }
5643
- #finPosStatus.on::before { color: #22c55e; }
5644
- #finPosStatus.on.busy { color: var(--accent); }
5645
- #finPosStatus.on.busy::before { color: #f59e0b; }
5646
-
5647
- /* TALİMAT KILAVUZU (? butonu + modal) */
5648
- .fin-help-btn {
5649
- width: 16px;
5650
- height: 16px;
5651
- margin-left: 6px;
5652
- border-radius: 50%;
5653
- border: 1px solid var(--border);
5654
- background: var(--panel2);
5655
- color: var(--muted);
5656
- font-size: 10px;
5657
- font-weight: 700;
5658
- line-height: 1;
5659
- padding: 0;
5660
- cursor: pointer;
5661
- vertical-align: 1px;
5662
- }
5663
- .fin-help-btn:hover { color: var(--text); border-color: var(--accent); }
5664
- .fin-help-dialog { max-width: 620px; }
5665
- #finHelpBody { max-height: 62vh; overflow: auto; }
5666
- .fin-help-head { font-size: 11px; color: var(--muted); margin: 2px 0 10px; }
5667
- .fin-help-sec {
5668
- font-size: 10.5px;
5669
- font-weight: 700;
5670
- letter-spacing: 0.04em;
5671
- text-transform: uppercase;
5672
- color: var(--muted);
5673
- margin: 12px 0 6px;
5674
- }
5675
- .fin-help-item {
5676
- border: 1px solid var(--border);
5677
- border-radius: 7px;
5678
- padding: 6px 8px;
5679
- margin-bottom: 6px;
5680
- background: var(--panel2);
5681
- }
5682
- .fin-help-code { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 4px; }
5683
- .fin-help-code code {
5684
- font-size: 10.5px;
5685
- padding: 1px 5px;
5686
- border-radius: 4px;
5687
- background: rgba(127, 127, 127, 0.14);
5688
- border: 1px solid var(--border);
5689
- }
5690
- .fin-help-desc { font-size: 11px; color: var(--muted); line-height: 1.5; }
5691
- .fin-help-desc b { color: var(--text); }
5692
- .fin-help-text { font-size: 11px; color: var(--muted); line-height: 1.55; }
5693
- .fin-help-text b { color: var(--text); }
5694
- .fin-help-ex {
5695
- margin: 8px 0 2px;
5696
- padding: 8px 10px;
5697
- border-radius: 7px;
5698
- border: 1px dashed var(--border);
5699
- background: var(--panel2);
5700
- font-size: 11px;
5701
- line-height: 1.6;
5702
- white-space: pre-wrap;
5703
- color: var(--text);
5704
- }
5705
-
5706
- #finPosList, #finOrdList, #finSymList { display: flex; flex-direction: column; gap: 5px; }
5707
- .fin-empty { font-size: 11px; color: var(--muted); padding: 2px 0 4px; }
5708
-
5709
- .fin-pos {
5710
- display: flex;
5711
- align-items: center;
5712
- gap: 7px;
5713
- font-size: 11px;
5714
- background: var(--panel2);
5715
- border: 1px solid var(--border);
5716
- border-radius: 7px;
5717
- padding: 5px 8px;
5718
- }
5719
- .fin-pos .fp-sym { font-weight: 700; min-width: 54px; }
5720
- .fin-pos .fp-dir {
5721
- flex: none;
5722
- font-weight: 800;
5723
- font-size: 9px;
5724
- padding: 2px 5px;
5725
- border-radius: 5px;
5726
- letter-spacing: 0.5px;
5727
- }
5728
- .fin-pos .fp-dir.buy { background: rgba(34, 197, 94, 0.16); color: #22c55e; }
5729
- .fin-pos .fp-dir.sell { background: rgba(239, 68, 68, 0.16); color: #ef4444; }
5730
- .fin-pos .fp-meta { flex: 1; min-width: 0; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
5731
- .fin-pos .fp-pl { font-weight: 800; font-variant-numeric: tabular-nums; white-space: nowrap; }
5732
- .fin-pos .fp-pl.pos { color: #22c55e; }
5733
- .fin-pos .fp-pl.neg { color: #ef4444; }
5734
- .fin-pos .fp-close {
5735
- flex: none;
5736
- background: none;
5737
- border: none;
5738
- color: var(--muted);
5739
- font-size: 12px;
5740
- cursor: pointer;
5741
- padding: 2px 5px;
5742
- border-radius: 5px;
5743
- }
5744
- .fin-pos .fp-close:hover { background: rgba(239, 68, 68, 0.15); color: #ef4444; }
5745
- /* bekleyen emir satırı: amber sol şerit ile pozisyondan ayrışır */
5746
- .fin-pos.fin-ord { border-left: 2px solid #f59e0b; }
5747
-
5748
- .fin-sym {
5749
- display: flex;
5750
- align-items: center;
5751
- justify-content: space-between;
5752
- gap: 7px;
5753
- font-size: 11px;
5754
- padding: 4px 6px;
5755
- border-radius: 6px;
5756
- background: var(--panel2);
5757
- border: 1px solid var(--border);
5758
- }
5759
- .fin-sym .fs-name { font-weight: 700; }
5760
- .fin-sym .fs-price { font-variant-numeric: tabular-nums; }
5761
- .fin-sym .fs-up { color: #22c55e; }
5762
- .fin-sym .fs-down { color: #ef4444; }
5763
- .fin-sym .fs-spread { color: var(--muted); font-size: 10px; }
5764
-
5765
- #finLog {
5766
- flex: 1;
5767
- min-height: 0;
5768
- overflow-y: auto;
5769
- font-family: Consolas, monospace;
5770
- font-size: 10.5px;
5771
- line-height: 1.55;
5772
- color: var(--muted);
5773
- white-space: pre-wrap;
5774
- word-break: break-word;
5775
- }
5776
- #finLog .fin-log-new { color: var(--text); }
5777
-
5778
- /* PİYASA başlığındaki sembol ekleme ikonu */
5779
- .fin-card-title button {
5780
- background: none;
5781
- border: none;
5782
- color: var(--muted);
5783
- font-size: 13px;
5784
- line-height: 1;
5785
- cursor: pointer;
5786
- padding: 1px 6px;
5787
- border-radius: 5px;
5788
- }
5789
- .fin-card-title button:hover { background: var(--accent-dim); color: var(--accent); }
5790
- .fin-card-title button.on { background: var(--accent-dim); color: var(--accent); }
5791
-
5792
- /* MT5 sembol seçici modalı */
5793
- .fin-sym-dialog { width: 460px; max-width: calc(100vw - 40px); }
5794
- .fin-sym-count { font-size: 11px; color: var(--muted); margin-left: auto; margin-right: 6px; }
5795
- #finSymSearch {
5796
- width: 100%;
5797
- box-sizing: border-box;
5798
- background: var(--panel2);
5799
- border: 1px solid var(--border);
5800
- color: var(--text);
5801
- font-size: 12px;
5802
- padding: 6px 9px;
5803
- border-radius: 7px;
5804
- margin-bottom: 8px;
5805
- }
5806
- #finSymSearch:focus { border-color: var(--accent); outline: none; }
5807
- .fin-sym-dialog .mini-body {
5808
- flex: 1;
5809
- min-height: 0;
5810
- display: flex;
5811
- flex-direction: column;
5812
- overflow: hidden;
5813
- }
5814
- #finSymPick {
5815
- flex: 1;
5816
- min-height: 0;
5817
- overflow-y: auto;
5818
- display: flex;
5819
- flex-direction: column;
5820
- gap: 3px;
5821
- }
5822
- .fin-sym-row {
5823
- display: flex;
5824
- align-items: center;
5825
- gap: 8px;
5826
- font-size: 12px;
5827
- padding: 5px 8px;
5828
- border-radius: 6px;
5829
- cursor: pointer;
5830
- border: 1px solid transparent;
5831
- }
5832
- .fin-sym-row:hover { background: var(--panel2); }
5833
- .fin-sym-row.on { background: var(--accent-dim); border-color: var(--accent); }
5834
- .fin-sym-row .fsr-check {
5835
- flex: none;
5836
- width: 14px;
5837
- text-align: center;
5838
- color: var(--accent);
5839
- font-weight: 800;
5840
- }
5841
- .fin-sym-row .fsr-name { flex: none; min-width: 84px; font-weight: 700; color: var(--text); }
5842
- .fin-sym-row .fsr-desc {
5843
- flex: 1;
5844
- min-width: 0;
5845
- color: var(--muted);
5846
- white-space: nowrap;
5847
- overflow: hidden;
5848
- text-overflow: ellipsis;
5849
- }
5850
- .fin-sym-hint {
5851
- flex: none;
5852
- margin-top: 8px;
5853
- font-size: 10.5px;
5854
- color: var(--muted);
5855
- text-align: center;
5856
- }
5857
-
5858
- /* ROL → SKILL eşleştirme modalı (TRADE AJANI ⚙) */
5859
- .fin-skills-dialog { width: 540px; max-width: calc(100vw - 40px); }
5860
- .fin-skills-dialog .mini-body {
5861
- flex: 1;
5862
- min-height: 0;
5863
- display: flex;
5864
- flex-direction: column;
5865
- overflow: hidden;
5866
- }
5867
- #finSkillsList {
5868
- flex: 1;
5869
- min-height: 0;
5870
- overflow-y: auto;
5871
- display: flex;
5872
- flex-direction: column;
5873
- gap: 10px;
5874
- }
5875
- .fin-skill-role {
5876
- position: relative;
5877
- border: 1px solid var(--border);
5878
- border-radius: 8px;
5879
- padding: 8px 9px;
5880
- background: var(--panel2);
5881
- }
5882
- .fin-skill-role-head { display: flex; flex-direction: column; gap: 1px; margin-bottom: 7px; }
5883
- .fin-skill-role-head b { font-size: 11.5px; color: var(--text); }
5884
- .fin-skill-role-head span { font-size: 10px; color: var(--muted); }
5885
- .fin-skill-clear {
5886
- position: absolute;
5887
- top: 6px;
5888
- right: 6px;
5889
- background: none;
5890
- border: none;
5891
- color: var(--muted);
5892
- line-height: 0;
5893
- padding: 3px 5px;
5894
- border-radius: 6px;
5895
- cursor: pointer;
5896
- }
5897
- .fin-skill-clear:hover { color: #ef4444; background: var(--accent-dim); }
5898
- .fin-skill-req {
5899
- align-self: flex-start;
5900
- margin-top: 2px;
5901
- font-size: 9.5px;
5902
- font-weight: 800;
5903
- letter-spacing: 0.5px;
5904
- color: var(--muted);
5905
- }
5906
- .fin-skill-chips { display: flex; flex-wrap: wrap; gap: 4px; }
5907
- .fin-skill-chip {
5908
- display: inline-flex;
5909
- align-items: center;
5910
- gap: 4px;
5911
- font-size: 10.5px;
5912
- color: var(--text);
5913
- background: var(--panel);
5914
- border: 1px solid var(--border);
5915
- border-radius: 8px;
5916
- padding: 2px 8px 2px 5px;
5917
- cursor: pointer;
5918
- user-select: none;
5919
- }
5920
- .fin-skill-chip:hover { border-color: var(--accent); }
5921
- .fin-skill-chip.on { border-color: var(--accent); color: var(--accent); background: var(--accent-dim); }
5922
- .fin-skill-chip input { flex: none; width: auto; margin: 0; }
5923
-
5924
- /* MT5 ÖĞRENME HAFIZASI modalı (TRADE AJANI 🧠) */
5925
- .fin-learn-dialog { width: 580px; max-width: calc(100vw - 40px); }
5926
- .fin-learn-dialog .mini-body {
5927
- flex: 1;
5928
- min-height: 0;
5929
- display: flex;
5930
- flex-direction: column;
5931
- overflow: hidden;
5932
- }
5933
- #finLearnList {
5934
- flex: 1;
5935
- min-height: 0;
5936
- overflow-y: auto;
5937
- display: flex;
5938
- flex-direction: column;
5939
- gap: 8px;
5940
- }
5941
- #finLearnClear {
5942
- flex: none;
5943
- border: 1px solid var(--border);
5944
- background: var(--panel2);
5945
- color: var(--muted);
5946
- font-size: 10.5px;
5947
- font-weight: 700;
5948
- border-radius: 7px;
5949
- padding: 4px 8px;
5950
- cursor: pointer;
5951
- margin-right: 6px;
5952
- }
5953
- #finLearnClear:hover { color: #ef4444; border-color: #ef4444; }
5954
- .fin-learn-sym { border: 1px solid var(--border); border-radius: 8px; padding: 7px 9px; background: var(--panel2); }
5955
- .fin-learn-sym-head { display: flex; align-items: center; gap: 7px; cursor: pointer; }
5956
- .fin-learn-sym-head b { flex: none; font-size: 12px; color: var(--accent); }
5957
- .fin-learn-sym-stats {
5958
- flex: 1;
5959
- min-width: 0;
5960
- font-size: 10px;
5961
- color: var(--muted);
5962
- overflow: hidden;
5963
- text-overflow: ellipsis;
5964
- white-space: nowrap;
5965
- }
5966
- .fin-learn-sym-notes { flex: none; font-size: 9.5px; font-weight: 800; letter-spacing: 0.4px; color: var(--muted); }
5967
- .fin-learn-sum-btn {
5968
- flex: none;
5969
- border: 1px solid var(--border);
5970
- background: var(--panel);
5971
- color: var(--muted);
5972
- font-size: 9px;
5973
- font-weight: 800;
5974
- letter-spacing: 0.4px;
5975
- border-radius: 5px;
5976
- padding: 2px 6px;
5977
- cursor: pointer;
5978
- }
5979
- .fin-learn-sum-btn:hover { color: var(--accent); border-color: var(--accent); }
5980
- .fin-learn-sum-btn:disabled { opacity: 0.5; cursor: default; }
5981
- .fin-learn-summary {
5982
- border: 1px solid var(--border);
5983
- border-left: 3px solid var(--accent);
5984
- border-radius: 6px;
5985
- background: var(--panel);
5986
- padding: 6px 8px;
5987
- font-size: 10.5px;
5988
- color: var(--text);
5989
- line-height: 1.45;
5990
- word-break: break-word;
5991
- }
5992
- .fin-learn-summary-at { font-size: 9px; color: var(--muted); margin: 3px 0 2px; }
5993
- .fin-learn-drop,
5994
- .fin-learn-note-del {
5995
- flex: none;
5996
- border: none;
5997
- background: none;
5998
- color: var(--muted);
5999
- line-height: 0;
6000
- padding: 3px 4px;
6001
- border-radius: 6px;
6002
- cursor: pointer;
6003
- }
6004
- .fin-learn-drop:hover,
6005
- .fin-learn-note-del:hover { color: #ef4444; background: var(--accent-dim); }
6006
- .fin-learn-body { margin-top: 6px; border-top: 1px dashed var(--border); padding-top: 6px; }
6007
- .fin-learn-detail-stats { font-size: 10px; color: var(--muted); margin-bottom: 6px; }
6008
- .fin-learn-sec { font-size: 9.5px; font-weight: 800; letter-spacing: 0.5px; color: var(--muted); margin: 6px 0 4px; }
6009
- .fin-learn-note {
6010
- display: flex;
6011
- align-items: flex-start;
6012
- gap: 6px;
6013
- padding: 4px 5px;
6014
- border-radius: 6px;
6015
- background: var(--panel);
6016
- border: 1px solid var(--border);
6017
- margin-bottom: 4px;
6018
- }
6019
- .fin-learn-kind {
6020
- flex: none;
6021
- font-size: 9px;
6022
- font-weight: 800;
6023
- letter-spacing: 0.4px;
6024
- border-radius: 5px;
6025
- padding: 2px 5px;
6026
- border: 1px solid var(--border);
6027
- color: var(--muted);
6028
- text-transform: uppercase;
6029
- }
6030
- .fin-learn-kind.k-pattern { color: #22c55e; border-color: #22c55e; }
6031
- .fin-learn-kind.k-mistake { color: #ef4444; border-color: #ef4444; }
6032
- .fin-learn-kind.k-rule { color: #e6a117; border-color: #e6a117; }
6033
- .fin-learn-note-text { flex: 1; min-width: 0; font-size: 10.5px; color: var(--text); word-break: break-word; }
6034
- .fin-learn-note-at { flex: none; font-size: 9px; color: var(--muted); }
6035
- .fin-learn-trade { font-size: 10px; color: var(--muted); padding: 2px 4px; border-radius: 5px; }
6036
- .fin-learn-trade.win { color: #22c55e; }
6037
- .fin-learn-trade.loss { color: #ef4444; }
6038
-
6039
- /* FINANCE GÖRÜNÜM AYARLARI modalı (başlıktaki ⚙) — isteğe bağlı bölümler */
6040
- .fin-card[hidden] { display: none; }
6041
- .fin-settings-dialog { width: min(440px, 90vw); height: auto; max-height: min(560px, 84vh); }
6042
- .fin-set-hint {
6043
- font-size: 11px;
6044
- color: var(--muted);
6045
- line-height: 1.45;
6046
- margin-bottom: 10px;
6047
- }
6048
- .fin-set-row {
6049
- display: flex;
6050
- align-items: flex-start;
6051
- gap: 9px;
6052
- background: var(--panel);
6053
- border: 1px solid var(--border);
6054
- border-radius: 9px;
6055
- padding: 9px 10px;
6056
- margin-bottom: 6px;
6057
- cursor: pointer;
6058
- user-select: none;
6059
- }
6060
- .fin-set-row:hover { border-color: var(--accent); }
6061
- .fin-set-row.on { border-color: var(--accent); background: var(--accent-dim); }
6062
- .fin-set-row input { flex: none; width: auto; margin: 2px 0 0; accent-color: var(--accent); }
6063
- .fin-set-row .fsr-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
6064
- .fin-set-row .fsr-main b { font-size: 12px; color: var(--text); letter-spacing: 0.4px; }
6065
- .fin-set-row .fsr-main i { font-style: normal; font-size: 10.5px; color: var(--muted); }
6066
- .fin-set-note { margin-top: 8px; font-size: 10.5px; color: var(--muted); line-height: 1.4; }
6067
- .fin-set-sep { height: 1px; margin: 10px 0; background: var(--border); }
6068
- .fin-set-sub {
6069
- display: flex;
6070
- flex-direction: column;
6071
- gap: 6px;
6072
- margin: 2px 0 6px;
6073
- padding: 9px 10px;
6074
- background: var(--panel);
6075
- border: 1px solid var(--border);
6076
- border-radius: 9px;
6077
- }
6078
- .fin-set-sub[hidden] { display: none; }
6079
- .fin-set-lbl { font-size: 10.5px; color: var(--muted); letter-spacing: 0.5px; }
6080
- .fin-th-row { display: flex; align-items: center; gap: 8px; }
6081
- .fin-th-row input[type="time"] { flex: 1; min-width: 0; }
6082
- .fin-dm-tg-state { font-size: 11.5px; color: var(--text); line-height: 1.4; word-break: break-word; }
6083
- .fin-set-btn {
6084
- align-self: flex-start;
6085
- font-size: 10.5px;
6086
- padding: 3px 8px;
6087
- cursor: pointer;
6088
- }