2016-01-27 75 views
0

我有以下功能,其中某些輸入給定,然後4個輸出給出: -PHP函數 - 的功能輸出是另一個函數的輸入

function rsiNext($dailyGainAvgPrev, $dailyLossAvgPrev,$cpDailyNext){ 
    if($cpDailyNext > 0){ 
     $dailyGainAvgNext = (($dailyGainAvgPrev * 13) + $cpDailyNext)/14; 
    }else{ 
     $dailyGainAvgNext = (($dailyGainAvgPrev * 13) + 0)/14; 
    } 

    if($cpDailyNext < 0){ 
     $dailyLossAvgNext = (($dailyLossAvgPrev*13) + abs($cpDailyNext))/14; 
    }else{ 
     $dailyLossAvgNext = (($dailyLossAvgPrev*13) + abs(0))/14; 
    } 
    $relStrNext = $dailyGainAvgNext/$dailyLossAvgNext; 
    if($dailyLossAvgNext == 0){ 
     $relStrIndNext = 100; 
    }else{ 
     $relStrIndNext = 100-(100/(1+$relStrNext)); 
    } 
    return array($dailyGainAvgNext, $dailyLossAvgNext, $relStrNext, $relStrIndNext); 
} 

I輸出用下面的代碼行中的值:

//Get value for day 15 
list($dailyGainAvg02, $dailyLossAvg02, $relStr02, $relStrInd02) = rsiNext($averageGains14, $averageLosses14, $priceDifferences[15]); 
echo '<tr><td>'.$dailyGainAvg02.'</td><td>'.$dailyLossAvg02.'</td><td>'.$relStr02.'</td><td>'.$relStrInd02.'</td></tr>'; 

現在,當我想16天我用下面的代碼行的值:

//Get value for day 16 
list($dailyGainAvg03, $dailyLossAvg03, $relStr03, $relStrInd03) = rsiNext($dailyGainAvg02, $dailyLossAvg02, $priceDifferences[16]); 
echo '<tr><td>'.$dailyGainAvg03.'</td><td>'.$dailyLossAvg03.'</td><td>'.$relStr03.'</td><td>'.$relStrInd03.'</td></tr>'; 

第15天的輸出是第16天的輸入,第16天的輸出是第17天的輸入。第17天的輸出是第18天的輸入等...

我需要重複列表爲100天。如何在不重複list系列的情況下繼續使用100天?

謝謝。

+0

第一天的初始值是多少? 'rsiNext(?,?,$ priceDifferences [1]);' – RomanPerekhrest

回答

1

假設你有$priceDifferences陣列完全填充,類似於下面的東西應該做的:

$cur_dailyGainAvg = 0; // you need to initialize this value appropriately 
$cur_dailyLossAvg = 0; // you need to initialize this value appropriately 

for ($idx = 1; $idx <= 100; $idx++) { 
    list($new_dailyGainAvg, $new_dailyLossAvg, $new_relStr, $new_relStrInd) = rsiNext($cur_dailyGainAvg, $cur_dailyLossAvg, $priceDifferences[$idx]) 

    // print 
    echo '<tr><td>'.$new_dailyGainAvg.'</td><td>'.$new_dailyLossAvg.'</td><td>'.$new_relStr.'</td><td>'.$new_relStrInd.'</td></tr>'; 

    // shift the new values onto the current, and repeat the calculation 
    $cur_dailyGainAvg = $new_dailyGainAvg; 
    $cur_dailyLossAvg = $new_dailyLossAvg; 
} 

您的「當前」的價值觀,你送入你的函數,和「新」的價值觀之間基本上區分出來,然後將新的「轉移」到當前的新的並重復。

您可能需要檢查循環的邊界。

相關問題