ProRealTime
On y parle Livres et Outils de Trading, Station de Trading, des livres lus sur le trading, de notre vision du trader et de son métier

Re: Probacktest

par Khepesh » 19 Juil 2013 19:12

Bonjour falex,
pas a chaque bougie mais il peut être exécuté plusieurs fois dans le même sens en cas de "grosse lancée" ou en contradictoire ... également en cas de "grosse lancée" (le temps que d'autres conditions s'annulent)

j'y avais pensé pour le "not onmarket" où du moins un équivalent, mais le problème et que si je souhaite faire un backtest avec juste de l'achat/vente, ça ne pourra pas fonctionner.

le cross under / over j'y avait pensé aussi mais rapidement abandonné puisque je ne voyait pas trop comment le mettre en place pour obtenir ce que je veux.
J'y pense juste en écrivant ce message, mais il est vrai que je pourrai déclencher l'ordre d'achat/vente uniquement sur le cross over/under, ce qui devrait rendre le tout viable ... j'vais aller voir ça après manger :)

si il y a une autre idée je suis preneur "au cas ou" ;-)

Merci en tout cas :)

edit : bon bah après verif, ça fonctionne avec le déclenchement sur le "crosses overs".

Re: Probacktest

par Khepesh » 21 Juil 2013 07:20

Encore bonjour, (décidément ... :musique: )

Bon bah cette fois c'est un problème différent, j'essaye d'incorporer un Money Mgt. à certains Backtest ... sans succès.
J'ai pourtant repris le code du bouquin "probacktest" mais je me retrouve avec des taille de positions pour le moins ... erratiques !

Voyant que ça ne marchait pas j'ai essayé d'épurer au maximummum afin de voir d’où vient le problème ... mais ça ne m'a pas vraiment aidé :|

donc une fois le truc simplifié au maximummum (je crois ... le "code" est à poil lol)

Code: Tout sélectionner
ONCE OrderSize = 1

monHeure = (time > 73000) and (time < 163000)

monRSI = RSI[7](close)

surVente = 25

// Ordres :

IF monHeure AND monRSI CROSSES OVER surVente THEN
    BUY OrderSize SHARES AT MARKET THISBARONCLOSE
ENDIF
IF PreviousTrade(1) > 0 THEN
        OrderSize = 1
ELSIF PreviousTrade(1) <= 0 THEN
        OrderSize = OrderSize * 2
ENDIF


comme je l'ai dit j'ai voulu simplifié à fond j'ai donc utilisé une "martingal" en * 2 tout ce qu'il y a de plus standard, j'ai essayé de rentrer des sorties en "manuel" sans résultat, en configurant les TP / SL via le joli bouton qui va bien, toujours sans résultat.

en mettant SL/TP @ 5chacun on se retrouve par exemple avec une première prise de position à 10 lots au lieux des "1" demandés suivi de 9 lots au lieux de "2" logiquement, et ça continu durant tout le reste du Backtest (je passe de taille de lot de 1 à 2 à 10 et plus sans raison apparente)

bref, je sèche :prier:

je suppose qu'il y a une coquille mais je ne vois pas où ...

Merci a toute âme charitable qui pourra m’éclairer :D

PS : voilà ce que donne le bouquin :

Code: Tout sélectionner
//***********Code à insérer au début de la stratégie**********//
ONCE OrderSize = 1 // On commence avec une position de 1
//*********************//
//***********Code à insérer juste après les instructions liquidant une position**********//
IF PreviousTrade(1) < 0 THEN
// Si le dernier trade était perdant, alors on double la taille de la position et on ajoute une unité
OrderSize = OrderSize * 2 + 1
ELSIF PreviousTrade(1) >= 0 THEN
// Si le dernier trade était gagnant, alors on revient à une position de taille 1
OrderSize = 1
ENDIF
//*********************//
REM Dans le backtest, la taille de la position doit être déterminée par la variable OrderSize

Re: Probacktest

par falex » 21 Juil 2013 15:26

Kepesh, j'ai pas tout lu mais quand j'ai essayé de faire du MM avec PreviousTrade, je me suis aperçu que :

PreviousTrade(0) ne te renvoi pas le PV/MV du gain en cours mais celui du trade - 1 (en fait le dernier clos).
Idem si un trade est clos par un trade contraire (du flip/flap) c'est le même comportement, PreviousTrdae(0) sera l'inversion de ses précedent et pas celui en cours.

J'avais essayé de faire un pyramidage avec cette fonction et je ne comprenais pas pourquoi mes pyramide démarrait toujours avec un trade de retard.

Donc ceci devant expliquer cela j'ai laissé tomber cette possibilité.

Une autre façon de faire du pyramidage mais sans tenir compte des résultats des trades précédents et de cocher la case "Engagement maximummum" ou alors de jouer sur la taille de ton K plus la prix du contrat et de décocher "réinvestir les gains".

Par exemple : j'ai 10 en K, 1 en valeur de contrat et "Réinvestir les gains de décocher" sur des cfd à risque limité DAX ou CAC ou indice anglais.

Si j'ai un code qui peut rentrer plusieurs fois dans le même sens alors je pourrais pyramider/moyenner jusqu'à 10 positions (10 x 1).

Si "Réinvestir les gains" est coché alors dès que ton gain tombe à 0 le backtest s'arret.

Re: Probacktest

par falex » 21 Juil 2013 15:34

Je t'ai mis sur la piste du Cross over/under mais de mémoire cette fonction est légérement bugué ou rentre (ou ne rentre pas ) alors que la condition est déclenché visuellement ... (ou alors c'est encore à cause des arrondi ... éternelle débat).

En tout cas tu peux le coder toi-même c'est hyper simple :

Cross-over : indicA croisse à la hausse indicB ça donne :

si (indicA(0) > indicB(0)) ET (indicA(1) < indicB(1)) alors ...

Je te laisse trouver le cross under 8-)

PS : Andlil : forum de cours de programmation, Benoist envois nous tes handicapés de la boucle conditionnelle !

Re: Probacktest

par Khepesh » 21 Juil 2013 21:36

dans le désordre :

pour le crosses over/under, je me sert déjà de "si (indicA(0) > indicB(0)) ET (indicA(1) < indicB(1)) alors ..." sur certains BT où les "crosses" ne peuvent pas remplir le rôle demandé (conditions particulières ... ) en faite je me servait exclusivement de la méthode que tu indique jusqu'a ... hier ? ;-)

j'ai migré depuis hier pour être plus propre mais bon...

Par contre pour le déclenchement visuel mais pas réel ça je n'en savait rien, je vais repasser mon ancienne méthode ça gommera au moins ce problème ;-)

Pour previoustrade(1) si je ne me trompe pas, c'est le résultat du dernier trade clôturé qui ressortira, et c'est ce que je veux.
En y repensant, si le premier lot bug c'est peut être parce qu'il n'a pas d'historique de trade d'enregistré ... je vérifierait ça, même si théoriquement ça aurait dût rentrer dans l'ordre après si c’était le seul bug....

mais pas ce soir :D


ProRealTime

Alors partagez-le 5 fois c'est bon pour la santé