[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 964
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Почему скорость тестера падает к концу прохода третьего года ?
есть такая проблема - у меня тож такое было, если советник много сделок в год совершает - возможно много данных сохраняется для вывода итогового результата или может быть индикаторные буфера память съедают
в общем видел - не знаю, терпите - для общей картины тест за 10 лет,а оптимизировать лучше по одному году и потом делать выборку оптимальных параметров
Хочу проанализировать различные кросы с последующим выставление ордеров на другой паре:
int magic = 428;//магический номер эксперта
extern double volume = 0.1;//объем выставляемого ордера
extern int slippage = 3;//проскальзывание
int OPB;//метка выставляемого ордера на покупку
int OPS;//метка выставляемого ордера на продажу
int Profit=1;//уровень профита открытых ордеров
string comB = "Вход по тренду на Buy";//комментарий ордера
string comS = "Вход по тренду на Sell";//комментарий ордера
double StochasticCAD;//положение основной линии Стохастики на текущем баре по USDCAD
double StochasticAUD;//положение основной линии Стохастики на текущем баре по AUDUSD
double SARCAD;//текущее положение индикатора по USDCAD
double SARСCAD;//положение индикатора бар назад по USDCAD
double SARAUD;//текущее положение индикатора по AUDUSD
double SARСAUD;//положение индикатора бар назад по AUDUSD
int start()
{
//______________________________определение значений переменных_______________________
StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0);
StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,1,0);
SARCAD=iSAR("USDCAD",30,0.02,0.2,0);
SARСCAD=iSAR("USDCAD",30,0.02,0.2,1);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
SARСAUD=iSAR("AUDUSD",30,0.02,0.2,1);
double bidCAD =MarketInfo("USDCAD",MODE_BID);
double askCAD =MarketInfo("USDCAD",MODE_ASK);
double bidAUD =MarketInfo("AUDUSD",MODE_BID);
double askAUD =MarketInfo("AUDUSD",MODE_ASK);
//______________________________поиск и закрытие ордеров_______________________________________
int i;
for(i=0; i<=OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;// если ордер номер i не существует, прекращаем перебор
if (OrderSymbol() != "GBPUSD" || OrderMagicNumber() != magic) // если ордер не с этой пары, на которой стоит наш эксперт
continue; // пропускаем его и смотрим на следующий за ним ордер
//_______закрытие Buy_______
if (OrderType() == OP_BUY && OrderProfit()>=Profit)
// если ордер бай
{
OPB=1;
if(StochasticCAD==0 || StochasticAUD==100 || SARCAD<bidCAD || SARAUD>askAUD)//и рынок близок к развороту
{
OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); // закроем его, если он в профите
OPB=0;
}
}
else
{
//_______закрытие Sell_______
if(OrderType() == OP_SELL && OrderProfit()>=Profit)// если ордер селл
{OPS=1;
if(StochasticCAD==100 || StochasticAUD==0 || SARCAD>askCAD || SARAUD<bidAUD)//и рынок близок к развороту
{
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); // закроем его, если он в профите
OPS=0;
}
}
}
}
//______________выставление ордеров______________________________________________________________________
if (SARCAD>askCAD && SARСCAD<bidCAD && SARAUD<bidAUD && SARСAUD>askAUD && OPB<1)//определим условия
{ //_______Buy_______
if(!IsTradeAllowed())
{
Alert("занят торговый поток, повторим попытку бай...");
return(-1);
}
OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,comB,magic,0,Red); //выставим ордер
if(OPB == -1)
{
Alert("GBPUSD"," ошибка: бай", GetLastError());
return(-1);
}
if(OPB > 1)
Alert ("GBPUSD","Выставили ордер на покупку!");
}
else
{//_______Sell_______
if (SARСCAD>askCAD && SARCAD<bidCAD && SARСAUD<bidAUD && SARAUD>askAUD && OPS<1)//определим условия
{
if(!IsTradeAllowed())
{
Alert("занят торговый поток, повторим попытку селл...");
return(-1);
}
OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //выставим ордер
if(OPS == -1)
{
Alert("GBPUSD"," ошибка: селл", GetLastError());
return(-1);
}
if(OPS > 1)
Alert ("GBPUSD","Выставили ордер на продажу!");
}
}
return(0);//выход
}
При тестировании ничего не выдает. Никаких результатов.
В журнале - набор ошибок:
Подскажите, что не так???
Хочу проанализировать различные кросы с последующим выставление ордеров на другой паре:
int magic = 428;//магический номер эксперта
extern double volume = 0.1;//объем выставляемого ордера
extern int slippage = 3;//проскальзывание
int OPB;//метка выставляемого ордера на покупку
int OPS;//метка выставляемого ордера на продажу
int Profit=1;//уровень профита открытых ордеров
string comB = "Вход по тренду на Buy";//комментарий ордера
string comS = "Вход по тренду на Sell";//комментарий ордера
double StochasticCAD;//положение основной линии Стохастики на текущем баре по USDCAD
double StochasticAUD;//положение основной линии Стохастики на текущем баре по AUDUSD
double SARCAD;//текущее положение индикатора по USDCAD
double SARСCAD;//положение индикатора бар назад по USDCAD
double SARAUD;//текущее положение индикатора по AUDUSD
double SARСAUD;//положение индикатора бар назад по AUDUSD
int start()
{
//______________________________определение значений переменных_______________________
StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0);
StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,1,0);
SARCAD=iSAR("USDCAD",30,0.02,0.2,0);
SARСCAD=iSAR("USDCAD",30,0.02,0.2,1);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
SARСAUD=iSAR("AUDUSD",30,0.02,0.2,1);
double bidCAD =MarketInfo("USDCAD",MODE_BID);
double askCAD =MarketInfo("USDCAD",MODE_ASK);
double bidAUD =MarketInfo("AUDUSD",MODE_BID);
double askAUD =MarketInfo("AUDUSD",MODE_ASK);
//______________________________поиск и закрытие ордеров_______________________________________
int i;
for(i=0; i<=OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;// если ордер номер i не существует, прекращаем перебор
if (OrderSymbol() != "GBPUSD" || OrderMagicNumber() != magic) // если ордер не с этой пары, на которой стоит наш эксперт
continue; // пропускаем его и смотрим на следующий за ним ордер
//_______закрытие Buy_______
if (OrderType() == OP_BUY && OrderProfit()>=Profit)
// если ордер бай
{
OPB=1;
if(StochasticCAD==0 || StochasticAUD==100 || SARCAD<bidCAD || SARAUD>askAUD)//и рынок близок к развороту
{
OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); // закроем его, если он в профите
OPB=0;
}
}
else
{
//_______закрытие Sell_______
if(OrderType() == OP_SELL && OrderProfit()>=Profit)// если ордер селл
{OPS=1;
if(StochasticCAD==100 || StochasticAUD==0 || SARCAD>askCAD || SARAUD<bidAUD)//и рынок близок к развороту
{
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); // закроем его, если он в профите
OPS=0;
}
}
}
}
//______________выставление ордеров______________________________________________________________________
if (SARCAD>askCAD && SARСCAD<bidCAD && SARAUD<bidAUD && SARСAUD>askAUD && OPB<1)//определим условия
{ //_______Buy_______
if(!IsTradeAllowed())
{
Alert("занят торговый поток, повторим попытку бай...");
return(-1);
}
OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,comB,magic,0,Red); //выставим ордер
if(OPB == -1)
{
Alert("GBPUSD"," ошибка: бай", GetLastError());
return(-1);
}
if(OPB > 1)
Alert ("GBPUSD","Выставили ордер на покупку!");
}
else
{//_______Sell_______
if (SARСCAD>askCAD && SARCAD<bidCAD && SARСAUD<bidAUD && SARAUD>askAUD && OPS<1)//определим условия
{
if(!IsTradeAllowed())
{
Alert("занят торговый поток, повторим попытку селл...");
return(-1);
}
OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //выставим ордер
if(OPS == -1)
{
Alert("GBPUSD"," ошибка: селл", GetLastError());
return(-1);
}
if(OPS > 1)
Alert ("GBPUSD","Выставили ордер на продажу!");
}
}
return(0);//выход
}
При тестировании ничего не выдает. Никаких результатов.
В журнале - набор ошибок:
Подскажите, что не так???
Для начала научитесь вставлять код в окно посредством одновременного нажатия кл "Контрл + Альт + М", дабы в вашей галиматье людям ориентироваться и давать рекомендации.
Кроме этого попробуйте дважды кликнуть мышкой на соответствующее сообщение об ошибке в журнале - возможно наведет на какие-нибудь мысли...
Для начала научитесь вставлять код в окно посредством одновременного нажатия кл "Конрл + Альт + М", дабы в вашей галиматье людям ориентироваться и давать рекомендации.
Кроме этого попробуйте дважды кликнуть мышкой на соответствующее сообщение об ошибке в журнале - возможно наведет на какие-нибудь мысли...
Ошибки в журнале тестера,а не компилятора... (на рисунке вообще-то видно, если сначала смотреть, а потом комментировать...). Двойной щелчок там ничего не дает...
Тест по всем тикам? Проблемы с историей
Тест по всем тикам? Проблемы с историей
Т.е. нужно перегрузить историю по всем парам, участвующим в анализе?
Т.е. нужно перегрузить историю по всем парам, участвующим в анализе?
Возможно. Если конечно ДЦ это поддерживает.
Только стоит не забывать что в тестере можно открывать позиции по текущему инструменту, и есть ряд ограничений по другим инструментам
Возможно. Если конечно ДЦ это поддерживает.
Только стоит не забывать что в тестере можно открывать позиции по текущему инструменту, и есть ряд ограничений по другим инструментам
А что такое ДЦ? И какие ограничения по другим инструментам?
А что такое ДЦ? И какие ограничения по другим инструментам?
ДЦ - Дилинговый центр
В тестере по другим инструментам можно получить только цену открытия на нулевом баре, тики по другим инструментам не моделируются, рыночное окружение практически недоступно.
Сделки по другим инструментам не открываются.
Если нужно корректно проводить мультивалютный анализ, то лучше пользоваться МТ5. Там есть мультивалютный тестер.