Prorealtime - ajuda
Estes dados em diferido vão deixar de ser gratuitos. Os gajos querem entre 30 a 45 eur/mês.
Espero que não se lembrem de começar a cobrar pelos dados em fim de dia...
http://www.rankia.com/foros/bolsa/temas ... r-gratuito
Espero que não se lembrem de começar a cobrar pelos dados em fim de dia...
http://www.rankia.com/foros/bolsa/temas ... r-gratuito
Hoje reparei que o PRT está a actualizar os dados das cotações no decorrer da sessão.
ProRealTime just released a new delayed datafeed service.
To allow you discover this new feature, the delayed data package including more than 25 markets has been activated for FREE on your ProRealTime account until February 29th, 2012.
Launch your Complete or Premium workstation now to benefit from this service.
Do not hesitate to contact us if you have any question.
Best regards,
The ProRealTime team
ProRealTime just released a new delayed datafeed service.
To allow you discover this new feature, the delayed data package including more than 25 markets has been activated for FREE on your ProRealTime account until February 29th, 2012.
Launch your Complete or Premium workstation now to benefit from this service.
Do not hesitate to contact us if you have any question.
Best regards,
The ProRealTime team
- Mensagens: 35428
- Registado: 5/11/2002 12:21
- Localização: Barlavento
Já funciona
- Código: Selecionar todos
If BarIndex > 0 then
if Day<Day[1] then
maximom3=maximom2
maximom2=maximom1
maximom1=maximom
altom=max(max(maximom1,maximom2),maximom3)
minimom3=minimom2
minimom2=minimom1
minimom1=minimom
baixom=min(min(minimom1,minimom2),minimom3)
contam=0
endif
contam=contam+1
maximom=highest[contam](high)
minimom=lowest[contam](low)
if DayOfWeek<DayOfWeek[1] then
maximos3=maximos2
maximos2=maximos1
maximos1=maximos
altos=max(max(maximos1,maximos2),maximos3)
minimos3=minimos2
minimos2=minimos1
minimos1=minimos
baixos=min(min(minimos1,minimos2),minimos3)
contas=0
endif
contas=contas+1
maximos=highest[contas](high)
minimos=lowest[contas](low)
posl=-1.0
maxxx=altos
minnn=baixos
maxxxl=altom
minnnl=baixom
REM ##############################################
porcentobuy=100*0.02*maxxx/(maxxx-minnn)
porcentosell=100*0.02*minnn/(maxxx-minnn)
IF (posl>0 and NOT LONGONMARKET) THEN
BUY porcentobuy %capital AT maxxx STOP
SELLSHORT porcentosell %capital AT minnnl STOP
endif
IF LONGONMARKET THEN
sell at minnn STOP
SELLSHORT porcentosell %capital AT minnnl STOP
ENDIF
IF (posl<0 and NOT SHORTONMARKET) THEN
SELLSHORT porcentosell %capital AT minnn STOP
BUY porcentobuy %capital AT maxxxl STOP
endif
IF SHORTONMARKET THEN
exitshort at maxxx STOP
BUY porcentobuy %capital AT maxxxl STOP
ENDIF
endif
"Pedras no caminho? Guardo todas, um dia vou construir um castelo..." (Fernando Pessoa)
- Mensagens: 535
- Registado: 5/3/2010 17:06
- Localização: 16
[quote="Quico"Há alguma alma caridosa que me faça o favor de o experimentar e me diga qualquer coisa?[/quote]
Qualquer coisa. Já disse.
De facto o código não faz coisa nenhuma. Nem sequer se digna a dar erro.
Qualquer coisa. Já disse.

De facto o código não faz coisa nenhuma. Nem sequer se digna a dar erro.

Mais vale perder um lucro do que ganhar um prejuízo.
É melhor um burro vivo do que um cavalo morto.
Mais vale uma alegria na vida do que um tostão no bolso.
É melhor um burro vivo do que um cavalo morto.
Mais vale uma alegria na vida do que um tostão no bolso.
Estou farto de dar voltas ao miolo, e não consigo perceber o que está errado com este código do ProBacktest (Prorealtime). Até porque penso que já funcionou na anterior versão. O problema é que não abre nem fecha nenhuma posição, seja com que activo fôr...
Há alguma alma caridosa que me faça o favor de o experimentar e me diga qualquer coisa?
- Código: Selecionar todos
if Day<Day[1] then
maximom3=maximom2
maximom2=maximom1
maximom1=maximom
altom=max(max(maximom1,maximom2),maximom3)
minimom3=minimom2
minimom2=minimom1
minimom1=minimom
baixom=min(min(minimom1,minimom2),minimom3)
contam=0
endif
contam=contam+1
maximom=highest[contam](high)
minimom=lowest[contam](low)
if DayOfWeek<DayOfWeek[1] then
maximos3=maximos2
maximos2=maximos1
maximos1=maximos
altos=max(max(maximos1,maximos2),maximos3)
minimos3=minimos2
minimos2=minimos1
minimos1=minimos
baixos=min(min(minimos1,minimos2),minimos3)
contas=0
endif
contas=contas+1
maximos=highest[contas](high)
minimos=lowest[contas](low)
posl=-1.0
maxxx=altos
minnn=baixos
maxxxl=altom
minnnl=baixom
REM ##############################################
porcentobuy=100*0.02*maxxx/(maxxx-minnn)
porcentosell=100*0.02*minnn/(maxxx-minnn)
IF (posl>0 and NOT LONGONMARKET) THEN
BUY porcentobuy %capital AT maxxx STOP
SELLSHORT porcentosell %capital AT minnnl STOP
endif
IF LONGONMARKET THEN
sell at minnn STOP
SELLSHORT porcentosell %capital AT minnnl STOP
ENDIF
IF (posl<0 and NOT SHORTONMARKET) THEN
SELLSHORT porcentosell %capital AT minnn STOP
BUY porcentobuy %capital AT maxxxl STOP
endif
IF SHORTONMARKET THEN
exitshort at maxxx STOP
BUY porcentobuy %capital AT maxxxl STOP
ENDIF
Há alguma alma caridosa que me faça o favor de o experimentar e me diga qualquer coisa?
"People want to be told what to do so badly that they'll listen to anyone." - Don Draper, Mad Men
Quico Escreveu:Mau! Já começas a abusar!...![]()
Estava a brincar!![]()
Também podias fazer assim (e estou a escrever de cor):
- Código: Selecionar todos
topo0=highest[50](high)
If topo0=topo0[1] then
contar=contar+1
else
contar=0
endif
É esta a ideia?
Abusou, vc abusou de mim, abusou ...

Devias ter visto o edit.

O que fiz foi isto que é para encontrar o mínimo durante o período em que o topo do canal não foi cruzado pelo preço.
Ainda não sei ao certo se vai servir para alguma coisa de jeito mas é para tentar encontrar o melhor stop entre várias hipóteses (x%, nATR, Donchian(y), ...)
- Código: Selecionar todos
Count = 1
FOR i = 1 TO 200 DO
IF (highest[i](high)<>highest[200](high)) THEN
Count = Count + 1
ELSE
BREAK
ENDIF
NEXT
STOPLOSS1=lowest[count](low)
STOPLOSS=STOPLOSS1[1]
RETURN STOPLOSS
Mais vale perder um lucro do que ganhar um prejuízo.
É melhor um burro vivo do que um cavalo morto.
Mais vale uma alegria na vida do que um tostão no bolso.
É melhor um burro vivo do que um cavalo morto.
Mais vale uma alegria na vida do que um tostão no bolso.
Eu nunca me tinha apercebido, mas esta linguagem do PRT é praticamente igual (ou mesmo igual) à Easy Language que se usava no TS2000. Acho que vou investigar isto melhor porque eu preferia mil vezes a EL ao metastock e só deixei de usar regularmente porque descontinuaram o Trade Station enquanto software independente.
No man is rich enough to buy back his past - Oscar Wilde
Mau! Já começas a abusar!...
Estava a brincar!
Também podias fazer assim (e estou a escrever de cor):
É esta a ideia?

Estava a brincar!

Também podias fazer assim (e estou a escrever de cor):
- Código: Selecionar todos
topo0=highest[50](high)
If topo0=topo0[1] then
contar=contar+1
else
contar=0
endif
É esta a ideia?
"People want to be told what to do so badly that they'll listen to anyone." - Don Draper, Mad Men
Quico,
Desculpa estar a abusar da tua boa vontade mas tens sido uma boa muleta para me ajudar no PRT.
Imagina o cenário de uma entrada longa quando o preço cruza o topo dum canal de Donchian de 50 dias.
O que pretendo encontrar, por programação, é o número de dias que durou esse topo.
Em linguagem "corrente" o que pretendo é:
topo0=highest[50](high)
Calcular topo1=highest[n](high) com n a começar em 1 até 50 (julgo que com o comando FOR dá para fazer).
Dar-me esse o valor n quando se verificar topo1=topo0.
É possível fazer isso?
Edit: Já encontrei como fazer.
Encontrei um comando que é o BREAK para parar a contagem. Agora é afinar a coisa.
Desculpa estar a abusar da tua boa vontade mas tens sido uma boa muleta para me ajudar no PRT.
Imagina o cenário de uma entrada longa quando o preço cruza o topo dum canal de Donchian de 50 dias.
O que pretendo encontrar, por programação, é o número de dias que durou esse topo.
Em linguagem "corrente" o que pretendo é:
topo0=highest[50](high)
Calcular topo1=highest[n](high) com n a começar em 1 até 50 (julgo que com o comando FOR dá para fazer).
Dar-me esse o valor n quando se verificar topo1=topo0.
É possível fazer isso?
Edit: Já encontrei como fazer.
Encontrei um comando que é o BREAK para parar a contagem. Agora é afinar a coisa.

Mais vale perder um lucro do que ganhar um prejuízo.
É melhor um burro vivo do que um cavalo morto.
Mais vale uma alegria na vida do que um tostão no bolso.
É melhor um burro vivo do que um cavalo morto.
Mais vale uma alegria na vida do que um tostão no bolso.
Quico Escreveu:Pickbull Escreveu:@Quico,
As entradas longas (são as que estou agora a programar) estão a ser executadas no dia seguinte ao sinal. Há forma de fazer com que compre logo ao preço em que atinge o sinal?
Não sei se percebi...
O códido está de modo a provocar entradas no dia seguinte e queres-lo alterar, ou achas que o stop não está a actuar em tempo real? (manda as ordens para a sessão seguinte)
(O tal problema - bug do ProBacktest? - de que falei há uns dias, tinha a ver com isso...)
Já agora: se puderes mostrar como está o código...
O "erro" está na entrada porque não o faz no próprio dia mas sim na abertura do dia seguinte (eventualmente dará o mesmo erro na saída).
Como é a 1ª vez que estou a programar para fazer o backtest não faço ideia se é erro na programação ou erro no ProRealTime.
Qto ao código ainda não tenho quase nada porque tenho andado à volta desse "problema". :S
Mais vale perder um lucro do que ganhar um prejuízo.
É melhor um burro vivo do que um cavalo morto.
Mais vale uma alegria na vida do que um tostão no bolso.
É melhor um burro vivo do que um cavalo morto.
Mais vale uma alegria na vida do que um tostão no bolso.
Quem está ligado:
Utilizadores a ver este Fórum: Bing [Bot], BOMBA99, Google [Bot], Google Feedfetcher, PAULOJOAO, paulosantinhoamado, Roque Amador, Shimazaki_2, VALHALLA e 137 visitantes