Here's a version in Metapost that automagically finds the right places for the labels on the wave, using the directiontime function that finds the point on a path when it's going in a specified direction.

Note that directiontime will normally find the earliest point along the path that has the specified direction, so here I had to put it in a loop and step along the path. directiontime returns -1 when the direction is not found; I used that to end the loop.
I've also re-used the labels by saving them as picture variables.
This is wrapped up in luamplib so you need to compile it with lualatex:
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\mplibtextextlabel{enable}
\usepackage{fontspec}
\setmainfont{Helvetica}
\begin{document}
\begin{mplibcode}
beginfig(1);
% fiddle with the parameters to get a nice rising wave
path wave;
wave = (origin for t=1 step 1 until 3360 + 24:
-- (2/3t,70 sind(t)) shifted (0,1/3t)
endfor) scaled 3/4 shifted (21,34);
% draw the straight arrow and the wave on top
drawarrow point 0 of wave -- point 3*360 of wave scaled 1.05
dashed evenly withcolor .5[blue, white];
draw wave withpen pencircle scaled 1 withcolor .67 green;
% label pictures
picture s[];
s1 = thelabel.top("peak", origin);
s2 = thelabel.bot("trough", origin);
s3 = thelabel.top("expansion", origin);
s4 = thelabel.top("recession", origin);
% add the labels in the "right" places
t = 0; n = 0;
forever:
dt := directiontime right of subpath(t,infinity) of wave;
exitif dt < 0;
t := t + dt;
n := n + 1;
if odd(n): draw s1 shifted point t of wave withcolor .67 blue;
if n>1: draw s3 rotated angle direction t-dt/2 of wave
shifted point t-dt/2 of wave ; fi
else: draw s2 shifted point t of wave withcolor .67 red;
draw s4 rotated angle direction t-dt/2 of wave
shifted point t-dt/2 of wave;
fi
endfor
% do the axes and titles
path xx, yy;
xx = origin -- (xpart point infinity of wave, 0);
yy = origin -- (0, ypart point infinity of wave);
drawarrow xx;
drawarrow yy;
label.bot(TEX("Time") scaled 1.2, point 1/2 of xx);
label.lft(TEX("Level of real output") scaled 1.2 rotated 90, point 1/2 of yy);
label.urt(TEX("The business cycle") scaled 1.44, point 0.8 of yy shifted 10 right) withcolor .8 red;
endfig;
\end{mplibcode}
\end{document}
Because the version of Helvetica on my Mac includes a full range of Greek characters, and because lualatex fully supports Unicode, all you have to do to get a Greek version is to replace the seven labels with Greek versions:
s1 = thelabel.top("κρίση", origin);
s2 = thelabel.bot("ύφεση", origin);
s3 = thelabel.top("άνοδος", origin);
s4 = thelabel.top("κἀθοδος", origin);
label.bot(TEX("Χρὀνος") scaled 1.2, point 1/2 of xx);
label.lft(TEX("Επἰπεδο οικονομικἠς δραστηριὀτητας") scaled 1.2 rotated 90, point 1/2 of yy);
label.urt(TEX("Οι φἀσεις του Οικονομικοὐ Κὐκλου") scaled 1.44, point 0.8 of yy shifted 10 right) withcolor .8 red;
If you put these versions in the right places and recompile you should get:

Old, original version
When I originally answered this question, I was still using old-fashioned Metapost compiled directly with mpost. The font management is a bit harder back then. I've left the old versions for comparions.
Compile this one with mpost to get PostScript output.
prologues := 3;
outputtemplate := "%j%c.eps";
beginfig(1);
string ff; ff = "phvr8r";
% fiddle with the parameters to get a nice rising wave
path wave;
wave = (origin for t=1 step 1 until 3360 + 24:
-- (2/3t,70 sind(t)) shifted (0,1/3t)
endfor) scaled 3/4 shifted (21,34);
% draw the straight arrow and the wave on top
drawarrow point 0 of wave -- point 3*360 of wave scaled 1.05
dashed evenly withcolor .5[blue, white];
draw wave withpen pencircle scaled 1 withcolor .67 green;
% labels
picture s[]; % center each label and push it up/down slightly
s1 = "peak" infont ff; s1 := s1 shifted (-1/2 xpart urcorner s1, 6);
s2 = "trough" infont ff; s2 := s2 shifted (-1/2 xpart urcorner s2, -12);
s3 = "expansion" infont ff; s3 := s3 shifted (-1/2 xpart urcorner s3, 6);
s4 = "recession" infont ff; s4 := s4 shifted (-1/2 xpart urcorner s4, 6);
% add the labels in the "right" places
t = 0; n = 0;
forever:
dt := directiontime right of subpath(t,infinity) of wave;
exitif dt < 0;
t := t + dt;
n := n + 1;
if odd(n): draw s1 shifted point t of wave withcolor .67 blue;
if n>1: draw s3 rotated angle direction t-dt/2 of wave
shifted point t-dt/2 of wave ; fi
else: draw s2 shifted point t of wave withcolor .67 red;
draw s4 rotated angle direction t-dt/2 of wave
shifted point t-dt/2 of wave;
fi
endfor
% do the axes and titles
path xx, yy;
xx = origin -- (xpart point infinity of wave, 0);
yy = origin -- (0, ypart point infinity of wave);
drawarrow xx;
drawarrow yy;
label.bot("Time" infont ff scaled 1.2, point 1/2 of xx);
label.lft("Level of real output" infont ff scaled 1.2 rotated 90, point 1/2 of yy);
label.top("The business cycle" infont ff scaled 1.44, point 0.8 of yy shifted 108 right) withcolor .8 red;
% add a little space all round
setbounds currentpicture to bbox currentpicture;
endfig;
end.
To produce a Greek version (the old way) you need to switching the TeX processing to LaTeX with mpost -tex=latex and use the gfsneohellenic package.

beginfig(2);
verbatimtex
\documentclass{article}
\usepackage[english,greek]{babel}
\usepackage[iso-8859-7]{inputenc}
\usepackage{cmbright}
\usepackage[default]{gfsneohellenic}
\begin{document}
etex
% fiddle with the parameters to get a nice rising wave
path wave;
wave = (origin for t=1 step 1 until 3360 + 24:
-- (2/3t,70 sind(t)) shifted (0,1/3t)
endfor) scaled 3/4 shifted (21,34);
% draw the straight arrow and the wave on top
drawarrow point 0 of wave -- point 3*360 of wave scaled 1.05
dashed evenly withcolor .5[blue, white];
draw wave withpen pencircle scaled 1 withcolor .67 green;
% labels
picture s[]; % center each label and push it up/down slightly
s1 = btex \textneohellenic{kr'ish} etex; s1 := s1 shifted (-1/2 xpart urcorner s1, 6);
s2 = btex \textneohellenic{'ufesh} etex; s2 := s2 shifted (-1/2 xpart urcorner s2, -12);
s3 = btex \textneohellenic{'anodoc} etex; s3 := s3 shifted (-1/2 xpart urcorner s3, 6);
s4 = btex \textneohellenic{k'ajodoc} etex; s4 := s4 shifted (-1/2 xpart urcorner s4, 6);
% add the labels in the "right" places
numeric t, n, dt;
t = 0; n = 0;
forever:
dt := directiontime right of subpath(t,infinity) of wave;
exitif dt < 0;
t := t + dt;
n := n + 1;
if odd(n): draw s1 shifted point t of wave withcolor .67 blue;
if n>1: draw s3 rotated angle direction t-dt/2 of wave
shifted point t-dt/2 of wave ; fi
else: draw s2 shifted point t of wave withcolor .67 red;
draw s4 rotated angle direction t-dt/2 of wave
shifted point t-dt/2 of wave;
fi
endfor
% do the axes and titles
path xx, yy;
xx = origin -- (xpart point infinity of wave, 0);
yy = origin -- (0, ypart point infinity of wave);
drawarrow xx;
drawarrow yy;
label.bot(btex \textneohellenic{Qr'onoc} etex scaled 1.2, point 1/2 of xx);
label.lft(btex \textneohellenic{Ep'ipedo oikonomik'hc drasthri'othtac} etex scaled 1.2 rotated 90, point 1/2 of yy);
label.top(btex \textneohellenic{Oi f'aseic tou Oikonomiko'u K'uklou} etex scaled 1.44, point 0.8 of yy shifted 160 right) withcolor .8 red;
% add a little space all round
setbounds currentpicture to bbox currentpicture;
endfig;