neophyte
neophyte личный блог
20 февраля 2016, 23:05

К концу дня перестал соображать...

К концу дня совсем перестал соображать...
Сегодня завершал настройку второстепенных параметров советников. Завершил и начал тестировать.
Три часа угробил разбираясь в тесте и не понимая почему робот прекращает торговлю.
Оказывается размер сделки с ростом капитала выходил вверх за 100 лотов, а больше 100 лотов в одном ордере брокер открывать не разрешает.
Поставил переход, если больше 100, то все равно 100. И все наладилось.
Красивая картинка, сумасшедший профит. Жалко на реале такого не бывает...

 К концу дня перестал соображать...

Но в общем-то в выходные наверное надо отдыхать.

P.S. Осталась одна нереализованная идея — асимметрия торгового риска для портфельной торговли. Пока не знаю как подступиться, но все-таки на следующей неделе наверное сделаю.
В связи с этим совершенно дилетантская просьба к специалистам по MQL4: как выделить последнюю по времени закрытую сделку по инструменту, а точнее, как определить результат последней закрытой сделки — прибыльный или убыточный?
Решения, которые под рукой громоздки и не совсем для меня понятны, может это тоже из-за усталости к концу дня и потому что вдруг закончился запас кофе.

Тест с асимметрией риска (для одного инструмента сделано, нет для портфеля.):

К концу дня перестал соображать... 
В чем плюс? Больше прибыль, меньше просадка.

P.P.S. Половина купонов, которые на прошлой неделе расхватали, осталась неиспользованной + появились новые. По 15 долларов. 
Пропадут. Налетайте и забирайте, кому надо. Для центовых счетов самый раз, сам бы взял, но нужно отдавать на сторону.
Если у кого-то ключ не сработает, вышлю еще.

 

