![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всех поздравляю с Рождеством и Новым 2009 годом, годом быка, больше позитивных баев, здоровья и успехов в делах!
В инклюде на вычисление различных торговых критериев на комбинациях МА, индикаторах (Аллигатор, сстох и т.д.) все работает, советник тестируется на истории, открывает ордера, работает в режиме реального времени и т.д. Но при подключении в инклюд стратегии, основанной на правиле 4-х недель Д.Мерфи: 1. цена закрытия выше макс цены за последние 20 дней - Открытие Buy, 2.цена закрытия ниже мин цены за последние 20 дней
- Открытие Sell, 3. цена закрытия ниже мин цены за последние 10 дней - Закрытие Buy, 4. цена закрытия выше макс цены за последние 10 дней - Закрытие Sell, все компилируется, но советник на истории (закачана вся) не работает, ордера не открываются, хотя условия были, старт истории с 2000г и по наст. время. Может у кого-нибудь будет возможность подсказать возможные причины либо изложить какие-нибудь мысли по вопросу? Сам советник - базовый, с учебника.
//--------------------------------------------------------------------
// Criterion.mqh
// Правило 4-х недель
//--------------------------------------------------------------- 1 --
// Функция вычисления торговых критериев.
// Возвращаемые значения:
// 10 - открытие Buy
// 20 - открытие Sell
// 11 - закрытие Buy
// 21 - закрытие Sell
// 0 - значимых критериев нет
// -1 - используется другой финансовый инструмент
//--------------------------------------------------------------- 2 --
// Внешние переменные:
extern int i, // Индекс бара for max min
Counted_bars1=20, // Количество просчитанных баров (20 дней)
Counted_bars2=10; // Количество просчитанных баров (10 дней)
//--------------------------------------------------------------- 3 --
int Criterion() // Пользовательская функция
{
string Sym="EURUSD";
if (Sym!=Symbol()) // Если не наш фин. инструмент
{
Inform(16); // Сообщение..
return(-1); // .. и выход
}
double
Max_20=Bid, Min_20=Bid, // нач знач max за период 20 дней
Max_10=Bid, Min_10=Bid; // нач знач min за период 10 дней
//--------------------------------------------------------------- 4 --
// Параметры торговых критериев:
for(i=0;i<=Counted_bars1-1;i++) // цикл для 20 дней
{
if (Low[i]< Min_20) // Если < известного
Min_20=Low[i]; // то оно и будет мин
if (High[i] > Max_20) // Если > известного
Max_20=High[i]; // то оно и будет макс
}
for(i=0;i<=Counted_bars2-1;i++) // цикл для 10 дней
{
if (Low[i]< Min_10) // Если < известного
Min_10=Low[i]; // то оно и будет мин
if (High[i] > Max_10) // Если > известного
Max_10=High[i]; // то оно и будет макс
}
//--------------------------------------------------------------- 5 --
// Вычисление торговых критериев
if(Close[0]>Max_20) //цена закрытия выше макс цены за последние 20 дней
return(10); // Открытие Buy
if (Close[0]<Min_20) //цена закрытия ниже мин цены за последние 20 дней
return(20); // Открытие Sell
if(Close[0]<Min_10) //цена закрытия ниже мин цены за последние 10 дней
return(11); // Закрытие Buy
if(Close[0]> Max_10) //цена закрытия выше макс цены за последние 10 дней
return(21); // Закрытие Sell
//--------------------------------------------------------------- 6 --
return(0); // Выход из пользов. функции
}
//--------------------------------------------------------------- 7 --