Backtest: buy1>sell1 ; buy2>sell2

Forum d'entraide ProRealTime : prise en main, réglages, indicateurs, programmation ProBuilder et ProOrder, astuces entre utilisateurs de la plateforme.
Raiko
Ewok
Messages : 48
Enregistré le : 03 févr. 2015 18:21

Backtest: buy1>sell1 ; buy2>sell2

Message non lu par Raiko »

Bonsoir,

Je fais mes premiers essaies "backtest".
J'ose espèrer qu'il est possible d'associer un ordre d'achat avec un ordre de vente et donc de conditionner la vente à un type d'achat. Ainsi, si "LongOnMarket" pour achat1 et que signal vente2 se produit, il n'y a pas de vente car il n'y a pas eu de signal d'achat2 précédemment.
Encore une fois j'ai besoin de votre lumière pour guider mes pas.
J'ai essayé la condition imbriquée sauvagement commme à mon habitude sans succés :D .
:merci:
Avatar du membre
koub
Stormtrooper
Messages : 229
Enregistré le : 13 déc. 2014 19:02

Re: Backtest: buy1>sell1 ; buy2>sell2

Message non lu par koub »

Plop Raiko, si j'ai bien compris ce que tu souhaites faire, tu veux avoir la possibilité de lancer plusieurs trades, hedging?? il faut que tu valides le paramètre CumulateOrder au début de ton code:

Code : #

DEFPARAM CumulateOrders = True
Par défaut, tu ne lances qu'un trade, donc si tu cherches à éviter de nouveaux trades lorsqu'un est en cours, ça doit fonctionner d'origine...

Soit plus clair...

?
Raiko
Ewok
Messages : 48
Enregistré le : 03 févr. 2015 18:21

Re: Backtest: buy1>sell1 ; buy2>sell2

Message non lu par Raiko »

Salut Koub!

J'avais deja activé le cumul et ca marche.
Je prends un exemple détaillé.

ordre achat1=CCI>0 THEN
BUY 2 SHARES AT MARKET
ordre achat2=RSI>30 THEN
BUY 2 SHARES AT MARKET

ordre vente1= cci>50 THEN
SELL 2 SHARES AT MARKET
ordre vente2 = RSI>70 THEN
SELL 2 SHARES AT MARKET

Dans ce cas, si "LongOnMarket" avec une seul position et que le signal de vente2 se produit ensuite, alors la position est vendu. Je veux qu'elle soit vendu uniquement si le signal d'achat était le nuléro 2. Donc lier une condition d'achat à une condition de vente.

J'ai essayé deux formes différentes:

Code : #

IF A1 THEN
BUY 2 SHARES  AT MARKET
ELSIF V1  THEN
SELL  2 SHARES AT MARKET
ENDIF
//2

IF  A2 THEN
BUY 2 SHARES  AT MARKET
ENDIF
IF V2 THEN
SELL  2 SHARES AT MARKET
ENDIF
Avatar du membre
koub
Stormtrooper
Messages : 229
Enregistré le : 13 déc. 2014 19:02

Re: Backtest: buy1>sell1 ; buy2>sell2

Message non lu par koub »

hummm... ONCE?

Code : #

ONCE ACHAT1 = 0
ONCE ACHAT2 = 0

IF A1 THEN
BUY 2 SHARES  AT MARKET
ACHAT1 = 1
ACHAT2 = 0
ELSIF V1  THEN
SELL  2 SHARES AT MARKET
ENDIF
//2

IF  A2 THEN
BUY 2 SHARES  AT MARKET
ACHAT1 = 0
ACHAT2 = 1
ENDIF
IF V2 AND ACHAT2=1 THEN
SELL  2 SHARES AT MARKET
ENDIF
?
Raiko
Ewok
Messages : 48
Enregistré le : 03 févr. 2015 18:21

Re: Backtest: buy1>sell1 ; buy2>sell2

Message non lu par Raiko »

Encore quelques modifs à faire sur ce code. J'ai besoin que achat et vente puissent se produire plusieurs fois (a chaque fois que je ne suis pas en position sur ce signal pour acheter et lorsque je suis en postotoon pour vendre au signal correspondant).
Faut-il donc bien enlever la fonction "once"?
Ajouter ACHAT1 = 1 apres "buy market" me semble pertinent alors je teste des codes à taton à partir de la base que tu m'as donné. C'est sur la bonne voie. ;)
Raiko
Ewok
Messages : 48
Enregistré le : 03 févr. 2015 18:21

Re: Backtest: buy1>sell1 ; buy2>sell2

Message non lu par Raiko »

Mon "ordre vente2 " n'est plus pris en compte...
Raiko
Ewok
Messages : 48
Enregistré le : 03 févr. 2015 18:21

Re: Backtest: buy1>sell1 ; buy2>sell2

Message non lu par Raiko »

Raiko a écrit :Mon "ordre vente2 " n'est plus pris en compte...
J'ai tester ca:

Code : #

IF  A AND NOT LongOnMarket THEN
BUY 2 SHARES  AT MARKET
ACHAT1 = 1
ACHAT1 = 0
ELSIF  B  AND ACHAT1=1 THEN
SELL  2 SHARES AT MARKET
ENDIF
//2

IF  C THEN
BUY 2 SHARES  AT MARKET
ACHAT2 = 0
ACHAT2 = 1
ELSIF D AND ACHAT2=1 THEN
SELL  2 SHARES AT MARKET
ENDIF
Raiko
Ewok
Messages : 48
Enregistré le : 03 févr. 2015 18:21

Re: Backtest: buy1>sell1 ; buy2>sell2

Message non lu par Raiko »

Celui-ci semble fonctionner, youpiiii haha. Coup de chance ou ca parait logique?

Code : #

ONCE ACHAT1 = 0
ONCE ACHAT2 = 0

IF  A THEN
BUY 2 SHARES  AT MARKET
ACHAT1 = 1

ELSIF  B  AND ACHAT1=1 THEN
SELL  2 SHARES AT MARKET
ACHAT1 = 0
ENDIF
//2

IF  C THEN
BUY 2 SHARES  AT MARKET
ACHAT2 = 1

ELSIF D AND ACHAT2=1 THEN
SELL  2 SHARES AT MARKET
ACHAT2 = 0
ENDIF
Avatar du membre
koub
Stormtrooper
Messages : 229
Enregistré le : 13 déc. 2014 19:02

Re: Backtest: buy1>sell1 ; buy2>sell2

Message non lu par koub »

:bravo:

je dirai que ça parait logique, on a rarement de la chance en programmation... si tu regardes le code qui ne fonctionnait pas, les variables de tes conditions: 2 x ACHAT1 puis 2 x ACHAT2...
------------------------------------------
IF A AND NOT LongOnMarket THEN
BUY 2 SHARES AT MARKET
ACHAT1 = 1
ACHAT1 = 0

------------------------------------------
IF C THEN
BUY 2 SHARES AT MARKET
ACHAT2 = 0
ACHAT2 = 1

------------------------------------------

+, koub. ;)