Советники: 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 объёме... так и будет.. в чём проблема?
Причина обращения: