Leçon 13 - Votre premier conseiller expert (1ère partie) - page 5

 
KelchMonteiro:
vraiment merci mladen !

Je l'ai vu maintenant.

J'ai fait la même chose. Regardez :

for_a_new_life-1.ex4

for_a_new_life-1_1.mq4

Je testais la version mine et je testerai la vôtre aussi.

Si cet indicateur est correct, nous avons fait quelques grands pour attraper les points de retournement.

C'est parce que la différence entre les deux moyennes mobiles divisée par la force 2times, peut montrer quand le prix se retourne dans une tendance avec plus de sensibilité. Testez-le avec un autre indicateur de frontière et je pense que vous aimerez.

quelques photos :

Je suis trop content car c'est ma première contribution au forum. Et je n'aurais pas pu le faire sans votre aide.

Merci beaucoup Mladen !

Kelch

J'ai fait un seul changement : changer la direction de l'indicateur. Il semble que de cette façon il montre des valeurs un peu plus logiques. Essayez aussi de cette façon

for_a_new_life-1.01.mq4

Dossiers :
 

Salut Mladen,

J'ai créé une EA à partir d'icustom après l'avoir compilé, il n'y a pas eu d'erreur ni d'avertissement mais j'ai fait un Backtest sans OP.

Je peux poster mon EA dans ce fil de discussion, je voudrais que vous m'aidiez à le réparer.

Merci,

Meilleure considération

 
Dova:
Bonjour Mladen,

J'ai créé une EA à partir d'icustom après l'avoir compilé, il n'y a pas eu d'erreur ni d'avertissement mais j'ai fait un Backtest sans OP.

Puis-je poster mon EA dans ce fil de discussion ? J'aimerais que vous m'aidiez à le réparer.

Merci,

meilleures salutations

Dova

Postez-le pour que quelqu'un y jette un coup d'oeil.

 
mladen:
Kelch

Je n'ai fait qu'un seul changement : changer la direction de l'appareil. Il semble que de cette façon, il affiche des valeurs un peu plus logiques. Essayez aussi de cette façon

for_a_new_life-1.01.mq4

Merci mladen !

 

Voici mon ea d'essai...

Cette ea lors de la compilation est ok pas d'erreur ou d'avertissement mais pas d'OP quand BT.

Je voudrais que cette ea puisse inverser la position de l'OP avant,

Si la position est déjà BUY, la flèche SELL de la prochaine bougie apparaîtra et inversera automatiquement la position de BUY à SELL et vice versa.

J'aimerais aussi ajouter le Trailling Stop.

Désolé pour mon mauvais anglais

pfi.ex4ea_pfi.mq4

Je vous remercie

Dossiers :
pfi.ex4  6 kb
ea_pfi.mq4  4 kb
 
Dova:
Voici mon essai ea...

Cette ea lors de la compilation est ok pas d'erreur ou d'avertissement mais pas d'OP lorsque BT.

J'aimerais que cette application puisse inverser la position de l'OP avant,

Par exemple, si la position est déjà BUY, la flèche SELL de la prochaine bougie apparaîtra et inversera automatiquement la position de BUY à SELL et vice versa.

J'aimerais aussi ajouter un Trailling Stop.

Désolé pour mon mauvais anglais

pfi.ex4ea_pfi.mq4

Merci.

Pour la clarté de quiconque lit ce post : que signifie exactement "inverser à partir de OP" ou "pas d'OP quand BT" ?

 
mladen:
Pour la clarté de tous ceux qui lisent ce post : que signifie exactement "reverse from OP" ou "no OP when BT" ?

Je veux dire OP= Position ouverte, BT= Backtest.

Après le backtest, aucune position ouverte.

Lorsqu'il y a déjà une position ouverte à l'achat, les flèches/signaux de vente de la prochaine bougie apparaissent et ferment automatiquement les positions longues et ouvrent les positions courtes et vice versa (inversion automatique de la position).

J'espère que mes explications sont claires.

Merci.

 

Salutations à tous ....

pardonner si mauvais endroit, en raison de mes nouveaux membres .

s'il vous plaît son soutien de la codification de maître ,

pour coder cet indicateur dans EA.

avec l'intention de EA sera en mesure de travailler comme je le voulais, à savoir :

1.ouvrir l'achat automatique lorsque le prix touche la ligne TL1 .

