Har någon gjort script för ConnorsRSI i NAT?
Allmänt meddelande
Collapse
No announcement yet.
ConnorsRSI
Collapse
X
-
Nedanstående länk visar hur ConnorsRSI beräknas.
http://www.marketcalls.in/wp-content...-Guidebook.pdf
Tyvärr går ConnorsRSI inte att beräknas i NAT för närvarande.
Problemet är "Percent Rank" som beräknas genom att jämföra dagens prisrörelse med alla andra dagars prisrörelser dag för dag 100 dagar bakåt, samt räkna ut hur många dagsprisrörelser som är lägre än dagens inom nämda period.
För detta krävs en loop-funktion och språket saknar för närvarande en sådan.
Last edited by LillWicke; 2013-05-29, 01:46.
Comment
-
Ursprungligen postat av Brusander Visa inläggTack LillWicke för svaret.
Går det att göra ett första steg med de två första delarna i indikatorn?
Då skulle det enligt Connors bli i NAT:
Stympad_connorsRSI=div(add(RSIW(3),RSIW(2)),2)
Detta skall då köras i dagsupplösning.
Last edited by LillWicke; 2013-05-29, 14:47.
Comment
-
Ursprungligen postat av Henric Visa inläggJag har inte tittat närmare på villkoren, men skulle detta fungera för rank?
Under förutsättning att sum()-funktionen inte hittar på något med det konstanta värdet i den globala variabeln, men det ska den nog inte göra.
Brusander, då verkar det som om vi kan vi skriva en lösning för ConnorsRSI i NAT trots allt.
(har lagt till en möjlighet att labba med andra perioder än 100 om man vill)
{ ConnorsRSI med variabel period, standard 100}
period:=100
today=div(sub(c,aref(c,1)),aref(c,1))
SetGvarIf(today,500,1)
antal=sum(lt(today,GetGvar(500)),period)
{denna omskrivning enbart för pedagogikens skull om man vill laborera med en annan period än 100}
percent_rank=mult(div(antal,period),100)
ConnorsRSI=div(add(add(RSIW(3),RSIW(2)),percent_rank),3)
draw(ConnorsRSI,2,bsa)
Mult(1,0)
EDIT: Detta är skrivet så att om diagrammet är aktivt och man klickar på Dagsstaplar kommer Connors-kurvan att beräknas på dagsstaplar, men om man klickar på 15min kommer kurvan att beräknas på 15min-staplar.
Last edited by LillWicke; 2013-05-29, 14:53.
Comment
-
Ursprungligen postat av Brusander Visa inläggHej Henrik och LilLWicke,
Spännande ! Har ni testat om det verkar fungera?
Jag ändrade lite i ursprungs koden ovan och lade till en draw()-funktion så att du kan se en kurva i analysområde 1.
Comment
-
Den här borde väl fungera korrekt också? Så slipper man köra med global cell tänkte jag. Har lagt till parametrar också så att det går enkelt att lägga till indikatorn till en egen snabbknapp i Pro.
$par1:=2
$par2:=3
$par3:=100
{ ConnorsRSI med variabel period, standard 100}
today=div(sub(c,aref(c,1)),aref(c,1))
retval(today,2)
antal=sum(lt(today,getval(2)),$par3)
percent_rank=mult(div(antal,$par3),$par3)
ConnorsRSI=div(add(add(RSIWS($par1),RSIWS($par2)),percent_rank),3)
add(connorsrsi,0)Attached Files
Comment
-
Scripta delkomponent 2 - RSIWS(Streak,2) - i ConnorsRSI(3,2,100)
Jag kikade på Rikards ovan script avseende ConnorsRSI a k a ConnorsRSI(3,2,100) och ser att delkomponent 2 - RSIWS(Streak,2) är felaktigt i scriptet.
Se nedan text i rött som beskriver hur man räknar fram delkomponent 2 av ConnorsRSI(3,2,100) alltså RSIWS(Streak,2). När jag läser nedan text så ser jag inga beräkningar på
RSIWS(Streak,2) i Rikards ovan formel utan jag ser bara att han kör en vanlig RSIWS(2) på senaste kursen på 2 perioder - när det är tänkt att delkomponent nummer 2 i
ConnorsRSI(3,2,100) alltså RSIWS(Streak,2) skall appliceras på den så kallade ”Streak Duration” enligt nedan text och inte senaste kursen.
Är det någon scriptkung därute - Lill-Wicke, Henric eller någon annan som mäktar med att scripta RSIWS(Streak,2) delen enligt nedan beskriven logik -
detta inom ramen för totala ConnorsRSI(3,2,100) scriptet?
• RSIWS(Close,3)
• RSIWS(Streak,2)
• PercentRank(100)
“Duration of Up/Down Trend: When the closing price of a security is lower today than it was
yesterday, we say that it has “closed down”. If yesterday’s closing price was lower than the
previous day’s close, then we have a “streak” of two down close days. Our research has shown
that the longer the duration of a down streak, the more the stock price is likely to bounce when
it reverts to the mean. Likewise, longer duration up streaks result in larger moves down when
the stock mean reverts. In effect, the streak duration is another type of overbought/oversold
indicator.
The problem is, the number of days in a streak is theoretically unbounded, though we could
probably place some practical limits on it based on past experience. For example, we might
observe that there have been very few instances of either an up streak or a down streak lasting
for more than 20 days, but that still doesn’t get us to a typical oscillator‐type value that varies
between 0 and 100.
The solution is two‐fold. First, when we count the number of days in a streak, we will use
positive numbers for an up streak, and negative numbers for a down streak. A quick example
will help to illustrate this:
Day Closing Price Streak Duration
1 $20.00
2 $20.50 1
3 $20.75 2
4 $19.75 ‐1
5 $19.50 ‐2
6 $19.35 ‐3
7 $19.35 0
8 $19.40 1
The closing price on Day 2 is higher than on Day 1, so we have a one‐day up streak. On Day 3,
the price closes higher again, so we have a two‐day up streak, i.e. the Streak Duration value is 2.
On Day 4, the closing price falls, giving us a one‐day down streak. The Streak Duration value is
negative (‐1) because the price movement is down, not up. The downward trend continues on
Days 5 and 6, which our Streak Duration reflects with values of ‐2 and ‐3. On Day 7 the closing
price is unchanged, so the Streak Duration is set to 0 indicating neither an up close nor a down
close. Finally, on Day 8 the closing price rises again, bringing the Streak Duration value back to
1.
The second aspect of the solution is to apply the RSI calculation to the set of Streak Duration
values. By default, ConnorsRSI uses a 2‐period RSI for this part of the calculation, which we
denote as RSI(Streak,2). The result is that the longer an up streak continues, the closer the
RSI(Streak,2) value will be to 100. Conversely, the longer that a down streak continues, the
closer the RSI(Streak,2) value will be to 0.”
Tack på förhand//
Comment
Comment