[open source] [Советник] Zerg EA MOD (мартингейл)

От Shmuma, 13 октября, 2013 в Лаборатория ProfitFX

#101


increaseOnProfit=false - Докупка выключена
increaseOnProfit=false - Докупка включена - Я правильно понял ?



Да! :)) И так, и так хорошо >:d
#102


Господа,я так понял бот никто даже на демо еще не тестировал?



Ну так поставь на демку и мониторинг сделай.
#103

Мужики у меня такая проблема что на TradeFort на ставится... Пишет Ea will run only on AUDNZD, причем обычный Зерг ставится без проблем а мод не хочет - Мод Зерг М2. Может трабла из за того что на Форте есть флоат, ну тут сама пара идет как AUDNZDf этот "Ф" все решает в моде?

Автор#104


Мужики у меня такая проблема что на TradeFort на ставится... Пишет Ea will run only on AUDNZD, причем обычный Зерг ставится без проблем а мод не хочет - Мод Зерг М2. Может трабла из за того что на Форте есть флоат, ну тут сама пара идет как AUDNZDf этот "Ф" все решает в моде?



В исходнике, в первой строчке функции start добавьте f к строке AUDNZD. Или вообще уберите проверку:

void start() {
if (Symbol() != "AUDNZD") {
Comment("ERROR: EA will only run on AUDNZD");
return;
}
#105

Проверка нужна для защиты от тупого пользователя. Проще добавить суффик и\или префикс символа.

#106


Проверка нужна для защиты от тупого пользователя. Проще добавить суффик и\или префикс символа.


Может, проще искать в символе чарта символьные строки "AUDNZD" и "audnzd"?
У Symbol() строчный результат?
#107


Проверка нужна для защиты от тупого пользователя. Проще добавить суффик и\или префикс символа.



Тупым пользователям - вообще бы не рекомендовал торговать любыми советниками :)
Как и руками..... ИМХО
#108


У меня M2 работает на двух реальных счетах (альпари, ecn). Без нареканий.


Уважаемый Shmuma, какие настройки Вы используете?
#109

Раз он стоит,и уже не 1 неделю на реале,не могли бы вы вывести мониторинг?

#110

Здравствуйте коллеги.
Вчера/сегодня отторговалась еще одна сетка. 6 ордеров, полное совпадение по всем счетам. Похожепредидущий глюк был вызван шагом сетки 2. Слишком агрессивно. Сейчас шаг 7. Проблема решена.

#111


Здравствуйте коллеги.
Вчера/сегодня отторговалась еще одна сетка. 6 ордеров, полное совпадение по всем счетам.
Похожепредидущий глюк был вызван шагом сетки 2. Слишком агрессивно. Сейчас шаг 7. Проблема решена.


Да, шаг всего 2 пипса (4-хзначных) это очень густая сетка, тут даже минимальная асинхронность нескольких терминалов уже влияет на построение корзин ордеров.

Но есть к вам еще один необязательный вопрос...
Сетка с шагом 2 пипса и 7 пипсов имеют существенно разные свойства и прибыль.
Например, при 60 ордерах длина таких сеток 120 и 420 пипсов - это радикально разные экономики торгов.
А вы меняете одну на другою как будто они однотипные.

Может, я излишне любопытен - но что-то очень хитро вы тестируете...
Если это не секрет, идею ваших маневров расскажете?!
#112

Да нечего особо рассказывать. Главная задача - уложиться в параметры по риску. Прикладываю set.

z.set80 скач.

Автор#113


Уважаемый Shmuma, какие настройки Вы используете?


В аттаче. По уровню риска один MedHigh, второй High.


Раз он стоит,и уже не 1 неделю на реале,не могли бы вы вывести мониторинг?



Нет, публиковать мониторинги своих счетов я не планирую.

zerg-m2.set127 скач.

#114



Уважаемый Shmuma, какие настройки Вы используете?


В аттаче. По уровню риска один MedHigh, второй High.

В аттаче вроде один сэт... :)
Автор#115


В аттаче вроде один сэт... :)



Настройки кроме MM одинаковые.
#116
Shmuma
А можно тогда сказать прибыльность в месяц и DD на прикрепленном сете?
Автор#117


Shmuma
А можно тогда сказать прибыльность в месяц и DD на прикрепленном сете?



Самый долгий (MedHigh) работает всего месяц, так что не особо показательно. Посмотрим через год :). Сейчас в myfxbook +7%, макс.просадка 5%, но половину октября работал оригинальный зерг, после M1 и затем разные версии M2. В общем, надо ждать. Я сравнивал сделки на реале и в тестере - все довольно неплохо совпадает, так что из тестов можно получить некоторое представление о работе системы.
#118

Еще небольшая идея по доработке - поставить фильтр на величину спреда. Если спред больше какого-то максимального значения (для каждого ДЦ можно поставить своё конечно), то в рынок не входим.

#119

Прооптил немного версию с фильтром по тренду. Фикс лот:

zerg_m2_2007-2013_with_trend_filter.jpg

#120

Очень даже впечатляет. Есть возможность прогнать с начала 2013 с теми же параметрами?

Автор#121


Прооптил немного версию с фильтром по тренду. Фикс лот:



В репозитории лежит версия Zerg-M2 с тремя MA, на ней у меня результаты получились лучше чем с двумя. Отчет в аттаче. Там, правда, использовалась хитрая схема нумерации комбинаций параметров MA, чтобы не перебирать неверные сочетания параметров, но, при желании, разобраться можно. Лучший результат по оптимизации (index=7) выставлен в дефолт (1, 2, 10).

Также в этой версии реализован в первом приближении выход не по фиксированной прибыли а по CCI. Оптимизация по ним еще идет (и еще займет дня три), но предварительные результаты тоже неплохие (прибыль утраивается с тем же уровнем просадки и кол-вом сделок).

3ma-opt.rar117 скач.

#122

Здорово. Тогда ждём новую версию, как более перспективную. Оптимизации больше пока не провожу.
Ай, ладно. Всё равно тест за 13-й год уже прогнал, просили - покажу. Тем более неплохие результаты. Кстати, важный момент - ставил спред 30 на всех тестах:

zerg_m2_2013_with_trend_filter.jpg

Изменено 31 октября, 2013 пользователем Stalker80

#123

Спасибо за тест! Ждем новую версию, возможно реал переедет на нее :-)

#124

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

Нашел код по теме в интернетах, но знаний не хватает оценить что там. Зацените, кто может!

Спойлер


#define GET 0
#define PUT 1
#define RESET 2
#define INIT 3

#define EA_BALANCE 0
#define EA_PROFIT 1
#define EA_MARGIN 2
#define EA_FREEMARGIN 3
#define EA_EQUITY 4
#define EA_TOTAL_SELL 5
#define EA_TOTAL_BUY 6

#define DATA_PROFIT 0
#define DATA_MARGIN 1
#define DATA_TOTAL 2
#define DATA_LOTS 3
double gdFund =200;

/*
Print(InfoMagicNumber(EA_BALANCE, 1234);

*/


double InfoMagicNumber(int iValue, int iMagicNumber, int iFunction = GET){

if (IsOptimization() != FALSE || IsTesting() != FALSE){
//return(InfoMagicNumberOptimization(iValue, iMagicNumber, iFunction));
}

static double ldData[4][2];
static int liOHTCounted = 0;
if(iFunction == INIT){

liOHTCounted = 0;
ldData[DATA_PROFIT][0] = gdFund;

} else if(iFunction == PUT){

int liOT = OrdersTotal();
int liOHT = OrdersHistoryTotal();

ldData[DATA_PROFIT][1] = 0;
ldData[DATA_MARGIN][1] = 0;
ldData[DATA_TOTAL][OP_SELL] = 0;
ldData[DATA_TOTAL][OP_BUY] = 0;
ldData[DATA_LOTS][OP_SELL] = 0;
ldData[DATA_LOTS][OP_BUY] = 0;

for(int i = liOHTCounted; i OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == iMagicNumber){
ldData[DATA_PROFIT][0]+= OrderProfit()+OrderCommission()+OrderSwap();
}
}
liOHTCounted = liOHT;

for(i = 0; i OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == iMagicNumber){
ldData[DATA_PROFIT][1]+= OrderProfit()+OrderCommission()+OrderSwap();
ldData[DATA_TOTAL][OrderType()]++;
ldData[DATA_LOTS][OrderType()]+= OrderLots();
}
}

ldData[DATA_MARGIN][1] = (MarketInfo(OrderSymbol(), MODE_MARGINREQUIRED)*ldData[DATA_LOTS][OP_SELL]*MagicAccountLeverageFactor(GET));
if (ldData[DATA_LOTS][OP_BUY] > ldData[DATA_LOTS][OP_SELL]){
ldData[DATA_MARGIN][1] = (MarketInfo(OrderSymbol(), MODE_MARGINREQUIRED)*ldData[DATA_LOTS][OP_BUY]*MagicAccountLeverageFactor(GET));
}

} else if(iFunction == GET){
switch(iValue){
case EA_BALANCE:
return(ldData[DATA_PROFIT][0]);
break;
case EA_PROFIT:
return(ldData[DATA_PROFIT][1]);
break;
case EA_MARGIN:
return(ldData[DATA_MARGIN][1]);
break;
case EA_FREEMARGIN:
return(ldData[DATA_PROFIT][0]+ldData[DATA_PROFIT][1]-ldData[DATA_MARGIN][1]);
break;
case EA_EQUITY:
return(ldData[DATA_PROFIT][0]+ldData[DATA_PROFIT][1]);
break;
case EA_TOTAL_SELL:
return(ldData[DATA_TOTAL][OP_SELL]);
break;
case EA_TOTAL_BUY:
return(ldData[DATA_TOTAL][OP_BUY]);
break;
}
}
}

#125

За тест спасибо. ;)

Изменено 31 октября, 2013 пользователем DiZi

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

Перейти к списку тем
Форум · 2.0.20260627.0025