Как кодировать? - страница 333

 

Привет, Младен,

Я сделал это,

но при размещении в MT4,

в подокне ничего не появляется,

Пожалуйста, посмотрите этот исходный код.

Спасибо.

Файлы:
 
luffy:
Привет, Младен,

Я сделал это,

но при размещении в MT4,

в подокне ничего не появляется,

Пожалуйста, посмотрите этот исходный код.

Спасибо.

luffy

Две вещи :

1. Добавьте if (R!=0) перед S = (Q/ R);

2. Вы перебираете все бары, но ваши массивы содержат всего 14 элементов. Если вы хотите использовать массивы как буферы (имеющие столько же элементов, сколько баров на графике), то размер массивов должен всегда проверяться и изменяться соответственно). Вы можете посмотреть этот индикатор: https: //www.mql5.com/en/forum/174961/page22 (функция iHull()), чтобы увидеть, как нужно использовать массивы в подобных случаях.

 

Пожалуйста, кто-нибудь, сделайте так, чтобы он рисовал линии в подокне.

Я пробовал и все равно не могу заставить его рисовать линии.

Пожалуйста, помогите.

 
luffy:
Пожалуйста, кто-нибудь, сделайте это, чтобы рисовать линии в подокне.

Я пробовал и все равно не могу заставить его рисовать линии.

Пожалуйста, помогите.

luffy

Поскольку вы пытаетесь использовать эти массивы как буферы, объявите их в секции init все как буферы (в новом metatrader 4 больше нет ограничения на 8 буферов) и все заработает.

Это, безусловно, самое простое решение.

 

Есть ли способ ограничить работу кода только на одном компьютере?

 
apprentice coder:
Есть ли способ, как я могу ограничить код для работы только на одном компьютере?

Это можно сделать, ограничившись серийным номером раздела C: (используя функцию API windows GetVolumeInformation()).

Формат функции следующий :

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

);

Она находится в kernel32.dll. Но если пользователь отформатирует свой раздел C:, вам придется обновить и этот код.

 
mladen:
Вы можете сделать это, ограничившись серийным номером C: paritition (используя функцию API windows GetVolumeInformation())

Формат функции следующий :

Она находится в kernel32.dll. Но если пользователь отформатирует свой раздел C:, вам придется обновить код.

Спасибо

Попробую.

 
mladen:
Вы можете сделать это, ограничившись серийным номером раздела C: (используя функцию API windows GetVolumeInformation()).

Формат функции следующий:

Она находится в kernel32.dll. Но если пользователь отформатирует свой раздел C:, вам придется обновить и этот код.

К сожалению, одной этой функции недостаточно. Кроме того, я вижу несколько клиентов с одинаковыми серийниками дисков, хуже всего обстоят дела с эмуляторами Windows, работающими на Mac и linux, которые всегда возвращают ноль для этого серийника. Многие пользователи используют их.

 
Ovo:
К сожалению, одной этой функции недостаточно. Кроме того, я вижу несколько клиентов с одинаковыми серийными номерами дисков, но хуже всего обстоят дела с эмуляторами Windows, работающими на Mac и linux, которые всегда возвращают ноль для этого серийного номера. Многие пользователи используют их.

Не знал об эмуляторах.

Тогда донгл кажется решением, но я видел много взломанных донглов, так что ...

 
mladen:
Не знал об эмуляторах Тогда донгл кажется решением, но я видел много взломанных донглов, так что ...

На самом деле существует несколько эмуляторов, и только некоторые из них возвращают ноль (например, wine).

Я проверил свою статистику - у 290 из 9000 регистраций в базе данных MT4 серийник был равен нулю, то есть около 3%. Обычно эмуляторы не реализуют функции, связанные с HW, правильно, а некоторые вызовы даже замораживают терминал при вызове. Так что не уверен, что донгл может надежно решить эту проблему. Пока что я не нашел решения, которое работало бы на всех эмуляторах.