I have created an example of how you can achive what you are after:
You can use it like this :
[itable
data=”inv;coin;coinamount;currency#inv;coin;coinamount;currency”]
function itable_shortcode( $atts ) {
extract( shortcode_atts( array(
'data' => 'none',
), $atts ) );
$data = explode('#',$data);
$output = "";
foreach ($data as $value) {
$output .= '<tr>';
$in_value = explode(';',$value);
// next step is check if exist or is the type you want like integer or string
$investment = $in_value[0];
$coin = $in_value[1];
$coinamount = $in_value[2];
$currency = $in_value[3];
//Declaring all my variables
$coinworth = get_coin_worth($coin, $currency);
$currencyworth = get_currency_worth($coin,$currency);
$coinname = get_coin_name($coin);
$currencyname = get_currency_name($currency);
$portfolioworth = $coinamount*$coinworth;
$result = $portfolioworth - $investment;
$result = number_format((float)$result, 2, '.', '');
$output .= '<td>'.$currencyname.'</td>';
$output .= '<td>'.$investment.'</td>';
$output .= '<td>'.$coinamount.'</td>';
$output .= '<td>'.$coinworth.'</td>';
$output .= '<td>'.$result.'</td>';
$output .= '</tr>';
}
//Creating the table
$table = <<<EOD
<h1 style="text-align:center">Uw Portfolio</h1>
<table style="width:100%">
<tr>
<th>Invested Currency</th>
<th>Investment Worth</th>
<th>Coin amount</th>
<th>Recent Portfolioworth</th>
<th>Result</th>
</tr>
$output
</table>
EOD;
return $table;
}
function itable_shortcodes_init() {
add_shortcode('itable', 'itable_shortcode');
}
add_action('init', 'itable_shortcodes_init');