2.ouvrir une vente automatique lorsque le prix touche la ligne TL2.

3.ouvrir un achat automatique lorsque le prix est au-dessus de la ligne TL2

4.ouvrir la vente automatique lorsque le prix dépasse la ligne TL1.

5.fermé achat automatique lorsque le prix touche la ligne TL2 procéder directement à la vente ouverte.

6.fermé, vente automatique lorsque le prix touche la ligne TL1, achat direct ouvert.

7.nomor 3 et 4 fermé manuellement ( sans TrailingStop ) .

8.SL 50 pips et put sur lot 0.1

9.time frame H4 pour toutes les paires.

merci beaucoup

/ / + ----------------------------------------------- ------------------- +

/ / | SHI_Channel_true.mq4 |

/ / | Copyright © 2004 , Shurka & Kevin |

/ / | |

/ / + ----------------------------------------------- ------------------- +

# propriété copyright " Copyright © 2004 , Shurka & Kevin "

# propriété link " "

/ / ----

# propriété indicator_chart_window

# propriété indicator_buffers 1

# propriété indicator_color1 Red

ExtMapBuffer1 double [ ] ;

/ / ---- Paramètres d'entrée

extern int AllBars = 240 ;

BarsForFract extern int = 0 ;

CurrentBar int = 0 ;

double Step = 0 ;

int B1 = -1 , B2 = -1 ;

UpDown int = 0 ;

double P1 = 0 , P2 = 0 , PP = 0 ;

int i = 0 , AB = 300 , BFF = 0 ;

ishift int = 0 ;

double iprice = 0 ;

datetime T1 , T2 ;

/ / + ----------------------------------------------- ------------------- +

/ / | Fonction d'initialisation de l'indicateur personnalisé |

/ / + ----------------------------------------------- ------------------- +

int init ( )

{

/ / ---- Indicateurs

SetIndexStyle ( 0 , DRAW_ARROW ) ;

SetIndexArrow ( 0 , 164 ) ;

SetIndexBuffer ( 0 , ExtMapBuffer1 ) ;

SetIndexEmptyValue ( 0 , 0.0 ) ;

/ / ----

return ( 0 ) ;

}

/ / + ----------------------------------------------- ------------------- +

/ / | Désinitialisation de la fonction de l'indicateur de garde | / / +.

/ / + ----------------------------------------------- ------------------- +

deinit int ( )

{

ObjectDelete ( " TL1 " ) ;

ObjectDelete (" TL2 ") ;

ObjectDelete ( " MIDL " ) ;

Commentaire ( " " ) ;

/ / ----

return ( 0 ) ;

}

/ / + ----------------------------------------------- ------------------- +

/ / | |

/ / + ----------------------------------------------- ------------------- +

DelObj void ( )

{

ObjectDelete ( " TL1 " ) ;

ObjectDelete (" TL2 ") ;

ObjectDelete (" MIDL ") ;

}

/ / + ----------------------------------------------- ------------------- +

/ / | Fonction d'itération de l'indicateur personnalisé |

/ / + ----------------------------------------------- ------------------- +

int start ( )

