Ch à faire realiser un script assez simple
steph_rebol9-Feb-2011/23:32:42+1:00
Bonjour

J ai beau essayer, je n y arrive pas. Je suis dans le developpement de deux aaplis delphi et j essaie d apprendre Rebol mais impossible. En plus, ne vaut il pas mieux attendre la R3 definitive ?

Donc je suis à la recherche d un genereux developpeur
Je sais, c est pas comme ça que j y arriverais mais là je flanche d autant que c est terrible pke pas si compliqué que ça...

La partie la plus compliquée s ecrit sous R3 en 1 ligne (http://www.digicamsoft.com/cgi-bin/rebelBB.cgi?thread=%3C17Mar201081003095423100%3E, dernier post)

J ai besoin d'ouvrir un fichier de nombres, de le parcourir et à chaque ligne effectuer une serie de calculs. Le resultat de chaque calcul doit etre stocké dans un fichier...

Pour info s il y a des turfistes parmis vous, cela les interessera (j ai bien plus encore dans ce domaine ...)

Voila si un membre interessé voulait plus de precision, je tiens à sa disposition un pdf complet.

Pour les remarques, les coms, je suis ouvert mais pour les enguelades, bof, je sais c est pas comme cela que l on participe à un forum mais c est la seule solution que j ai trouvé pour apprendre en partant de quelque chose de concret pour moi... et oui je suis de ceux qui ne savent pas apprendre dans les livres ...

Merci à tous pour avoir au moins pris le temps de me lire
Didec10-Feb-2011/9:21:08+1:00
Si tu poste plus de détails, je suis sure que c'est réglé dans 4 jours grand max (à cause du WE : tout le monde passe pas forcément ici).


Sauf si tu veux refaire le système de prise de paris du PMU, cela s'entend.
steph_rebol10-Feb-2011/10:40:30+1:00
Non non pas le systeme de prise de paris...
c est un systeme de gestion des mises qui se base sur 3 tests de tendances.
C est relativement simple à mettre en equation.
Je mets un Zip en ligne (http://dl.free.fr/cYrM3SPQF), si ça en interesse un d entre vous, à priori ça s applique aussi au CAC 40... Des fortunes en perspectives

Ce que je souhaiterais dans le detail c est pouvoir boucler sur la valeur T (cf pdf), selectionner le fichier (separateur decimal indifferent, je sais pas si ça y fait dans rebol mais c est important sous delphi),sauvegarder dans un fichier la valeur T,B et toutes les valeurs intermediaires pour ensuite pouvoir filtrer ...

Bon quoi qu il en soit je ne suis en rien pressé .

Merci d avance à tous ce qui y jetteront un coup d oeil

stephane
Didec11-Feb-2011/9:19:08+1:00
Mouais ! Y'a personne qui se précipite.

A mon avis tout ceci manque de concret. Quand y'a du concret, tous le monde s'y colle.

Alors :
1) un échantillon des données sur lesquelles tu veux "boucler sur la valeur T (cf pdf)".
2) C'est quoi cette histoire de "sélectionner le fichier", de "séparateur décimal indifférent" : pas clair !
3) Pardon si on est un peu fainéant (y'a pas mal de page dans ton doc), mais quel est le calcul à faire pour obtenir "T,B et toute les valeurs intermédiaires" ?
4) "pour ensuite pouvoir filtrer", mais encore ? Filtrer quoi selon quels critères ?

Aide nous et le ciel Rebolien t'aidera !!
ldci11-Feb-2011/12:43:46+1:00
Oui d'accord avec Didec. Basiquement ce sont de simples stats à faire sur un fichier de données, et pour cela Rebol est excellent, mais il faut plus de détail pour qu'on puisse t'aider
guest211-Feb-2011/13:36:33+1:00
Normalement il sait comment ça marche ici, c'est pas son premier post.
steph_rebol11-Feb-2011/21:58:03+1:00
Helas non, je ne sais pas comment ça marche sinon je n aurais pas demandé.
Je pourrais le faire en delphi, mais comme je souhaite m orienter vers rebol et que je suis un gars qui a toujours appris en partant de scripts que j ai fait evoluer et que là je n ai pas materiellement le temps d apprendre un nouveau language (rebol en l occurence car j ai enromenent de mal à assimiler cette syntaxe 'simplissime' et ps simplette...) je demande de l aide.

Si je mets du concret sans faire reference au pdf je vais vous effrayer.
Il s agit en fait de faire un test de tendances positives,un test de spearman et un test de kandall... on est pas plus avancer.
Concretement il s agit, en partant d une valeur qui est modifié suivant le resultat obtenu lors de chaque test, de determiner des tendances claires en fonction de la valeur de la dite variable calculée ainsi, on achete quand B(la variable)=3 et on vend quand B=1...par exemple.

Pour ce qui est du separateur decimal, en delphi il s agit d une variable, si cest le point, avec une virgule, ça plante et le contraire.
En delphi, à la lecture de la ligne du fichier, on remplace le point par la virgule apres avoir determiné le separateur decimal comme etant la virgule etant donné que les tableurs français prennent ça en compte...

Concernant les valeurs intermediaires, je parlais des valeurs des differents tests...

Quand je parle de filtre, je veux dire trouver les valeurs de B optimales.

Même si vous ne pouvez pas mettre les mains dans le code, jetez un oeil au pdf c est assez surprenant avec les valeurs du CAC, ça permet d eliminer pas mal de phases neutres...

voila

J espere avoir sucité votre interet même si le mien est un peu futile puisqu il s agit d appliquer ça au turf...

