Programmazione Prorealtime Prorealtime:formule, indicatori, oscillatori, tsi ... (5 lettori)

tetsuo

Guest
Buon giorno traders.
Ho scritto questo codicino che partendo alle 8.00 di ogni giorno con vol=0
somma i volumi della candela se close>open,sottrae i volumi della candela se open>close.
Bene vorrei modificarlo per tenere un cumulo volumi di 840 unita'.Alla chiusura dell'ultima candela,deve togliere il volume della 840 sima candela precedente (positivo o negativo) e aggiungere (o sottrarre) il volume della candela appena chiusa.
Allego primo codice corretto,secondo codice sbagliato e grafico
Grazie a tutti e buoni gain
cristian

Codice:
if intradaybarindex=0   then
    vol = volume
else
    vol =vol + volume
    if close>open then
        vol=vol[1]+volume
    endif
    if close<open then
        vol=vol[1]-volume
    endif
    if close=open then
        vol=vol[1]
    endif
endif
return vol
Codice:
if close>open then
    vol=(vol[1]+volume)-volume[840]
endif
if close<open then
    vol=(vol[1]-volume)-volume[840]
endif
if close=open then
    vol=vol[1]
endif
return vol


ciao scalatore

in pratica se ho ben capito voui traslare il calcolo che adesso esegui in maniera standard dalle 8 alle 22 su una finestra mobile giornaliera (840 min)

Se così fosse si possono usare almeno un paio di metodi

- il primo è quello che adotti tu ma non capisco perchè sottrai sempre il volume della 840esima barra. A mio avviso per eseguire un calcolo corretto dovresti sottrarre se Close[840]>Open[840] e addizionare se minore. Quindi richiederebbe due cicli if uno sulla barra in corso e uno sulla 840esima.

- il secondo vedrebbe l'utilizzo di un ciclo for...do ma questo farebbe impegnare molta più RAM al programma .....

tipo

Codice:
vol=0
for n=0 to 840 do
if close[n]>open[n] then
vol=vol+volume
elsif close[n]<open[n]
vol=vol-volume
endif
next
return vol

- e mentre scrivevo me ne è venuto in mente un'altro:D

Codice:
if Close<Open then
vol=-1*volume
elsif Close>Open Then
vol=volume
elsif Close=Open then
vol=0
endif
sumvol=summation[840](vol)
return sumvol
p.s. : ovviamente non ho controllato nessuno dei codici sopra :d: questo lo lascio fare a te :up:
 

Stakeholder

Nuovo forumer
Non credo ci sia una funzione “veloce” per cosa vuoi fare, come invece esiste in tutti i software di disegno architettonico, per intenderci.
Puoi provare così :
Selezioni l’arco di Fibonacci e lo plotti in un punto qualsiasi del grafico. Poi clic sopra di esso col tasto destro – configura (è la prima voce in cima) – inserisci i rapporti 200 – 300 - 400 e spunti la casella in basso “Fibonacci arco usa questa configurazione per default”. Questo ti è servito solo per creare l’arco per usarlo di default con queste impostazioni per sempre. Poi cancelli questo arco.
Adesso tracci i tuoi due segmenti o linee parallele sul grafico per creare il tuo canale. Dopo di che selezioni l’arco di Fibonacci facendolo partire da uno dei due segmenti in direzione dell’altro cercando di procedere in senso verticale (rispetto ai segmenti) e termini l’arco sul segmento opposto. Ti verranno così fuori 3 archi a distanze identiche tra loro e uguali al tuo canale. Poi fai cicl col sinistro sui segmenti, duplica segmento e te li metti in corrispondenza dei cerchi sopra creati e poi ti configuri ogni segmento a tuo piacimento.
E’ più lungo a dirsi che a farsi poiché l’arco te lo ritroverai sempre settato di default.
…. Ottimo per creare linee azione-reazione o altre cose del genere, almeno credo sia questo il tuo intento.
Ciao
1286838597ftsemibfull1210.png



ti ringrazio per l'aiuto. Hai colto il problema ;)

