А ты в инит EventSetTimer(5);, а в деинит EventKillTimer(); добавь.
Что касается пресечений, тех, которые ты видишь, то это ещё не факт, что это пересечение.
Как это выглядит в численном виде? Скриптец напиши с выводом значений индикатора и увидишь, есть пересечение или нет. Например - касание, когда значение одного индикатора численно (нормализованно) равны значеню другого. У тебя равны? или другое условие?
Выглядит так что пересечение явное и визуально и численно, только тестер его видит, а реал не видит. Тики же одни и те же или нет.
По вот такому алгоритму (извиняюсь, если нет желания его читать):
int start()
{
int _symbolsTotal = SymbolsTotal(false); // true – только символы в MarketWatch
int i;
for (i=0;i<_symbolsTotal;i++)
{
string _symbolName = SymbolName(i,false); // номер в списке / true – только символы в MarketWatch
if (Volume[0]>1) return(0);
double CH1=iIchimoku(_symbolName,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_CHINKOUSPAN,_barCH1);
double CH2=iIchimoku(_symbolName,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_CHINKOUSPAN,_barCH2);
double TK1=iIchimoku(_symbolName,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_TENKANSEN,_barTK1);
double TK2=iIchimoku(_symbolName,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_TENKANSEN,_barTK2);
double KJ1=iIchimoku(_symbolName,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_KIJUNSEN,_barKJ1);
double KJ2=iIchimoku(_symbolName,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_KIJUNSEN,_barKJ2);
double price1=iMA(_symbolName,0,1,0,MODE_LWMA,PRICE_WEIGHTED,_barprice1);
double price2=iMA(_symbolName,0,1,0,MODE_LWMA,PRICE_WEIGHTED,_barprice2);
string messagemail;
if(KJ1>TK1&&TK2>KJ2) //сигнал золотой крест
if((CH1>price1&&CH2<price2)||(CH1<price1&&CH2>price2)) //подтверждение чикоу спан
{
messagemail = _symbolName+": "+signal1;
Print(_symbolName," ",signal1);
SendMail(messagemail,messagemail);
}
if(KJ1<TK1&&TK2<KJ2) //сигнал мертвый крест
if((CH1>price1&&CH2<price2)||(CH1<price1&&CH2>price2)) //подтверждение чикоу спан
{
messagemail = _symbolName+": "+signal2;
Print(_symbolName," ",signal2);
SendMail(messagemail,messagemail);
}
}
Тестер мне дает:
2 16:57:17.920 Signals TK&KJ onTick разработка 2 inputs: tenkan_sen=8; kijun_sen=22; senkou_span_b=42; _barCH1=25; _barCH2=22; _barTK1=3; _barTK2=0; _barKJ1=3; _barKJ2=0; _barprice1=25; _barprice2=22; symbolList=0;
0 16:57:17 2014.01.01 20:00 Signals TK&KJ onTick разработка 2 EURUSD,Daily: Инициализация выполнена
18:37:56 2015.03.23 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: AUDNZD сигнал мертвый крест.
0 18:37:56 2015.03.23 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: NZDUSD сигнал золотой крест.
0 18:37:56 2015.03.23 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: SILVER сигнал золотой крест.
0 18:37:56 2015.03.23 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: USDHKD сигнал мертвый крест.
0 18:37:56 2015.03.24 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: #PFE сигнал золотой крест.
0 18:37:56 2015.03.24 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: AUDJPY сигнал золотой крест.
0 18:37:56 2015.03.24 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: AUDUSD сигнал золотой крест.
0 18:37:56 2015.03.24 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: GBPCHF сигнал мертвый крест.
0 18:37:56 2015.03.24 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: NZDUSD сигнал золотой крест.
0 18:37:56 2015.03.24 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: SILVER сигнал золотой крест.
0 18:37:56 2015.03.24 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: USDMXN сигнал мертвый крест.
0 18:37:56 2015.03.25 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: #BA сигнал золотой крест.
0 18:37:56 2015.03.25 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: #PFE сигнал золотой крест.
0 18:37:56 2015.03.25 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: AUDUSD сигнал золотой крест.
0 18:37:56 2015.03.25 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: GBPCHF сигнал мертвый крест.
0 18:37:56 2015.03.25 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: GBPDKK сигнал мертвый крест.
0 18:37:56 2015.03.25 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: USDMXN сигнал мертвый крест.
0 18:37:56 2015.03.26 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: #C сигнал мертвый крест.
0 18:37:57 2015.03.26 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: #JPM сигнал мертвый крест.
0 18:37:57 2015.03.26 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: EURGBP сигнал золотой крест.
0 18:37:57 2015.03.26 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: GBPDKK сигнал мертвый крест.
0 18:37:57 2015.03.27 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: #C сигнал мертвый крест.
0 18:37:57 2015.03.27 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: #JPM сигнал мертвый крест.
0 18:37:57 2015.03.27 00:00 Signals TK&KJ разработка1 (1) (1) EURUSD,Daily: #MCD сигнал мертвый крест.
0 18:37:57.010 EURUSD,Daily: 21871 tick events (1321 bars, 22871 bar states) processed within 1125 ms (total time 1172 ms)
На реале за эти же дни на том же символе с теми же параметрами (правильные значения баров у меня впечатаны как значения по умолчанию) болты.
Сегодня перед опросом индикаторов доработал вот так:
extern int volTimer = 10;
string signal1 = "сигнал золотой крест.";
string signal2 = "сигнал мертвый крест.";
int f;
int i;
int mass_iBars[100];
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
Print("Инициализация выполнена");
EventSetTimer(volTimer);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
Print("Кол-во сигналов: ",f);
Print("Кол-во символов: ",i);
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTimer()
{
Print("Сработал таймер на выполнение алгоритма");
//---
int _symbolsTotal = SymbolsTotal(symbolList); // true – только символы в MarketWatch
for (i=0;i<_symbolsTotal;i++)
{
string _symbolName = SymbolName(i,symbolList); // номер в списке / true – только символы в MarketWatch
if (mass_iBars
==NULL) mass_iBars=iBars(_symbolName,PERIOD_D1);
if (mass_iBars<iBars(_symbolName,PERIOD_D1))
{
mass_iBars=iBars(_symbolName,PERIOD_D1);
И на реальном счете надписи вот такой Print("Сработал таймер на выполнение алгоритма"); не увидел. А в тестере все как по маслу. Хоть бери каждое утро тестер запускай и по нему сделки вручную открывай.
За совет скритптец написать спасибо наверно так только и можно проверить.