⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 markettimeline.java

📁 网上期货交易的外挂原码,可实现自动交易功能,自动添加模块
💻 JAVA
字号:
package com.jsystemtrader.chart;

import java.util.*;

import org.jfree.chart.axis.*;

public class MarketTimeLine {
    private static final long MILLIS_IN_MINUTE = 60 * 1000;
    private static final long MILLIS_IN_DAY = MILLIS_IN_MINUTE * 60 * 24;
    private static final long MARKET_OPEN_TIME = (9 * 60 + 30) * MILLIS_IN_MINUTE;
    private static final int TRADING_MINUTES = 6 * 60 + 30;
    private static final int NON_TRADING_MINUTES = 17 * 60 + 30;
    private static final int WEEKEND_MINUTES = 65 * 60 + 20; // from 16:05 Fri to 9:25 Mon

    private final int barSizeInMinutes;
    private final long startTime, endTime;

    public MarketTimeLine(int barSizeInMinutes, long startTime, long endTime) {
        this.barSizeInMinutes = barSizeInMinutes;
        this.startTime = startTime;
        this.endTime = endTime;
    }

    public SegmentedTimeline getNormalHoursTimeline() {
        long segmentSize = barSizeInMinutes * MILLIS_IN_MINUTE;
        int segmentsIncluded = TRADING_MINUTES / barSizeInMinutes;
        int segmentsExcluded = NON_TRADING_MINUTES / barSizeInMinutes;
        SegmentedTimeline timeline = new SegmentedTimeline(segmentSize, segmentsIncluded, segmentsExcluded);
        timeline.setAdjustForDaylightSaving(true);

        timeline.setStartTime(SegmentedTimeline.FIRST_MONDAY_AFTER_1900 + MARKET_OPEN_TIME);
        timeline.setBaseTimeline(SegmentedTimeline.newMondayThroughFridayTimeline());

        Calendar lastBarDate = Calendar.getInstance();
        lastBarDate.setTimeInMillis(endTime);

        Calendar now = Calendar.getInstance();
        now.setTimeInMillis(startTime);
        now.set(Calendar.HOUR_OF_DAY, 16);
        now.set(Calendar.MINUTE, 5);
        now.set(Calendar.SECOND, 0);
        now.set(Calendar.MILLISECOND, 0);

        // find the first Friday
        while (now.get(Calendar.DAY_OF_WEEK) != Calendar.FRIDAY) {
            now.add(Calendar.DAY_OF_YEAR, 1);
        }

        // exclude weekends
        while (now.before(lastBarDate)) {
            long excludeFrom = now.getTimeInMillis();
            long excludeTo = excludeFrom + WEEKEND_MINUTES * MILLIS_IN_MINUTE;
            timeline.addBaseTimelineExclusions(excludeFrom, excludeTo);

            now.add(Calendar.DAY_OF_YEAR, 7); // move to next Friday
        }

        return timeline;
    }

    public SegmentedTimeline getAllHoursTimeline() {
        SegmentedTimeline timeline = new SegmentedTimeline(SegmentedTimeline.DAY_SEGMENT_SIZE, 7, 0);
        return timeline;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -