Jag har inte kollat dina filer. För mig ser det i stort ut att fungera bra. Jag tror det kan bli lite skillnad när det är fler helgdagar/helger med börsdagar emellan under innehavstiden. Dessutom blir det lite skillnad när det är halvdagar. Innehavstiden kan även påverkas av om data fattas för en del eller hel dag. Jag föreslår att du tex kör index med köp-entry alltid sant om innehav=0 efter 16:00 och exit efter kl 16:00 på 5:e dagen efter köp. Kör ett par månader. Kolla om det oftast stämmer och om problemet uppkommer vid ovan nämnda situationer. Då kan vi gå vidare därifrån. Jag kommer inte ha tid nu, men prova gärna eller om någon annan som vet.
Allmänt meddelande
Collapse
No announcement yet.
Rikoschett
Collapse
X
-
Ursprungligen postat av PerG Visa inläggFick inte till det med cmpref på datum heller att exekveras i i5 men baseras på dagsdata.
värdeFrånA:=cmpref(d,0,A)
Dag5:=LE(köpdag,aref(VärdefrånA,5))
{@A(0,)}
köpdag:=lasttrade(b,frac(d))
värdeFrånA:=cmpref(d,5,A)
Dag5:=LE(köpdag,VärdefrånA)
{@A(0,)}
Det är ju dagar som ska räknas och inte perioder i intradayupplösningen.
Comment
-
Ursprungligen postat av LillWicke Visa inläggProva med:
köpdag:=lasttrade(b,frac(d))
värdeFrånA:=cmpref(d,5,A)
Dag5:=LE(köpdag,VärdefrånA)
{@A(0,)}
Det är ju dagar som ska räknas och inte perioder i intradayupplösningen.
Då skjuter exitscriptet hela tiden vilket indikerar på att nåt är fel där.Last edited by PerG; 2013-06-18, 22:58.
Comment
-
Jag tror det går bra att använda tid i marknaden i stället för dagar. Då behövs ingen hänsyn till Nats kalender, halvdagar, helger, etc. Kolla om detta upplägg hjälper dig. Ligger alltid minst viss tid i marknaden oberoende av dagar.
{köp}
i5(
call1=le(mult(1440,sub(market(c),frac(date()))),7)
call2=and(ge(mult(1440,sub(market(c),frac(date()))),6),call1)
nopos=eqv(portfolio(v),0)
köp=and(nopos,call2)
)
{sälj}
i5(
öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
position=and(gt(portfolio(v),0),gt(d,lasttrade(b,d)))
and(ge(sum(position,1000),510),öppet)
)
Comment
-
Vi har fått fråga igen för exitdelen som går att modifiera lite så att bara börsdagar räknas:
{ Sälj efter 5 dagar }
{ 140304 }
minuter:=7
dagar:=5
account_ok=not(eqv(cash(d),0))
inpådagen=gt(frac(date()),0.376)
köpdag=lasttrade(b,d)
stängning=le(mult(1440,sub(market(c),frac(date()))),minuter)
innehav=gt(portfolio(v),0)
vinst=gt(b,portfolio(p))
1days=ge(cmpref(d,2,a),köpdag)
xdays=ge(cmpref(d,dagar,a),köpdag)
sälj1=and(and(and(or(and(vinst,1days),xdays),innehav),stängning),inpådagen)
sälj2=and(sälj1,account_ok)
mult(sälj2,10)
{@A(0,)}
Comment
-
Går det att göra denna modell automatisk!
Hej!
Har alldeles nyss fått upp ögonen för script i Autotrader. Har läst Thorssells böcker och fastnat för Richoschett-strategin. Min fråga nu är nu:
Går det att skapa en automatisk strategi likt den i boken 10 vinnande strategier som söker igenom alla largecap-akiter. Villkoren skulle i så fall vara:
1) Köp mellan 17.23 om aktien handlas i den nedre tiondelen av dagens range
2) Sälj nästa dag 17.23 om vinstgivande annars behåll ytterligare en dag.
3) Upprepa 2).
4) Om positionen behållits i 5 dagar sälj positionen 17.24 denna dag oavsett utveckling.
Mvh Erik
Comment
-
Hej! Kul att du upptäckt den spännande scriptvärlden!
Jo, det går fint att bygga strategin du beskriver, man kan definiera dagens högsta och lägsta nivå och därefter kolla att man befinner sig i de 10 lägsta procenten. Nästa villkor blir att kolla vad klockan är och skapa ett villkor som blir sant kl 17:23.
Modellen för sälj finns redan färdig om du laddar ner via Hjälp > Uppdatera exitstrategier. Då får du ner några färdiga varianter, bla en som heter Standardmodell sälj efter 5 dgr alt vinst. http://www.autostock.se/NATmanual/5-...llerVinst.html
Den går såklart att modifiera också om man vill att den ska agera på något annat sätt.
1. Beräkna range: range=sub(h,l)
2. Kolla om Close är i nedre 10 procenten: lt(c,add(l,mult(range,0.1)))
3. Kolla om klockan är 17:23: gt(frac(date()),add(div(17,24),div(div(23,60),24)))
4. Kolla så att innehav inte redan existerar: le(portfolio(v),0)
Skriver man ihop det lite så kan ett utkast till triggerscript för köp vara:
range=sub(h,l)
nedre10=lt(c,add(l,mult(range,0.1)))
kl1723=gt(frac(date()),add(div(17,24),div(div(23,60),24)))
ej_innehav=le(portfolio(v),0)
köp1=and(and(nedre10,kl1723),ej_innehav)
mult(köp1,10)
Comment
-
Flera köpvillkor och exitvillkor
Tack för snabba svaret! Har några ytterligare frågor innan jag bestämmer mig för om jag ska gå vidare och börja programmera. Min tanke är att min första automatisk handelsstrategi endast ska köpa Bull 100% (eller så många poster jag har råd med) eller ligga ute.
1) Går det att ha flera köpkriterier samtidigt (som inte kan ske samtidigt enligt definition) som programmet sonderar och ifall något av dem är sant köper den Bull? Tänker mig här olika typer av formationer.
2) Går det att göra ett köpkriterie som tittar fler steg bakåt än bara dagens kurs, t.ex. att dagens kurs ska vara en 5-dagars lägsta?
3) Beroende på vilket val programmet gör i 1) önskar jag olika exitstrategier. Går det att ha t.ex. fyra köpsignaler där tre har samma exit medan den fjärde köpsignalen har en annan?
4) Finns det en möjlighet att kunna skriva och sen testköra ett script utan att man har påbörjat kvartalsbetalningen av Nordnet Autotrader?
Mvh Erik
Comment
-
Då ska vi se:
1. Ja, det går fint. Man kan antingen lägga de olika kriterierna i samma ordermodell, eller dela upp det så att man har flera parallella ordermodeller igång samtidigt. Då får man kanske lite lättare överblick över vilken som köpt osv.
2. Ja, det mesta går att titta "bakåt" på, att testa om dagens kurs är den lägsta de senaste x dagarna är enkelt, vi använder liknande teknik i Double 7-strategin som ingår som standard i AutoTrader Bas.
3. Ja, det går fint. Man kan låta varje köpstrategi lägga sin "tagg" i köptransaktionen så att säljstrategierna vet vilken strategi som köpte. Då kan man låta olika säljstrategier "känna igen" de köptransktioner som de ska bevaka.
(använd RetVal()-kommandot för att lagra och LastTrade() för att läsa av transaktionerna)
4. Inte i dagsläget, vi har däremot alltid två veckors öppet köp så att man kan prova. Dessutom finns inga bindningstider, så om man vill kan man köpa ett kvartal och är därefter inte bunden till något.
Annat som kan vara bra att veta är att AutoTrader Bas har fiktiva testkonton som man kan ansluta sin strategi till och låta den handla live med fiktiva pengar. På så vis slipper man riskera något under testning av en modell osv.
En sammanställning av de olika scriptkommandona med syntaxbeskrivning och lite kodexempel ligger här:
http://www.autostock.se/NATscriptref...st_llning.html
Och en scriptskola i 14 lektioner finns här:
http://www.autostock.se/NATscriptref/Lektion1.html
Comment
-
fem olika köpsignaler, hur går jag vidare
Hej!
Har nu programmerat fem olika köpsignaler som ser ut liknande som den femte där min sista rad är:
köp5=and(and(kurs_nedre_tiondelen,kl1723),ej_innehav)
du hade även
multi(köp5,10) efter ovanstående rad, vad innebär detta?
hur går jag vidare nu för att tagga de fem olika köpen med retval-funktionen?
jag skulle ju vilja göra något i stil med if(köp5==sant) och sen en sälj funktion men antar att det inte är så man gör i detta språk
Comment
-
Om du har 5 olika rader med villkor tex, så kan man göra på lite olika sätt:
köp1=xxx (villkor1)
köp2=xxx (villkor2)
köp3=xxx (villkor3)
köp4=xxx (villkor4)
köp5=xxx (villkor5)
köpkod=if(köp1,1,if(köp2,2,if(köp3,3,if(köp4,4,if(köp5,5,0)))))
retval(köpkod,0)
Nu skrivs värde 1-5 ner i cell noll vid order och lagras med transaktionen i Loggade lokala ordertransaktioner.
I säljscriptet kan man därefter läsa av den sparde koden med:
köpkod=lasttrade(b,0)
Beroende på vilket värde man får tillbaka kan man villkor olika säljkriterier.
Comment
-
Kan ett säljskript se ut som följande då?
köpkod=lasttrade(b,0)
sälj1=%Kod för enbart 5-dagars exit
if(equal(köpkod,2,if(köpkod,3,if(köpkod,4,sälj2))))
sälj2=%Kod för 5-dagars exit eller vinst fom dag 1
if(equal(köpkod,5),sälj1)
Du svarade inte på vad
multi(köp1,10) betyder?
Grymt tack för alla snabba svar
Comment
-
Nja, nästan, Equal-funktionen skrivs Eqv(), och If-satsen måste innehålla tre parametrar, först villkoret, därefter parameter 1 och parameter 2:
if(om detta villkor sant,returnera detta,annars detta)
Men det går nog enklare att bygga med AND():
köpkod=lasttrade(b,0)
sälj1=and(ditt_säljvillkor1,eqv(köpkod,1))
sälj2=and(ditt_säljvillkor2,eqv(köpkod,2))
sälj3=and(ditt_säljvillkor3,eqv(köpkod,3))
osv
I slutet av säljscriptet kan man testa om något av villkoren löst ut:
säljsignal=or(or(sälj1,sälj2),sälj3)
Detta betyder, om säljvillkor1 är sant och köpkod är 1 samtidigt så blir sälj1 sant.
Mult(något,10) betyder att man multiplicerar scriptets output (som är logiskt sant eller falskt = 1 eller 0) med 10, detta för att få tex flaggor ritade med 10% höjd i diagrammet om man valt skalning 0-100.
Comment
Comment