Воскресенье, 22.12.2024
F0REX-WIKI


------------ТOKYO---------------------МOSCOW------------------LONDON--------------------NEW YORK----------


















Главная | Регистрация | ВходПриветствую Вас Гость | RSS
ПOИCК
СОДЕРЖАНИЕ
РАЗДЕЛЫ
Мои статьи [41]
форекс [47]
форекс
скрипт [17]
советник [1]
индикаторы [0]
книга [0]
ФОРЕКС КАЛЕНДАРЬ

Интересуют акции ? - Зайдите на Forex Pros!
ЗАПРОСЫ
Работа на ФОРЕКС объединение трейдеров форекс советник Автофорекс FOREX ТАЙМ ФРЕЙМ ордер MT4 спред FOREX BROKER торговый робот терминал форекс капитал капиталовложение трейдер forex бесплатный советник поинт евро возврат спреда доллар партнёрка Бот валюта Gordago Forex Optimizer доход котировки MQL торговая тактика Сорес Bloomberg Dow Jones Telerate Bloomberg системы торговли Как заработать на Форекс? советы по форексу инвестор работа трейдера эксперт Торговый советник FOREX микрофорекс нефть золото рейтинг брокеров форекс прогнозы скальпинг Инструменты форекс трейдера БИРЖА СКРИПТЫ ФОРЕКС тех анализ фундаментальный анализ котировки валют форекс начинающим теория Хаоса Инструменты форекс трейдера Управление Капиталом Фьючерсы и Опционы работа в интернете Психология Торговли Нейронные Сети Управление Риском Ценные бумаги. Акции трейдинг Товарная биржа Биржевые индексы деньги новости Форекс buy stop loss Технические индикаторы форекс скачать бесплатно Forex Книги Экономический календарь валютная пара Акции sell торговые стратегии Dow Jones Telerate Reuters Волновой анализ паттерны Хеджирование Валютные опционы Своп торговля без спреда The Wall Street Journal хедж-фонд обучение форекс ПИФ Торговые сигналы Форекс Облигации Кредитное плечо кросс курс EUR/USD USD GBP/USD индикатор Японские Свечи Фибоначчи Мультивалютный индикатор торговые сигналы Forex словарь
БРОКРЕЙТИНГ
Рейтинг БРОКЕРОВ
Всего ответов: 87
НЕ В ТЕМУ
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • ИНТЕРНЕТ КУРСЫ для всех!
  • СТАТ

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Главная » Статьи » скрипт

    GroupOfHistory
    //+----------------------------------------------------------------------------+
    //|                                                        GroupOfHistory.mq4  |
    //|                                                    Ким Игорь В. aka KimIV  |
    //|                                                       http://www.kimiv.ru  |
    //|    27.02.2006  Группировка истории счёта (Group of History).               |
    //|  Скрипт выполняет чтение списка сделок из истории счёта, группирует        |
    //|  данные по указанному в параметрах признаку и записывает в файл.           |
    //|  02.02.2006  Добавил столбец МаксДД и расширил перечень допустимых         |
    //|              значений параметра gohGroup:                                  |
    //|              1-тип, 2-символ, 3-магик, 4-комментарий                       |
    //|  06.02.2006  По просьбе alextur'а Добавил столбец ТекДД.                   |
    //|  15.12.2006  По просьбе Alfa добавил колонки с датой первого открытого     |
    //|              ордера и датой последнего закрытого.                          |
    //+----------------------------------------------------------------------------+
    #property copyright "Ким Игорь В. aka KimIV"
    #property link      "http://www.kimiv.ru"
    #property show_inputs
    //------- Внешние параметры скрипта --------------------------------------------
    extern string gohOutFileName = "GroupOfHistory.csv";
    extern int    gohGroup       = 3; // 1-тип, 2-символ, 3-магик, 4-комментарий
    extern int    gohProfit      = 1; // 1-пункты, 2-валюта ордера
    //+----------------------------------------------------------------------------+
    //|  script program start function                                             |
    //+----------------------------------------------------------------------------+
    void start()
      {
       int      i;           // Счётчик сделок
       int      n;           // Индекс элемента массива, номер строки
       int      ot;          // Тип операции
       int      ks[];        // Количество сделок
       string   nm[];        // Наименование группы
       double   op[], ou[];  // Общие прибыль и убыток
       double   mb[];        // Максимум баланса
       double   dd[];        // Просадка, МаксДД
       double   td[];        // Текущая просадка
       datetime od[];        // Дата первого открытого ордера
       datetime cd[];        // Дата последнего закрытого
       string   st, text="";
       FileDelete(gohOutFileName);
       switch (gohGroup)
         {
           case 1: text = "Тип";        
                   break;
           case 2: text = "Символ";     
                   break;
           case 3: text = "Магик";      
                   break;
           case 4: text = "Комментарий";
                   break;
         }
       text = text + ";Чист.приб.;Общ.приб.;Общ.уб.;МаксДД;ТекДД;Сделок;Первая;Последняя";
       WritingLineInFile(gohOutFileName, text);
       for(i = 0; i < HistoryTotal(); i++)
         {
           if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
             {
               ot = OrderType();
               if(ot == OP_BUY || ot == OP_SELL)
                 {
                   switch(gohGroup)
                     {
                       case 1: if(ot == OP_BUY)
                                   st = "Buy";
                               else
                                   st = "Sell";
                               break;
                       case 2: st = OrderSymbol();
                               break;
                       case 3: if(OrderMagicNumber() == 0)
                                   st = "";
                               else
                                   st = OrderMagicNumber();
                               break;
                       case 4:  st = StrTran(OrderComment(), "[sl]", "");
                                st = StrTran(st, "[tp]", "");
                                break;
                     }
                   n = ArrayFind(nm, st);
                   if(n + 1 > ArraySize(op))
                     {
                       ArrayResize(op, n + 1);
                       ArrayResize(ou, n + 1);
                       ArrayResize(mb, n + 1);
                       ArrayResize(dd, n + 1);
                       ArrayResize(td, n + 1);
                       ArrayResize(ks, n + 1);
                       ArrayResize(od, n + 1);
                       ArrayResize(cd, n + 1);
                     }
                   if(OrderProfit() > 0)
                     {
                       if(gohProfit == 2)
                           op[n] += OrderProfit();
                       else
                           op[n] += MathAbs(OrderOpenPrice() - OrderClosePrice()) /
                                            MarketInfo(OrderSymbol(), MODE_POINT);
                     }
                   else
                     {
                       if(gohProfit == 2)
                           ou[n] += OrderProfit();
                       else
                           ou[n] -= MathAbs(OrderOpenPrice() - OrderClosePrice()) /
                                            MarketInfo(OrderSymbol(), MODE_POINT);
                     }
                   if(gohProfit == 2)
                       op[n] += OrderSwap();
                   if(mb[n] < op[n] + ou[n])
                       mb[n] = op[n] + ou[n];
                   td[n] = mb[n] - op[n] - ou[n];
                   if(dd[n] < td[n])
                       dd[n] = td[n];
                   if(od[n] == 0)
                       od[n] = OrderOpenTime();
                   if(cd[n] < OrderCloseTime())
                       cd[n] = OrderCloseTime();
                   ks[n]++;
                 }
             }
         }
       for(i = 0; i < ArraySize(nm); i++)
         {
           text = nm[i] + ";" + StrTran(DoubleToStr(op[i] + ou[i], 2), ".", ",") + ";" +
                  StrTran(DoubleToStr(op[i], 2), ".", ",") + ";" +
                  StrTran(DoubleToStr(ou[i], 2), ".", ",") + ";" +
                  StrTran(DoubleToStr(dd[i], 2), ".", ",") + ";" +
                  StrTran(DoubleToStr(td[i], 2), ".", ",") + ";" +
                  StrTran(DoubleToStr(ks[i], 0), ".", ",") + ";" +
                  TimeToStr(od[i], TIME_DATE) + ";" +
                  TimeToStr(cd[i], TIME_DATE);
           WritingLineInFile(gohOutFileName, text);
         }
       text = "Сформирован файл " + gohOutFileName;
       Comment(text);
       Print(text);
      }
    //+----------------------------------------------------------------------------+
    //|  Ищет элемент массива типа STRING и возвращает его индекс.                 |
    //|  При отсутствии искомого элемента добавляет новый.                         |
    //|  Параметры:                                                                |
    //|    nm - массив элементов типа STRING (передаётся по ссылке)                |
    //|    st - искомое значение элемента                                          |
    //+----------------------------------------------------------------------------+
    int ArrayFind(string& nm[], string st)
      {
       int i, p;
       for(i = 0; i < ArraySize(nm); i++)
         {
           if(StringLen(st) > 0)
             {
               p = StringFind(nm[i], st);
               if(p >= 0)
                   return(i);
             }
           else
               if(StringLen(nm[i]) == 0)
                   return(i);
         }
       i = ArrayResize(nm, ArraySize(nm) + 1) - 1;
       nm[i] = st;
       return(i);
      }
    //+----------------------------------------------------------------------------+
    //|  Замена подстроки                                                          |
    //|  Параметры:                                                                |
    //|    str     - текстовая строка, в которой производится замена               |
    //|    strfrom - заменяемая подстрока                                          |
    //|    strto   - заменяющая подстрока                                          |
    //+----------------------------------------------------------------------------+
    string StrTran(string str, string strfrom, string strto)
      {
       int    n;
       string outstr = "", tempstr;
       for(n = 0; n < StringLen(str); n++)
         {
           tempstr = StringSubstr(str, n, StringLen(strfrom));
           if(tempstr == strfrom)
             {
               outstr = outstr + strto;
               n = n + StringLen(strfrom) - 1;
             }
           else
               outstr = outstr + StringSubstr(str, n, 1);
         }
       return(outstr);
      }
    //+----------------------------------------------------------------------------+
    //|  Запись строки в файл                                                      |
    //+----------------------------------------------------------------------------+
    void WritingLineInFile(string FileName, string text)
      {
       int file_handle = FileOpen(FileName, FILE_READ|FILE_WRITE, " ");
          if(file_handle > 0)
            {
                 FileSeek(file_handle, 0, SEEK_END);
                 FileWrite(file_handle, text);
                 FileClose(file_handle);
            }
      }
    //+----------------------------------------------------------------------------+

    Категория: скрипт | Добавил: jagiro (31.07.2010)
    Просмотров: 956 | Комментарии: 1 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Мы хотим, чтобы трейдинг на FOREX и других финансовых рынках приносил Вам прибыль!
    Copyright FOREX-WIKI © 2024
    Используются технологии uCoz
    Информер сайтов Seo анализ сайта