Ограничение работы индикатора/советника - страница 5

 

...

// code fragment 1 //****************************************************************************// // METATRADER 5 : INDICATOR // //============================================================================// // MAIN : DATA SET 2 : REDEFINITIONS //< > //------------------------------------------------------------------------//<--> bool Y = true ; //< 1> bool N = false ; //< 2> //< 3> #define X const long &L , const double &D , const string &S //< 4> //< 5> //< 6> //< 7> //< 8> //< 9> //<10> //<11> //<12> //<13> //<14> //<15> //<16> //<17> //============================================================================// // 2022-05-11 21:45 // //****************************************************************************// ... // code fragment 2 //****************************************************************************// // METATRADER 5 : INDICATOR // //============================================================================// // MAIN : FUNCTIONS SET 1 //< > //------------------------------------------------------------------------//<--> // RUN ONCE //< 1> void OnInit () { AIS_CORE_RUN_FIRST () ; } //< 2> void OnDeinit ( const int C ) { AIS_CORE_RUN_FINAL () ; } //< 3> // RUN ONCE //< 4> //< 5> // RUN MAIN //< 6> void OnChartEvent ( const int I , X ) { AIS_CORE_RUN ( I ) ; } //< 7> void OnTimer () { AIS_CORE_RUN ( ) ; } //< 8> // RUN MAIN //< 9> //<10> //<11> //<12> // UNUSED //////////////////////////////////////////////////////////////////<13> int OnCalculate (const int Q ,const int P ,const datetime &T[],//<14> const double &O[],const double &H[],const double &L[],const double &C[],//<15> const long &V[],const long &R[],const int &S[]) {return NULL;}//<16> // UNUSED //////////////////////////////////////////////////////////////////<17> //============================================================================// // 2022-05-09 02:22 // //****************************************************************************// ... // code fragment 3 //****************************************************************************// // METATRADER 5 : INDICATOR // //============================================================================// // CORE : INTERFACE 1 //< > //------------------------------------------------------------------------//<--> void AIS_CORE_RUN_FIRST () { //< 1> //< 2> //< 3> AIS_CONTROL_RUN_FIRST () ; //< 4> //< 5> AIS_SPECIAL_RUN_FIRST () ; //< 6> //< 7> //< 8> CHECK_EXPIRY_TIME () ; //< 9> //<10> //<11> //<12> //<13> //<14> //<15> //<16> } //<17> //============================================================================// // 2022-05-10 20:42 // //****************************************************************************// ... // code fragment 4 //****************************************************************************// // METATRADER 5 : INDICATOR // //============================================================================// // CONTROL : INTERFACE 3 //< > //------------------------------------------------------------------------//<--> void AIS_CONTROL_RUN ( int EVENT_ID ) { //< 1> //< 2> FLAGS_SET ( EVENT_ID ) ; //< 3> //< 4> //< 5> //< 6> //< 7> if ( FLAG_NEW_BAR_M1 ) CHECK_EXPIRY_TIME () ; //< 8> //< 9> //<10> //<11> //<12> //<13> //<14> //<15> //<16> } //<17> //============================================================================// // 2022-07-10 02:35 // //****************************************************************************// ... // code fragment 5 //****************************************************************************// // METATRADER 5 : INDICATOR // //============================================================================// // CONTROL : FUNCTION 1 //< > //------------------------------------------------------------------------//<--> void FLAGS_SET ( int EVENT_ID ) { //< 1> //< 2> //< 3> FLAG_CHART_CHANGED = ( EVENT_ID==CHARTEVENT_CHART_CHANGE ? Y:N ); //< 4> //< 5> FLAG_NEW_BAR_M1 = ( NEW_BAR_M1 () == true ? Y:N ); //< 6> //< 7> //< 8> //< 9> //<10> //<11> //<12> //<13> //<14> //<15> //<16> } //<17> //============================================================================// // 2022-06-18 05:07 // //****************************************************************************// ... // code fragment 6 //****************************************************************************// // METATRADER 5 : INDICATOR // //============================================================================// // CONTROL : FUNCTION 2 //< > //------------------------------------------------------------------------//<--> bool NEW_BAR_M1 () { //< 1> //< 2> static TIME TIME_M1_LAST = NULL ; //< 3> TIME TIME_M1_THIS = iTime ( SYMBOL , PERIOD_M1 , 0 ) ; //< 4> //< 5> if ( TIME_M1_LAST < TIME_M1_THIS ) //< 6> { //< 7> TIME_M1_LAST = TIME_M1_THIS ; //< 8> //< 9> return true ; //<10> } //<11> else return false ; //<12> //<13> //<14> //<15> //<16> } //<17> //============================================================================// // 2022-06-12 20:00 // //****************************************************************************// ... // code fragment 7 //****************************************************************************// // METATRADER 5 : INDICATOR // //============================================================================// // PROTECTION MODULE : INTERFACE //< > //------------------------------------------------------------------------//<--> void CHECK_EXPIRY_TIME () { //< 1> //< 2> datetime DATE_OF_RELEASE = __DATE__ ; //< 3> int DAYS_OF_WORK = 2 ; //< 4> datetime DATE_OF_EXPIRY = DATE_OF_RELEASE //< 5> + DAYS_OF_WORK * DAY_86400_SECONDS ; //< 6> bool TESTER = MQLInfoInteger ( MQL_TESTER ) ; //< 7> //< 8> if ( ( TimeLocal () > DATE_OF_EXPIRY ) //< 9> || ( ( TimeLocal () < DATE_OF_RELEASE ) && ( ! TESTER ) ) //<10> || ( ( TimeCurrent () < DATE_OF_RELEASE - 2 * 86400 ) && ( ! TESTER ) ) //<11> || ( TimeCurrent () > DATE_OF_EXPIRY ) ) //<12> { ChartIndicatorDelete(0,0,AIS_CODE_NAME); ExpertRemove () ; //<13> Print ( LINE_DOUBLE ,LF ,AIS_CODE_NAME," DATE OF EXPIRY ", //<14> DATE_OF_EXPIRY , LF , //<15> LINE_DOUBLE ) ; //<16> } } //<17> //============================================================================// // 2022-07-10 02:35 // //****************************************************************************// ...
 
