php 大神和会excell宏的大神来看看
PHP中文网
PHP中文网 2017-04-11 10:20:25
[PHP讨论组]

excell 宏的代码在下面 如何用php语言写尼?
以下是从数据库读出来的36条数据

array(36) {
  [0]=>
  array(9) {
    ["q_id"]=>
    string(1) "1"
    ["u_id"]=>
    string(1) "5"
    ["now_mony"]=>
    string(9) "137500.00"
    ["my_shouyi_lv"]=>
    string(6) "0.0000"
    ["date_time"]=>
    string(10) "2016-07-26"
    ["shang_zhishu"]=>
    string(7) "3050.17"
    ["shang_shouyi_lv"]=>
    string(6) "0.0000"
    ["max_huice_lv"]=>
    NULL
    ["max_huice_qi"]=>
    NULL
  }
  [1]=>
  array(9) {
    ["q_id"]=>
    string(1) "2"
    ["u_id"]=>
    string(1) "5"
    ["now_mony"]=>
    string(9) "127958.00"
    ["my_shouyi_lv"]=>
    string(7) "-0.0690"
    ["date_time"]=>
    string(10) "2016-07-27"
    ["shang_zhishu"]=>
    string(7) "2992.00"
    ["shang_shouyi_lv"]=>
    string(7) "-0.0190"
    ["max_huice_lv"]=>
    NULL
    ["max_huice_qi"]=>
    NULL
  }

以下是ecxell宏

Sub 最大回撤()

zuigaol = 137500      '最高资产变量
huichedi = 137500     '回撤低点变量

zuidahuiche = 0       '最大回撤变量

j = 0                 '最大回撤期判断变量



For i = 3 To 153

    If Range("g" & i) >= zuigaol And j = 0 Then  '如果当天资产大于最高资产,则更新最高资产变量,记录最大回撤的起始日期,否则记录回撤低点,计算回撤率
    
        zuigaol = Range("g" & i)
        zuigaor = Range("f" & i)
        
    Else
    
        huichedi = Range("g" & i)
        
        huiche = (huichedi - zuigaol) / zuigaol
    End If
    

    
    If huiche < zuidahuiche Then                '如果回撤率小于最大回撤率,则更新最大回撤率变量,标记j=1表示开始最大回撤期计算周期
    
        zuidahuiche = huiche
        
        j = 1
        
        
    
    End If
    
    If j = 1 Then                                 '如果在最大最大回撤期计算周期内,计算最大回撤期
    
        zuidahuicher = Range("f" & i) - zuigaor
    
    End If

    If Range("g" & i - 1) < zuigaol And Range("g" & i) >= zuigaol And j = 1 Then     '如果前一天资产低于最高资产当天资产高于最高资产,且在最大回撤期计算期内,标记j=0,表示结束最大回撤期计算
    
                
        j = 0
    
    End If
    
   
Next


Range("k6") = zuidahuiche

Range("k7") = Round(zuidahuicher / 30, 1) & "个月"



End Sub
PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
阿神

非常不好意思,不会php,我写python。python思路如下
df.columns = ['open','high','low','close']
df.index.name = 'date'
close = df.sort_index()['close']
begin_close = close.tolist[0]

close_list = close.tolist[1:]

close_end = np.array(close_list)[close_list >= begin_close]][0]
(上式多了一个],不然显示不了)

(然后用close_end 对应的日期 - begin_close对应的日期)/ begin_close

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号