beast-agent 2.63.0 → 2.63.1
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.
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
ÇOKLU PERİYOT: timeframes:["M1","M15"] (2-3 adet) verilirse her periyot ayrı
|
|
15
15
|
çekilir ve TEK PNG'de birleştirilir (layout:"h" soldan sağa — varsayılan,
|
|
16
|
-
"v" üstten alta). Panellerin
|
|
16
|
+
"v" üstten alta). Panellerin SOL ÜSTüne "SEMBOL · PERİYOT" etiketi çizilir;
|
|
17
17
|
sonuçta panels[{symbol, timeframe, position, path}] hangi tarafın hangi
|
|
18
18
|
sembol/periyot olduğunu söyler. tf2:"M15" kısayolu da (timeframe + tf2) kabul edilir.
|
|
19
19
|
|
|
@@ -324,7 +324,7 @@ function embedData(src, size) {
|
|
|
324
324
|
}
|
|
325
325
|
|
|
326
326
|
/* ---- ÇOKLU KARE: plan (sembol × periyot) sırayla çekilir ve TEK PNG'de
|
|
327
|
-
birleştirilir — kilit zaten alınmış (ack çakışması yok); her panelin
|
|
327
|
+
birleştirilir — kilit zaten alınmış (ack çakışması yok); her panelin SOL
|
|
328
328
|
ÜSTüne "SEMBOL · PERİYOT" etiketi çizilir; soldan sağa (layout:"v" ile
|
|
329
329
|
üstten alta). plan: [{symbol, timeframe}] — boş alan = aktif grafik. */
|
|
330
330
|
async function runPanels(plan, filesDir, cmdFile, ackFile, beatFile, timeoutSec, diag) {
|
|
@@ -97,8 +97,9 @@ async function compose(panels, opts) {
|
|
|
97
97
|
if (layout === 'h') ctx.fillRect(x - GAP, 0, GAP, H);
|
|
98
98
|
else ctx.fillRect(0, y - GAP, W, GAP);
|
|
99
99
|
}
|
|
100
|
-
/* etiket:
|
|
101
|
-
görsel ajan hangi panelin hangi periyot olduğunu bakışta okur
|
|
100
|
+
/* etiket: SOL ÜST köşede BÜYÜK zaman dilimi (üstünde küçük sembol) —
|
|
101
|
+
görsel ajan hangi panelin hangi periyot olduğunu bakışta okur;
|
|
102
|
+
son mumlar sağda olduğundan etiket oraya konmaz (mumları kapatıyordu) */
|
|
102
103
|
if (p.label) {
|
|
103
104
|
try {
|
|
104
105
|
const parts = String(p.label).split('·').map((s) => s.trim()).filter(Boolean);
|
|
@@ -110,14 +111,14 @@ async function compose(panels, opts) {
|
|
|
110
111
|
const padY = Math.round(fsTf * 0.42);
|
|
111
112
|
const lineGap = Math.round(fsSym * 0.45);
|
|
112
113
|
ctx.textBaseline = 'middle';
|
|
113
|
-
ctx.textAlign = '
|
|
114
|
+
ctx.textAlign = 'left';
|
|
114
115
|
ctx.font = pickFont(fsTf);
|
|
115
116
|
const tw = ctx.measureText(tf).width;
|
|
116
117
|
ctx.font = pickFont(fsSym);
|
|
117
118
|
const sw = sym ? ctx.measureText(sym).width : 0;
|
|
118
119
|
const boxW = Math.ceil(Math.max(tw, sw) + padX * 2);
|
|
119
120
|
const boxH = Math.ceil(padY * 2 + fsTf + (sym ? fsSym + lineGap : 0));
|
|
120
|
-
const bx = x +
|
|
121
|
+
const bx = x + 10;
|
|
121
122
|
const by = y + 10;
|
|
122
123
|
ctx.fillStyle = 'rgba(0,0,0,0.80)';
|
|
123
124
|
ctx.fillRect(bx, by, boxW, boxH);
|
|
@@ -126,11 +127,11 @@ async function compose(panels, opts) {
|
|
|
126
127
|
if (sym) {
|
|
127
128
|
ctx.font = pickFont(fsSym);
|
|
128
129
|
ctx.fillStyle = '#c9d2d9';
|
|
129
|
-
ctx.fillText(sym, bx +
|
|
130
|
+
ctx.fillText(sym, bx + padX, by + padY + fsSym / 2);
|
|
130
131
|
}
|
|
131
132
|
ctx.font = pickFont(fsTf);
|
|
132
133
|
ctx.fillStyle = '#00e676';
|
|
133
|
-
ctx.fillText(tf, bx +
|
|
134
|
+
ctx.fillText(tf, bx + padX, by + padY + (sym ? fsSym + lineGap : 0) + fsTf / 2);
|
|
134
135
|
ctx.textAlign = 'start';
|
|
135
136
|
} catch (e) {}
|
|
136
137
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mt5_shot",
|
|
3
|
-
"defaultsVersion":
|
|
4
|
-
"description": "MT5 grafiğinin GERÇEK ekran görüntüsünü alır ve GÖRSELİ ÇAĞIRAN AJANA GÖSTERİR: MT5\\MQL5\\Files\\beast_cmd.json üzerinden BeastFinance EA'ya 'shot' komutu yazar, EA ChartScreenShot ile PNG üretir; PNG hem tool klasörüne hem <kullanıcı>\\beast_shots altına kopyalanır (dönen path send_file'a verilebilir) hem de data URL olarak sonuca gömülür — engine bunu sonraki turda ajana görsel olarak enjekte eder (embed:false kapatır). ÇOKLU SEMBOL: symbols:[\"GOLD\",\"EURUSD\",\"BTCUSD\"] (2-4 sembol) verirsen her sembolden bir kare çekilip TEK PNG'de birleştirilir (izleme listesinin tamamı TEK görselle gönderilir); timeframes ile birlikte verilirse sembol × periyot ızgarası kurulur (en fazla 6 kare). ÇOKLU ZAMAN DİLİMİ: timeframes:[\"M1\",\"M15\"] verirsen aynı sembolün periyotları SIRAYLA çekilip TEK PNG'de birleştirilir (layout:\"h\" soldan sağa — varsayılan; \"v\" üstten alta; 2-3 periyot) ve her panelin
|
|
3
|
+
"defaultsVersion": 7,
|
|
4
|
+
"description": "MT5 grafiğinin GERÇEK ekran görüntüsünü alır ve GÖRSELİ ÇAĞIRAN AJANA GÖSTERİR: MT5\\MQL5\\Files\\beast_cmd.json üzerinden BeastFinance EA'ya 'shot' komutu yazar, EA ChartScreenShot ile PNG üretir; PNG hem tool klasörüne hem <kullanıcı>\\beast_shots altına kopyalanır (dönen path send_file'a verilebilir) hem de data URL olarak sonuca gömülür — engine bunu sonraki turda ajana görsel olarak enjekte eder (embed:false kapatır). ÇOKLU SEMBOL: symbols:[\"GOLD\",\"EURUSD\",\"BTCUSD\"] (2-4 sembol) verirsen her sembolden bir kare çekilip TEK PNG'de birleştirilir (izleme listesinin tamamı TEK görselle gönderilir); timeframes ile birlikte verilirse sembol × periyot ızgarası kurulur (en fazla 6 kare). ÇOKLU ZAMAN DİLİMİ: timeframes:[\"M1\",\"M15\"] verirsen aynı sembolün periyotları SIRAYLA çekilip TEK PNG'de birleştirilir (layout:\"h\" soldan sağa — varsayılan; \"v\" üstten alta; 2-3 periyot) ve her panelin SOL ÜST köşesine BÜYÜK periyot etiketi (üstünde küçük sembol) çizilir — solda/sağda hangi sembol/periyot olduğu görüntüden bakışta okunur; etiket son mumları örtmez. Aktif grafik istenen sembol/periyot ile aynıysa ondan çekilir (Beast panosu + seviye çizgileri görünür), değilse EA geçici grafik açar (ChartOpen/ChartSetSymbolPeriod + BeastShot.tpl açık tema); çoklu sembolde her sembol için sırayla. Çekim öncesi grafiğe sağ boşluk payı (chart shift %12) uygulanır — SON MUM sağ kenara yapışmaz; aktif grafikte önceki ayar çekimden sonra geri yazılır. Komut id/ts ile yazılır, ack poll edilir ve PNG MQL5\\Files'ta belirene kadar beklenir; hata halinde gövde şu kodu taşır: err = no_terminal|ea_offline|cmd_write_fail|ea_no_ack|ea_error|png_yok|timeout|stitch_fail (+ cmdId, filesDir, diagnostic, ping). Grafik analizi/raporu ve ekip paylaşımı için birincil screenshot aracıdır.",
|
|
5
5
|
"parameters": {
|
|
6
6
|
"type": "object",
|
|
7
7
|
"properties": {
|