-- ******************************************************************** -- Version 1.0.0 - 27/05/2008 -- Buts : -- Passer le portefeuille au mois suivant -- Vendre les lignes dépassant 15% de hausse -- Vendre les lignes dépassant 15% de baisse -- Mettre à jour le portefeuille, les lignes, les mouvements -- ******************************************************************** -- Select * from V_portefeuille; select 'Le mois suivant ...'; -- ******************************************************************** -- Premier jour de cotation du mois suivant celui du portefeuille -- ******************************************************************** update portefeuille set dat = ( select min(Dat) from cours where Dat>(select DebutDuMois + 100 from V_portefeuille)); -- ******************************************************************** -- Vendre les fortes progressions -- ******************************************************************** -- une ligne est vendue lorsque elle a progressée de + 15% depuis son PR. -- le test de progression est effectué le soir du premier jour boursier, -- Donc repérer les rga de la table 'lignes' -- avec PR / Der(rga,dat) > 0.15 ou -PR / Der(rga,dat) > 0.15 -- Une ligne est vendue avec le cours d'ouverture du lendemain insert into decisions select NULL, n.dat, 'Vente', n.rga, a.nombre, round(n.pre,2) from v_lignes a, cours c, cours n, portefeuille p where a.rga = c.rga and c.dat = p.dat and c.nextid = n.id and (c.Der-PR)/PR>0.15; insert into decisions select NULL, n.dat, 'Vente', n.rga, a.nombre, round(n.pre,2) from v_lignes a, cours c, cours n, portefeuille p where a.rga = c.rga and c.dat = p.dat and c.nextid = n.id and -(c.Der-PR)/PR>0.15; -- ******************************************************************** -- Acheter avec l'argent disponible -- ******************************************************************** -- les achats sont effectués à l'ouverture le lendemain de la vente -- la décision d'achat s'effectue par sélection des 10 meilleures -- progressions depuis le premier jour du mois précédent. insert into decisions select NULL, a.dat, 'Achat', a.rga, round( round( (select 0.90*especes/(NbrMaxAchat+1) from v_portefeuille), 2) / a.pre), round(a.pre,2) from cours a, cours b, (select * from V_performance limit (select NbrMaxAchat from v_portefeuille)) c where c.nextid = b.id and b.nextid = a.id ; -- ******************************************************************** -- Evaluer le portefeuille -- ******************************************************************** -- calculer le cours du soir après l'achat update portefeuille set Montant = ( select sum(c.der * v.nombre) from cours a, cours b, cours c, v_lignes v, portefeuille p where v.rga = a.rga and a.dat = p.dat and a.nextid = b.id and b.nextid = c.id ); -- ******************************************************************** -- Lister le portefeuille et les décisions -- ******************************************************************** select ''; select ''; select 'Decisions:'; select ''; select * from Decisions; select ''; --select 'Historique:'; --select ''; --select * from Historique; --select ''; select 'Lignes:'; select ''; select * from v_Lignes; select ''; select 'Portefeuille:'; select ''; select * from v_Portefeuille; select '';