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

 

Помогите с простым вызовом DLL?

Итак, все, что я хочу сделать, это получить MT4 Acc# из dll.

Dll_call запрашивает у Dll_call_include двойное значение"GetAccountNumber()" из Dll_call.dll.

Все просто. ea загружается нормально даже с неправильным Acc# в dll. Mt4 просит использовать dll.

3 файла находятся в правильных 3 папках, dll - это .dll файл (прикреплен как .txt для просмотра кода.

не мог бы кто-нибудь просмотреть код на наличие ошибок?

спасибо

Файлы:
 

Включили ли вы GetAccountNumber в файл .def в скомпилированной dll? Вы должны сделать это, чтобы она работала.

Также убедитесь, что для вашего эксперта выбрана опция Allow Dll imports.

Надеюсь, это поможет.

-wolfe

 

Я немного новичок в C++, поэтому я думаю, что изучу файлы def. Я прочитал, что добавление файла def в папку librarys, где находится DLL, может решить эту проблему, но нет.

Также читал, что добавление DLL в папку system32, все равно не помогло.

Я планирую рассылать этот проект людям по электронной почте, так что лучше не говорить, как разместить 4 разных файла в разных папках. это единственный способ?

правильный ли код в этих 3 файлах?

большое спасибо

 

вот def-файл. все в порядке?

нужно ли его поместить в библиотеку вместе с DLL?

 
jimmynz:
Это файл def. Выглядит нормально? Его нужно положить в библиотеку вместе с DLL?

Файл .def является частью вашего скомпилированного решения на c++. Затем я копирую свою скомпилированную c++ dll в папку system32 в windows. Я использую 32-битную систему с windows xp.

Я не эксперт в c++, но вот как я смог заставить его работать.

 

спасибо за помощь, но все еще нет.

Самое странное, что я пытался сделать советника с обычным кодом для проверки acc #:

int a = 907671;

int b = AccountNumber();

if (b != a) {

Alert("Проверяем номер счета! (" + DoubleToStr(li_16, 0) + ") неверный Acc");

return (0)}

как советник он загружается не зависимо от номера, но если я сделаю его как инди он работает нормально?

ggrrr

 

...

Ваш советник всегда будет загружаться (если в нем нет ошибок кодирования, которые не позволят ему скомпилироваться).

Вы просто должны решить, где вы хотите, чтобы он прекратил выполнять "обычную работу", которую он делает, и предотвратить его от несанкционированного выполнения. Обычно вы помещаете эту процедуру проверки в начало start() - что-то вроде этого:

//+------------------------------------------------------------------+

//| Dll_call.mq4 |

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

static bool alerted = false;

int a = 907671;

int b = AccountNumber();

if (b != a)

{

if (!alerted)

{

Comment("Checking Account No! (" + DoubleToStr(b, 0) + ") wrong Acc");

alerted = true;

}

return (0);

}

//

//

// the part that is not executed when account number is wrong

//

//

alerted = false;

Comment("continuing the rest of the job");

return(0);

}

Но, кроме того, такая проверка взламывается декомпилятором за несколько минут.

PS: заменил Alert() на Comment(), чтобы вы могли проверить это в визуальном бэктесте.

jimmynz:
спасибо за помощь, но все еще нет.

Самое странное, что я попытался сделать советника с обычным кодом для проверки acc #:

int a = 907671;

int b = AccountNumber();

if (b != a) {

Alert("Проверяем номер счета! (" + DoubleToStr(li_16, 0) + ") неверный Acc");

return (0)}

как советник он загружается не зависимо от номера, но если я сделаю его как инди он работает нормально?

ggrrr
 
 
luxinterior:
Итак, ваш великий план состоит в том, чтобы взять два бесплатных советника, которые вы, вероятно, нашли здесь, "слить" их вместе и продать по 2К за штуку? Ну и наглость у тебя, приятель! Может быть, если вам действительно повезет, один из тех двух парней, которые действительно отдали свое время, усилия и знания бесплатно, предложит сделать это для вас.

Но подождите! Если код "испорчен", то советники, скорее всего, являются коммерческими советниками, которые были декомпилированы. Так что ли? Идиот!!!

Lux

О, отличная речь. Позвольте мне сказать вам следующее:

Неважно, на какой советник вы смотрите, скорее всего, найдется кто-то с такой же идеей, уже сделавший советник. Бесплатный советник? Вы издеваетесь? Какой советник прямо на этом форуме имеет такой потенциал?

Кроме того, многие люди, называющие себя разработчиками, также копируют других, продавая за $3000 клубные подписки. И что самое худшее, с советниками, которые уничтожат ваши счета. .... ZERO

Также, я никогда не брал советников отсюда. Какой советник стоит слить на этом форуме? Также, если код не работает, это может быть я попросил программистов написать советника. Затем, когда требуется больше функций, я прошу разных программистов... ПОМОЧЬ!

Разные стили кодирования могут со временем испортить код.

Кроме того, я не декомпилировал ни одного коммерческого советника. Причина, по которой вы сказали, что я это делаю, заключается в том, что вы делаете это сами. Я не знаю, какой беспорядок вызовет декомпилятор. Но если вы так уверены, что декомпилятор может вызвать беспорядок, то вы, вероятно, использовали его. Иначе вы бы никогда не узнали.

Один совет, прежде чем называть других идиотами или пытаться изображать из себя полицейского/героя, спасающего положение, сначала оцените себя. Если нет, то эти слова, исходящие из ваших уст, могут заставить вас проглотить их обратно.

Спасибо.

 

Помощь в отношении iMAOnArray()

Здравствуйте,

Я новичок в MT4... Я отчаянно пытался включить следующий кусок кода в эксперта, но не смог этого сделать

" iMAOnArray(ind_buffer1,Bars,SignalEMA,0,MODE_EMA,i); "

Да, я знаю, что вышеописанное не может быть использовано непосредственно в эксперте, но возможно ли достичь тех же результатов, перекодировав вышеуказанную MA? Если да, то я был бы очень признателен за помощь в этом вопросе.

С уважением.