{

IndicatorCounted counted_bars = int ( ) ;

/ / ----

si ( ( AllBars == 0 ) | | ( Bars < AllBars ) )

AB = Bars ;

else AB = AllBars ; / / AB - êîëè ÷ ÷ åñòâî Ian èòûâàåìûõ áàðîâ

si ( BarsForFract > 0 )

BFF = BarsForFract ;

sinon

switch ( Période ( ) )

{

cas 1 : BFF = 12 ; break ;

cas 5 : BFF = 48 ; pause ;

cas 15 : BFF = 24 ; pause ;

cas 30 : BFF = 24 ; pause ;

cas 60 : BFF = 12 ; pause ;

cas 240 : BFF = 15 ; pause ;

cas 1440 : BFF = 10 ; pause ;

cas 10080 : BFF = 6 ; pause ;

default : DelObj ( ), return ( -1 ) ; break ;

}

CurrentBar = 2 ; / / ñ ÷ ñ òðåòüåãî Suspected èòàåì , ÷ òîáû ôðàêòàë " çàêðåïèëñÿ

B1 = -1 ;

B2 = -1 ;

UpDown = 0 ;

while ( ( ( B1 == -1 ) | | ( B2 == -1 ) ) && ( CurrentBar < AB ) )

{

/ / UpDown = 1 ÷ eo CIA ïåðâûé ôðàêòàë íàéäåí ñâåðõó , UpDown = -1 ÷ eo CIA ïåðâûé ôðàêòàë

/ / íàéäåí ñíèçó , CIA UpDown = 0 ÷ ¸ AU EO ôðàêòàë he íàéäåí .

/ / A1 a2 è - ÿ áàðîâ íîìåðà ôðàêòàëàìè , ÷ ADAC IEO ñòðîèì îïîðíóþ ëèíèþ .

/ / È D1 D2 - ÷ öåíû ñîîòâåòñòâåííî ADAC êîòîðûå áóäåì ëèíèþ ïðîâîäèòü

if ( ( UpDown < 1 ) && ( CurrentBar == Lowest ( Symbol ( ) , Period ( ) , MODE_LOW , BFF * 2 + 1 ,

CurrentBar - BFF ) ) )

{

si ( UpDown == 0 )

{

UpDown = -1 ;

B1 = CurrentBar ;

P1 = Low [ B1 ] ;

}

else

{

B2 = CurrentBar ;

P2 = Bas [ B2 ] ;

}

}

if ( ( UpDown > -1 ) && ( CurrentBar == Highest ( Symbol ( ) , Period ( ) , MODE_HIGH , BFF * 2 + 1 ,

CurrentBar - BFF ) ) )

{

si ( UpDown == 0 )

{

UpDown = 1 ;

B1 = CurrentBar ;

P1 = Haut [ B1 ] ;

}

else

{

B2 = CurrentBar ;

P2 = Haut [ B2 ] ;

}

}

CurrentBar + + ;

}

si ( ( B1 == -1 ) | | ( B2 == -1 ) )

{

DelObj ( ) ;

retour ( -1 ) ;

} / / Eo ÷ CIA he íàøëè ôðàêòàëîâ ñðåäè 300 áàðîâ 8-)

Étape = ( P2 - P1 ) / ( B2 - B1 ) / / Au ÷ èñëèëè OAA , åñëè ïîëîæèòåëüíûé II , OI êàíàë íèñõîäÿùèé

P1 = P1 - B1 * Étape ;

B1 = 0 ; / / ïåðåñòàâëÿåì öåíó ïåðâûé AAD è ê íóëþ

/ / À ÷ eo Oi òåïåðü îïîðíóþ ïðîòèâîïîëîæíîé ëèíèè êàíàëà .

ishift = 0 ;

iprice = 0 ;

si ( UpDown == 1 )

{

PP = Low [ 2 ] - 2 * Step ;

pour (i = 3 ; i < = B2 ; i + + )

{

si ( Low [ i ] < PP + Step * i )

PP = Low [ i ] - i * Step ;

}

si ( Low [ 0 ] < PP )

{

ishift = 0 ;

iprice = PP ;

}

si ( Low [ 1 ] < PP + Step )

{

ishift = 1 ;

iprice = PP + Step ;

}

si ( High [ 0 ] > P1 )

{

ishift = 0 ;

iprice = P1 ;

}

si ( Haut [ 1 ] > P1 + Step )

{

ishift = 1 ;

iprice = P1 + Step ;

}

}

else

{

PP = Haut [ 2 ] - 2 * Étape ;

pour (i = 3 ; i < = B2 ; i + + )

{

si ( Haut [ i ] > PP + Step * i )

PP = Haut [ i ] - i * Étape ;

}

si ( Low [ 0 ] < P1 )

{

ishift = 0 ;

iprice = P1 ;

}

si ( Low [ 1 ] < P1 + Step )

{

ishift = 1 ;

iprice = P1 + Step ;

}

si ( High [ 0 ] > PP )

{

ishift = 0 ;

iprice = PP ;

}

si ( High [ 1 ] > PP + Step )

{

ishift = 1 ;

iprice = PP + Step ;

}

}

/ / Òåïåðü ïåðåñòàâèì êîíå ÷ è íóþ öåíó he AAD AA , ÷ òîáû ëèíèè êàíàëà ðèñîâàëèñü ïîäëèíååå

P2 = P1 + AB * Pas ;

T1 = Temps [ B1 ] ;

T2 = Temps [ AB ] ;

