I would suggest you start with just 2 coins, optimize, then incrementally increase the complexity of the selection process.
coins = {coin1,coin2}
Main(choose_coin)
fix k \\ k would be like a day or some logical period for testing
start loop SWITCH
t=0
while t < k
evaluate{ profit(coin1), profit(coin2) }
if profit(coin1) > profit(coin2)
do mine coin1
else
do mine coin2
end if
end while
t++
if t = k
go to test
test = max(evaluate(avg_k_profits( { coin1_only, coin2_only, SWITCH} ))
if test = SWITCH
coins++
go to Main()
else get a day job
coins++ could mean to choose a 3rd coin:
coins++: coins -> coins + nextcoin
so you'd have something like
coins = {coin1, coin2, coin3}
but you could increment coins in a nested iterative way
coins = {coin1, choose_coin(coin2 , coin3)}