Мне нужно, чтобы скомпилированные ИНДИКАТОРЫ (EX4) переставали работать после истечения срока, ну типа как Демо версия. Или может можно сделать привязку к конфигурации компа или привязку к Логину/ Номеру счета ???!! Как можно это сделать?? Фрагмент кода может кто-нибудь показать??! Пожалуйста!
- Управление отложенными ордерами - Торговля - MetaTrader 5 для Android
- Управление отложенными ордерами - Торговля - MetaTrader 5 для iPhone
- Работа с виртуальной платформой - Виртуальный хостинг для круглосуточной работы
Примерно так, третью защиту по номеру счета ищи на форуме.
/*Первая защита if (!IsTesting()) { Comment("Версия только для бэктеста!!!"); return; } */ // Первая защита /*Вторая защита if ( (TimeMonth(CurTime())>4) && (TimeYear(CurTime())>=2006) ) { Print("Время советника истекло"); return(0); } */ //Вотрая защита
Для бектеста защита не подходит, а по времени - то, что нужно! Спасибо! Кстати так и знал, что ответите именно Вы, Rosh! Проблема только в том, что я с Mql совсем не дружу. Можете на примере индикатора показать, что где прописывать? Пожалуста, очень нужно!
//+------------------------------------------------------------------+ //| Aroon Horn.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright #property link #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Red extern int Aroon_Period=10; double Buffer1[]; double Buffer2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1); SetIndexBuffer(0,Buffer1); SetIndexLabel(0,"Aroon Up"); SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1); SetIndexBuffer(1,Buffer2); SetIndexLabel(1,"Aroon Down"); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- TODO: add your code here //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //---- TODO: add your code here double HighestBar,LowestBar,aroonUp,aroonDn; for(int shift=Bars-Aroon_Period;shift>=0;shift--){ HighestBar = Highest(NULL,0,MODE_HIGH,Aroon_Period-1,shift); LowestBar = Lowest(NULL,0,MODE_LOW,Aroon_Period-1,shift); aroonUp = 100 - ((HighestBar - shift) / Aroon_Period) * 100; aroonDn = 100 - ((LowestBar - shift) / Aroon_Period) * 100; if(aroonUp == 0) { aroonUp = 0.0000001; } if(aroonDn == 0) { aroonDn = 0.0000001; } Buffer1[shift]=aroonUp; Buffer2[shift]=aroonDn; } //---- return(0); } //+------------------------------------------------------------------+
//+------------------------------------------------------------------+ //| Aroon Horn.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright #property link #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Red extern int Aroon_Period=10; double Buffer1[]; double Buffer2[]; int CorrectNumber=*****; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1); SetIndexBuffer(0,Buffer1); SetIndexLabel(0,"Aroon Up"); SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1); SetIndexBuffer(1,Buffer2); SetIndexLabel(1,"Aroon Down"); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- TODO: add your code here //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { /*Первая защита if (IsTesting()) { Comment("Бэктест не работает!!!"); return; } */ // Первая защита /*Вторая защита if ( (TimeMonth(CurTime())>4) && (TimeYear(CurTime())>=2006) ) { Print("Время советника истекло"); return(0); } */ //Вторая защита //Третья защита if(AccountNumber()!=CorrectNumber) return(0); //Третья защита //---- TODO: add your code here double HighestBar,LowestBar,aroonUp,aroonDn; for(int shift=Bars-Aroon_Period;shift>=0;shift--){ HighestBar = Highest(NULL,0,MODE_HIGH,Aroon_Period-1,shift); LowestBar = Lowest(NULL,0,MODE_LOW,Aroon_Period-1,shift); aroonUp = 100 - ((HighestBar - shift) / Aroon_Period) * 100; aroonDn = 100 - ((LowestBar - shift) / Aroon_Period) * 100; if(aroonUp == 0) { aroonUp = 0.0000001; } if(aroonDn == 0) { aroonDn = 0.0000001; } Buffer1[shift]=aroonUp; Buffer2[shift]=aroonDn; } //---- return(0); } //+------------------------------------------------------------------+
Огромное Спасибо!!! Все работает!! :) Еще вопрос! а можно залочить индикатор/ эксперт под конкретную валютную пару или тикер??
/*Вторая защита if ( (TimeMonth(CurTime())>4) && (TimeYear(CurTime())>=2006) ) { Print("Время советника истекло"); return(0); } */ //Вотрая защита
Добрый день!
Как совместить этот код if(AccountNumber()!=000000 ) { Alert ("Приобретите лицензию!!!"); Sleep(500); Comment(" Индикатор активен! "); return(0); }
и ваш код. задача нужно одновременно привязка к счету и чтобы индикатор перестал работать в определенную дату и время. как это сделать правильно? нужно четкое время дата..и чтобы индикатор перестал работать.спасибо
Вставить в самое начало OnCalculate().if(AccountNumber() != ... || TimeCurrent() >= D'01.01.2016') { static bool bAlerted = false; if(bAlerted == false) { Alert("Уведомление об окончании триала"); bAlerted = true; } return(0) }
Sergei Vladimirov:
Вставить в самое начало OnCalculate().
Вставить в самое начало OnCalculate().
Привет! А можешь в готовом коде показать куда ты эту строчку поставишь?! Пожалуйста!
bool alertsOn = true; int start() { //---------------------------------------------------------------------------------------------------------------+ // false индикатор работает только на демо счете, если true работает на реальном счете // if(IsDemo() == false) { Comment("Only DEMO-account... forex-time@mail.ru"); // if(alertsOn) Alert("Only DEMO-account... forex-time@mail.ru"); alertsOn=false; return(0); // } // привязка индикатора к конкретному торговому счету if(AccountNumber() != 555777) { Comment("Invalid account... forex-time@mail.ru"); if(alertsOn) Alert("Invalid account... forex-time@mail.ru"); alertsOn=false; return(0); } // ограничение работы индикатора по времени (год/месяц/день/время) if(TimeCurrent() > StrToTime("2018.12.31 22:00")) { Comment("Time is over, trade STOP... forex-time@mail.ru"); if(alertsOn) Alert("Time is over, trade STOP... forex-time@mail.ru"); alertsOn=false; return(0); } //---------------------------------------------------------------------------------------------------------------+
FXwin:
Огромное спасибо! Более чем подробно!
Здравствуйте а как быть с мт5 как там сделать ограничение работы по времени?

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь