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

📄 dfdb_port_opt.m

📁 Efficient frontier from Yahoo or database data.
💻 M
📖 第 1 页 / 共 4 页
字号:
  else
      calfig = findobj(0,'tag','calenfig');
      figure(calfig)
      
  end
    
    
case 'Calcancel'
    
    delete(get(0,'CurrentFigure'));
    clear cal
    
case 'CalClose'
    % Close ActiveX calendar
    
    F1 = findobj(0,'tag','dfdbportopt');
    Startdatebox = findobj(F1,'tag','sdstr');
    
    if get(cal,'day') == 0
        close(findobj('tag','calenfig'))
        err = errordlg('A day has to be selected','Date Selection');
        close(findobj(0,'tag','calenfig'))
        clear cal
        dfdb_port_opt('Calendar')
        set(err,'windowstyle','modal')
        figure(err)
        
    else
        m = get(cal,'month');
        y = get(cal,'year');
        d = get(cal,'day');
        startdate = [num2str(double(m)),'/',num2str(double(d)),'/',num2str(double(y))];
        %startdate = get(cal,'value');
        if datenum(startdate) > datenum(date)-2
            err = errordlg('Starting Date must be at least two days ago.','Date Selection');
            close(findobj(0,'tag','calenfig'))
            clear cal
            dfdb_port_opt('Calendar')
            set(err,'windowstyle','modal')
            figure(err)
        
        else
            set(Startdatebox,'string',startdate);
            close(findobj('tag','calenfig'))
            clear cal
        end
    end
    
    setappdata(Startdatebox,'startdate',startdate);

    
case 'Calclosereqfcn'
    
    shh = get(0,'ShowHiddenHandles');
    set(0,'ShowHiddenHandles','on');
    currFig = get(0,'CurrentFigure');
    set(0,'ShowHiddenHandles',shh);
    clear cal
    delete(currFig);
    
case 'Helppage'
    % Open help page for DFDB_PORT_OPT in the MATLAB Help Browser
    
    HelpPath = which('dfdbportopthelp.html');
    web(HelpPath);
    
case 'Yahoosym'
    % Open the Yahoo symbol lookup web page in the MATLAB Help Browser
    
    web('http://finance.yahoo.com/l');
        
    
case 'Closecall'
    % Close function of DFDB_PORT_OPT figure
    
    FF1 = findobj('type','figure','tag','calenfig');
    shh=get(0,'ShowHiddenHandles');
    set(0,'ShowHiddenHandles','on');
    currFig=get(0,'CurrentFigure');
    datafigure = findobj('type','figure','tag','datfig');
    set(0,'ShowHiddenHandles',shh);

    if isruntime
        FF1 = findobj('type','figure','tag','calenfig');
        if ishandle(FF1)
            delete(FF1)
        end
        
        if ishandle(datafigure)
            delete(datafigure)
        end
        
        delete(currFig)
        quit force
    else
        if ishandle(FF1)
            delete(FF1)
        end
        
        if ishandle(datafigure)
            delete(datafigure)
        end
        
        delete(currFig);
        clear datafigure FF1 currFig
        
    end

    
case 'Datasource'
    % Date Source preferences menu code.
    
    pref = getpref('DFDBpref','datainput');
    Startdatecal = findobj(gcf,'tag','calbut');
    Startdatebox = findobj(gcf,'tag','sdstr');
    Startdateprompt = findobj(gcf,'tag','sdp');
    DScall = findobj(gcf,'tag','dsbut');
    Symbols = findobj(gcf,'tag','symstr');
    
    datafigure = findobj('type','fig','tag','datfig');
    
    if strcmp(pref,'df')
        set(findobj(gcf,'tag','dfmen'),'checked','on')
        set(findobj(gcf,'tag','dbmen'),'checked','off')
        set(Startdatecal,'enable','on')
        set(Startdateprompt,'enable','on')
        set(Startdatebox,'enable','on','string','')
        set(DScall,'enable','off')
        set(Symbols,'string','')
        
        if ishandle(datafigure)
            delete(datafigure)
        end
        clear datafigure
        
    elseif strcmp(pref,'db')
        set(findobj(gcf,'tag','dbmen'),'checked','on')
        set(findobj(gcf,'tag','dfmen'),'checked','off')
        set(Startdatecal,'enable','off')
        set(Startdateprompt,'enable','off')
        set(Startdatebox,'string','01/02/97','enable','off')
        set(DScall,'enable','on')
        DFDB_port_opt('SelectData','start')
        set(Symbols,'string','')
    end
    
    if isequal(getpref('DFDBpref','datainput'),'db')
            
        end
   
       
case 'SelectData'

    datas = getdatasources;
    
    
    if nargin == 1 | (nargin > 1 & strcmp(varargin{2},'start'))
        option = 'start';
        shh = get(0,'ShowHiddenHandles');
        set(0,'ShowHiddenHandles','on')
        datafigure = findobj(0,'tag','datfig');
        set(0,'ShowHiddenHandles',shh);
        if ~isempty(datafigure)
            figure(datafigure)
            return
        end
        
	else
        option = varargin{2};
	end
    
    F1=findobj('type','fig','tag','dfdbportopt');
    
    
    switch option
        
    case 'start'
        
        datafigure = figure('name','Select Data','numbertitle','off','tag','datfig','menubar','none');
        
        frame = uicontrol('style','frame','units','norm','pos',[.05 .12 .9 .82]);
        
        DBselectprompt = uicontrol('style','text','units','norm','pos',[.07 .905 .28 .03],'string', ...
            'Data Sources','foregroundcolor','b','fontsize',10);
        DBlist=uicontrol('style','list','units','norm','pos',[.07 .14 .28 .76],'tag','dblist','max',1000, ...
            'min',1,'string',datas,'backgroundcolor','w','callback','DFDB_port_opt(''SelectData'',''DBselect'')');
        
        
        Tableprompt = uicontrol('style','text','units','norm','pos',[.36 .905 .28 .03],'string', ...
            'Tables','foregroundcolor','b','fontsize',10);
        Tablelist = uicontrol('style','list','units','norm','tag','tables','pos',[.36 .14 .28 .76], ...
            'max',1000,'min',1,'callback','DFDB_port_opt(''SelectData'',''Tableselect'')','backgroundcolor','w');
        
        
        Fieldprompt = uicontrol('style','text','units','norm','pos',[.65 .905 .28 .03],'string', ...
            'Assets','foregroundcolor','b','fontsize',10);
        
        Fieldlist = uicontrol('style','list','units','norm','pos',[.65 .14 .28 .76],'max',1000,'min', ...
            1,'tag','fields','backgroundcolor','w','callback','DFDB_port_opt(''SelectData'',''Fieldselect'')');

        Assettext = uicontrol('style','text','units','norm','pos',[.3 .005 .35 .052],'string', ...
            'Send Symbols for Importing  -->','fontsize',10,'backgroundcolor',[.8 .8 .8], ...
            'foregroundcolor','b');
        Applybut = uicontrol('string','Apply','units','norm','pos',[.65 .01 .3 .06], ...
            'callback','DFDB_port_opt(''SelectData'',''Sendsymbols'')','fontsize',10);
                
        set(datafigure,'handlevis','callback');
        
    case 'DBselect'
        
        DBlist = findobj(gcf,'tag','dblist');
        Tablelist = findobj(gcf,'tag','tables');
        Fieldlist = findobj(gcf,'tag','fields');
        Symbols = findobj(F1,'tag','symstr');
        
        dbnum = get(DBlist,'value');
        selectedDB = datas{dbnum};
        setappdata(DBlist,'database',selectedDB);
        
        if ~isequal(selectedDB,'DFDBsample')
            err = errordlg('Invalid Data Source','Source Selection');
            set(err,'windowstyle','modal')
            return
        end
        
%         conn = getappdata(Symbols,'connection');
        if exist('conn') 
            close(conn)
            clear conn
        end

            conn = database(selectedDB,'','');
            Symbols = findobj(F1,'tag','symstr');
            setappdata(Symbols,'connection',conn);
            %setappdata(Tablelist,'connection',conn);
            
            d = dmd(conn);
            ctg = get(conn,'Catalog');
            tinfo = tables(d,ctg,'');
            tableType = tinfo(:,2);
            tableName = tinfo(:,1);
            
            %Table types of TABLE are desired tables
            i = find(~(strcmp({'SYSTEM TABLE'},tableType) | ...
                strcmp({'SYNONYM'},tableType)));
            tbllist = tableName(i);
            

            set(Tablelist,'string',tbllist,'value',[]);
            set(Fieldlist,'string','');
       
        
    case 'Tableselect'
        
        Fieldlist = findobj(gcf,'tag','fields');
        Tablelist = findobj(gcf,'tag','tables');
        Symbols = findobj(F1,'tag','symstr');
        
        conn = getappdata(Symbols,'connection');
        
        %Get selected tables
        tval = get(Tablelist,'value');
        tbllist = get(Tablelist,'string');
        tablez = tbllist(tval);
        setappdata(Symbols,'Tables',tablez);
        
        %Get metadata of connection and get column names
        d = dmd(conn);
        L = length(tablez);
        fields = {};
        
        for i = 1:L
            table = tablez{i};  %Columns method returns more info, but is much slower
            ex = exec(conn,['select * from ' table]);
            ex = fetch(ex,1);
            tmp = columnnames(ex);
            eval(['tabfields = {' tmp '};'])
            close(ex); 
            
            %Prepend tablename if JOIN operation
            if length(tval) > 1
                for j = 1:length(tabfields)
                    tabfields{j} = [table '.' tabfields{j}];
                end
                fields = [fields;tabfields'];
            else
                fields = tabfields';
            end
        end
        
        fields(1)=[];
        %Display fieldnames
        set(Fieldlist,'String',fields,'value',[]);
        
        
    case 'Fieldselect'
        
        Fieldlist = findobj(gcf,'tag','fields');
        Tablelist = findobj(gcf,'tag','tables');
        Symbols = findobj(F1,'tag','symstr');
        
        fields = get(Fieldlist,'string');
        fval = get(Fieldlist,'value');
        
        fieldcell = fields(fval);
        fieldstr = fieldcell{1};
        for i=2:length(fieldcell)
            fieldstr=[fieldstr,', ',fieldcell{i}];
        end
        
        setappdata(Fieldlist,'symbols',fieldstr);
        setappdata(Fieldlist,'symbolcell',fieldcell);

    case 'Sendsymbols'

        Symbols = findobj(F1,'tag','symstr');
        Fieldlist = findobj(gcf,'tag','fields');
        DBlist = findobj(gcf,'tag','dblist');
        selectedDB = getappdata(DBlist,'database');
        
        fieldcell = getappdata(Fieldlist,'symbolcell');
        
        assets = getappdata(Fieldlist,'symbols');
        if isempty(assets)
            err = errordlg('No assets selected','Send symbols for Importing');
            set(err,'windowstyle','modal')
            return
        end
        
        dates = 'TS_Dates';
        
        set(Symbols,'string',assets)
        setappdata(Symbols,'dates',dates)
        figure(F1)
        
    end
    

    otherwise 
    err = error('Invalid input argument.  DFDB_PORT_OPT takes no inputs.');
    set(err,'windowstyle','modal')
  
end

⌨️ 快捷键说明

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