merci
steph_rebol14-Feb-2011/21:07:58+1:00
Bon vous cassez pas la tête,j ai eu un moment et j ai fait ça en delphi, le seul truc que je maitrise à peu pres...

merci
Didec15-Feb-2011/9:01:01+1:00
Si ça ne te dérange pas trop, ce serait intéressant que tu poste le code Delphi pour nous permettre d'en donner une version Rebol.
Je pense que le comparatif serait très utile !
steph_rebol16-Feb-2011/10:36:28+1:00
Pas de pb :

le pemier test :
diff_positive := 0;
for J := 1 to List.Count - 1 do
begin
if strtofloat(List[J]) > strtofloat(List[J - 1]) then
diff_positive := diff_positive + 1;
end;

le deuxieme
for J := 0 to List_Temp.Count - 1 do
begin
for L := 0 to List_Temp.Count - 1 do
begin
if strtofloat(List[J]) = strtofloat(List_Temp[L]) then
begin
c := c + 1;
List_vt.Add(inttostr(L));
List_Temp[L] := '-1';
Diff := abs(L - J);
Diff := Diff * Diff;
s_diff := s_diff + Diff;
break;
end;
end;
end;
ici ilst_temp est une liste triee copie de list
list_vt sert pour le 3eme test

le 3eme et dernier test
for J := 0 to List_vt.Count - 2 do
begin
for L := J + 1 to List_vt.Count - 1 do
begin
Diff := strtoint(List_vt[J]) - strtoint(List_vt[L]);
c := c + 1;
if Diff > 0 then
Qq := Qq + 1;
if Diff < 0 then
Pp := Pp + 1;
end;
end;

Je sais que c est bien plus court en rebol mais tellement moins facile
steph_rebol16-Feb-2011/10:37:22+1:00
Bon dsl pour la presentetion mais je ne sais meme pas comment on met une balise de code dsl
Didec16-Feb-2011/11:43:13+1:00
Il y a un bouton HELP là haut qui te dira comment mettre les balises de code !
steph_rebol16-Feb-2011/12:34:45+1:00
bon tu vois, ça confirme

JE SUIS UN ANE 


Didec16-Feb-2011/16:20:25+1:00
Pour le premier test:
; Si "List" est un simple block des valeurs à tester :
List: [10 15.5 12 18.6 14.1 20 24]

diff_positive: 0
forall next head list [
    if list/1 > list/-1 [diff_positive: diff_positive + 1]
]
Didec16-Feb-2011/16:23:30+1:00
Argh, désolé : posté trop vite !
; Si "List" est un simple block des valeurs à tester :
List: [10 15.5 12 18.6 14.1 20 24]

; init du diff
diff_positive: 0
; on part du 2ème élément du block
list: next head list
; parcours des éléments du block
forall list [
    ; si l'élément est supérieur eu précédent : on incrémente le diff
    if list/1 > list/-1 [diff_positive: diff_positive + 1]
]
print diff_positive
shadwolf21-Feb-2011/15:55:54+1:00
on dirait un tri par bulle sauf que la on ne trie rien...
GerardCote1-Mar-2011/21:03:31+1:00
Didec : J'ai essayé ton adaptation avec R2 et R3. C'est OK pour R2 mais pour R3 il n'aime pas les sélecteurs avec index négatifs (/-1).

J'ai donc essayé de trouver un premier palliatif qui se lirait comme suit :

; Si "List" est un simple block des valeurs à tester :
  List: [10 15.5 12 18.6 14.1 20 24]

; init du diff
  diff_positive: 0
; on part du 2ème élément du block
  list: next head list
; parcours des éléments du block
  forall list [
	tmp: back list
      ; si l'élément est supérieur eu précédent : on incrémente le diff
      ;  print join "item  1 :  " list/1
      ;  print join "item -1 :  " tmp/1
        if list/1 > tmp/1 [diff_positive: diff_positive + 1]
]
print diff_positive


Je suis certain qu'il y a mieux à tenter ...

Et pendant que l'on parle de coder REBOL, moi qui ne suis pas encore bon malgré de nombreuses années à essayer ici et là sans vraiment jamais être arrivé à comprendre complètement les dessous de REBOL, quelqu'un peut-il m'indiquer comment on arrive à vérifier l'espace mémoire occupé par notre code (ou une structure de données précise de ce dernier - si cela est possible), histoire de comparer entre plusieurs versions ?
à moins que REBOL ne le permette pas directement, ce qui serait un peu moche tout de même si on veut apprendre à optimiser non seulement en temps mais aussi en espace son code ...

Merci à l'avance.
Gérard

Merci à l'avance
Didec2-Mar-2011/12:55:31+1:00
J'ai testé sous R3. Effectivement il y a une erreur, mais pas celle que tu as cru !!

Ca coince bien sur "list/-1", mais l'erreur est :
** Script error: cannot compare decimal! with none!
** Where: >
** Near: > list/-1 [diff_positive: diff_positive + 1]


Hors si je teste à la main, je constate effectivement que "list/-1" est égal à none.

Pourtant si je fais "list: at list 5 print list/-1" ça marche ! Ah aaaahhhh !

Mais que donne "list/0" alors ? BINGO ?
>> a: [1 2 3 4 5]
== [1 2 3 4 5]
>> a: next a
== [2 3 4 5]
>> a/1
== 2
>> a/0
== 1

La gestion des indexes relatifs (path! avec un entier a changé entre R2 et R3. Même résultat avec 'pick.

Donc par rapport au code de R2, il suffit de remplacer "list"/-1" par "list/0" et ça marche.

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2