Librerías: TradeTransactions - página 6

 
Saludos a todos, llegué aquí por una nota al pie del tema "Errores típicos y formas de eliminarlos cuando se trabaja con el entorno comercial".

Me gustaría utilizar la biblioteca y el enfoque para calcular "mis" posiciones después de enviar órdenes de mercado enviadas de forma asíncrona.
La mayoría de los ejemplos y discusiones no tienen en cuenta la situación cuando el trading tiene lugar en cuentas donde otros Asesores Expertos trabajan en paralelo, y en consecuencia todos los Eventos y resultados OnTradeTransaction son comunes.
¿Funcionará esta lógica en cuentas HEDGING con otros EAs. En particular, ¿si los expertos operarán en el mismo instrumento, pero con su propio mago?
¿Funcionará esta biblioteca con un Asesor Experto multidivisa que abra operaciones en instrumentos diferentes del establecido?
 
Sergey Genikhov:
¿Funcionará esta biblioteca con un Asesor Experto multidivisa que abra operaciones en instrumentos diferentes del establecido?

Sí, funcionará.

 
Recordadme, por favor, creo que ya corregí un error similar, pero me lo he vuelto a encontrar y he perdido un montón de horas. Parece que en Convert.mqh se reduce el tamaño del array destino. Necesitaba meter el array uchar[39] en el recurso, pero en la función ArrayToStruct el receptor de tipo uint[] se empecina en considerar que es de tamaño 9, es decir, faltan los 3 últimos caracteres.
 
Stanislav Korotky:
Recordadme, por favor, creo que ya corregí un error similar, pero me lo he vuelto a encontrar y he perdido un montón de horas. Parece que en Convert.mqh se reduce el tamaño del array destino. Necesitaba poner el array uchar[39] en el recurso, pero la función ArrayToStruct considera persistentemente que el receptor de tipo uint[] es de tamaño 9, es decir, faltan los 3 últimos caracteres.

Sí, se corta. Prueba esto

    const int SizeTarget = ::ArrayResize(Dst_Array, SizeSource * sizeof(SOURCE) / sizeof(TARGET) +
                                                    (bool)(SizeSource * sizeof(SOURCE) % sizeof(TARGET)));
 

Según las recomendaciones de MQ, en el fichero ResourceData, en el método GetFullName se debería utilizar la constante TERMINAL_DATA_PATH en lugar de TERMINAL_PATH.

Ambas rutas son las mismas para mí, a pesar de que el terminal se lanza sin modo portable (aparentemente porque UAC está desactivado y tengo permisos de escritura en Archivos de Programa). Pero si te conectas vía RDP, todas las fuentes se toman de Roaming. Muchos usuarios probablemente tienen todas las fuentes en TERMINAL_DATA_PATH (diferente de TERMINAL_PATH) por defecto.

 
Stanislav Korotky:

Según las recomendaciones de MQ, en el archivo ResourceData, el método GetFullName debería utilizar la constante TERMINAL_DATA_PATH en lugar de TERMINAL_PATH.

Supongo que sí. Yo uso portable, así que no presté atención. Estos códigos los usan las unidades. Como tú, los usuarios hace tiempo que corrigieron las rutas a las correctas.

Es difícil hacer soporte KB, la lista de trabajo se ha vuelto gruesa.

 
fxsaber:

Sí, está recortado. Prueba esto.

Hice la alineación (adición) por 4 bytes en mi código de llamada, y no edité Convert.mqh - después de todo, se toma de su carpeta include y puede ser sobrescrito, por lo que es mejor corregirlo en la KB (por cierto, no entendí muy bien cuál es el proyecto principal para los archivos de cabecera Convert.mqh, Resource.mqh y ResourceData.mqh - tal vez estoy escribiendo en el lugar equivocado).

 
Stanislav Korotky:

Hice la alineación (adición) por 4 bytes en mi código de llamada, y no edité Convert.mqh - después de todo, se toma de su carpeta de inclusión y puede ser sobrescrito, por lo que es mejor corregirlo en la KB (por cierto, no entendí realmente qué proyecto es el principal para los archivos de cabecera Convert.mqh, Resource.mqh y ResourceData.mqh - tal vez estoy escribiendo en el lugar equivocado).

TradeTransactions no se utiliza.


HistoryTicks - No puedo imaginarme operar en MT4 sin él. Probablemente, debería ser considerado como el principal. Pero no puedo actualizarlo en KB.

Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading

Bibliotecas: HistoryTicks

fxsaber, 2020.01.09 14:43

No se dio cuenta de que la versión en KB es viejo. Desafortunadamente, no hay manera de actualizar. El autómata de KB da esto
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(110,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(172,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(110,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(172,14) : error 165: 'ArrayResize_Real' - function already defined and has body
En ME todo compila sin errores.


En HistoryTicks la responsabilidad es órdenes de magnitud mayor ya que es real. En la práctica se ha solucionado.

 
fxsaber:

解决该错误,用 随附的 替换 Include \ fxsaber \ TradeTransactions \ Convert.mqh

const RESOURCEDATA<double>ResourceDouble("::Double_"+__FILE__);

const RESOURCEDATA<datetime>ResourceTime("::Time_"+__FILE__);

const RESOURCEDATA<string>ResourceString("::String_"+__FILE__);


'Data' - struct undefined Convert.mqh 85 49

en la plantilla 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' especificada con [SOURCE=uint,TARGET=datetime] Convert.mqh 70 14
'Data' - struct undefined Convert.mqh 43 38
en la plantilla 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' especificada con [SOURCE=datetime,TARGET=uint] Convert.mqh 29 14
string no puede usarse como miembro de la unión Convert.mqh 11 12
en la plantilla 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' especificada con [SOURCE=uint,TARGET=string] Convert.mqh 70 14
'Data' - struct undefined Convert.mqh 85 49
en la plantilla 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' especificada con [SOURCE=uint,TARGET=string] Convert.mqh 70 14
string no puede usarse como miembro de la unión Convert.mqh 13 12
en la plantilla 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' especificada con [SOURCE=uint,TARGET=string] Convert.mqh 29 14
string no puede usarse como miembro de la unión Convert.mqh 13 12
en la plantilla 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' especificada con [SOURCE=uint,TARGET=string] Convert.mqh 29 14
string no puede usarse como miembro de la unión Convert.mqh 13 12
en la plantilla 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' especificada con [SOURCE=string,TARGET=uint] Convert.mqh 70 14
'Data' - struct undefined Convert.mqh 43 38
en la plantilla 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' especificada con [SOURCE=string,TARGET=uint] Convert.mqh 29 14



¿No funciona en MT4 build 1320?


 
roaddust:

¿No funciona en MT4 build 1320?

Pruebe esto.