FileName:yutori8.java
import java.util.ArrayList;
import java.io.Serializable;
import jp.tradesc.superkaburobo.sdk.driver.RobotDriver;
import jp.tradesc.superkaburobo.sdk.robot.AbstractRobot;
import jp.tradesc.superkaburobo.sdk.trade.EnumAnalysisSpan;
import jp.tradesc.superkaburobo.sdk.trade.InformationManager;
import jp.tradesc.superkaburobo.sdk.trade.MemoManager;
import jp.tradesc.superkaburobo.sdk.trade.OrderManager;
import jp.tradesc.superkaburobo.sdk.trade.PortfolioManager;
import jp.tradesc.superkaburobo.sdk.trade.TradeAgent;
import jp.tradesc.superkaburobo.sdk.trade.analysis.technicalindex.ROscillator;
import jp.tradesc.superkaburobo.sdk.trade.data.Portfolio;
import jp.tradesc.superkaburobo.sdk.trade.data.Stock;
class Memo implements Serializable {
private static final long serialVersionUID = 1L;
private ArrayList<Stock> buy_stocklist = new ArrayList<Stock>();
private ArrayList<Stock> sell_stocklist = new ArrayList<Stock>();
//メモ情報取得
public ArrayList<Stock> getBuyStockList() {
return buy_stocklist;
}
//メモ情報保存
public void setBuyStockList(ArrayList<Stock> stocklist) {
this.buy_stocklist = stocklist;
}
//メモ情報取得
public ArrayList<Stock> getSellStockList() {
return sell_stocklist;%Rオシレーター
}
//メモ情報保存
public void setSellStockList(ArrayList<Stock> stocklist) {
this.sell_stocklist = stocklist;
}
}
public class yutori8 extends AbstractRobot {
public static void main(String[] args){
RobotDriver.main(new String[]{"-n", yutori8.class.getName()});
}
//初期設定
int HoldingDay = 14; //ホールド期間(日)
double LossCutRate = -7; //損切りレート(%)
double GainRate =10; //利益確定レート(%)
int buynum = 1; //買う株の数
int count = 22; //%Rオシレーターの集計数
double rolow = 30; //%Rオシレーターの買われすぎの基準
double rohigh = 70; //%Rオシレーターの売られすぎの基準
public void order(TradeAgent arg0){
double roValue; //サイコロジカルの値
PortfolioManager portfolioManager = PortfolioManager.getInstance();
OrderManager om = OrderManager.getInstance();
ROscillator ro = new ROscillator(EnumAnalysisSpan.DAILY,count); //%Rオシレーターのオブジェ
for(Portfolio portfolio: portfolioManager.getPortfolio()){
double gain = portfolio.getProfitRate();
roValue = ro.getIndexROscillatorR(portfolio.getStock());
int pastDay = portfolio.getHoldingDays();
if( roValue <= rolow){
portfolio.orderReverseNowMarketAll();
}
else if(gain >= GainRate){
portfolio.orderReverseNowMarketAll();
}
else if(gain <= LossCutRate){
//om.cancelOrderByStock(portfolio.getStock());
portfolio.orderReverseNowMarketAll();
}
else if(pastDay >= HoldingDay){
//om.cancelOrderByStock(portfolio.getStock());
portfolio.orderReverseNowMarketAll();
}
}
//昨日チェックしていた買いリストを注文する
MemoManager mm = MemoManager.getInstance();
Memo memo = (Memo)mm.getObjectMemo(); //昨日の買いリスト獲得
if(memo == null){
return;
}
//買い注文を実行する
if(memo.getBuyStockList().size() != 0) {
for(Stock stock : memo.getBuyStockList()) {
om.orderActualNowMarket(stock,
buynum*stock.getUnit());
}
}
//メモ情報の全ての要素を削除
memo.getBuyStockList().clear();
memo.getSellStockList().clear();
}
public void screening(TradeAgent arg0) {
double roValue; //サイコロジカルの値
Memo memo = new Memo(); //買う予定の銘柄を記憶するクラス
ROscillator ro = new ROscillator(EnumAnalysisSpan.DAILY,count); //%Rオシレーターのオブジェ
ArrayList<Stock>stockbuy = new ArrayList<Stock>();
InformationManager info = InformationManager.getInstance();
ArrayList<Stock>stocklist = info.getStockList();
for(Stock stock:stocklist){
roValue = ro.getIndexROscillatorR(stock);
if(roValue >= rohigh){
stockbuy.add(stock);
}
}
memo.setBuyStockList(stockbuy);
MemoManager mm = MemoManager.getInstance();
mm.setObjectMemo(memo);
}
}
戻
る