Il fatto è che rimane cmq discrezionale la scelta di dove cliccare e non può essere mai preciso.Nel senso riesci a fare un angolo di 90 gradi precisi e cliccare proprio nel punto esatto della trendline? Io usando anche la funzione righello mi trovo delle differenze tra i canali creati.

Cmq forse sono troppo pignolo :wall::wall: anche se mi sarebbe piaciuto molto che prt avesse avuto una funzione che mi dava:

Ad esempio selezionavo due trendline e mi dava le parallele in base alla proporzione che sceglievo tra le opzioni. tipo mettevo 1:1 e mi dava la parallela alla stessa distanza.2:1 e me la dava a 2 volte la distanza. eccetera...
 

scalatore1

Nuovo forumer
ciao scalatore

in pratica se ho ben capito voui traslare il calcolo che adesso esegui in maniera standard dalle 8 alle 22 su una finestra mobile giornaliera (840 min)

Se così fosse si possono usare almeno un paio di metodi.........

Grazie tetsuo sempre gentilissimo.
Il codice con il ciclo for oltre che essere piu' lento nel calcolo
riporta un grafico diverso e poco credibile..ho provato
con settaggio a 180 perchè a 840 da errore di ciclo infinito..
L'altro invece è quello che cercavo.
Buona giornata
 

Allegati

  • DAX Full1210 Future.png
    DAX Full1210 Future.png
    18,7 KB · Visite: 1.457

max3001

Forumer attivo
Ciao, qualche esperto mi può cortesemente tradurre questa formula dal linguaggio metastock? Sembra interessante, era su borsa e finanza di un paio di settimane fa.

GGG:= Input("periodi nel passato",2,100,12);
LP:= ValueWhen(1,C>Ref(C,-GGG)AND C>Ref(C,-1)AND Ref(L,-GGG)<Ref(L,-1)AND Ref(L,-1)<L,Ref(L,-GGG));
HP:= ValueWhen(1,C<Ref(C,-2)AND C<Ref(C,-1)AND Ref(H,-GGG)>Ref(H,-1)AND Ref(H,-1)>H,Ref(H,-GGG));
LP;
HP


Grazie, Max.

Ciao, ne approfitto per riuppare il messaggio precedente:help:

Vorrei poi sapere se è possibile misurare la differenza percentuale tra due azioni.
Mi spiego meglio (spero:D), nell'immagine che ho allegato posso misurare la distanza% tra i due titoli e magari rappresentarla come istogramma? Sarebbe utile in caso di spread.

P.s. Naturalmente le percentuali che si vedono a lato nel grafico sono errate, altrimenti la mia richiesta non avrebbe senso
 

Allegati

  • spread.png
    spread.png
    13,2 KB · Visite: 1.444
Ultima modifica:
:rolleyes: grazieeee Quarter Horse. Si li avevo già visti tutti. Molto interessanti ma non riesco a risolvere un problema: la traslazione degli orari sotto il prezzo. In pratica, si applica una media mobile che fa slittare i prezzi di n-unità, corretto?
:specchio:
 

scalatore1

Nuovo forumer
Buona sera a tutti.
Dai messaggi privati
sembra che il codice swing dia errori.
Lo riposto compreso di call.
P.s per i piu' esperti
Ma perchè con questo listato il pc (ne ho provati diversi)
rallenta sino a rendere impossibile lavorarci.C'è un modo
per "alleggerire"il codice?
Provatelo con time frame 1 minuto
grazie e buon lavoro a tutti.
cristian

Codice:
Rem  swing

c1=high>high[1]
c2=high>high[2]
c3=high>high[3]
c4=high>high[4]
var1=low<low[1]
var2=low<low[2]
var3=low<low[3]
var4=low<low[4]
if c1 and c2 and c3 and c4 then
 trendlong=1
 trendshort=0
endif
if var1 and var2 and var3 and var4 then
 trendlong=0
 trendshort=-1
endif
if trendshort=-1 then
 if low<linea then
  linea=low
  basstop=low
 else
  linea=linea[1]
  basstop=basstop[1]
 endif
endif
if trendlong=1 then
 if high>linea then
  linea=high
  top=high
 else
  linea=linea[1]
  top=top[1]
 endif
endif

if linea=linea[1] then
 col=col[1]
 
elsif linea>linea[1] then
 col=1
