Мне нужно, чтобы скомпилированные ИНДИКАТОРЫ (EX4) переставали работать после истечения срока, ну типа как Демо версия. Или может можно сделать привязку к конфигурации компа или привязку к Логину/ Номеру счета ???!! Как можно это сделать?? Фрагмент кода может кто-нибудь показать??! Пожалуйста!
- Ограничения по валюте
- Ограниченное время работы индикатора.
- исправить индикатор
Примерно так, третью защиту по номеру счета ищи на форуме.
/*Первая защита
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+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