/ / Åñëè he áûëî ïåðåñå ÷ åíèÿ êàíàëà , oi 0 , EIA ÷ å ñòàâèì Ineno .

si ( iprice ! = 0 )

ExtMapBuffer1 [ ishift ] = iprice ;

DelObj ( ) ;

ObjectCreate ( " TL1 " , OBJ_TREND , 0 , T2 , PP + Step * AB , T1 , PP ) ;

ObjectSet ( " TL1 " , OBJPROP_COLOR , Lime ) ;

ObjectSet ( " TL1 " , OBJPROP_WIDTH , 2 ) ;

ObjectSet ( " TL1 " , OBJPROP_STYLE , STYLE_SOLID ) ;

ObjectCreate ( " TL2 " , OBJ_TREND , 0 , T2 , P2 , T1 , P1 ) ;

ObjectSet ( " TL2 " , OBJPROP_COLOR , White ) ;

ObjectSet ( " TL2 " , OBJPROP_WIDTH , 2 ) ;

ObjectSet ( " TL2 " , OBJPROP_STYLE , STYLE_SOLID ) ;

ObjectCreate ( " MIDL " , OBJ_TREND , 0 , T2 , ( P2 + PP + Step * AB ) / 2 , T1 , ( P1 + PP ) / 2 ) ;

ObjectSet ( " MIDL " , OBJPROP_COLOR , Yellow ) ;

ObjectSet ( " MIDL " , OBJPROP_WIDTH , 1 ) ;

ObjectSet ( " MIDL " , OBJPROP_STYLE , STYLE_DOT ) ;

Comment ( " Channel size = " , DoubleToStr ( MathAbs ( PP - P1 ) / Point , 0 ) , " Slope = " ,

DoubleToStr ( - Step / Point , 2 ) ) ;

/ / ----

return ( 0 ) ;

}

/ / + ----------------------------------------------- ------------------- +

 
djiwenk:
Salutations à tous ....

pardonner si mauvais endroit, en raison de mes nouveaux membres .

s'il vous plaît son soutien de la codification de maître ,

pour coder cet indicateur dans EA.

avec l'intention d'EA sera en mesure de travailler comme je le voulais, à savoir :

1.ouvrir l'achat automatique lorsque le prix touche la ligne TL1 .

2.ouvrir une vente automatique lorsque le prix touche la ligne TL2.

3.ouvrir un achat automatique lorsque le prix est au-dessus de la ligne TL2

4.ouvrir la vente automatique lorsque le prix dépasse la ligne TL1.

5.fermé achat automatique lorsque le prix touche la ligne TL2 procéder directement à la vente ouverte.

6.fermé, vente automatique lorsque le prix touche la ligne TL1, achat direct ouvert.

7.nomor 3 et 4 fermé manuellement ( sans TrailingStop ) .

8.SL 50 pips et put sur lot 0.1

9.time frame H4 pour toutes les paires.

merci beaucoup

/ / + ----------------------------------------------- ------------------- +

/ / | SHI_Channel_true.mq4 |

/ / | Copyright © 2004 , Shurka & Kevin |

/ / | |

/ / + ----------------------------------------------- ------------------- +

# propriété copyright " Copyright © 2004 , Shurka & Kevin "

# propriété link " "

/ / ----

# propriété indicator_chart_window

# propriété indicator_buffers 1

# propriété indicator_color1 Red

ExtMapBuffer1 double [ ] ;

/ / ---- Paramètres d'entrée

extern int AllBars = 240 ;

BarsForFract extern int = 0 ;

CurrentBar int = 0 ;

double Step = 0 ;

int B1 = -1 , B2 = -1 ;

UpDown int = 0 ;

double P1 = 0 , P2 = 0 , PP = 0 ;

int i = 0 , AB = 300 , BFF = 0 ;

ishift int = 0 ;

double iprice = 0 ;

datetime T1 , T2 ;

/ / + ----------------------------------------------- ------------------- +

/ / | Fonction d'initialisation de l'indicateur personnalisé |

/ / + ----------------------------------------------- ------------------- +

int init ( )

{

/ / ---- Indicateurs

SetIndexStyle ( 0 , DRAW_ARROW ) ;

SetIndexArrow ( 0 , 164 ) ;

SetIndexBuffer ( 0 , ExtMapBuffer1 ) ;

SetIndexEmptyValue ( 0 , 0.0 ) ;

/ / ----

return ( 0 ) ;

}

