2014-02-13 3 views
0

У меня есть CSV-файл, как это:Алгоритм Построения, определяющая частоту комбинаций строк MQL4

1392249600;EUR;CHF;USD;JPY;GBP 
1392163200;GBP;JPY;USD;CHF;EUR 
1392076800;GBP;CHF;EUR;JPY;USD 
1391990400;JPY;USD;EUR;CHF;GBP 
1391904000;GBP;EUR;CHF;USD;JPY 
1391731200;GBP;EUR;CHF;JPY;USD 
1391644800;EUR;CHF;USD;JPY;GBP 
1391558400;JPY;USD;EUR;CHF;GBP 

Там может быть более 15 000 строк в этом файле. Я пытаюсь написать код, который мог бы сделать такую ​​вещь:

1.Выберете первую строку как родительскую. Затем в течение следующих трех дней в качестве этих детей.

2.Определяет, как часто и какая комбинация с дочерними элементами с этим родителем находится внутри этого файла.

3.It создает что-то вроде сводки для этого, чтобы я мог читать сегодняшнюю комбинацию, и скрипт показывает только самые частые детские комбинации в течение следующих 3 дней.

У меня нет математического мышления, поэтому у меня есть большие проблемы, чтобы найти решение самостоятельно.

В первую очередь мне нужен сценарий, который генерирует все возможные комбинации этих коллажей из EUR, CHF, USD, JPY, GBP, поэтому существует 5 * 4 * 3 * 2 * 1 = 120 комбинаций. Потому что они не могут повторяться в одном ряду.

Это будет так.

Первый родитель будет комбинация из первого ряда, как это: EUR, CHF, USD, JPY, GBP

Then 3 childs would be 
    GBP;JPY;USD;CHF;EUR 
    GBP;CHF;EUR;JPY;USD 
    JPY;USD;EUR;CHF;GBP 

Он сохраняет эту комбинацию от родительских и дочерних элементов. Затем он начинается с начала файла, но перемещается на одну строку ниже (например, итерация +1). то рядом все Чайлдс будет

GBP;CHF;EUR;JPY;USD 
    JPY;USD;EUR;CHF;GBP 
    GBP;EUR;CHF;USD;JPY 

И снова он сохраняет эти комбинации для подсчета и сделать некоторые результаты частоты. И этот цикл повторяется для всех строк в файле csv.

Возможно, есть некоторые советы, которые я должен рассмотреть, как создать этот тип программы?

Любой наконечник был бы замечательным!

Большое спасибо! BB

ответ

0

Не могли бы вы прояснить, является ли первое значение в строке вашего файла датой/временем? 1392249600; EUR; CHF; USD; JPY; GBP

Если да, то ожидаете ли вы, что будет 4 строки с одинаковой датой/временем?

Или вам просто нужно идти последовательно и использовать Line-1 как родительский, а затем Line-2, Line-3, Line-4 как дочерний и продолжать ... так что Line-5 снова станет родителем?

Чтобы проверить, является ли код страны эквивалентным или нет, вы можете использовать код ниже вида. Я не 100% уверен, что ваше требование, пожалуйста, поправьте меня, если вы думаете, что это не то, что вы ищете, и я постараюсь ответить вам по-другому:

package com.collections; 

public class CountryCodeComparison { 
    public static void main(String[] args) { 
     //Read every row and sequentially insert value in CountryCode object. 
     //For ex. your row is: 1392163200;GBP;JPY;USD;CHF;EUR 
     String s1 = "1392163200;GBP;JPY;USD;CHF;EUR"; 
     String [] array1 = s1.split(";"); 
     CountryCode cc1 = new CountryCode(array1[1], array1[2], array1[1], array1[4], array1[5]); 

     //For ex. your row is: 1392076800;GBP;CHF;EUR;JPY;USD 
     String s2 = "1392076800;GBP;CHF;EUR;JPY;USD"; 
     String [] array2 = s2.split(";"); 
     CountryCode cc2 = new CountryCode(array2[1], array2[2], array2[1], array2[4], array2[5]); 

     if(cc1.equals(cc2)) { 
      System.out.println("Both CountryCode objects are equal."); 
     } else { 
      System.out.println("Both CountryCode objects are NOT equal."); 
     } 
    } 
} 

class CountryCode { 
    private String countryCode1; 
    private String countryCode2; 
    private String countryCode3; 
    private String countryCode4; 
    private String countryCode5; 
    public CountryCode(String countryCode1, String countryCode2, 
      String countryCode3, String countryCode4, String countryCode5) { 
     this.countryCode1 = countryCode1; 
     this.countryCode2 = countryCode2; 
     this.countryCode3 = countryCode3; 
     this.countryCode4 = countryCode4; 
     this.countryCode5 = countryCode5; 
    } 
    @Override 
    public int hashCode() { 
     final int prime = 31; 
     int result = 1; 
     result = prime * result 
       + ((countryCode1 == null) ? 0 : countryCode1.hashCode()); 
     result = prime * result 
       + ((countryCode2 == null) ? 0 : countryCode2.hashCode()); 
     result = prime * result 
       + ((countryCode3 == null) ? 0 : countryCode3.hashCode()); 
     result = prime * result 
       + ((countryCode4 == null) ? 0 : countryCode4.hashCode()); 
     result = prime * result 
       + ((countryCode5 == null) ? 0 : countryCode5.hashCode()); 
     return result; 
    } 
    @Override 
    public boolean equals(Object obj) { 
     if (this == obj) 
      return true; 
     if (obj == null) 
      return false; 
     if (getClass() != obj.getClass()) 
      return false; 
     CountryCode other = (CountryCode) obj; 
     if (countryCode1 == null) { 
      if (other.countryCode1 != null) 
       return false; 
     } else if (!countryCode1.equals(other.countryCode1)) 
      return false; 
     if (countryCode2 == null) { 
      if (other.countryCode2 != null) 
       return false; 
     } else if (!countryCode2.equals(other.countryCode2)) 
      return false; 
     if (countryCode3 == null) { 
      if (other.countryCode3 != null) 
       return false; 
     } else if (!countryCode3.equals(other.countryCode3)) 
      return false; 
     if (countryCode4 == null) { 
      if (other.countryCode4 != null) 
       return false; 
     } else if (!countryCode4.equals(other.countryCode4)) 
      return false; 
     if (countryCode5 == null) { 
      if (other.countryCode5 != null) 
       return false; 
     } else if (!countryCode5.equals(other.countryCode5)) 
      return false; 
     return true; 
    } 
} 
+0

Да, его DateTime, но это не должен» t repeataT, я имею в виду когда-либо. Я не упоминал, что родительский элемент каждый раз переходит к следующей строке. Таким образом, он проверяет всех родителей и их детей. – Edgars

+1

Вы пытаетесь сгруппировать его по дате?Я сожалею, но не могу понять, как вы решите, какой из них является родителем и его детьми? –

+0

Первый родитель будет комбинацией из первой строки. Я обновлю свой вопрос – Edgars

Смежные вопросы