Esempio n. 1
0
 public void OnDeInit()
 {
     CSiteMng.OnDeinit();
     foreach (CLogic objLogic in m_lstLogics)
     {
         objLogic.OnDeInit();
     }
 }
Esempio n. 2
0
        // ---

        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));
        }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
        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();
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 public void reqPosMatch()
 {
     m_reqPosMatch.m_product = this;
     CSiteMng.registerPosMatch(m_reqPosMatch);
 }
Esempio n. 7
0
 public void publishTradeHistory()
 {
     CSiteMng.publishTradeHistory();
 }
Esempio n. 8
0
        /// <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);
        }
Esempio n. 9
0
 public void makeReport()
 {
     CSiteMng.makeReport();
 }
Esempio n. 10
0
        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);
        }