Перейти к содержанию

[open source] [Советник] Milky Way EA 3.24


Рекомендуемые сообщения

[open source] [Советник] Milky Way EA 3.24 Опубликовано

Похоже, тут ошибка, из-за которой первый ордер не всегда закрывается при обратном пересечении ББ2.
Мы должны сравнивать закрытие позапрошлой свечи не с уровнем ББ2 на момент закрытия прошлой свечи (HighBB2 и LowBB2), а с уровнем ББ2 на момент закрытия позапрошлой свечи.

Спойлер

if(OrdExist(OP_BUY)>0&&Close2>HighBB2&&Close1 {
signal=3;
DrawFlag(2);
EAComment(" Сигнал на выход из покупки обнаружен.");
}
if(OrdExist(OP_SELL)>0&&Close2LowBB2)
{
signal=-3;
DrawFlag(-2);
EAComment(" Сигнал на выход из продажи обнаружен.");
}

return(signal);

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 533
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Milky Way EA 3.24 Год выпуска: 2014 Валютные пары: любые Таймфрейм: Н4 Актуальная версия: 3.24 m07 http://tlap.com/forum/laboratoriya-profitfx/24/open-source-sovetnik-milky-way-ea-3-24/7222/?do=

Перейти

Люди серьезно шлифовали твоего бота. Серьезно! И только сейчас довели его до нормального эксплуатационного уровня! И это произошло только потому, что был в наличие исходник. А так бы бот висел в теме

Перейти

Версия 3.24 Немного прибрал код, удалил пару ляпов. Тесты: Milky_way_3.24.rar Сеты.rar

Перейти
[open source] [Советник] Milky Way EA 3.24 Опубликовано


Похоже, тут ошибка...


Кстати да, значение BBands(30, 2) должно соответствовать свече с которой его сравнивают.

К тому же (для покупок) свеча с закрытием выше и свеча с закрытием ниже верхней линии BBands(30, 2) не обязаны идти последовательно, между ними могут быть 1-2 свечи!
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано


К тому же (для покупок) свеча с закрытием выше и свеча с закрытием ниже верхней линии BBands(30, 2) не обязаны идти последовательно, между ними могут быть 1-2 свечи!


Идея в том, что закрытие одной свечи выше, а следующей за ней ниже ББ2 - это обязательное и достаточное условие того, что цена пересекла ББ2 сверху вниз.
Так что условие нормальное, но реализовано с ошибкой.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано


Silentspec, я правильно понимаю, что при ExtremumControl=true и Extremum=5 он тут входить не должен?

Спойлер



Оба ордера закрылись по стопу, хотя по идее один должен был закрыться раньше, как только свеча закрылась выше ББ2. Конечно, фразу из описания "следующая за ней" можно понимать двояко (сразу за ней, или просто когда-нибудь), но идеологически правильно, чтобы было важно, что цена вышла за пределы ББ2, а потом вернулась. Во всяком случае для покупок именно такое наблюдается.
Спойлер



Нет, должен входить. Сигнальная свеча может касаться ББ.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано (изменено)



Silentspec, я правильно понимаю, что при ExtremumControl=true и Extremum=5 он тут входить не должен?

Спойлер



Оба ордера закрылись по стопу, хотя по идее один должен был закрыться раньше, как только свеча закрылась выше ББ2. Конечно, фразу из описания "следующая за ней" можно понимать двояко (сразу за ней, или просто когда-нибудь), но идеологически правильно, чтобы было важно, что цена вышла за пределы ББ2, а потом вернулась. Во всяком случае для покупок именно такое наблюдается.
Спойлер



Нет, должен входить. Сигнальная свеча может касаться ББ.

А как же:
Цитата

2. Цена находится в пределах ББ с токлонением 1 и центральной линии, при этом лои Extremum свечей подряд не касаются центральной линии (отключается ExtremumControl).



Добавлено: 27-03-2015 12:34:39

Продолжаем изучение кода.
Я правильно понимаю, что в этой части есть условие, что если ExtremumContr(1)=FALSE, сигнал на вход не появится?
Спойлер

// Сигнал в покупку, если нет никаких ордеров
if(!MaxRisk()&&OrdExist(100)==0&&OrdExist(-100)==0&&High2>High1&&Low2>Low1&&Close1>Low1+0.5*(High1-Low1)&&Close1MiddleBB&&!ExtremumContr(1)&&High1-Low1 {
signal=1;
DrawFlag(1);
EAComment(" Сигнал в покупку обнаружен.");
}


Смотрим часть, где ExtremumContr(1) присваивается значение
Спойлер

//+------------------------------------------------------------------+
//| Highs Control |
//+------------------------------------------------------------------+
// Возвращает тру, если хаем или лоем задета средняя линия боллинджера
// dir=1 для покупок, dir=-1 для продаж
bool ExtremumContr(int dir)
{
if(!ExtremumControl) return(false); // Если отключен, возвращает фэлс
double MiddleBB;
for (int i=2;i {
MiddleBB=iBands(Symbol(),Period(),BBPeriod,1,0,0,0,Extremum);
if(dir==-1&&High>MiddleBB) return(true); // Если задели, вернем тру
if(dir==1&&Low }
return(false); // Если не задели, вернем фэлс
}


А вот тут, похоже, ошибка. По идее он должен сравнивать High (для продаж) c MiddleBB. Вместо этого производится сравнение каждого High с единственным уровнем MiddleBB Extremum свечей назад. Изменено пользователем Doveman
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

  • 4 weeks later...
[open source] [Советник] Milky Way EA 3.24 Опубликовано (изменено)

Я так понимаю, что сова иногда не выставляете с/л. Кто как с этим справляется?)


Пардон, все выставил. Это у меня с терпением проблемы

image.jpg

Изменено пользователем Blyamchik
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано
Blyamchik, еще бы понять где вы сначала не увидели, а потом увидели выставление с/л...

Вы о стопе ордера или о стоповых отложках?
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано (изменено)


Blyamchik, еще бы понять где вы сначала не увидели, а потом увидели выставление с/л...

Вы о стопе ордера или о стоповых отложках?



Я о стоп лоссе. После срабатывания стоп ордера, стоп лос не был выставлен. Спустя несколько часов сова стоплосс выставила. Так что вроде бы, все впорядке :d Изменено пользователем Blyamchik
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано

Вообще-то в отложках стоп можно задавать для любого типа счета в момент выставления отложки до её активации.
И пауза в выставлении стопа в несколько часов после активации отложки - это совершенно не порядок, а явная недоработка.

Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано

Было замечено, что данный недочет распространяется только на ордера sellstop.
Выяснил почему - при вызове OrderSend() для позиций на продажу в качестве аргумента для стоплоса передавался 0, в отличие от покупок.
Поправил, кому нужно прикладываю.

Milky_way_EA_v3.00.mq4
Milky_way_EA_v3.00.ex4

  • Лайк 9
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано


Было замечено, что данный недочет распространяется только на ордера sellstop.
Выяснил почему - при вызове OrderSend() для позиций на продажу в качестве аргумента для стоплоса передавался 0, в отличие от покупок.
Поправил, кому нужно прикладываю.


Вы не могли бы исправить остальные ошибки, которые выше нашли в коде? А то автор забил на сова :(( Правда тогда и сеты придется новые создавать...
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано (изменено)



Проверю завтра код
Ну ошибок в коде, по крайней мере явных, я не нашел...


Почему в функции OpenOrder отложка на продажу ставится на максимальный лоу?
Спойлер



void OpenOrder (int direction)
{
double OpenPrice = 0, StopLoss = 0, Lot = 0, SL = 0;

if (direction == OP_SELL) {
OpenPrice = MathMax(MathMax(Low[3], Low[4]), MathMax(Low[2], Low[1]));
^--- Максимальный лоу? И почему бы не использовать iHighest?

//NormalizeDouble(Low[1]-OtstupOtlozhka*Point,Digits());
StopLoss = SL(OpenPrice, OP_SELL);
SL = NormalizeDouble((StopLoss - OpenPrice) / Point, 0);
if(SL > MaxSL) {
EAComment ("Стоплосс слишком большой!");
return;
}
Lot = Lots(SL);
if(!OrderSend(Symbol(), OP_SELLSTOP, Lot, OpenPrice, Slippage, 0, 0, ExpertName + " Magic:" + IntegerToString(Magic), Magic, 0, Red))
EAComment ("Ошибка открытия ордера!");
Sleep(1000);
if(!OrderSend(Symbol(), OP_SELLSTOP, Lot, OpenPrice, Slippage, 0, 0, ExpertName + " Magic:" + IntegerToString(Magic), Magic, 0, Red))
EAComment ("Ошибка открытия ордера!");
return;
}

if (direction == OP_BUY) {
OpenPrice = MathMax(MathMax(High[3], High[4]), MathMax(High[2], High[1]));
//NormalizeDouble(High[1]+OtstupOtlozhka*Point,Digits());
StopLoss = SL(OpenPrice, OP_BUY);
SL = (OpenPrice - StopLoss) / Point;
if(SL > MaxSL) {
EAComment ("Стоплосс слишком большой!");
return;
}
Lot = Lots(SL);
if(!OrderSend(Symbol(), OP_BUYSTOP, Lot, OpenPrice, Slippage, StopLoss, 0, ExpertName + " Magic:" + IntegerToString(Magic), Magic, 0, Blue))
EAComment ("Ошибка открытия ордера!");
Sleep(1000);
if(!OrderSend(Symbol(), OP_BUYSTOP, Lot, OpenPrice, Slippage, StopLoss, 0, ExpertName + " Magic:" + IntegerToString(Magic), Magic, 0, Blue))
EAComment ("Ошибка открытия ордера!");
return;
}
return;
}


Может нужно на минимальный лоу?


Тоже думаю что это скорее всего логическая ошибка.
Поправил для продаж OpenPrice = Low[ iLowest( Symbol(), 0, MODE_LOW, 4, 1 ) ], для покупок OpenPrice = High[ iHighest( Symbol(), 0, MODE_HIGH, 4, 1 ) ], что идентично OpenPrice = MathMin(MathMin(Low[3], Low[4]), MathMin(Low[2], Low[1])) и OpenPrice = MathMax(MathMax(High[3], High[4]), MathMax(High[2], High[1])) соответственно.

Теперь, скорее всего, сеты будут давать другие результаты.



Было замечено, что данный недочет распространяется только на ордера sellstop.
Выяснил почему - при вызове OrderSend() для позиций на продажу в качестве аргумента для стоплоса передавался 0, в отличие от покупок.
Поправил, кому нужно прикладываю.


Вы не могли бы исправить остальные ошибки, которые выше нашли в коде? А то автор забил на сова :(( Правда тогда и сеты придется новые создавать...


Почитаю тему, посмотрю что очевидно не так в коде.

Milky_way_EA_v3.00_m01.mq4
Milky_way_EA_v3.00_m01.ex4

Изменено пользователем kkirs
  • Лайк 4
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано

Ошибку с максимальным лоу я как-то смог исправить. Перекос пропал, но сеты подобрать не удалось. Результаты не стал сохранять, т.к. в коде еще ряд серьезных ошибок есть (например, с закрытием сделки при обратном пересечении ББ).

Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано
kkirs, просьба именовать файлы по типу Milky way EA v3.00 m01.mq4, например.
Внесли коррекцию - увеличьте на единичку индекс модификации mxx в наименовании файла исходника.

За доработку спасибо, бота таки очень желательно попробовать довести до ума.
  • Лайк 4
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано (изменено)


Ошибку с максимальным лоу я как-то смог исправить. Перекос пропал, но сеты подобрать не удалось. Результаты не стал сохранять, т.к. в коде еще ряд серьезных ошибок есть (например, с закрытием сделки при обратном пересечении ББ).



Похоже, тут ошибка, из-за которой первый ордер не всегда закрывается при обратном пересечении ББ2.
Мы должны сравнивать закрытие позапрошлой свечи не с уровнем ББ2 на момент закрытия прошлой свечи (HighBB2 и LowBB2), а с уровнем ББ2 на момент закрытия позапрошлой свечи.

Спойлер

if(OrdExist(OP_BUY)>0&&Close2>HighBB2&&Close1 {
signal=3;
DrawFlag(2);
EAComment(" Сигнал на выход из покупки обнаружен.");
}
if(OrdExist(OP_SELL)>0&&Close2LowBB2)
{
signal=-3;
DrawFlag(-2);
EAComment(" Сигнал на выход из продажи обнаружен.");
}

return(signal);



Подкорректировал закрытие первого ордера. Прикладываю (m02).
Спойлер

// Условия закрытия одного ордера ( сигнал на выход из позиции )
double bb_high_1 = iBands( Symbol(), Period(), BBPeriod, 2, 0, 0, 1, 1 );
double bb_high_2 = iBands( Symbol(), Period(), BBPeriod, 2, 0, 0, 1, 2 );
double bb_low_1 = iBands( Symbol(), Period(), BBPeriod, 2, 0, 0, 2, 1 );
double bb_low_2 = iBands( Symbol(), Period(), BBPeriod, 2, 0, 0, 2, 2 );

if( OrdExist( OP_BUY ) > 0 && Close2 > bb_high_2 && Close1 {
signal = 3;
DrawFlag( 2 );
EAComment( " Сигнал на выход из покупки обнаружен." );
}
if( OrdExist( OP_SELL ) > 0 && Close2 bb_low_1 )
{
signal = -3;
DrawFlag( -2 );
EAComment( " Сигнал на выход из продажи обнаружен." );
}




Добавлено: 28-04-2015 16:53:10

В первом посте написано, что при открытии ордеров используются показания ББ с отклонением 1. Реально же в коде при формировании сигнала на открытие используется ББ с отклонением 2, как и при закрытии... Исправлять или нет не знаю.
В общем, направляйте меня, куда двигаться дальше. Единственное, я не буду разбираться с модификациями ММ и всем что связано с лотностью.


Добавлено: 29-04-2015 08:22:52




Silentspec, я правильно понимаю, что при ExtremumControl=true и Extremum=5 он тут входить не должен?

Спойлер



Оба ордера закрылись по стопу, хотя по идее один должен был закрыться раньше, как только свеча закрылась выше ББ2. Конечно, фразу из описания "следующая за ней" можно понимать двояко (сразу за ней, или просто когда-нибудь), но идеологически правильно, чтобы было важно, что цена вышла за пределы ББ2, а потом вернулась. Во всяком случае для покупок именно такое наблюдается.
Спойлер



Нет, должен входить. Сигнальная свеча может касаться ББ.

А как же:
Цитата

2. Цена находится в пределах ББ с токлонением 1 и центральной линии, при этом лои Extremum свечей подряд не касаются центральной линии (отключается ExtremumControl).



Добавлено: 27-03-2015 12:34:39

Продолжаем изучение кода.
Я правильно понимаю, что в этой части есть условие, что если ExtremumContr(1)=FALSE, сигнал на вход не появится?
Спойлер

// Сигнал в покупку, если нет никаких ордеров
if(!MaxRisk()&&OrdExist(100)==0&&OrdExist(-100)==0&&High2>High1&&Low2>Low1&&Close1>Low1+0.5*(High1-Low1)&&Close1MiddleBB&&!ExtremumContr(1)&&High1-Low1 {
signal=1;
DrawFlag(1);
EAComment(" Сигнал в покупку обнаружен.");
}


Смотрим часть, где ExtremumContr(1) присваивается значение
Спойлер

//+------------------------------------------------------------------+
//| Highs Control |
//+------------------------------------------------------------------+
// Возвращает тру, если хаем или лоем задета средняя линия боллинджера
// dir=1 для покупок, dir=-1 для продаж
bool ExtremumContr(int dir)
{
if(!ExtremumControl) return(false); // Если отключен, возвращает фэлс
double MiddleBB;
for (int i=2;i {
MiddleBB=iBands(Symbol(),Period(),BBPeriod,1,0,0,0,Extremum);
if(dir==-1&&High>MiddleBB) return(true); // Если задели, вернем тру
if(dir==1&&Low }
return(false); // Если не задели, вернем фэлс
}


А вот тут, похоже, ошибка. По идее он должен сравнивать High (для продаж) c MiddleBB. Вместо этого производится сравнение каждого High с единственным уровнем MiddleBB Extremum свечей назад.


Поправил ExtremumControl, теперь должно корректно работать так, как заявил автор в первом посте. При ExtremumControl == true будут отслеживаться Extremum свечей на касание с центральной линией ББ1. При ExtremumControl == false фильтрация игнорируется. Это означает, что данные расчеты не учитываются далее при формировании сигнала на открытие ордеров и не влияют на итоговый сигнал по сумме условий на открытие позиций. Прикладываю (m03).
Спойлер

// Возвращает тру, если хаем или лоем задета средняя линия боллинджера
// dir=1 для покупок, dir=-1 для продаж
bool ExtremumContr( int dir )
{
if( ExtremumControl == false )
return( false );

for( int i = 1; i {
double middle_bb1 = iBands( Symbol(), Period(), BBPeriod, 1, 0, 0, MODE_MAIN, i );

if( dir == 1 && Low|i| {
return( true );
}
if( dir == -1 && High|i| > middle_bb1 )
{
return( true );
}
}
return( false );
}


К указанным ранее несоответствиям кода и описания добавлю: BBMoveControl работает не так, как заявлено в первом посте (пункт 1). Используются скользящие средние вместо ББ:
Спойлер


bool BBMove(int dir)
{
if(!BBMoveControl) return(true);
HideTestIndicators(true);
double MAStart=iMA(Symbol(),Period(),BBPeriod,0,0,0,1);
double MA03=iMA(Symbol(),Period(),BBPeriod,0,0,0,3);
double MA05=iMA(Symbol(),Period(),BBPeriod,0,0,0,5);
double MA07=iMA(Symbol(),Period(),BBPeriod,0,0,0,7);
double MAFinish=iMA(Symbol(),Period(),BBPeriod,0,0,0,7+BBHistory);
HideTestIndicators(false);
if (dir==1&&MAStart>MA03&&MA03>MA05&&MA05>MA07&&MA07>MAFinish) return(true);
if (dir==-1&&MAStart return (false);
}




Добавлено: 29-04-2015 13:08:12



Silentspec, скажи пожалуйста, я понимаю когда советник удаляет отложки если стоп-лосс велик. Но тут интересная штука, выставил недавно отложки по USDCHF, но потом одну удалил, а одна пока осталось. Так и должно быть? :-?


По идее нет. Есть логи? Что пишет?

Теперь удаляются оба отложенных ордера одновременно, а не с разрывом в свечу. Дело было в неправильной процедуре удаления отложенных ордеров. Прикладываю (m04).

Milky_way_EA_v3.00_m02.mq4
Milky_way_EA_v3.00_m03.mq4
Milky_way_EA_v3.00_m04.ex4
Milky_way_EA_v3.00_m04.mq4

Изменено пользователем kkirs
  • Лайк 9
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано


В первом посте написано, что при открытии ордеров используются показания ББ с отклонением 1. Реально же в коде при формировании сигнала на открытие используется ББ с отклонением 2, как и при закрытии... Исправлять или нет не знаю.
В общем, направляйте меня, куда двигаться дальше. Единственное, я не буду разбираться с модификациями ММ и всем что связано с лотностью.


Если Вы про проверку, сколько свечей подряд BB растет/падает, то это не важно. Средняя линия BB - это скользящая средняя. Она одинакова и для BB с отклонением 1 и для BB с отклонением 2.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано (изменено)



В первом посте написано, что при открытии ордеров используются показания ББ с отклонением 1. Реально же в коде при формировании сигнала на открытие используется ББ с отклонением 2, как и при закрытии... Исправлять или нет не знаю.
В общем, направляйте меня, куда двигаться дальше. Единственное, я не буду разбираться с модификациями ММ и всем что связано с лотностью.


Если Вы про проверку, сколько свечей подряд BB растет/падает, то это не важно. Средняя линия BB - это скользящая средняя. Она одинакова и для BB с отклонением 1 и для BB с отклонением 2.

Да, средняя одинакова для отклонений 1 и 2. Я про проверку в пункте 2 до запятой:
Цитата

Цена находится в пределах ББ с отклонением 1 и центральной линии

Там при формировании сигнала на открытие используются значения BBhigh и BBLow с отклонением 2. В данном случае я говорил про это.
Про проверку в пункте 1 (проверка, сколько свечей подряд BB растет/падает) я Вас понял, значит с пунктом 1 все в порядке. Пункт 2 до запятой остается под вопросом. Изменено пользователем kkirs
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано




В первом посте написано, что при открытии ордеров используются показания ББ с отклонением 1. Реально же в коде при формировании сигнала на открытие используется ББ с отклонением 2, как и при закрытии... Исправлять или нет не знаю.
В общем, направляйте меня, куда двигаться дальше. Единственное, я не буду разбираться с модификациями ММ и всем что связано с лотностью.


Если Вы про проверку, сколько свечей подряд BB растет/падает, то это не важно. Средняя линия BB - это скользящая средняя. Она одинакова и для BB с отклонением 1 и для BB с отклонением 2.

Да, средняя одинакова для отклонений 1 и 2. Я про проверку в пункте 2 до запятой:
Цитата

Цена находится в пределах ББ с отклонением 1 и центральной линии

Там при формировании сигнала на открытие используются значения BBhigh и BBLow с отклонением 2. В данном случае я говорил про это.
Про проверку в пункте 1 (проверка, сколько свечей подряд BB растет/падает) я Вас понял, значит с пунктом 1 все в порядке. Пункт 2 до запятой остается под вопросом.

Да, конечно советник должен проверять, что цена находится между центральной линией и BB отклонением 1 (ниже центральной для продаж и выше для покупок). Иначе вся логика по закрытию первого ордера нарушается.
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано (изменено)


Да, конечно советник должен проверять, что цена находится между центральной линией и BB отклонением 1 (ниже центральной для продаж и выше для покупок). Иначе вся логика по закрытию первого ордера нарушается.


Хорошо, поменяю в этом месте с 2 на 1. Самому показалось, что для входа отклонение 2 дает слишком широкий диапазон.


Добавлено: 30-04-2015 06:13:23

Готово. Теперь при формировании сигнала на открытие позиций учитываются показания ББ с отклонением 1. Прикладываю (m05).

Заметил еще одно несоответствие кода описанию. А именно в пункте 3:
Цитата

Размер сигнальной свечи - не больше MaxCandle пунктов.

На самом деле условие "не больше MaxCandle пунктов" применяется не только к сигнальной свече (индекс 1), но и к свече перед ней (индекс 2).

Milky_way_EA_v3.00_m05.ex4
Milky_way_EA_v3.00_m05.mq4

Изменено пользователем kkirs
  • Лайк 5
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано (изменено)

Это нормально.


Добавлено: 02-05-2015 10:21:44

Провел небольшие исправления и местами чистку кода. Подытожу правила входа и выхода из позиций, по которым работает советник:
Покупки:
Спойлер


Открытие ордеров:
1. Размер сигнальной свечи - не больше MaxCandle пунктов.
2. Размер свечи перед сигнальной свечой - не больше MaxCandle пунктов.
3. Лоу сигнальной свечи ниже предыдущего лоу, хай сигнальной свечи ниже предыдущего хая.
4. Закрытие сигнальной свечи происходит в верхней половине ее диапазона.
5. Цена закрытия сигнальной свечи находится между центральной и верхней линией BB с периодом BBPeriod и отклонением 1.
6. РСИ с периодом RSIPer находится ниже RSILow, гарантируя, что откат уже достаточный.
7. Если ExtremumControl == true, то лои Extremum свечей подряд до сигнальной свечи не касаются центральной линии ББ с периодом BBPeriod и отклонением 1. Сигнальная свеча может касаться центральной линии ББ.
8. Если BBMoveControl == true, то средняя линия ББ с периодом BBPeriod растет BBHistory свечей подряд.
9. Если OzymandiasFilter == true, то индикатор Ozymandias с периодом Amplitude на таймфрейме OzymandiasTF сигнализирует о возможности покупок.
Условия 7-9 игнорируются, если равны false. При соблюдении всех условий советник выставляет сразу два отложенных стоповых ордера с рассчитанным стоплосом, без тейкпрофита.

Закрытие ордеров:
Если отложки не активируются спустя OrdTime свечей после выставления, то они удаляются. Если отложенные ордера активировались, то:
1. Когда свеча закроется выше верхней линии ББ с периодом BBPeriod и отклонением 2, а следующая за ней закроется ниже - советник прикроет один ордер.
2. Второй ордер будет находиться в рынке до тех пор, пока его не выбьет по стопу, который постоянно подтягивается тралами.


Продажи:
Спойлер


Открытие ордеров:
1. Размер сигнальной свечи - не больше MaxCandle пунктов.
2. Размер свечи перед сигнальной свечой - не больше MaxCandle пунктов.
3. Лоу сигнальной свечи выше предыдущего лоу, хай сигнальной свечи выше предыдущего хая.
4. Закрытие сигнальной свечи происходит в нижней половине ее диапазона.
5. Цена закрытия сигнальной свечи находится между центральной и нижней линией BB с периодом BBPeriod и отклонением 1.
6. РСИ с периодом RSIPer находится выше RSIHigh, гарантируя, что откат уже достаточный.
7. Если ExtremumControl == true, то хаи Extremum свечей подряд до сигнальной свечи не касаются центральной линии ББ с периодом BBPeriod и отклонением 1. Сигнальная свеча может касаться центральной линии ББ.
8. Если BBMoveControl == true, то средняя линия ББ с периодом BBPeriod падает BBHistory свечей подряд.
9. Если OzymandiasFilter == true, то индикатор Ozymandias с периодом Amplitude на таймфрейме OzymandiasTF сигнализирует о возможности продаж.
Условия 7-9 игнорируются, если равны false. При соблюдении всех условий советник выставляет сразу два отложенных стоповых ордера с рассчитанным стоплосом, без тейкпрофита.

Закрытие ордеров:
Если отложки не активируются спустя OrdTime свечей после выставления, то они удаляются. Если отложенные ордера активировались, то:
1. Когда свеча закроется ниже нижней линии ББ с периодом BBPeriod и отклонением 2, а следующая за ней закроется выше - советник прикроет один ордер.
2. Второй ордер будет находиться в рынке до тех пор, пока его не выбьет по стопу, который постоянно подтягивается тралами.



Насколько я могу судить, все замечания в этой ветке, касающиеся открытия и закрытия советником ордеров, я охватил. Поскольку сеты из первого поста теперь не подходят (начиная с модификации m01), то было бы неплохо создать новые сеты для советника. Прикладываю последнюю версию (m06).

Milky_way_EA_v3.00_m06.zip

Изменено пользователем kkirs
  • Лайк 14
Ссылка на сообщение
Поделиться на другие сайты

[open source] [Советник] Milky Way EA 3.24 Опубликовано

kkirs, в сове есть еще пара мелких недочетов, мож поправите? На торговлю оно никак не влияет, но немножко неудобно...
Например, лог пишется в файл только при закрытии терминала (ну или с какой-то дикой задержкой, не пойму). Во время работы - лог пустой. Приходится закрывать терминал. Пока не закроешь - не поймешь, че там происходит (мож какие ошибки есть).

Ссылка на сообщение
Поделиться на другие сайты

  • 3 weeks later...
[open source] [Советник] Milky Way EA 3.24 Опубликовано

У кого-нибудь есть хорошие сеты под новую версию советника? ну, это чтобы лишнюю работу не делать))

Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...