¿Cómo codificar? - página 333

 

HI Mladen,

Lo he hecho,

pero cuando se coloca en MT4,

no aparece nada en la subventana,

Por favor, mira este código fuente.

Gracias.

Archivos adjuntos:
 
luffy:
HI Mladen,

Lo he hecho,

pero cuando se coloca en MT4,

no aparece nada en la subventana,

Por favor, mira este código fuente.

Gracias.

luffy

Dos cosas :

1. Añade if (R!=0) antes del S = (Q/ R);

2. Estás recorriendo todas las barras pero tus arrays contienen sólo 14 elementos. Si desea utilizar matrices como búferes (que tienen el mismo número de elementos que hay barras en el gráfico), entonces el tamaño de las matrices debe ser siempre comprobado y redimensionado en consecuencia). Puedes consultar este indicador : https://www.mql5.com/en/forum/174961/page22 (la función iHull()) para ver cómo se deben utilizar los arrays en casos como este

 

Por favor, que alguien haga esto para dibujar líneas en la subventana.

Lo he intentado y todavía no puedo hacer que dibuje las líneas

Por favor, ayuda.

 
luffy:
Por favor, que alguien haga esto para dibujar líneas en la subventana.

Lo he intentado y todavía no puedo hacer que dibuje las líneas

Por favor, ayuda.

luffy

Ya que estás tratando de usar esos arrays como buffers, decláralos en la sección init todos como buffers (ya no hay límite de 8 buffers en el nuevo metatrader 4) y funcionará

Esta es la solución más sencilla.

 

¿Hay alguna forma de restringir el código para que funcione en un solo ordenador?

 
apprentice coder:
¿Hay alguna forma de restringir el código para que funcione en un solo ordenador?

Podría hacerlo limitándose a C: número de serie de la paritición (utilizando la función de la API de Windows GetVolumeInformation())

El formato de la función es el siguiente :

BOOL WINAPI GetVolumeInformation(

_In_opt_ LPCTSTR lpRootPathName,

_Out_opt_ LPTSTR lpVolumeNameBuffer,

_In_ DWORD nVolumeNameSize,

_Out_opt_ LPDWORD lpVolumeSerialNumber,

_Out_opt_ LPDWORD lpMaximumComponentLength,

_Out_opt_ LPDWORD lpFileSystemFlags,

_Out_opt_ LPTSTR lpFileSystemNameBuffer,

_In_ DWORD nFileSystemNameSize

);

Está en kernel32.dll. Pero si el usuario formatea su partición C:, tendrá que actualizar el código también

 
mladen:
Podrías hacerlo limitando a C: el número de serie de la paritición (usando la función de la API de Windows GetVolumeInformation())

El formato de la función es el siguiente :

Está en kernel32.dll. Pero si el usuario formatea su partición C:, tendrás que actualizar el código también

Gracias

Lo intentaré

 
mladen:
Usted podría hacer esto limitando el número de serie de la paritición C: (usando la función API de Windows GetVolumeInformation())

El formato de la función es el siguiente :

Está en kernel32.dll. Pero si el usuario formatea su partición C:, tendrás que actualizar el código también

Desafortunadamente esta función no es suficiente por sí sola. Además puedo ver algunos clientes con idéntico serial de la unidad, la peor situación es con los emuladores de Windows corriendo en Macs y linux, que siempre devuelven cero para este serial. Muchos usuarios los utilizan.

 
Ovo:
Por desgracia, esta función no es suficiente por sí sola. Además puedo ver algunos clientes con idéntica unidad de serie, la peor situación es con los emuladores de Windows que se ejecutan en Macs y linux, que siempre devuelven cero para esta serie. Muchos usuarios los utilizan.

No sabía de los emuladores

Entonces el dongle parece una solución, pero he visto demasiados dongles crackeados, así que ...

 
mladen:
No sabía de emuladores Entonces el dongle parece como una solución, pero he visto a muchos dongles agrietados, así que ...

En realidad hay múltiples emuladores, y sólo algunos de ellos devuelven cero (por ejemplo, wine)

He comprobado mis estadísticas - 290 de 9000 registros de la base de datos de MT4 tenían el serial igual a cero, así que alrededor del 3%. En común los emuladores no implementan las funciones relacionadas con el HW correctamente, y algunas llamadas incluso congelan el Terminal cuando se invoca. Así que no estoy seguro de que el dongle pueda resolverlo de forma fiable. Hasta ahora no he encontrado una solución que funcione en todos los emuladores.