JsonParserByLeo/Test/Ben/BenClaude.mq5
Nique_372 a82481d7fb
2026-08-28 11:16:09 -05:00

207 lines
7.9 KiB
MQL5

//+------------------------------------------------------------------+
//| BenAi.mq5 |
//| Copyright 2026, Niquel Mendoza. |
//| https://www.mql5.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, Niquel Mendoza."
#property link "https://www.mql5.com/"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//#define JSONBENCH_RUN_PARSE
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#include "Def.mqh"
#include "..\\Other\\ClaudeJson.mqh"
#define LIBNAME "ClaudeFableJson-3+Pass"
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
// Notas
// Creo que ninguna la ia aqui de claude trabajo bien
// Experiencia de desaroolo
/*
Desde mi punto de vista sincamtne creo qeu es quizas de los mejores modelos en MQL5.. que uno pueda
usar ahora mismo en 2026...
Pero ciertamente si compras la experiendcia de desarollo con CPP se nota que el modelo sabe "menos trucos"
o csas mas espcificas de mql5 o del lengauje... o como hace "x" cosa de la forma mas eficnte mql5
adpatanocos a sus limitaciones.. si no qeu es "mas general" con soluciones "mas generales" pese a que le digas
que optimize.... aparte note qeu al no haber mucho contenido con el cual se hayan entrneando y lamaotira de dicho
contenido con el qeu se entrenaon no es de buena calidad (si lo comparasmo con libs serias de json)
etnoces claude por lo visto tiene a aplicar una idea "general" de como hacer un json json en mq5 de forma rapida
como los concpetos "generales" o basicos dado qeu como no hay una lib "#fast" con la que se haya entrenado entonces eso
Creo qeu esuna limtacion de todos estos modelo sLLm en mql5 y no los culp el lengauje es hostil...
y nicho.. asi que si compras su rencimient con cpp y mql5 veras que en mql5 cualqiue ia rinde peor
se equivoca, o hace las coas "bien" pero mejorables siempre.. .. osea en reumen que en mql5 tiene a ser muy general
y no sabe mucho otpimzar en mql5 solo aplica lo "general" en camibo en cpp\web ahi si...
Ahora sobre su json lo estuve viendo y esta iben sinamtne buen maneja o de rreos etc...
sincmnte podria tirarmen aqui una hora quizas viendo cada punto y que se peude merjoar
pro qeu a simpel vista hay muchas cosas uqe se peuden mejorar... por esjemplo el tape.. y asi un monton..
*/
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
CJson json;
//--- Parseo
#ifdef JSONBENCH_RUN_PARSE
StringToCharArray(g_json_data, json.Buffer);
//Sleep(10);
ulong a = GetMicrosecondCount();
for(int i = 0; i < JSONBENCH_TOTAL_ITER_PARSE; i++)
{
json.Parse();
}
ulong b = GetMicrosecondCount();
//Sleep(250);
Print("@", (b - a));
//---
#else // JSONBENCH_RUN_PARSE
//--- previa
json.ParseText(g_json_test_access);
JsonNode root = json.Root();
//---
string keys[];
JsonNode wide_object = root["wide_object"];
const int n = wide_object.Count();
ArrayResize(keys, n);
for(int i = 0; i < n; i++)
{
keys[i] = json.NodeKey(wide_object[i].m_idx);
}
//-- Random
Xoshiro256 xo;
xo.Seed(JSONBENCH_ACCESO_XHOR_SEED);
// init
double sump = 0.0, profit = 0.0;
long tin = 0;
//--
ulong a = GetMicrosecondCount();
for(int i = 0; i < JSONBENCH_TOTAL_ITER_ACCESO; i++)
{
const string key = keys[xo.RandomInteger(0, n)];
root["wide_object"][key];
}
ulong b = GetMicrosecondCount();
Sleep(100);
JSONBENCH_ACCES_CALL(JSONBENCH_TAGOP_ACCESO_WIDE)
a = GetMicrosecondCount();
for(int i = 0; i < JSONBENCH_TOTAL_ITER_ACCESO; i++)
{
root["deep_object"]["l1"]["l2"]["l3"]["l4"]["l5"]["l6"]["l7"]["l8"]["l9"]["l10"]["target"].ToString();
}
b = GetMicrosecondCount();
Sleep(100);
JSONBENCH_ACCES_CALL(JSONBENCH_TAGOP_ACCESO_DEEP)
a = GetMicrosecondCount();
for(int i = 0; i < JSONBENCH_TOTAL_ITER_ACCESO; i++)
{
const int index = xo.RandomInteger(0, 10000);
tin += root["large_array"].At(index).ToInteger(0);
}
b = GetMicrosecondCount();
Sleep(100);
JSONBENCH_ACCES_CALL(JSONBENCH_TAGOP_ACCESO_LARGE_ARR)
a = GetMicrosecondCount();
for(int k = 0; k < 500; k++)
{
sump += root["array_of_objects"].At(k)["price"].ToDouble(0.0);
profit += root["array_of_objects"].At(k)["profit"].ToDouble(0.0);
tin += root["array_of_objects"].At(k)["tags"].Size();
}
b = GetMicrosecondCount();
Sleep(100);
JSONBENCH_ACCES_CALL(JSONBENCH_TAGOP_ACCESO_MIX)
//----
PrintFormat("sump=%.2f profit=%.2f tin=%d ", sump, profit, tin);
//---
JSONBENCH_FINISH
#endif // JSONBENCH_RUN_PARSE
//--
}
//+------------------------------------------------------------------+
/*
2026.08.28 11:07:00.408 BenClaude (EURUSD,H1) @1171187
2026.08.28 11:07:02.956 BenClaude (EURUSD,H1) @1114912
2026.08.28 11:07:08.898 BenClaude (EURUSD,H1) @1142771
2026.08.28 11:07:14.821 BenClaude (EURUSD,H1) @1114773
2026.08.28 11:12:40.643 BenClaude (EURUSD,H1) [acceso-wide] Time: 305
2026.08.28 11:12:40.752 BenClaude (EURUSD,H1) [acceso-deep] Time: 996
2026.08.28 11:12:40.880 BenClaude (EURUSD,H1) [acceso-array-large] Time: 10482
2026.08.28 11:12:40.991 BenClaude (EURUSD,H1) [acceso-mixed-trading] Time: 444
2026.08.28 11:12:40.991 BenClaude (EURUSD,H1) sump=537.48 profit=-337.50 tin=4925578
2026.08.28 11:12:44.441 BenClaude (EURUSD,H1) [acceso-wide] Time: 307
2026.08.28 11:12:44.553 BenClaude (EURUSD,H1) [acceso-deep] Time: 922
2026.08.28 11:12:44.679 BenClaude (EURUSD,H1) [acceso-array-large] Time: 14111
2026.08.28 11:12:44.791 BenClaude (EURUSD,H1) [acceso-mixed-trading] Time: 381
2026.08.28 11:12:44.791 BenClaude (EURUSD,H1) sump=537.48 profit=-337.50 tin=4925578
2026.08.28 11:12:47.086 BenClaude (EURUSD,H1) [acceso-wide] Time: 305
2026.08.28 11:12:47.198 BenClaude (EURUSD,H1) [acceso-deep] Time: 1200
2026.08.28 11:12:47.311 BenClaude (EURUSD,H1) [acceso-array-large] Time: 9738
2026.08.28 11:12:47.421 BenClaude (EURUSD,H1) [acceso-mixed-trading] Time: 377
2026.08.28 11:12:47.421 BenClaude (EURUSD,H1) sump=537.48 profit=-337.50 tin=4925578
2026.08.28 11:12:55.116 BenClaude (EURUSD,H1) [acceso-wide] Time: 306
2026.08.28 11:12:55.227 BenClaude (EURUSD,H1) [acceso-deep] Time: 898
2026.08.28 11:12:55.354 BenClaude (EURUSD,H1) [acceso-array-large] Time: 14187
2026.08.28 11:12:55.464 BenClaude (EURUSD,H1) [acceso-mixed-trading] Time: 352
2026.08.28 11:12:55.464 BenClaude (EURUSD,H1) sump=537.48 profit=-337.50 tin=4925578
2026.08.28 11:12:57.902 BenClaude (EURUSD,H1) [acceso-wide] Time: 301
2026.08.28 11:12:58.013 BenClaude (EURUSD,H1) [acceso-deep] Time: 1018
2026.08.28 11:12:58.123 BenClaude (EURUSD,H1) [acceso-array-large] Time: 10154
2026.08.28 11:12:58.234 BenClaude (EURUSD,H1) [acceso-mixed-trading] Time: 525
2026.08.28 11:12:58.234 BenClaude (EURUSD,H1) sump=537.48 profit=-337.50 tin=4925578
2026.08.28 11:13:00.573 BenClaude (EURUSD,H1) [acceso-wide] Time: 302
2026.08.28 11:13:00.684 BenClaude (EURUSD,H1) [acceso-deep] Time: 932
2026.08.28 11:13:00.794 BenClaude (EURUSD,H1) [acceso-array-large] Time: 9789
2026.08.28 11:13:00.905 BenClaude (EURUSD,H1) [acceso-mixed-trading] Time: 413
2026.08.28 11:13:00.905 BenClaude (EURUSD,H1) sump=537.48 profit=-337.50 tin=4925578
*/
//+------------------------------------------------------------------+