@Override
	public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {
		if (instrument != this.instrument || period != this.period) {
			// 対象の通貨ではない、かつ、対象の時間間隔でない場合は何もしない
			return;
		}

		// 既に注文があるときは何もしない
		if (this.aliveOrder != null && this.aliveOrder.getState() != State.CLOSED) {
			this.aliveOrder.waitForUpdate(2, TimeUnit.SECONDS);
			return;
		}

		// 現在のRSI (フラットフィルターを適用しないとRSIが0や、100になる)
		// http://kakakufx.com/mk2/systrade/indicators.html
		double rsi = indicators.rsi(instrument,
				period,
				this.offerSide,
				this.appliedPrice,
				this.rsiTimePeriod,
				Filter.ALL_FLATS, // 全てのフラットバーを除外
				1, // 1本前
				askBar.getTime(), // 現在日付
				0)[0];

		if (rsizone) {
			if (rsiLowerLine < rsi && rsi < rsiUpperLine) {
				rsizone = false;
			} else {
				return;
			}
		}

		if (rsi <= rsiLowerLine) {
			// 今のRSIも前回のRSIも30を下回ってる場合
			// [/] は使えないみたい
			String label = "Buy_" + LABEL_DATEFORMAT.format(new Date(System.currentTimeMillis()));
			submitOrder(label, OrderCommand.BUY, askBar, rsi);
			// 注文したので仕掛けちゃだめ設定
			rsizone = true;
		}
		if (rsiUpperLine <= rsi) {
			// 今のRSIも前回のRSIも70を上回ってる場合
			// [/] は使えないみたい
			String label = "Sell_" + LABEL_DATEFORMAT.format(new Date(System.currentTimeMillis()));
			submitOrder(label, OrderCommand.SELL, bidBar, rsi);
			// 注文したので仕掛けちゃだめ設定
			rsizone = true;
		}
	}