Как вынести часть функций эксперта в DLL?

 

Подскажите пожалуйста как вынести часть функций эксперта в DLL?

Смотрел форум, справку, Sample DLL for MQL4 . Есть ли где то статья на эту тему с примерами? Компилятор C++ Builder 6.

Например функцию:

//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double ma;
   int    res;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- sell conditions
   if(Open[1]>ma && Close[1]<ma)  
     {
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
      return;
     }
//---- buy conditions
   if(Open[1]<ma && Close[1]>ma)  
     {
      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
      return;
     }
//----
  }
//+------------------------------------------------------------------+
 

Посмотрите вот это https://www.mql5.com/ru/forum/105905

А собственно, зачем такие функции выносить в dll? Чем обычная библиотка mq4 не устраивает? Её можно создать средствами MQL4, вынести в неё любые нужные подпрограммы и подключать к любому советнику, индикатору, скрипту.

 
drknn:

Посмотрите вот это https://www.mql5.com/ru/forum/105905

А собственно, зачем такие функции выносить в dll? Чем обычная библиотка mq4 не устраивает? Её можно создать средствами MQL4, вынести в неё любые нужные подпрограммы и подключать к любому советнику, индикатору, скрипту.


DLL декомпилировать сложнее.
 

Не по теме конечно но хочу предупредить что вариант работы "по ценам открытия" у вас реализован неверно.

 if(Volume[0]>1) return;

Данный алгоритм не работает с барами с переходным тиком. Т.е. когда Тик пришел в момент завершения прошлого бара и новый бар сразу имеет объем 1.

Вот так правильно:

if (TimeN == Time[0]) return; else TimeN=Time[0];
 
AM2:

DLL декомпилировать сложнее.

На одном из форумов есть описание процедуры создания трейлингстопа внутри dll. Ссылку на тот форум скинул Вам в личку. Используемый язык - Delphi. Пусть Вас не пугает Delphi - принципы то одни и те же.
 
Хотяяя, вообще знаете - сомнительная это затея. Вряд ли в языке C++ (так же как и в Delphi) есть команда OrderSend. Хотя, чем чёрт не шутит - может там что-то используется позволяющее вводить команды другого языка... Чес слово - я бы не стал так шифроваться :) - dll-ку легко дизассемблировать. Вы конечно, можете сунуть туда шифрование, перемешать код для затруднения понимания его работы, но всё равно, если кто-то захочет вынуть его на свет Божий, то не поможет ни какая защита - будет использовано всё вплоть до создания снимков оперативной памяти. Не тратили бы Вы впустую время.
 
Вот есть тут на форуме статья о защите программного кода. Хорошая статья. Думаю, Вам она поможет как нельзя лучше. https://www.mql5.com/ru/articles/1572#comments
 
drknn:
dll-ку легко дизассемблировать

Я вам длльку, вы мне- исходник на С++, описание логики и инструкцию по использованию- ок?

drknn:
Используемый язык - Delphi. Пусть Вас не пугает Delphi - принципы то одни и те же.
Лично меня делфи не пугает- у меня к нему стойкое отвращение :-)
 
drknn:

На одном из форумов есть описание процедуры создания трейлингстопа внутри dll. Ссылку на тот форум скинул Вам в личку. Используемый язык - Delphi. Пусть Вас не пугает Delphi - принципы то одни и те же.
Delphi, Pascal нормально.
drknn:
Вот есть тут на форуме статья о защите программного кода. Хорошая статья. Думаю, Вам она поможет как нельзя лучше. https://www.mql5.com/ru/articles/1572#comments

Прежде чем вопрос писать посмотрел все что можно было найти. Спасибо.
drknn:
Хотяяя, вообще знаете - сомнительная это затея. Вряд ли в языке C++ (так же как и в Delphi) есть команда OrderSend. Хотя, чем чёрт не шутит - может там что-то используется позволяющее вводить команды другого языка... Чес слово - я бы не стал так шифроваться :) - dll-ку легко дизассемблировать. Вы конечно, можете сунуть туда шифрование, перемешать код для затреднения понимания его работы, но всё равно, если кто-то захочет вынуть его на свет Божий, то не поможет ни какая защита - будет использовано всё вплоть до создания снимков оперативной памяти. Не тратили бы Вы впустую время.
Задумывал изначально только как защиту от новичков.
 
jartmailru:

Я вам длльку, вы мне- исходник на С++, описание логики и инструкцию по использованию- ок?

А разьве я во взломщики набивался? Или мож я где-то сказал, что в С++ шарю? Вы ни чего не попутали, случаем?