else
 col=-1
endif
return linea coloured by col as "SWING"

Codice:
Rem area di swing trend
Rem da postare sul grafico

trend=call"SWING"
long,short=call"SWING COME ISTOGRAMMA"
if trend>trend[1] and short[1]=-1 then
 supporto=trend[1]
elsif close<supporto then
 trendlong=0
 trendshort=-1
 supporto=trend
else
 supporto=supporto[1]
endif
if trend<trend[1] and long[1]=1 then
 resistenza=trend[1]
elsif close>resistenza then
 trendshort=0
 trendlong=1
 resistenza=trend
else
 resistenza=resistenza[1]
endif
return trendshort, trendlong

Codice:
Rem  swing come istogramma
Rem deve essere presente negli indicatori

c1=high>high[1]
c2=high>high[2]
c3=high>high[3]
c4=high>high[4]
var1=low<low[1]
var2=low<low[2]
var3=low<low[3]
var4=low<low[4]
if c1 and c2 and c3 and c4 then
 trendlong=1
 trendshort=0
endif
if var1 and var2 and var3 and var4 then
 trendlong=0
 trendshort=-1
 endif
return trendlong as "long",trendshort as "short"
 

Quarter Horse

Nuovo forumer
ti ringrazio per l'aiuto. Hai colto il problema ;)

Il fatto è che rimane cmq discrezionale la scelta di dove cliccare e non può essere mai preciso.Nel senso riesci a fare un angolo di 90 gradi precisi e cliccare proprio nel punto esatto della trendline? Io usando anche la funzione righello mi trovo delle differenze tra i canali creati.

Cmq forse sono troppo pignolo :wall::wall: anche se mi sarebbe piaciuto molto che prt avesse avuto una funzione che mi dava:

Ad esempio selezionavo due trendline e mi dava le parallele in base alla proporzione che sceglievo tra le opzioni. tipo mettevo 1:1 e mi dava la parallela alla stessa distanza.2:1 e me la dava a 2 volte la distanza. eccetera...

Riacceso adesso il PC dopo 6 giorni di letargo. Ci ragiono con calma domani e se trovo una soluz migliore la posto volentieri, tra l'altro è una cosa che interessa molto anche a me. Comunque se il tuo intento è quello che ho capito (testo di Patrick M.) il problema non è tanto la precisione millimetrica, quanto la velocità/semplicità della realizzazione su TF brevi.
 

Quarter Horse

Nuovo forumer
:rolleyes: grazieeee Quarter Horse. Si li avevo già visti tutti. Molto interessanti ma non riesco a risolvere un problema: la traslazione degli orari sotto il prezzo. In pratica, si applica una media mobile che fa slittare i prezzi di n-unità, corretto?
:specchio:

Si è corretto!:up::up:
naturalmente non ti corrisponderanno gli orari con la realtà, ma solo sapendo di quante ore/giorni/ecc tu trasli indietro la media a 1 periodo potrai "ritrovare" facilmente "dove sei" adesso.
Se non sono stato chiaro magari chiedimelo in MP e ti risponderò più dettagliatamente o ci mettiamo d'accordo per una spiegazione tramite Skype.
Questo per evitare di riscrivere unpost di 2 pagine senza avere ben centrato il senso della tua domanda.
 

scalatore1

Nuovo forumer
Buongiorno.Ma perchè se la condizione si riferisce solo alla condizione
a e b assieme,poi alle 20 di ogni giorno azzera?
mannaggia.grazie a tutti
:wall: :specchio:


Codice:
a=date=20101019
b=time=200000
if Close<Open  then
    vol=-volume
elsif Close>Open  Then
    vol=volume
elsif Close=Open  then
    vol=0
endif
if  (a and b) then
    vol=-sumvol
endif
sumvol=summation[840](vol)
return sumvol
 

Allegati

  • DAX Full1210 Future.png
    DAX Full1210 Future.png
    14,5 KB · Visite: 1.148

al-fx

Nuovo forumer
mi servirebbe un programmino semplice ma a me da errore

a = close - close [1]
if a > 20
cond =1
else cond =0
endif
return cond

grazie
 

Users who are viewing this thread

Alto