public void OnDeInit() { CSiteMng.OnDeinit(); foreach (CLogic objLogic in m_lstLogics) { objLogic.OnDeInit(); } }
// --- public int reqOrder_async(ETRADER_OP nCmd, double dLots, double dPrice, EORDER_TYPE nOrderType, int nPriority, string sComment = "") { m_reqOrder_async.m_bProcessed = false; m_reqOrder_async.setProduct(m_sSymbol, m_site, m_sLogicID, m_dContractSize); m_reqOrder_async.setVal(nCmd, dLots, dPrice, nOrderType, nPriority, m_sLogicID, sComment); return(CSiteMng.registerOrder(m_reqOrder_async)); }
public bool OnInit() { if (!CSiteMng.OnInit()) { return(false); } CFATLogger.output_proc("Logic init start!"); foreach (CLogic objLogic in m_lstLogics) { if (!objLogic.OnInit()) { return(false); } } CFATLogger.output_proc("Logic init OK!"); return(true); }
public void doProcess_thread() { if (!create_Objects()) { return; } CSiteMng.loadRates_Tick();// load backtest rates for backtest if (CFATManager.m_nRunMode != ERUN_MODE.OPTIMIZE) { doProcess_run(); } if (CFATManager.m_nRunMode == ERUN_MODE.OPTIMIZE) { doProcess_optimize(); } destroy_Objects(); }
public bool OnTick() { EERROR nRet = CSiteMng.Ontick(); if (nRet == EERROR.RATE_INVALID) { if (CFATManager.isOnlineMode()) { CFATLogger.output_proc("Invalid price!"); } m_nInvalidTicks++; return(false); } if (nRet == EERROR.RATE_END) { CFATLogger.output_proc("Rates End!"); m_nInvalidTicks = 10000; return(false); // For backtest mode, update tick data , if return false rates is end. } m_nInvalidTicks = 0; if (nRet != EERROR.NONE) { CFATLogger.output_proc("CSiteMng.Ontick() : Unknown Error!"); return(false); } foreach (CLogic objLogic in m_lstLogics) { if (objLogic.OnTick() == (int)ETRADE_RET.NEWORDER) { break; } } CSiteMng.process_ReqOrders(); CSiteMng.process_ReqPosMatch(); return(true); }
public void reqPosMatch() { m_reqPosMatch.m_product = this; CSiteMng.registerPosMatch(m_reqPosMatch); }
public void publishTradeHistory() { CSiteMng.publishTradeHistory(); }
/// <summary> /// Create Sites /// Create Logics /// </summary> /// <returns></returns> private bool create_Objects_site() { CFATLogger.output_proc("create_Objects_site ------->"); string sSiteName = ""; string sPipeServer = ""; string sPipeServerOrder = ""; string sPipe_rate = ""; string sPipe_order = ""; string sID; string sPwd; string sKey; int nSymCnt = 0; CSite site; string sSymbol = ""; double dContractSize = 0; double dCommissionPercent = 0; try { foreach (Dictionary <string, string> dicSiteItem in m_configSites) { // modified by cmh sSiteName = dicSiteItem["name"]; if (dicSiteItem.ContainsKey("pipe_rate")) { sPipeServer = dicSiteItem["pipe_rate"]; } if (dicSiteItem.ContainsKey("pipe_order")) { sPipeServerOrder = dicSiteItem["pipe_order"]; } if (dicSiteItem.ContainsKey("pipe_rate")) { sPipe_rate = dicSiteItem["pipe_rate"]; } if (dicSiteItem.ContainsKey("pipe_order")) { sPipe_order = dicSiteItem["pipe_order"]; } site = CSiteMng.newSite(sSiteName, sPipeServer, sPipeServerOrder, sPipe_rate, sPipe_order); // --- sID = dicSiteItem["id"]; sPwd = dicSiteItem["pwd"]; site.setID_PWD(sID, sPwd); nSymCnt = Convert.ToInt32(dicSiteItem["sym_count"]); for (int i = 0; i < nSymCnt; i++) { sKey = string.Format("sym_{0}", i + 1); sSymbol = dicSiteItem[sKey]; sKey = string.Format("c_size_{0}", i + 1); dContractSize = Convert.ToDouble(dicSiteItem[sKey]); CFATLogger.output_proc(string.Format("symbol = {0}, contract = {1}", sSymbol, dContractSize)); sKey = string.Format("commission_{0}", i + 1); dCommissionPercent = Convert.ToDouble(dicSiteItem[sKey]); site.addSym(sSymbol, dContractSize, dCommissionPercent); } if (!dicSiteItem.ContainsKey("fix")) { continue; } //for Fix nSymCnt = Convert.ToInt32(dicSiteItem["sym_fix_count"]); double dMin = 0; double dMax = 0; for (int i = 0; i < nSymCnt; i++) { sKey = string.Format("sym_fix_{0}", i + 1); site.addSym_fix(dicSiteItem[sKey], (i + 1).ToString()); //Set min max for symbol sKey = string.Format("min_fix_{0}", i + 1); dMin = Convert.ToDouble(dicSiteItem[sKey]); sKey = string.Format("max_fix_{0}", i + 1); dMax = Convert.ToDouble(dicSiteItem[sKey]); site.addSym_min_max((i + 1).ToString(), dMin, dMax); } site.setConfigFile_fix(dicSiteItem["config_data"], dicSiteItem["config_trade"]); site.setFixAccount(dicSiteItem["fix_acc"]); } } catch { CFATLogger.output_proc("Error : create_Objects_site"); return(false); } CFATLogger.output_proc("create_Objects_site <-------"); return(true); }
public void makeReport() { CSiteMng.makeReport(); }
public bool create_Objects_logic() { CFATLogger.output_proc("create_Objects_logic ------->"); string sLogicName = ""; CLogic logic = null; CSite site; CParams objParams; CProduct objProduct; int nParamCnt = 0; int nProductCnt = 0; double dContractSize = 0; string sKey = ""; string sSiteName = ""; string sSymbol = ""; string[] sVals; string sLogicID = "NONE"; string sMode = "NONE"; try { foreach (Dictionary <string, string> dicLogicItem in m_configLogics) { sLogicName = dicLogicItem["name"]; sLogicID = dicLogicItem["logic_id"]; sMode = dicLogicItem["mode"]; logic = create_newLogic(sLogicName, sMode); logic.m_sLogicID = sLogicID; //create & set parameters objParams = new CParams(); nParamCnt = Convert.ToInt32(dicLogicItem["param_count"]); for (int i = 0; i < nParamCnt; i++) { sKey = string.Format("param_{0}", i + 1); sVals = dicLogicItem[sKey].Split(','); if (sVals.Length < 5) { CFATLogger.output_proc("Error : Invalid format logic params, ex : 'varName, varVal, [varStart], [varStep], [varEnd]'"); return(false); } objParams.addParam(sVals[0], sVals[1], sVals[2], sVals[3], sVals[4]); } logic.setParams(objParams); //create & set product nProductCnt = Convert.ToInt32(dicLogicItem["product_count"]); logic.m_products.Clear(); for (int i = 0; i < nProductCnt; i++) { objProduct = new CProduct(); sKey = string.Format("product_{0}_site", i + 1); sSiteName = dicLogicItem[sKey]; site = CSiteMng.getSite(sSiteName); objProduct.setSite(site); objProduct.setLogicID(sLogicID); sKey = string.Format("product_{0}_symbol", i + 1); sSymbol = dicLogicItem[sKey]; objProduct.setSymbol(sSymbol); dContractSize = site.getContractSize(sSymbol); objProduct.setContractSize(dContractSize); logic.addProduct(objProduct); } m_lstLogics.Add(logic); logic.publishParams();// } } catch { CFATLogger.output_proc("Error : create_Objects_logic"); return(false); } CFATLogger.output_proc("create_Objects_logic <-------"); return(true); }