Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Теперь немного о флагах, которые не вошли в функцию FLG так как сами являются самостоятельными.
А) Flg - флаг инициализации, нужен для того, чтобы после сбоя или начала работы не сначала, при наличии сигнала входа ( этот сигнал носит длительный характер) не открывать позу, т.к. это может уже быть поздно. Логика следующая, если VSR!=0 т.е. есть сигнал, то установить запрет Flg=false; как только сигнал пропал флаг сбрасывается
if (!Flg){if (VSR () ==0) {Flg=true; return (0);}}
Б) Flq – интересный флаг, запрет открытия второй позиции на одном баре. Я сначала хотел сделать запрет открытия позиций при закрытии предыдущей с убытком на одном баре, но это я реализую, когда допишу свою функцию BuSll, с ней это будет просто. А пока есть такой вариант.
Устанавливается он при открытии позиции
{if (Trd_Up_X && VSR() > 0 && bu <HM_Up_X ) {
if (MOS( 0, lots, sl, tp, WindowExpertName(), mn)>=1) {Flq=false;}}
if (Trd_Dn_Y && VSR() < 0 && sll<HM_Dn_Y ) {
if (MOS( 1, lots, sl, tp, WindowExpertName(), mn)>=1) {Flq=false;}}
Кстати, об исправлении в этой функции я писал раньше
Сбрасывается он каждые 4 часа. Если считаете, что для некоторых пар этого много, то можно добавить в функцию H1() сброс флага на каждый час для всех, кроме некоторых пар if (Symbol()!="GBPJPY" || Symbol()!="USDCHF"){ Flq = true ; }
Что-то последняя версия не работает.
Оптимизатор даже на первом этапе не открывает ни одной сделки.
Тестер с параметрами оптимизированными для предыдущего советника действует аналогично.
Разобрались почему не оптимизировалось?
Разобрались почему не оптимизировалось?
Нет.
Особо времени небыло.
Прошлый раз был такой косяк из-за отсутствия истории.
Сейчас прокачиваю историю.
К утру сообщу.
Разобрались почему не оптимизировалось?
Не хочет оптимизироватся.
На тех-же исторических данных седьмая версия оптимизируется.
А последняя нет.
Везде результат 0
Перезалил эксперт. Возможно битая версия. Форум зависал.
И еще обратите внимание на эти строчки в эксперте
начальный баланс, миимальный и максимальный, когда эксперт торгует.
//------------------------------------------------------------------//
bool TrBlnc = true; int StrtBlnc= 3000; int DBlnc= 1500; int UBlnc= 4000;
//------------------------------------------------------------------//
Запрет реализуется в функции bool FLG (int cs )
Еще немного про логику советника.
Есть проблемка - частые гепы. При гепах происходит рассинхронизация оптимизированных параметров и условий входов в рынок, т.к. значения индикаторов и цены становятся разорваны. Для восстановления нужно время. Для АО я определил 12 ч. а существенным гепом считаю изенение цены более чем на 20 обычных пунктов (для каких то пар могут и должны быть другие значения).
Итак, что сделано :
Сначала определяем был ли геп
string dttm = StringConcatenate (Year(),".",Month(),".",Day());
datetime smtm=StrToTime(dttm);
bool Gp;
int shft = iBarShift (NULL,0,smtm);
double iOpn = iOpen (NULL,0,shft);double iCls = iClose (NULL,0,shft+1);
double dOC = MathAbs ((iOpn - iCls)/(Point*10)) ;
if (dOC>20) Gp = true ;
если был и Gp = true то условие на запрет такое
( (DayOfWeek( ) == 1 && Hour( ) <14) && Gp))
Правда у меня есть сомнения в корректности исполнения функции
iBarShift (NULL,0,smtm);
возможно лучше ее написать так
iBarShift (NULL,60,smtm,true); хотя нет, последний по умолчанию парметр всетаки false ???
Жду мыслей и предложений.
И еще обратите внимание на эти строчки в эксперте
начальный баланс, миимальный и максимальный, когда эксперт торгует.
//------------------------------------------------------------------//
bool TrBlnc = true; int StrtBlnc= 3000; int DBlnc= 1500; int UBlnc= 4000;
//------------------------------------------------------------------//
Запрет реализуется в функции bool FLG (int cs )
А зачем нужны такие ограничения?
А зачем нужны такие ограничения?
Если не нужны, не используйте! Я готовлю советник к реалу и как мультивалютник. В дальнейшем, это будет вилка, где советнику будет запрещено торговать, как снизу, чтоб при форсмажоре не слить все, так и сверху, синица в руках лучше, чем журавль))) MM однако
А теперь вести с полей или с фронта))
В прошедшие выходные, я не успел подготовить сет файлы для версии L9, поздно закончил работу над ним плюс праздники)))
Поэтому решил поставить эксперимент. Поставил версию L9 с сетами за прошлую неделю и от другой версии.
Что имеем к исходу двух суток : баланс -$70 эквити +$420 Хорошо идем!
Поэтому если вы тестируете или оптимизируете следите за тем, что бы Эквити находился в диапазоне заданном в параметрах
bool TrBlnc = true; int StrtBlnc= 3000; int DBlnc= 1500; int UBlnc= 4000;
или добавьте в функцию int init() строчку if ( IsOptimization( ) ) TrBlnc = false;//if ( IsTesting() ) TrBlnc = false;
Помогло.
Пошла оптимизация.
Может имеет смысл подобные переменные выносить во внешние?
Будет проще при оптимизации, да и в реальной работе тоже.
Не придется каждый раз при изменении баланса перекомпилировать советник.