/ / + ----------------------------------------------- ------------------- +

/ / | Désinitialisation de la fonction de l'indicateur de garde | / / +.

/ / + ----------------------------------------------- ------------------- +

deinit int ( )

{

ObjectDelete ( " TL1 " ) ;

ObjectDelete (" TL2 ") ;

ObjectDelete ( " MIDL " ) ;

Commentaire ( " " ) ;

/ / ----

return ( 0 ) ;

}

/ / + ----------------------------------------------- ------------------- +

/ / | |

/ / + ----------------------------------------------- ------------------- +

DelObj void ( )

{

ObjectDelete ( " TL1 " ) ;

ObjectDelete (" TL2 ") ;

ObjectDelete (" MIDL ") ;

}

/ / + ----------------------------------------------- ------------------- +

/ / | Fonction d'itération de l'indicateur personnalisé |

/ / + ----------------------------------------------- ------------------- +

int start ( )

{

IndicatorCounted counted_bars = int ( ) ;

/ / ----

si ( ( AllBars == 0 ) | | ( Bars < AllBars ) )

AB = Bars ;

else AB = AllBars ; / / AB - êîëè ÷ ÷ åñòâî Ian èòûâàåìûõ áàðîâ

si ( BarsForFract > 0 )

BFF = BarsForFract ;

sinon

switch ( Période ( ) )

{

cas 1 : BFF = 12 ; break ;

cas 5 : BFF = 48 ; pause ;

cas 15 : BFF = 24 ; pause ;

cas 30 : BFF = 24 ; pause ;

cas 60 : BFF = 12 ; pause ;

cas 240 : BFF = 15 ; pause ;

cas 1440 : BFF = 10 ; pause ;

cas 10080 : BFF = 6 ; pause ;

default : DelObj ( ), return ( -1 ) ; break ;

}

CurrentBar = 2 ; / / ñ ÷ ñ òðåòüåãî Suspected èòàåì , ÷ òîáû ôðàêòàë " çàêðåïèëñÿ

B1 = -1 ;

B2 = -1 ;

UpDown = 0 ;

while ( ( ( B1 == -1 ) | | ( B2 == -1 ) ) && ( CurrentBar < AB ) )

{

/ / UpDown = 1 ÷ eo CIA ïåðâûé ôðàêòàë íàéäåí ñâåðõó , UpDown = -1 ÷ eo CIA ïåðâûé ôðàêòàë

/ / íàéäåí ñíèçó , CIA UpDown = 0 ÷ ¸ AU EO ôðàêòàë he íàéäåí .

/ / A1 a2 è - ÿ áàðîâ íîìåðà ôðàêòàëàìè , ÷ ADAC IEO ñòðîèì îïîðíóþ ëèíèþ .

/ / È D1 D2 - ÷ öåíû ñîîòâåòñòâåííî ADAC êîòîðûå áóäåì ëèíèþ ïðîâîäèòü

if ( ( UpDown < 1 ) && ( CurrentBar == Lowest ( Symbol ( ) , Period ( ) , MODE_LOW , BFF * 2 + 1 ,

CurrentBar - BFF ) ) )

{

si ( UpDown == 0 )

{

UpDown = -1 ;

B1 = CurrentBar ;

P1 = Low [ B1 ] ;

}

else

{

B2 = CurrentBar ;

P2 = Bas [ B2 ] ;

}

}

if ( ( UpDown > -1 ) && ( CurrentBar == Highest ( Symbol ( ) , Period ( ) , MODE_HIGH , BFF * 2 + 1 ,

CurrentBar - BFF ) ) )

{

si ( UpDown == 0 )

{

UpDown = 1 ;

B1 = CurrentBar ;

P1 = Haut [ B1 ] ;

}

else

{

B2 = CurrentBar ;

P2 = Haut [ B2 ] ;

}

}

CurrentBar + + ;

}

si ( ( B1 == -1 ) | | ( B2 == -1 ) )

{

DelObj ( ) ;

retour ( -1 ) ;

} / / Eo ÷ CIA he íàøëè ôðàêòàëîâ ñðåäè 300 áàðîâ 8-)

Étape = ( P2 - P1 ) / ( B2 - B1 ) / / Au ÷ èñëèëè OAA , åñëè ïîëîæèòåëüíûé II , OI êàíàë íèñõîäÿùèé