AIRAT SAFIN #:

это пример программирования в стиле Форт ? :-)

 
AIRAT SAFIN #:

Что за портянка - пример защиты ?

 
Maxim Kuznetsov #:

это пример программирования в стиле Форт ? :-)

Это рабочий код <в смысле не пример>
Стиль обычный типа Standard code form DEC VT100 24x80

 
Walerij75 #:

Что за портянка - пример защиты ?

интересы приветствуются

но

ознакомление с MQL5 подразумевается


 
Александр Дикинсон:
Подскажите как сделать, чтобы индикатор работал только на одном счете, а при работе на другом счете, работал дня 2 и прекращал свою работу. 
Сбросьте пржалуйста пример кода, спасибо.

Если что-то просишь - пообещай что-то взамен. пржалуйста- это от слова поржать? Вот Вы зашли поржать и отнимаете у людей время.

Если это Вам действительно нужно - расскажите зачем. Может быть и нам пригодится. Особенно интересно - как это повысит прибыльность советника, построенного на этом индикаторе.

Маленький намек на возможное решение: Вам известна дата окончания работы индикатора?

 
AIRAT SAFIN #:
DATE_OF_EXPIRY

этот вариант отличается от требуемого. Здесь DATE_OF_EXPIRY = DATE_OF_RELEASE + 2 дня

Если автор передаст пользователю индикатор через неделю после DATE_OF_RELEASE, то индикатор сразу откажется работать. А нужно чтоб он работал 2 дня

или наоборот индикатор пролежит у пользователя неделю без использования. При включении он также откажется работать...

 
Konstantin Erin #:

этот вариант отличается от требуемого. Здесь DATE_OF_EXPIRY = DATE_OF_RELEASE + 2 дня

Если автор передаст пользователю индикатор через неделю после DATE_OF_RELEASE, то индикатор сразу откажется работать. А нужно чтоб он работал 2 дня

или наоборот индикатор пролежит у пользователя неделю без использования. При включении он также откажется работать...

Да

Но данный код предназначен для компиляции/сборки на заказ

То есть программа передается сразу после релиза/компиляции

В смысле в тот же день


 
Konstantin Erin #:

Если что-то просишь - пообещай что-то взамен. пржалуйста- это от слова поржать? Вот Вы зашли поржать и отнимаете у людей время.

Если это Вам действительно нужно - расскажите зачем. Может быть и нам пригодится. Особенно интересно - как это повысит прибыльность советника, построенного на этом индикаторе.

Маленький намек на возможное решение: Вам известна дата окончания работы индикатора?

Пригодится и вам... Смотрите, что-то придумываете и чтобы не украли у вас, закрываете код. Все просто)
Знаете что удивляет? Разработчики, кто в первую очередь ворует советники у людей, которые люди у них заказывают, подозревают всех остальных). Посмотрите на разработчиков, у каждого первого какой-то сврй продукт выставлен на продажу? Много покажете примеров где человек не разработчик и у него есть продукты на продажу?
 
Александр Дикинсон #:
Пригодится и вам... Смотрите, что-то придумываете и чтобы не украли у вас, закрываете код. Все просто)
Знаете что удивляет? Разработчики, кто в первую очередь ворует советники у людей, которые люди у них заказывают, подозревают всех остальных). Посмотрите на разработчиков, у каждого первого какой-то сврй продукт выставлен на продажу? Много покажете примеров где человек не разработчик и у него есть продукты на продажу?

Тут даже дело не в воровстве идей у трейдеров. Это не самое страшное. Самое страшное в масштабировании роботов. Чем большее роботов будет продано, тем выше вероятность быстрой адаптации валютного рынка, которая сначала нивелирует их прибыльность, а затем загонит в такую просадку, что "мама не горюй". Это моё личное мнение, не претендующее на истину в последней инстанции, поэтому в полемику со мной вступать бесполезно.

С уважением, Владимир.

Причина обращения: