Советники: BeerGodEA - страница 21

[Удален]  
BeerGod:
Скорей всего ДЦ не допускает шаг лота 0.01, а только 0.1. После первой закрытой сделки в тесте лот должен был бы стать 0.11. В ММ эта проверка не предусмотрена от того и ошибка 131 (неправильный объем). В оригинале что для закачки постоянный лот, потому на том ДЦ и без ошибок прошло. У меня на всех ДЦ шаг лота 0.01, поэтому как то и не задумывался что эта ошибка может выскочить.

    Спасибо за ответ. Да, так оно и оказалось... Закомментарил ВРЕМЕННО фунцию LotsOptimized и убрал обращения к ней, т.е.фактически сделал значение Lot постоянной величиной и сразу тестирование прошло до конца! Но ММ, конечно же, нужно. Буду думать как сделать анализ шага лота в ДЦ, хотя я в этих делах не шибко силён... 
[Удален]  
awi:
BeerGod:
Скорей всего ДЦ не допускает шаг лота 0.01, а только 0.1. После первой закрытой сделки в тесте лот должен был бы стать 0.11. В ММ эта проверка не предусмотрена от того и ошибка 131 (неправильный объем). В оригинале что для закачки постоянный лот, потому на том ДЦ и без ошибок прошло. У меня на всех ДЦ шаг лота 0.01, поэтому как то и не задумывался что эта ошибка может выскочить.

    Спасибо за ответ. Да, так оно и оказалось... Закомментарил ВРЕМЕННО фунцию LotsOptimized и убрал обращения к ней, т.е.фактически сделал значение Lot постоянной величиной и сразу тестирование прошло до конца! Но ММ, конечно же, нужно. Буду думать как сделать анализ шага лота в ДЦ, хотя я в этих делах не шибко силён... 

Доработал функцию ММ, чтобы корректно работала на любых ДЦ с любым изменением шага лота, так же добавил проверку на магический номер. Попробуйте заменить.

double LotsOptimized()
{
    double minlot = MarketInfo (Symbol(), MODE_MINLOT),
           maxlot = MarketInfo (Symbol(), MODE_MAXLOT),       
           lot = Lots, ld_Profit = 0.0;
    int    orders = OrdersHistoryTotal(), losses = 0;
    int    lotstep;
    if (MarketInfo (Symbol(), MODE_LOTSTEP) == 1) lotstep = 0;
    if (MarketInfo (Symbol(), MODE_LOTSTEP) == 0.1) lotstep = 1;
    if (MarketInfo (Symbol(), MODE_LOTSTEP) == 0.01) lotstep = 2;
//----
    lot = NormalizeDouble ((AccountFreeMargin() - AccountCredit()) * MaximumRisk / balans, 2);
    if (DecreaseFactor > 0.0)
    {
        for (int i = orders - 1; i >= 0; i--)
        {
             if (!OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {Print ("Error in history!"); break;}
             if (OrderSymbol() != Symbol()) continue;
             if (OrderType() > OP_SELL) continue;
             if (OrderMagicNumber() != mn) continue;
             ld_Profit = OrderProfit();
             if (ld_Profit > 0.0) break; 
             if (ld_Profit < 0.0) losses++;
        }
        if (losses > 1) lot = NormalizeDouble (lot + lot * losses / DecreaseFactor, lotstep);
    }
    if (lot < minlot) lot = minlot;
    if (lot > maxlot) lot = maxlot; 
//----
    return (lot);
}
[Удален]  
BeerGod:
Доработал функцию ММ, чтобы корректно работала на любых ДЦ с любым изменением шага лота, так же добавил проверку на магический номер. Попробуйте заменить.
[... код ...]
Вот за это большое спасибо! Вечером буду пробовать (сейчас бегу на работу). Я бы неделю копошился с кодом и не факт, что что-нибудь сделал...
[Удален]  
BeerGod:

Есть идейка делить лот на две части и заходить двумя ордерами, один ордер с профитом около 20-25пп, второй если цель взята сразу в безубыток. Попробую сделать.


Можете-ли выложить код для тестирования (можно в л.с.)

Результаты теста на центовом буду выкладывать ежемесячно

С уважением...

 
BeerGod:
saban:
BeerGod:
Яйца тут непричем, Nirus у вас тест на 4х знаке ? Если да то есть некие мыслишки насчет повышения результата на 5ти значных ДЦ ... но суть в общем ясна ?

А нукась скажите пожалуйста, а в чем там разница? ну просто не въеду. Неужто там расчитывается как-то по другому?

Ну конечно есть разница и огромная, вот кусок кода ... на четырехзнаке цена 1.2950-1.2951, на пятизнаке 1.29502-1.29509 это утрированно конечно, но алгоритм в первом и втором случае сработает по разному, на разных ДЦ, округление цены до 4х знака в расщете результата не давало (проверено) надо некую дельту вводить (поправку на шум) для пятизнака, не нарушая общего алгоритма.

//======== получение данных с индикаторов и текущей цены ======================
{//2
MA_1_t=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0); // МА_1 текущая
MA_1_p=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,1); // МА_1 прошлая
TimeBar_t = (TimeCurrent()-Time[0])/60; // время в минутах с открытия свечи
sv_close = iClose(NULL,0,1); // цена закрытия свечи на предыдущем баре
PA = Bid; // получение текущей цены
spread =  MarketInfo(Symbol(),MODE_SPREAD); // спрэд
stoplevel =  MarketInfo(Symbol(),MODE_STOPLEVEL); // уровень стопов
RefreshRates ();
}//2  
// ================= Обработка сигналов ===============================
{//3
if (((PA+(Delta*Point)) < MA_1_t) && (MA_1_t < MA_1_p) && (PA < sv_close) && (TimeBar_t==TimeBarOpen))   NewBuy = 1; else NewBuy = 0; // условие BUY
if (((PA-(Delta*Point)) > MA_1_t) && (MA_1_t > MA_1_p) && (PA > sv_close) && (TimeBar_t==TimeBarOpen))   NewSell = 1; else NewSell = 0; // условие SELL
// ======= вычисляем время торговли ======
// (воскресенье-0,1,2,3,4,5,6)
if((DayOfWeek() == 1 && Hour() >= MondayStart) ||DayOfWeek() == 2 || DayOfWeek() == 3 || DayOfWeek() == 4 || (DayOfWeek() == 5 && Hour() < FridayStop)) Trade = 1; else Trade = 0;
}//3


Ребят, что то с пятизнаком не  понял, советник работает с ним или только под 4-знак? Delta чему должна быть равна? Выложите кому не сложно полный код для пятизнака с ММ и SL+TP

[Удален]  
Почему бы в топике не обновить версию до актуальной?
[Удален]  

Всем привет, тестировал данную совку на реале, перепроверяя кажду сделку тестером, прогоняя раз за разом... и вот что меня очень раздосадовало:

1. прогоняю тестер 1 раз всё как у меня по графику разбросано и график баланса такой же (не очень хороший) прогоняю 10-15 раз всё так же:

2. через пару часов прогоняю снова, граффик приблизительно такой же, но в некоторых сделках, где у меня (и по прошлому тестеру) сделка закрывалась -4 пункта и цена тут же ушла далеко в плюс (как на зло), на новом прогоне, сделка там не закрылась, а закрылась в +50пп...


и это прям... дезориентирует... от какого параметра это зависит? почему утром по тестеру одно, вечером другое, как сделать, чтобы сова торговала по "хорошей" тестерной модели?

[Удален]  

ну что? уважаемые, никто не объяснит, почему стабильно.. каждый день, даже в выходные, советник показывает на тестере плохую картинку с 9 вечера по москве, до 11 дня, а с 11 до 9, хорошую, так же и торгует... это прям... от чего такая зависимость может быть? просто феномен для меня... график ведь, один и тот же... нет, в один период по одному открывает\закрывает в другой период, по второму...

[Удален]  
motherffff:

Всем привет, тестировал данную совку на реале, перепроверяя кажду сделку тестером, прогоняя раз за разом... и вот что меня очень раздосадовало:

1. прогоняю тестер 1 раз всё как у меня по графику разбросано и график баланса такой же (не очень хороший) прогоняю 10-15 раз всё так же:

2. через пару часов прогоняю снова, граффик приблизительно такой же, но в некоторых сделках, где у меня (и по прошлому тестеру) сделка закрывалась -4 пункта и цена тут же ушла далеко в плюс (как на зло), на новом прогоне, сделка там не закрылась, а закрылась в +50пп... 

и это прям... дезориентирует... от какого параметра это зависит? почему утром по тестеру одно, вечером другое, как сделать, чтобы сова торговала по "хорошей" тестерной модели?

Ну это уже к вопросу как и чем мерить!

Во-первых, насколько я знаю, не последнюю роль в тестах играют пункты "Ошибки рассогласования графиков" (должен быть ноль) и "Качество моделирования" (должно быть не меньше 90%). Из ваших картинок этого не видно.

Во-вторых, какого-то одного параметра, от которого происходит расхождение здесь нет, есть условие выполнения сделки, а это совокупность всех параметров. Соответственно, если условие выполняется, то сделка открывается. Открытие сделки напрямую зависит от цены. Т.к. котировки у тестера и у советника в реале могут незначительно отличаться и это может влиять на результат, когда цена находится как бы "на грани". Даже различие на 5 пунктов (при пятизнаке), может повлиять на открытие или закрытие сделки. То же самое можно наблюдать при параллельном тесте на демо и на реале.

[Удален]  
такой вот вопрос... ММ в советнике не поднимает объём выше 0.11... к примеру выставляем депозит 300$, в настройках balance 30, ну и шаг 0.01... и вот если депо снижается меньше 300, то объём изменяется, к примеру 270 - объём 0.09, а если депо выше 300, даже если 500... то как зависло на 0.11 объёме... так и будет.. в чём проблема?