54 Комментария
  • Lop
    20 февраля 2016, 23:23
    Николай, съездите на рыбалку, охоту, на недельку, думаю пойдет Вам на пользу… отдохните…
      • Lankfrend
        21 февраля 2016, 03:39
        Николай Скриган, Ваши посты очень интересны, пишите нам о достижениях! А о рыбалке подумайте)
          • Lankfrend
            21 февраля 2016, 21:51
            Николай Скриган, на крайней случай если есть возможность с женой в какой-нибудь санаторий там где и порыбачить можно)
            Ну или можно скачать симулятор на компьютер) тоже развлечение)
              • Lankfrend
                22 февраля 2016, 01:52
                Николай Скриган, ну а че) сидишь рыбу ловишь и торгуешь) я  вот в танки люблю играть)
                  • Lankfrend
                    23 февраля 2016, 02:37
                    Николай Скриган, да я все про игры
      • Александр Муравьев
        21 февраля 2016, 16:16
        Николай Скриган, в любой непонятной ситуации ложитесь спать.
  • Kaiman
    20 февраля 2016, 23:49
    выбираешь последний ордер среди закрытых OrderSelect(), потом смотришь знак OrderProfit()
    ...
    Не маловат ли спред поставили в тесте? Всего 10)
      • Kaiman
        21 февраля 2016, 00:01
        Николай Скриган, в общем сами ответили уже)
        Перебираете циклом ордера и ищете нужный символ if(Symbol()==«EURUSD» )

          • Kaiman
            21 февраля 2016, 00:04
            Николай Скриган, ой да) Мой вариант вообще не пойдёт))
        • Kaiman
          21 февраля 2016, 00:04
          OrdersHistoryTotal() этим узнаёте сколько всего закрытых ордеров.И For -ом их перебираете
  • Алексей Дорожинский
    20 февраля 2016, 23:51
    https://docs.mql4.com/ru/trading/ordershistorytotal


    Альтернативный вариант: можно запоминать тикет каждого открываемого ордера, а потом их проверять.
      • Kaiman
        21 февраля 2016, 00:08
        Николай Скриган, последний закрытый это вроде  OrdersHistoryTotal()-1
          • Kaiman
            21 февраля 2016, 00:11
            Николай Скриган, OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
            выбор последнего закрытого ордера
              • Kaiman
                21 февраля 2016, 00:25
                Николай Скриган, я понял. Просто от чего отталкиваться написал)
      • Алексей Дорожинский
        21 февраля 2016, 03:38
        Николай Скриган, Подозреваю что без альтернативного варианта не обойтись :))), если ничего не получится с OrdersHistoryTotal(), то пишите, покажу как сделать запоминание и проверку по закрытию (без особой нагрузки на систему)
          • Алексей Дорожинский
            21 февраля 2016, 17:23
            Николай Скриган, 

            Да какие там секреты ))), только так сходу, одной строкой, не объяснить.
            Вот шаблон советника, может что-то прояснит. Только стиль программирования не стандартный, у меня большой монитор (46'') и поэтому я пишу длинные строки.И по мере возможностей стараюсь не использовать команду «if»(тормозит). Если что, всегда готов ответить на любые вопросы. Особенно на тему MQL )))


            в тестере эта штука не работает 

            https://mega.nz/#!QIQlSDRa!GtxymEwofN0aUpV_kqKaeiDcoT7dO123cB0qp0U5SsE
  • Kaiman
    21 февраля 2016, 00:27

    for(i=OrdersHistoryTotal();i>0;i--)
    {
    OrderSelect(i-1,SELECT_BY_POS,MODE_HISTORY);
    if(OrderSymbol()!=Symbol()) continue;
    if(OrderProfit()>0) ................
    }

    типа такого)

      • Kaiman
        21 февраля 2016, 00:31
        Николай Скриган, ок) Отпишись, чего нибудь получилось ли))
      • Tуземец
        21 февраля 2016, 00:33
        Николай Скриган, я давно хотел спросить, а что-за контора рибейты отдаёт? можно в личку
          • Tуземец
            21 февраля 2016, 00:42
            Николай Скриган, спс
          • Tуземец
            21 февраля 2016, 00:54
            Николай Скриган, по Альфе написано что рибейт только для счетов, открытых через МОФТ.
              • Tуземец
                21 февраля 2016, 01:04
                Николай Скриган, я там и читаю.спасибо
  • Max Xaser
    21 февраля 2016, 01:14
    «качество моделирования 25%»
    плюс в МТ4 всегда левые котировки
    • Алексей Дорожинский
      21 февраля 2016, 03:52
      Max Xaser, МТ тестер вобще предназначен для проверки чисто технической части (открывает-не открывает и т.п.)
  • Александр НеПушкин
    21 февраля 2016, 08:57
     интересно, в прошлые выходные Вы сказали что «раздачей» купонов займётесь в понедельник, потом было некогда, а теперь их уже разобрали? так привлекаете внимание?
      • Sergii Onyshchenko
        21 февраля 2016, 12:45
        Николай Скриган, 

        //-- Расчет лота по мартингейлу -------------------------------------------------
        case 3:
        double k=1; // Переменная, от значения которой зависит, будет ли удваиваться следующий лот
        if (OrdersHistoryTotal()==0) return(Lots); // Если история пустая, торгуем стартовым лотом
        for (int i=OrdersHistoryTotal()-1;i>-1;i--) // Перебор всех закрытых позиций и удаленных ордеров
        {
        bool OrderSelec=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); // Выбираем ордер
        if(OrderCloseTime()!=0 && OrderProfit()>0) bool mart=true; // Если выбранный ордер — закрыт с прибылью, следующая строка удвоения лота не выполняется, просто переходим к следующей итерации...
        if(OrderCloseTime()!=0 && OrderProfit()<0 && !mart) k*=KotMMMetod3; // Если выбранный ордер — закрыт с убытком, удваиваем коэффициент мартингейла
        }
        double MartinLot=k*Lots; // Рассчитываем лот по мартингейлу, размер k зависит от количества идущих подряд убыточных сделок
        if(MartinLot>MarketInfo(Symbol(),MODE_MAXLOT)) {Alert(«Рассчитанный лот больше максимально допустимого!»); return(0.01);} // Если рассчитанный лот больше допустимого, выходим
        if(MartinLot*MarketInfo(Symbol(),MODE_MARGINREQUIRED)>AccountFreeMargin()) {Alert(«Размер свободных средств не позволяет открыть позицию с рассчитанным лотом!»); return(0.01);}// Если размер свободных средств не позволяет открыть позицию с рассчитанным лотом, выходим
        retlot=MartinLot;
        break;
        //-------------------------------------------------------------------------------
        default:
        retlot=Lots;
        }
        if(retlot<1.0/MathPow(10,LotsDigits))retlot=1.0/MathPow(10,LotsDigits) ;
        retlot=NormalizeDouble(retlot,LotsDigits);

        if(AccountFreeMarginCheck(Symbol(),aTradeType,retlot)<=0){
        return(-1);
        }
        if(GetLastError()==134){
        return(-2);
        }

        return(retlot);
        }

      • Александр НеПушкин
        21 февраля 2016, 13:02
        Николай Скриган, «Александр, давайте завтра. Я уже запутался, какие из них активные, какие нет. То, что завтра останется в списке, начну рассылать по новой.».Это Ваш ответ 11.02.2016 г., на мою просьбу. Буду знать, что сказать- не означет сделать.
          • Александр НеПушкин
            21 февраля 2016, 13:19
            Николай Скриган, я не безвозмездно!
              • Александр НеПушкин
                21 февраля 2016, 13:28
                Николай Скриган, обратите внимание, что эмитирует ваш белорусский банк и по-всей видимости скоро будут зар.платы ими выдавать! Спасибо.
  • Samtakoy Samtokoich
    21 февраля 2016, 10:54
    Подааайте купончик на бесплатный батончик!)  В личку не могу писать)

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн