Pagina 1 di 4 123 ... Ultima
Risultati da 1 a 10 di 37
  1. #1

    Data Registrazione
    Sep 2013
    Località
    Monza
    Messaggi
    186

    If-then-else, for loop, blocchi di istruzioni {}

    Buongiorno a tutti,
    scusate se in questi giorni sono un po' troppo presenzialista sul forum,
    ma il giochino è nuovo e le domande sono tante !
    In EasyScript, come spiegato forse troppo succintamente in cinque righe
    a pagina 14 del manuale, non esistono le istruzioni IF-THEN-ELSE, non esistono
    i FOR e WHILE Loops, ma soprattutto, e questo mi ha veramente disorientato,
    non esistono le beneamate parentesi che racchiudono blocchi di istruzioni.
    Abituato ai liguaggi tradizionali che tutti più o meno presentano le stesse
    strutture, confesso di faticare a raccapezzarmi.
    E come me credo il 99% degli utenti EasyLanguage solo per citare il più famoso.
    Credo che su questi punti cruciali della programmazione dobbiate soffermarvi
    un po' di più, fornendo numerosi esempi più complessi e completi agli utenti.
    E' per questo che vi sto tormentando con le mie richieste di esempi.
    Saluti
    Massimo
    P.S. Per inizializzare una variabile solo la prima volta con un certo valore
    in EasyScript cosa corrisponde al ONCE di EasyLanguage ?

  2. #2
    L'avatar di Marco Bosco
    Data Registrazione
    Sep 2012
    Località
    Pistoia
    Messaggi
    419
    Citazione Originariamente Scritto da maxmax68 Visualizza Messaggio
    Buongiorno a tutti,
    scusate se in questi giorni sono un po' troppo presenzialista sul forum,
    ma il giochino è nuovo e le domande sono tante !
    In EasyScript, come spiegato forse troppo succintamente in cinque righe
    a pagina 14 del manuale, non esistono le istruzioni IF-THEN-ELSE, non esistono
    i FOR e WHILE Loops, ma soprattutto, e questo mi ha veramente disorientato,
    non esistono le beneamate parentesi che racchiudono blocchi di istruzioni.
    Abituato ai liguaggi tradizionali che tutti più o meno presentano le stesse
    strutture, confesso di faticare a raccapezzarmi.
    E come me credo il 99% degli utenti EasyLanguage solo per citare il più famoso.
    Credo che su questi punti cruciali della programmazione dobbiate soffermarvi
    un po' di più, fornendo numerosi esempi più complessi e completi agli utenti.
    E' per questo che vi sto tormentando con le mie richieste di esempi.
    Saluti
    Massimo
    P.S. Per inizializzare una variabile solo la prima volta con un certo valore
    in EasyScript cosa corrisponde al ONCE di EasyLanguage ?

    Ciao maxmax68,

    1)A me le parentesi sembrano funzionare. Cosa intendi che non esistono parentesi?
    Ricorda che puoi costruire qualsiasi funzione , dargli un nome e salvarla, e richiamarla da dove vuoi.

    2)Il blocco IF-Then-Else è in realtà presente ma nella forma booleana.
    Lo trovi sempre a pag14

    si chiama IF l'istruzione.

    IF (Condition, TruePart, FalsePart)

    che corrisponde esattamente al tuo più familiare, in questa forma:

    IF Condition Then
    TruePart

    ELSE
    FalsePart



    ciao,
    Marco
    I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)

  3. #3
    L'avatar di Andrea Cagalli
    Data Registrazione
    Oct 2010
    Località
    Svizzera
    Messaggi
    3,994
    Citazione Originariamente Scritto da maxmax68 Visualizza Messaggio
    Buongiorno a tutti,
    scusate se in questi giorni sono un po' troppo presenzialista sul forum,
    ma il giochino è nuovo e le domande sono tante !
    In EasyScript, come spiegato forse troppo succintamente in cinque righe
    a pagina 14 del manuale, non esistono le istruzioni IF-THEN-ELSE, non esistono
    i FOR e WHILE Loops, ma soprattutto, e questo mi ha veramente disorientato,
    non esistono le beneamate parentesi che racchiudono blocchi di istruzioni.
    Abituato ai liguaggi tradizionali che tutti più o meno presentano le stesse
    strutture, confesso di faticare a raccapezzarmi.
    E come me credo il 99% degli utenti EasyLanguage solo per citare il più famoso.
    Credo che su questi punti cruciali della programmazione dobbiate soffermarvi
    un po' di più, fornendo numerosi esempi più complessi e completi agli utenti.
    E' per questo che vi sto tormentando con le mie richieste di esempi.
    Saluti
    Massimo
    P.S. Per inizializzare una variabile solo la prima volta con un certo valore
    in EasyScript cosa corrisponde al ONCE di EasyLanguage ?
    Ciao,
    mi pare di vedere che ricerchi in EasyScript quello che ritrovi in altri linguaggi di programmazione tradizione, questo è un errore: beeTrader e conseguentemente EasyScript lo abbiamo creato, non perchè sul mercato mancasse un prodotto del genere, ma per creare un prodotto accessibile a tutti mettendo perciò un linguaggio di programmazione vettoriale. Quidi la cosa "grave" delle {} che non trovi, è semplicemente che non servono.
    Prova a scrivere.....vedrai quanto più facile è

    Aggiungo il commento per ONCE: da noi non serve perchè non c'è necessità di inizializzare, in quanto lo script viene eseguito su tutte le barre in un unico passaggio.

    Ciao Ciao
    Ultima modifica di Andrea Cagalli; 07-10-13 alle 11:29

  4. #4

    Data Registrazione
    Sep 2013
    Località
    Monza
    Messaggi
    186
    Citazione Originariamente Scritto da Andrea Cagalli Visualizza Messaggio
    Ciao,
    Aggiungo il commento per ONCE: da noi non serve perchè non c'è necessità di inizializzare, in quanto lo script viene eseguito su tutte le barre in un unico passaggio.
    Ciao Ciao
    Non mi è chiaro. E' oscuro, oscuro ! (come diceva un comico partenopeo di Zelig)
    Prego chiarire il concetto.
    Ciao
    Massimo

  5. #5
    L'avatar di Marco Bosco
    Data Registrazione
    Sep 2012
    Località
    Pistoia
    Messaggi
    419
    Citazione Originariamente Scritto da maxmax68 Visualizza Messaggio
    Non mi è chiaro. E' oscuro, oscuro ! (come diceva un comico partenopeo di Zelig)
    Prego chiarire il concetto.
    Ciao
    Massimo

    ciao maxmax68,

    Once lo avresti usato usato per esempio così:

    ONCE (CurrentBar = 1 ) BEGIN
    bla bla bla...
    END;


    Andrea secondo me ti sta dicendo che non ha più significato perchè essendo il linguaggio vettoriale il tuo nuovo codice in EasyScript valuta tutte le Funzioni contemporaneamente su tutte le barre.

    Semplicemente se vuoi adesso Fare o NON Fare qualcosa in base al valore di una barra... basta che recuperi il prezzo di quella barra per esempio (all'indice specifico del vettore) e ne fai cosa vuoi.... o NON fai niente, in base per esempio ad un controllo con la funzione IF.

    ciao,
    Marco
    I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)

  6. #6
    L'avatar di Francario Massimiliano
    Data Registrazione
    Jul 2008
    Messaggi
    1,002
    Salve,
    Citazione Originariamente Scritto da maxmax68 Visualizza Messaggio
    Non mi è chiaro. E' oscuro, oscuro ! (come diceva un comico partenopeo di Zelig)
    Prego chiarire il concetto.
    Ciao
    Massimo
    come già scritto da Andrea, EasyScript è un linguaggio di programmazione vettoriale, fondamentalmente diverso dai linguaggi tradizionali.
    In pratica, al posto di eseguire una riga alla volta dello script una barra alla volta (comportamento di EasyLanguage di TradeStation per esempio), EasyScript esegue una riga alla volta dello script su tutte le barre in un solo passaggio.

    Faccio un esempio per cercare di chiarire meglio.
    Supponiamo di avere scritto nel nostro script:
    [HIGH]
    SET a = SMA(CLOSE, 14)
    SET b = SMA(CLOSE, 21)
    [/HIGH]
    e supponiamo di applicare questo script ad uno storico di 250 barre.
    Quando lo script viene eseguito, al termine della prima riga, esisterà all'interno del "motore" di scripting una variabile, di nome "a", con associato un vettore di 250 elementi (250 barre), i cui valori rappresentano la media mobile semplice a 14 periodi del prezzo CLOSE. In pratica, prima eseguire la seconda linea dello script, il valore di "a" è già stato calcolato per tutte le barre dei dati storici, in un unico passaggio.

    Se facciamo lo stesso esempio in EasyLanguage di TradeStation:
    a = Average(CLOSE, 14)
    b = Average(CLOSE, 21)
    il comportamento sarà completamente diverso. Infatti verrà considerata la prima barra di dati storici, eseguito lo script riga per riga, poi verrà presa in considerazione la seconda barra ed eseguito lo script, e via di seguito fino ad aver esaurito tutte le barre di dati storici.
    Sostanzialmente i due linguaggi si comportano in modo opposto. EasyScript itera sulle righe di codice con blocchi di dati, EasyLanguage di TradeStation itera sulle barre di dati storici con blocchi di codice.

    Max Francario

  7. #7

    Data Registrazione
    Sep 2013
    Località
    Monza
    Messaggi
    186
    Citazione Originariamente Scritto da Francario Massimiliano Visualizza Messaggio
    Salve,
    Faccio un esempio per cercare di chiarire meglio.
    Supponiamo di avere scritto nel nostro script:
    [HIGH]
    SET a = SMA(CLOSE, 14)
    SET b = SMA(CLOSE, 21)
    [/HIGH]
    e supponiamo di applicare questo script ad uno storico di 250 barre.
    Quando lo script viene eseguito, al termine della prima riga, esisterà all'interno del "motore" di scripting una variabile, di nome "a", con associato un vettore di 250 elementi (250 barre), i cui valori rappresentano la media mobile semplice a 14 periodi del prezzo CLOSE. In pratica, prima eseguire la seconda linea dello script, il valore di "a" è già stato calcolato per tutte le barre dei dati storici, in un unico passaggio.

    Se facciamo lo stesso esempio in EasyLanguage di TradeStation:
    a = Average(CLOSE, 14)
    b = Average(CLOSE, 21)
    il comportamento sarà completamente diverso. Infatti verrà considerata la prima barra di dati storici, eseguito lo script riga per riga, poi verrà presa in considerazione la seconda barra ed eseguito lo script, e via di seguito fino ad aver esaurito tutte le barre di dati storici.
    Sostanzialmente i due linguaggi si comportano in modo opposto. EasyScript itera sulle righe di codice con blocchi di dati, EasyLanguage di TradeStation itera sulle barre di dati storici con blocchi di codice.

    Max Francario

    Ok, comincio a vedere un po' di luce.
    Mi sorge spontanea la domanda: e nelle prime 14 caselline di a
    o prime 21 caselline di b cosa ci va a finire ?
    E se nella riga successiva ho un vettore c che fa riferimento ad a e b.
    Cosa succede nelle prime 21 caselle ?
    Saluti
    Massimo
    P.S. Grazie anche ad Andrea e Marco per le loro risposte

  8. #8

    Data Registrazione
    Feb 2012
    Località
    Pisa
    Messaggi
    351
    Citazione Originariamente Scritto da Francario Massimiliano Visualizza Messaggio
    Salve,

    come già scritto da Andrea, EasyScript è un linguaggio di programmazione vettoriale, fondamentalmente diverso dai linguaggi tradizionali.
    In pratica, al posto di eseguire una riga alla volta dello script una barra alla volta (comportamento di EasyLanguage di TradeStation per esempio), EasyScript esegue una riga alla volta dello script su tutte le barre in un solo passaggio.

    Faccio un esempio per cercare di chiarire meglio.
    Supponiamo di avere scritto nel nostro script:
    [HIGH]
    SET a = SMA(CLOSE, 14)
    SET b = SMA(CLOSE, 21)
    [/HIGH]
    e supponiamo di applicare questo script ad uno storico di 250 barre.
    Quando lo script viene eseguito, al termine della prima riga, esisterà all'interno del "motore" di scripting una variabile, di nome "a", con associato un vettore di 250 elementi (250 barre), i cui valori rappresentano la media mobile semplice a 14 periodi del prezzo CLOSE. In pratica, prima eseguire la seconda linea dello script, il valore di "a" è già stato calcolato per tutte le barre dei dati storici, in un unico passaggio.

    Se facciamo lo stesso esempio in EasyLanguage di TradeStation:
    a = Average(CLOSE, 14)
    b = Average(CLOSE, 21)
    il comportamento sarà completamente diverso. Infatti verrà considerata la prima barra di dati storici, eseguito lo script riga per riga, poi verrà presa in considerazione la seconda barra ed eseguito lo script, e via di seguito fino ad aver esaurito tutte le barre di dati storici.
    Sostanzialmente i due linguaggi si comportano in modo opposto. EasyScript itera sulle righe di codice con blocchi di dati, EasyLanguage di TradeStation itera sulle barre di dati storici con blocchi di codice.

    Max Francario

    Salve Max,

    io ho il seguente problema, che cerco di spiegare nella maniera più rapida possibile postando un esempio a puro scopo esemplificativo.

    Supponiamo di voler scrivere una funzione personalizzata di nome "FunzioneProva", che definisca un vettore di dati calcolato in modo tale che:

    - se il prezzo dello strumento finanziario di volta in volta fa segnare un nuovo massimo allora l'elemento del vettore assume il valore di quel massimo
    - altrimenti mantiene il valore precedente (il vecchio massimo per intendersi).


    Con EasyScript non è possibile scrivere la funzione mediante un codice di questo tipo:

    SET Condition = HIGH > REF(HIGH, 1)
    SET Vector = IF(Condition,HIGH, REF(Vector,1))
    
    SET FunzioneProva = Vector
    in quanto nell'istruzione della seconda riga non è possibile assegnare direttamente a "Vector" il valore restituito da "REF(Vector,1)".

    Come si risolve il problema?

    Grazie!
    Ultima modifica di Smash; 07-10-13 alle 16:42

  9. #9
    L'avatar di Marco Bosco
    Data Registrazione
    Sep 2012
    Località
    Pistoia
    Messaggi
    419
    Citazione Originariamente Scritto da Smash Visualizza Messaggio
    Salve Max,

    io ho il seguente problema, che cerco di spiegare nella maniera più rapida possibile postando un esempio a puro scopo esemplificativo.

    Supponiamo di voler scrivere una funzione personalizzata di nome "FunzioneProva", che definisca un vettore di dati calcolato in modo tale che:

    - se il prezzo dello strumento finanziario di volta in volta fa segnare un nuovo massimo allora l'elemento del vettore assume il valore di quel massimo
    - altrimenti mantiene il valore precedente (il vecchio massimo per intendersi).


    Con EasyScript non è possibile scrivere la funzione mediante un codice di questo tipo:

    SET Condition = HIGH > REF(HIGH, 1)
    SET Vector = IF(Condition,HIGH, REF(Vector,1))
    
    SET FunzioneProva = Vector
    in quanto nell'istruzione della seconda riga non è possibile assegnare direttamente a "Vector" il valore restituito da "REF(Vector,1)".

    Come si risolve il problema?

    Grazie!

    Ciao Smash,

    Prova a vedere se ti va bene per esempio questo:

    SET MyWindowedMAX = MAX(close, 200)

    ciao,
    Marco
    I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)

  10. #10

    Data Registrazione
    Feb 2012
    Località
    Pisa
    Messaggi
    351
    Citazione Originariamente Scritto da Marco Bosco Visualizza Messaggio
    Ciao Smash,

    Prova a vedere se ti va bene per esempio questo:

    SET MyWindowedMAX = MAX(close, 200)

    ciao,
    Marco

    Ciao Marco,
    (sono Marco anche io! )

    il mio esempio di prima era semplicemente per chiedere come si fa con EasyScript, quando si devono calcolare iterativamente i valori di un vettore, ad assegnare al valore su un certo indice il valore che aveva sull'indice precedente.

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Contattaci

Chiama gli esperti
+39 0425 792923

Chiamaci
Email

Richiedi informazioni via E-MAIL
info@playoptions.it

Scrivici
Nostri Uffici

Vieni a trovarci
45100 Rovigo

Contattaci

Serve Aiuto?

Contattaci per maggiori informazioni.

Denis MorettoSpecialista Finanziario
Contattaci
Questo sito utilizza cookie tecnici e di profilazione. Cliccando su accetta si autorizzano tutti i cookie di profilazione. Cliccando su rifiuta o la X si rifiutano tutti i cookie di profilazione. Cliccando su personalizza è possibile selezionare quali cookie di profilazione attivare.