What I have done before is expand the equation to $y(t) = S \sin(\Omega t) + C \cos(\Omega t)$ and then calculate the following integrals:
$$ \begin{align}
\int_0^{\frac{2\pi}{\Omega}} \sin(\Omega t) y(t)\,{\rm d}t & = \frac{\pi S}{\Omega} \\
\int_0^{\frac{2\pi}{\Omega}} \cos(\Omega t) y(t)\,{\rm d}t & = \frac{\pi C}{\Omega}
\end{align} $$
So if you need average of $n$ cycles you have
$$ \begin{align}
S & = \frac{\Omega}{n \pi} \int_0^{\frac{2\pi\,n}{\Omega}} \sin(\Omega t) y(t)\,{\rm d}t
\\
C & = \frac{\Omega}{n \pi} \int_0^{\frac{2\pi\,n}{\Omega}} \cos(\Omega t) y(t)\,{\rm d}t
\end{align}$$
I have deployed a simple trapezoidal numerical integrator with very good results. Of course this depends on how many data points you have for each cycle. The more points then the more noise you have and the less you might get skewed results due to aliasing.
In the end your $A=\sqrt{S^2+C^2}$ and $\Phi = \arctan\left( \frac{C}{S} \right) $
For the fun of it here some VBA
code I used in Excel to do exactly this:
Const PI As Double = 3.14159265358979
'---------------------------------------------------------------------------------------
' Procedure : IntegrateSin
' Author : ja72
' Date : 7/22/2014
' Purpose : Perform a integral of SIN(x)*f(x) between x_1 and x_2
' To be used as a formula like: "=1/180*IntegrateSin(X$55:X$83,0,360)"
'---------------------------------------------------------------------------------------
Public Function IntegrateSin(ByRef r_f As Range, x_1 As Double, x_2 As Double) As Double
Dim i As Integer, N As Integer, sum As Double, h As Double, f() As Variant, x As Double
N = r_f.Rows.Count - 1
h = (x_2 - x_1) / N
' Convert range of cells into array f
f = r_f.Value: sum = 0#
' Transform f values to sin(x)*f
For i = 1 To N + 1
x = x_1 + h * (i - 1)
f(i, 1) = Sin(PI / 180# * x) * f(i, 1)
Next i
' Trapezoidal integration
sum = sum + h * f(1, 1) / 2
For i = 2 To N
sum = sum + h * f(i, 1)
Next i
sum = sum + h * f(N + 1, 1) / 2
IntegrateSin = sum
End Function
'---------------------------------------------------------------------------------------
' Procedure : IntegrateCos
' Author : ja72
' Date : 7/22/2014
' Purpose : Perform a integral of COS(x)*f(x) between x_1 and x_2
' To be used as a formula like: "=1/180*IntegrateCos(X$55:X$83,0,360)" '---------------------------------------------------------------------------------------
Public Function IntegrateCos(ByRef r_f As Range, x_1 As Double, x_2 As Double) As Double
Dim i As Integer, N As Integer, sum As Double, h As Double, f() As Variant, x As Double
N = r_f.Rows.Count - 1
h = (x_2 - x_1) / N
' Convert range of cells into array f
f = r_f.Value: sum = 0#
' Transform f values to cos(x)*f
For i = 1 To N + 1
x = x_1 + h * (i - 1)
f(i, 1) = Cos(PI / 180# * x) * f(i, 1)
Next i
' Trapezoidal integration
sum = sum + h * f(1, 1) / 2
For i = 2 To N
sum = sum + h * f(i, 1)
Next i
sum = sum + h * f(N + 1, 1) / 2
IntegrateCos = sum
End Function