P1 = P1 - B1 * Étape ;

B1 = 0 ; / / ïåðåñòàâëÿåì öåíó ïåðâûé AAD è ê íóëþ

/ / À ÷ eo Oi òåïåðü îïîðíóþ ïðîòèâîïîëîæíîé ëèíèè êàíàëà .

ishift = 0 ;

iprice = 0 ;

si ( UpDown == 1 )

{

PP = Low [ 2 ] - 2 * Step ;

pour (i = 3 ; i < = B2 ; i + + )

{

si ( Low [ i ] < PP + Step * i )

PP = Low [ i ] - i * Step ;

}

si ( Low [ 0 ] < PP )

{

ishift = 0 ;

iprice = PP ;

}

si ( Low [ 1 ] < PP + Step )

{

ishift = 1 ;

iprice = PP + Step ;

}

si ( High [ 0 ] > P1 )

{

ishift = 0 ;

iprice = P1 ;

}

si ( Haut [ 1 ] > P1 + Step )

{

ishift = 1 ;

iprice = P1 + Step ;

}

}

else

{

PP = Haut [ 2 ] - 2 * Étape ;

pour (i = 3 ; i < = B2 ; i + + )

{

si ( Haut [ i ] > PP + Step * i )

PP = Haut [ i ] - i * Étape ;

}

si ( Low [ 0 ] < P1 )

{

ishift = 0 ;

iprice = P1 ;

}

si ( Low [ 1 ] < P1 + Step )

{

ishift = 1 ;

iprice = P1 + Step ;

}

si ( High [ 0 ] > PP )

{

ishift = 0 ;

iprice = PP ;

}

si ( High [ 1 ] > PP + Step )

{

ishift = 1 ;

iprice = PP + Step ;

}

}

/ / Òåïåðü ïåðåñòàâèì êîíå ÷ è íóþ öåíó he AAD AA , ÷ òîáû ëèíèè êàíàëà ðèñîâàëèñü ïîäëèíååå

P2 = P1 + AB * Pas ;

T1 = Temps [ B1 ] ;

T2 = Temps [ AB ] ;

/ / Åñëè he áûëî ïåðåñå ÷ åíèÿ êàíàëà , oi 0 , EIA ÷ å ñòàâèì Ineno .

si ( iprice ! = 0 )

ExtMapBuffer1 [ ishift ] = iprice ;

DelObj ( ) ;

ObjectCreate ( " TL1 " , OBJ_TREND , 0 , T2 , PP + Step * AB , T1 , PP ) ;

ObjectSet ( " TL1 " , OBJPROP_COLOR , Lime ) ;

ObjectSet ( " TL1 " , OBJPROP_WIDTH , 2 ) ;

ObjectSet ( " TL1 " , OBJPROP_STYLE , STYLE_SOLID ) ;

ObjectCreate ( " TL2 " , OBJ_TREND , 0 , T2 , P2 , T1 , P1 ) ;

ObjectSet ( " TL2 " , OBJPROP_COLOR , White ) ;

ObjectSet ( " TL2 " , OBJPROP_WIDTH , 2 ) ;

ObjectSet ( " TL2 " , OBJPROP_STYLE , STYLE_SOLID ) ;

ObjectCreate ( " MIDL " , OBJ_TREND , 0 , T2 , ( P2 + PP + Step * AB ) / 2 , T1 , ( P1 + PP ) / 2 ) ;

ObjectSet ( " MIDL " , OBJPROP_COLOR , Yellow ) ;

ObjectSet ( " MIDL " , OBJPROP_WIDTH , 1 ) ;

ObjectSet ( " MIDL " , OBJPROP_STYLE , STYLE_DOT ) ;

Comment ( " Channel size = " , DoubleToStr ( MathAbs ( PP - P1 ) / Point , 0 ) , " Slope = " ,

DoubleToStr ( - Step / Point , 2 ) ) ;

/ / ----

return ( 0 ) ;

}

/ / + ----------------------------------------------- ------------------- +

djiwenk

Vous savez que le canal shi change tout le temps (comme le prix actuel change, le canal shi changera aussi) ?

 

livre de création d'ea

créer votre propre ea

Dossiers :
eaprog.pdf  1296 kb
Raison: