В аннотации указано:
"Данный советник торговал без алгоритмических ошибок на чемпионате по автотрейдингу 2006 года. Требует для работы индикатор NRTR GATOR. Может являться примером мультивалютного эксперта и, надеюсь, облегчит написание такового новичкам в MQL4."
Похоже пришла пора разобраться с ТРЕНДОМ, - как это делается. Хотя бы "методом тыка".
Для примера можно взять любой простейший эксперт и использовать приемы определения тренда из советника "ProtoType-IX". (см. пост №2)
Возьмем оттуда всё, что касается тренда и вставим в любой простейший советник. В результате получим:
Function "GetSymbolString" is not referenced and will be removed from exp-file
Function "PeriodNumber" is not referenced and will be removed from exp-file
Function "TrendByWPR" is not referenced and will be removed from exp-file
Function "SetArrow" is not referenced and will be removed from exp-file
Function "SetUpArrows" is not referenced and will be removed from exp-file
Function "TrendExist" is not referenced and will be removed from exp-file
Мы получили шесть функций, которые вычисляются, но пока не принимают участия в торговле нашего эксперта.
Поскольку, наш эксперт пусть будет НЕ МУЛЬТИВАЛЮТНЫЙ, то первая функция нам неинтересна. Вторая функция, - пожалуй, тоже, т.к. она задает таймфрейм. Но оставим пока всё как есть.
Начнем с самого начала.
Во внешних нашего эксперта параметрах мы добавляем:
Код
extern int PeriodWPR=8;
extern double CriteriaWPR=25;
extern int ATRPeriod=40;// период ATR для индикатора
extern double kATR=0.5;
extern int ZeroBar=8; // выход в безубыток через ZeroBar баров
extern double MinTargetinSpread=5.0;
extern double TP_SL_Criteria=2.0;
extern int MaxOpenedOrders=3;
extern double MaxOrderSize=5.0;
extern double CriteriaWPR=25;
extern int ATRPeriod=40;// период ATR для индикатора
extern double kATR=0.5;
extern int ZeroBar=8; // выход в безубыток через ZeroBar баров
extern double MinTargetinSpread=5.0;
extern double TP_SL_Criteria=2.0;
extern int MaxOpenedOrders=3;
extern double MaxOrderSize=5.0;
Понятно что пока чего-то не хватает а что-то будет лишним. Надеюсь разберемся...
Далее (после внешних параметров) задаем по аналогии глобальные переменные:
Код
int LastUpArray[13,7];
int PreLastUpArray[13,7];
int LastDownArray[13,7];
int PreLastDownArray[13,7];
double Complextrend[13,7];// собираем все тренды (Z,A и N тренды) в одно значение.
double TPvsSL[13,7];// отношение TakeProfit к StopLoss на данном символе и таймфрейме
int BestTPvsSLSymbol[20]; // лучшие символы по соотношению TP/SL
int BestTPvsSLPeriod[20]; // лучшие таймфреймы по соотношению TP/SL
//--------------------------------------------
string SymbolsArray[13]={"","USDCHF","GBPUSD","EURUSD","USDJPY","AUDUSD",
"USDCAD","EURGBP","EURAUD","EURCHF","EURJPY","GBPJPY","GBPCHF"};
int TrendOnSymbol[13,7]; // тренд по символу и таймфрейму
int MyBarsArrays[13,7];// храним количество баров по инструменту и таймфрейму
int TimeNullArrays[13,7];// храним время Time[0] по инструменту и таймфрейму
int PreLastUpArray[13,7];
int LastDownArray[13,7];
int PreLastDownArray[13,7];
double Complextrend[13,7];// собираем все тренды (Z,A и N тренды) в одно значение.
double TPvsSL[13,7];// отношение TakeProfit к StopLoss на данном символе и таймфрейме
int BestTPvsSLSymbol[20]; // лучшие символы по соотношению TP/SL
int BestTPvsSLPeriod[20]; // лучшие таймфреймы по соотношению TP/SL
//--------------------------------------------
string SymbolsArray[13]={"","USDCHF","GBPUSD","EURUSD","USDJPY","AUDUSD",
"USDCAD","EURGBP","EURAUD","EURCHF","EURJPY","GBPJPY","GBPCHF"};
int TrendOnSymbol[13,7]; // тренд по символу и таймфрейму
int MyBarsArrays[13,7];// храним количество баров по инструменту и таймфрейму
int TimeNullArrays[13,7];// храним время Time[0] по инструменту и таймфрейму
Не будем пока особо вникать. Посмотрим дальше...