Rosh: Вы смотрите логи тестера или логи агента? Можете написать в Сервисдеск и предоставить детали?
Логи смотрел в агенте, да и там слишком большой кусок лога должен пропечататься. Накидал примерный код, с сервисдеском лень разбираться. На робофорексе запускал с 2011.10.10 там один из трех TRADE_TRANSACTION_REQUEST появляется, на метаквотовском два из трех. Видимо зависит от частоты появления тиков.
2012.08.22 09:43:15 Terminal SIGTrader 5 x64 build 687 started
Логи смотрел в агенте, да и там слишком большой кусок лога должен пропечататься. Накидал примерный код, с сервисдеском лень разбираться. На робофорексе запускал с 2011.10.10 там один из трех TRADE_TRANSACTION_REQUEST появляется, на метаквотовском два из трех. Видимо зависит от частоты появления тиков.
2012.08.22 09:43:15 Terminal SIGTrader 5 x64 build 687 started
OnTradeTransaction по идее от тиков вообще не зависит, это обработчик торгового события.
И обрабатывает свою очередь, очередь торговых событий.
В прикрепленном выше файле запуск сделан 10 числа, соответственно начало теста я ставил 2011.10.10. Щас еще раз проверил, на робофорексе стабильно только 1 последний TRADE_TRANSACTION_REQUES приходит.
В прикрепленном выше файле запуск сделан 10 числа, соответственно начало теста я ставил 2011.10.10. Щас еще раз проверил, на робофорексе стабильно только 1 последний TRADE_TRANSACTION_REQUES приходит.
Баг не воспроизводится.
И на MQ и на RoboForex, в реалтайме и тестере все TRADE_TRANSACTION_REQUEST приходят нормально.
Сравнив 2 лога видно, что если OnTradeTransaction не успел отработать до появления нового установленного ордера то TRADE_TRANSACTION_REQUEST дропается.
Я создал блок для подсчета ударов по envelopes линиям, кажется все правильно подсчитывает, но в журнале отсутствует некоторые записи - например в журнале есть count[Number] =3 а следующий count[Number] =5. Видно что подсчет правильный но в журнале почему-то отсутствуетзапись о count[Number] =4. Иногда в журнале есть все записи. Не понятно, почему это происходит? Если видите в коде ошибки, можете поправить код?
И еще, иногда запуская тестер выкидывает ошибку " OnTick critical error " но при следующем запуске начинает тестировать. Что за проблему может быть?
inputstring Symb0 = "EURUSD";
inputbool Trade0 = true;
int MA_Shift0=1;
inputint MA_Per0 = 11;
inputdouble Envelopes_Deviation0 =0.1;
//+-----------------------------------+inputstring Symb1 = "USDCHF";
inputbool Trade1 = true;
int MA_Shift1=1;
inputint MA_Per1 = 11;
inputdouble Envelopes_Deviation1 =0.1;
bool MA (int Number,
string Symbol_, // имя символаbool Trade,
int MA_Per, // период для расчета средней линииint MA_Shift, // смещение индикатора по горизонтали double Envelopes_Deviation, // отклонение границ от средней линии double &Bid[],
int &env[],
int &count[],
bool &flagenv[],
bool &flagenv1[]
)
{
if(!Trade)return(true);
staticint Size_=0;
staticint Handle[];
staticint Recount[],MinBars[];
double ma[];
double Env_Up[2];
double Env_Dn[2];
double norm_Env_Dn;
double norm_Env_Up;
if(Number+1>Size_)
{
Size_=Number+1;
ArrayResize(Handle,Size_);
ArrayResize(Recount,Size_);
ArrayResize(MinBars,Size_);
MinBars[Number]=3*MA_Per;
ArraySetAsSeries(Env_Dn,true);
Handle[Number]=iEnvelopes(Symbol_,0,MA_Per,MA_Shift,MODE_SMA,PRICE_CLOSE,Envelopes_Deviation);
}
if(Bars(Symbol_,0)<MinBars[Number])return(true);
if(CopyBuffer(Handle[Number],LOWER_LINE,0,2,Env_Dn)<0 || CopyBuffer(Handle[Number],UPPER_LINE,0,2,Env_Up)<0)
{
Recount[Number]=true;
return(false);
}
int Digits_=int(SymbolInfoInteger(Symbol_,SYMBOL_DIGITS)+1);
norm_Env_Dn = NormalizeDouble(Env_Dn[0], Digits_);
norm_Env_Up = NormalizeDouble(Env_Up[0], Digits_);
Bid[Number]=SymbolInfoDouble(Symbol_,SYMBOL_BID);
if(Bid[Number] < norm_Env_Dn && !flagenv1[Number]) env[Number] += 1;
if(Bid[Number] > norm_Env_Up && !flagenv[Number]) env[Number] += 2;
if(env[Number]<=2)env[Number] *= 10;
if (env[Number]==20)flagenv[Number] = true;
if (env[Number]==10)flagenv1[Number] = true;
if(env[Number]==3 || env[Number]==12 || env[Number]==21 || env[Number]>21)
{
env[Number]=0;
flagenv[Number] = false;
flagenv1[Number] = false;
count[Number]++;
Print("+++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@ count---------= ", count[Number]," Number= ",Number);
}
return(true);
}
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//---//---return(0);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//---
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
staticdouble Bid[2];
staticint env[2],count[2];
staticbool flagenv[2],flagenv1[2];
MA(0,Symb0,Trade0,MA_Per0,MA_Shift0,Envelopes_Deviation0,Bid,env,count,flagenv,flagenv1);
MA(1,Symb1,Trade1,MA_Per1,MA_Shift1,Envelopes_Deviation1,Bid,env,count,flagenv,flagenv1);
}
//+------------------------------------------------------------------+
Я создал блок для подсчета ударов по envelopes линиям, кажется все правильно подсчитывает, но в журнале отсутствует некоторые записи - например в журнале есть count[Number] =3 а следующий count[Number] =5. Видно что подсчет правильный но в журнале почему-то отсутствуетзапись о count[Number] =4. Иногда в журнале есть все записи. Не понятно, почему это происходит? Если видите в коде ошибки, можете поправить код?
А точно в логе записи отсутствуют? Или только на вкладке "Эксперты"? Я склоняюсь ко второму, поскольку при скоростном выводе на вкладку некоторые строки пропускаются. Это фича а не баг, т.к. такой вывод меньше тормозит программу. Но в лог выводятся все строки, там пропусков нет.
Проверьте. Если пропуски есть в логе, тогда в сервисдеск.
И еще, иногда запуская тестер выкидывает ошибку " OnTick critical error " но при следующем запуске начинает тестировать. Что за проблему может быть?
Вы смотрите логи тестера или логи агента? Можете написать в Сервисдеск и предоставить детали?
Логи смотрел в агенте, да и там слишком большой кусок лога должен пропечататься. Накидал примерный код, с сервисдеском лень разбираться. На робофорексе запускал с 2011.10.10 там один из трех TRADE_TRANSACTION_REQUEST появляется, на метаквотовском два из трех. Видимо зависит от частоты появления тиков.
2012.08.22 09:43:15 Terminal SIGTrader 5 x64 build 687 started
Логи смотрел в агенте, да и там слишком большой кусок лога должен пропечататься. Накидал примерный код, с сервисдеском лень разбираться. На робофорексе запускал с 2011.10.10 там один из трех TRADE_TRANSACTION_REQUEST появляется, на метаквотовском два из трех. Видимо зависит от частоты появления тиков.
2012.08.22 09:43:15 Terminal SIGTrader 5 x64 build 687 started
OnTradeTransaction по идее от тиков вообще не зависит, это обработчик торгового события.
И обрабатывает свою очередь, очередь торговых событий.
OnTradeTransaction по идее от тиков вообще не зависит, это обработчик торгового события.
И обрабатывает свою очередь, очередь торговых событий.
В данном примере, от тиков зависит скорость установки ордеров, на каждом тике новый ордер устанавливается.
Интересно, отсутствие TRADE_TRANSACTION_REQUEST повторилась у разрабов, или без сервисдеска тут никак(
В данном примере, от тиков зависит скорость установки ордеров, на каждом тике новый ордер устанавливается.
Интересно, отсутствие TRADE_TRANSACTION_REQUEST повторилась у разрабов, или без сервисдеска тут никак(
Наверно без СД ни как, функция новая возможны и баги. Нужно детально разбираться.
ЗЫ Я тут стряпаю статейку на тему применения этой функции, но у меня такая ситуация не возникала.
ЗЗЫ правда проверял лишь на Альпари и MQ серверах,
дайте корректное название сервера, попробую проверить.
Наверно без СД ни как, функция новая возможны и баги. Нужно детально разбираться.
ЗЫ Я тут стряпаю статейку на тему применения этой функции, но у меня такая ситуация не возникала.
ЗЗЫ правда проверял лишь на Альпари и MQ серверах,
дайте корректное название сервера, попробую проверить.
RoboForex-MetaTrader 5
MetaQuotes-Demo
EURUSD -валюта, но выше в логах она указана.
В прикрепленном выше файле запуск сделан 10 числа, соответственно начало теста я ставил 2011.10.10. Щас еще раз проверил, на робофорексе стабильно только 1 последний TRADE_TRANSACTION_REQUES приходит.
RoboForex-MetaTrader 5
MetaQuotes-Demo
EURUSD -валюта, но выше в логах она указана.
В прикрепленном выше файле запуск сделан 10 числа, соответственно начало теста я ставил 2011.10.10. Щас еще раз проверил, на робофорексе стабильно только 1 последний TRADE_TRANSACTION_REQUES приходит.
Баг не воспроизводится.
И на MQ и на RoboForex, в реалтайме и тестере все TRADE_TRANSACTION_REQUEST приходят нормально.
Система x86, на x64 проверить сейчас не могу.
Сравнив 2 лога видно, что если OnTradeTransaction не успел отработать до появления нового установленного ордера то TRADE_TRANSACTION_REQUEST дропается.
Тут 1 из 3
GM 0 Trade 03:35:28 2011.10.10 02:00:00 instant sell 1.00 EURUSD at 1.3385 (1.3385 / 1.3387 / 1.3385)
OL 0 Trades 03:35:28 2011.10.10 02:00:00 deal #2 sell 1.00 EURUSD at 1.3385 done (based on order #2)
JQ 0 Trade 03:35:28 2011.10.10 02:00:00 deal performed [#2 sell 1.00 EURUSD at 1.3385]
RJ 0 Trade 03:35:28 2011.10.10 02:00:00 order performed sell 1.00 at 1.3385 [#2 sell 1.00 EURUSD at 1.3385] <== 1
MH 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 TRADE_ACTION_DEAL Установлен 1 ордер
HE 0 Trade 03:35:28 2011.10.10 02:00:00 buy limit 1.50 EURUSD at 1.3234 (1.3384 / 1.3386 / 1.3384) <== 2
MP 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 TRADE_ACTION_PENDING Установлен 2 ордер
QN 0 Trade 03:35:28 2011.10.10 02:00:00 buy limit 1.50 EURUSD at 1.3285 (1.3385 / 1.3387 / 1.3385) <== 3
MM 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 TRADE_ACTION_PENDING Установлен 2 ордер
HI 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==6----- n=0
GE 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
GD 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==2----- n=1
CF 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
MF 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==3----- n=2
OS 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
OQ 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==0----- n=3
KL 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
JL 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==0----- n=4
GN 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
EO 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==0----- n=5
CK 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
PI 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==0----- n=6
OD 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ****************************************************************************
LG 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ///////////////////// trans.type==10----- n=7
OJ 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 EnumToString(type)=TRADE_TRANSACTION_REQUEST
QN 0 test5 (EURUSD,M30) 03:35:28 2011.10.10 02:00:00 ------------trans===
TRADE_TRANSACTION_REQUEST
тут 2 из 3
CL 0 Trade 03:36:07 2011.10.10 02:00:00 instant sell 1.00 EURUSD at 1.33989 (1.33989 / 1.34003 / 1.33989)
NP 0 Trades 03:36:07 2011.10.10 02:00:00 deal #2 sell 1.00 EURUSD at 1.33989 done (based on order #2)
QR 0 Trade 03:36:07 2011.10.10 02:00:00 deal performed [#2 sell 1.00 EURUSD at 1.33989]
DJ 0 Trade 03:36:07 2011.10.10 02:00:00 order performed sell 1.00 at 1.33989 [#2 sell 1.00 EURUSD at 1.33989] <== 1
RK 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 TRADE_ACTION_DEAL Установлен 1 ордер
QE 0 Trade 03:36:07 2011.10.10 02:00:00 buy limit 1.50 EURUSD at 1.32490 (1.33990 / 1.34004 / 1.33990) <== 2
LS 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 TRADE_ACTION_PENDING Установлен 2 ордер
GP 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ///////////////////// trans.type==6----- n=0
JM 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ****************************************************************************
DM 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ///////////////////// trans.type==2----- n=1
JH 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ****************************************************************************
FJ 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ///////////////////// trans.type==3----- n=2
JG 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ****************************************************************************
DG 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ///////////////////// trans.type==0----- n=3
JR 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ****************************************************************************
ID 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ///////////////////// trans.type==0----- n=4
JQ 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ****************************************************************************
IR 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ///////////////////// trans.type==10----- n=5
RP 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 EnumToString(type)=TRADE_TRANSACTION_REQUEST
RG 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ------------trans===
TRADE_TRANSACTION_REQUEST
...
FD 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:00 ****************************************************************************
OG 0 Trade 03:36:07 2011.10.10 02:00:01 buy limit 1.50 EURUSD at 1.32992 (1.33992 / 1.34006 / 1.33992) <== 3
QQ 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 TRADE_ACTION_PENDING Установлен 2 ордер
RQ 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 ///////////////////// trans.type==0----- n=6
OO 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 ****************************************************************************
RM 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 ///////////////////// trans.type==10----- n=7
CF 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 EnumToString(type)=TRADE_TRANSACTION_REQUEST
CJ 0 test5 (EURUSD,H1) 03:36:07 2011.10.10 02:00:01 ------------trans===
TRADE_TRANSACTION_REQUEST
...
Баг не воспроизводится.
И на MQ и на RoboForex, в реалтайме и тестере все TRADE_TRANSACTION_REQUEST приходят нормально.
Система x86, на x64 проверить сейчас не могу.
На стареньком ноуте попробовал, отработал последовательно: установка орд - ответ - установка орд - ответ - установка орд - ответ
Думаю должно воспроизвестись если за 1 тик 2 ордера отправить. OnTradeTransaction тогда не успеет вовремя отработать .
Чутку подкрутил файлик.
Добрый день.
Я создал блок для подсчета ударов по envelopes линиям, кажется все правильно подсчитывает, но в журнале отсутствует некоторые записи - например в журнале есть count[Number] =3 а следующий count[Number] =5. Видно что подсчет правильный но в журнале почему-то отсутствует запись о count[Number] =4. Иногда в журнале есть все записи. Не понятно, почему это происходит? Если видите в коде ошибки, можете поправить код?
И еще, иногда запуская тестер выкидывает ошибку " OnTick critical error " но при следующем запуске начинает тестировать. Что за проблему может быть?
Добрый день.
Я создал блок для подсчета ударов по envelopes линиям, кажется все правильно подсчитывает, но в журнале отсутствует некоторые записи - например в журнале есть count[Number] =3 а следующий count[Number] =5. Видно что подсчет правильный но в журнале почему-то отсутствует запись о count[Number] =4. Иногда в журнале есть все записи. Не понятно, почему это происходит? Если видите в коде ошибки, можете поправить код?
А точно в логе записи отсутствуют? Или только на вкладке "Эксперты"? Я склоняюсь ко второму, поскольку при скоростном выводе на вкладку некоторые строки пропускаются. Это фича а не баг, т.к. такой вывод меньше тормозит программу. Но в лог выводятся все строки, там пропусков нет.
Проверьте. Если пропуски есть в логе, тогда в сервисдеск.
И еще, иногда запуская тестер выкидывает ошибку " OnTick critical error " но при следующем запуске начинает тестировать. Что за проблему может быть?