Page 1 sur 2

script erroné

Publié : 17 nov. 2020, 12:22
par Charles
if cs1 and cs2 and cs3 then
short=1
else
short=0
endif

bonjour j ai un message d'erreur "lua: main.lua:20: syntax error near 'if'"

et je ne trouve pas la solution aussi si qq pouvait m'aider ?

Merci

Re: script erroné

Publié : 17 nov. 2020, 12:51
par Keros
Bonjour Charles et bienvenue sur le forum ;)

Je traduit la ligne en question : Si cs1 et cs2 et cs3 alors short=1 sinon short=0 fin

Il manque en effet quelque chose.

Maintenant sans l'ensemble de ton code, il est difficile de aiguiller sur la syntaxe que tu cherches.

Pour info, il y a des balises code (avec le bouton </>) qui permettent de séparer le code de ton message : ça facilite la lecture.
Il y a beaucoup de code sur le forum tu devrais trouver des exemples.
J'ai écris quelques lignes à propos de la programmation dans ma signature. Ça peut t'aider à démarrer ;)

Re: script erroné

Publié : 17 nov. 2020, 14:45
par boum
Yup, totalement d'accord avec Keros. Il manque une information pour t'aider.
L'erreur ligne 20 est très probablement causée par ce qui précède. Au pif, je dirais qu'il manque un end ou une accolade fermante } pour terminer la déclaration précédente (ou même plus haut dans le script).

Re: script erroné

Publié : 17 nov. 2020, 17:21
par thier
Je dirais end et non pas endif

Envoyé de mon SM-J710F en utilisant Tapatalk


Re: script erroné

Publié : 17 nov. 2020, 18:39
par Keros
J'avais pas vu, merci thier ;)

Re: script erroné

Publié : 18 nov. 2020, 13:32
par Charles
Keros a écrit : 17 nov. 2020, 12:51 Bonjour Charles et bienvenue sur le forum ;)

Je traduit la ligne en question : Si cs1 et cs2 et cs3 alors short=1 sinon short=0 fin

Il manque en effet quelque chose.

Maintenant sans l'ensemble de ton code, il est difficile de aiguiller sur la syntaxe que tu cherches.

Pour info, il y a des balises code (avec le bouton </>) qui permettent de séparer le code de ton message : ça facilite la lecture.
Il y a beaucoup de code sur le forum tu devrais trouver des exemples.
J'ai écris quelques lignes à propos de la programmation dans ma signature. Ça peut t'aider à démarrer ;)


merci de ta réponse

voici l ensemble du code et le messsage d erreur est [string "code"]:20: syntax error near 'if'

myMA50=exponentialaverage[50](close)
myMA100=exponentialaverage[100](close)
ATR=averagetruerange[14](close)

cs1= myMA7[1]<myMA7[2]
c1=myMA7[1]>myMA7[2]
timing= time>=080000 and time<220000

c2=high>high[1]+2.5 and close>myMA7 and close>open
cs2=low<low[1]-2.5 and close<myMA7 and close<open
c3=abs(high[1]-myMA50[1])>ATR or abs(high[1]-myMA100[1])>ATR
cs3=abs(low[1]-myMA50[1])>ATR or abs(low[1]-myMA100)>ATR

if c1 and c2 and c3 then
long=1
else
long=0
endif

if cs1 and cs2 and cs3 then
short=1
else
short=0
endif

//test=c3
//drawtext("#test#",barindex,lowest[3](low)-ATR0.5pipsize,SansSerif,Bold,10) COLOURED(0,155,10)
if long=1 and long[1]=0 and timing then

ENTREE=high[1]+2.5
//ENTREEmod=ENTREE mod 1000

DRAWARROWUP(barindex,low) COLOURED(0,155,10)
//drawtext("Break=#ENTREEmod#",barindex,lowest[3](low)-ATR0.5pipsize,SansSerif,Bold,10) COLOURED(0,155,10)
drawtext("---",barindex,ENTREE,SansSerif,Bold,20) coloured (0,155,10)

endif

if short=1 and short[1]=0 and timing then

ENTREE=low[1]-2.5
//ENTREEmod=ENTREE mod 1000

DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
//drawtext("Break=#ENTREEmod#",barindex,highest[3](high)+ATR0.5pipsize,SansSerif,Bold,10) COLOURED(255,0,10)
drawtext("---",barindex,ENTREE,SansSerif,Bold,20) coloured (255,0,0)

endif


return

Re: script erroné

Publié : 18 nov. 2020, 17:32
par thier
Je répète endif n'existe pas. c'est end.

Re: script erroné

Publié : 18 nov. 2020, 17:54
par Charles
oui j ai enlevé endif mais cela ne fonctionne toujours pas

Re: script erroné

Publié : 18 nov. 2020, 18:27
par Chrominator
4 remarques :
  1. Quand on demande de l'aide, on peut au moins mettre à disposition le source qui correspond à l'erreur dont on parle et être plus précis que "cela ne fonctionne toujours pas" ; je pense que l'erreur indiquée est différente maintenant que les endif ont disparu.
  2. Indenter un script lua le rend plus lisible et met parfois en évidence des erreurs de structure.
  3. Les commentaires en lua sont constitués de deux manières : -- ou bien pour un groupe de lignes --[[ suivi de --]]. Le // c'est pour d'autres langages.
  4. Si le code que tu montres est entier, tu n'es pas au bout de tes peines, l'interpréteur va rapidement te parler d'index nil :lol:
1 question : ton script a quelque chose à voir avec Domoticz ou pas du tout ?

Re: script erroné

Publié : 18 nov. 2020, 20:30
par thier
J'aurai du lire la suite des réponses. Avec le code complet c'est clair que ce n'est pas du lua donc oubli ma remarque sur les endif.

Envoyé de mon SM-T533 en utilisant Tapatalk