Insider 3000 - Forums
Insider 3000 - Forums
Home | Profile | Active Topics | Members | Search | FAQ
 All Forums
 Community
 Scambio Indicatori, Trading System ecc..
 Chandelier in Insider 3000

Note: You must be registered in order to post a reply.

Screensize:
UserName:
Password:
Format Mode:
Format: BoldItalicizedUnderlineStrikethrough Align LeftCenteredAlign Right Horizontal Rule Insert HyperlinkInsert Email Insert CodeInsert QuoteInsert List
   
Message:

* HTML is OFF
* Forum Code is ON
Smilies
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Clown [:o)]
Black Eye [B)] Eight Ball [8] Frown [:(] Shy [8)]
Shocked [:0] Angry [:(!] Dead [xx(] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

   
   

T O P I C    R E V I E W
apietrop Posted - 08 May 2007 : 23:23:37
Vorrei chiedere il Vs. parere sul codice Insider3000 allegato qui sotto che vuole rappresentare l'indicatore Chandelier Stop come descritto al seguente link http://www.tradingprofessionale.it/indexarticolo.php?idarea=6&idsez=33&idart=808&ids=no.

Non sono sicuro di aver correttamente traslato l'algoritmo del Chandelier nel linguaggio di Insider.
Ogni commento è benvenuto, grazie.
 


Dim Chandelier as Numeric = 0
Dim StopLong as Numeric = 0
Dim StopShort as Numeric = 0


Function Main()

Dim Stop1 as Numeric
Dim Stop2 as Numeric
Dim previous_stopshort as Numeric
Dim previous_stoplong as Numeric

previous_stopshort = StopShort
previous_stoplong = StopLong

If (Chandelier < Low) then
If (High - 3 * Atr(10) >= Chandelier) then
Stop1 = High - 3 * Atr(10)
else
Stop1 = Chandelier
endif
else
Stop1 = High - 3 * Atr(10)
endif


If (Chandelier < Low) then
If (Close - 2.5 * Atr(10) >= Chandelier) then
Stop2 = Close - 2.5 * Atr(10)
else
Stop2 = Chandelier
endif
else
Stop2 = Close - 2.5 * Atr(10)
endif


If (Stop1 > Stop2) then
StopLong = Stop1
else
StopLong = Stop2
endif



If (Chandelier > High) then
If (Low + 3 * Atr(10) <= Chandelier) then
Stop1 = Low + 3 * Atr(10)
else
Stop1 = Chandelier
endif
else
Stop1 = Low + 3 * Atr(10)
endif


If (Chandelier > High) then
If (Close + 2.5 * Atr(10) <= Chandelier) then
Stop2 = Close + 2.5 * Atr(10)
else
Stop2 = Chandelier
endif
else
Stop2 = Close + 2.5 * Atr(10)
endif


If (Stop1 < Stop2) then
StopShort = Stop1
else
StopShort = Stop2
endif

If (BarSince(Low < previous_stoplong) > BarSince(High > previous_stopshort)) then
Chandelier = StopLong
else
Chandelier = StopShort
endif

Return Chandelier

Endfunction


9   L A T E S T    R E P L I E S    (Newest First)
paolog Posted - 19 March 2010 : 07:52:58
ora funziona....
ho inserito come variabili anche i due valori 3 e 2,5 così l'indicatore si può adattare ai titoli più o meno volatili.
grazie e saluti


Property PeriodiATR() as Numeric
Default (10)
EndProperty
Property valmin() as Numeric
Default (2.5)
EndProperty
Property valmax() as Numeric
Default (3)
EndProperty
Dim Chandelier as Numeric = 0
Dim StopLong as Numeric = 0
Dim StopShort as Numeric = 0
Function Main()
Dim Stop1 as Numeric
Dim Stop2 as Numeric
dim val3 as Numeric = 0
dim val25 as Numeric = 0
Dim previous_stopshort as Numeric
Dim previous_stoplong as Numeric

previous_stopshort = StopShort
previous_stoplong = StopLong
val3 = atr(PeriodiATR) * valmax
val25 = atr(PeriodiATR) * valmin

If (Chandelier < Low) then
If (High - val3 >= Chandelier) then
Stop1 = High - val3
else
Stop1 = Chandelier
endif
else

Stop1 = High - val3
endif
If (Chandelier < Low) then
If (Close - val25 >= chandelier) then
Stop2 = Close - val25
else
Stop2 = Chandelier
endif
else
Stop2 = Close - val25
endif
If (Stop1 > Stop2) then
StopLong = Stop1
else
StopLong = Stop2
endif
If (Chandelier > High) then
If (Low + val3 <= Chandelier) then

Stop1 = Low + val3
else
Stop1 = Chandelier
endif
else
Stop1 = Low + val3
endif

If (Chandelier > High) then
If (Close + val25 <= Chandelier) then
Stop2 = Close + val25
else
Stop2 = Chandelier
endif
else
Stop2 = Close + val25
endif
If (Stop1 < Stop2) then
StopShort = Stop1
else
StopShort = Stop2
endif
If (BarSince(Low > previous_stoplong) < BarSince(High < previous_stopshort)) then
Chandelier = StopLong
else
Chandelier = StopShort
endif
Return Chandelier
Endfunction
SupportoTecnico Posted - 18 March 2010 : 11:26:30
Per rendere un parametro editabile dall'utente basta creare una Property.
In pratica, aggiungi queste righe al codice dell'indicatore (esternamente alla funzione Main):

Property PeriodiATR() as Numeric
Default (10)
EndProperty


Poi usa PeriodiATR al posto di 10 come parametro Atr. Esempio:

If (Chandelier > High) then
If (Close + 2.5 * Atr(PeriodiATR) <= Chandelier) then
Stop2 = Close + 2.5 * Atr(PeriodiATR)
else
Stop2 = Chandelier
endif
else
Stop2 = Close + 2.5 * Atr(PeriodiATR)
endif


Salva il tutto.

Ora, dal pannello di controllo nelle proprietà dell'indicatore puoi decidere anche i periodi di ATR (per default 10).
paolog Posted - 18 March 2010 : 08:43:02
Ho provato l'indicatore ed ho trovato un errore alla 7ultima riga dalla fine.
tu hai scritto:

If (BarSince(Low < previous_stoplong) > BarSince(High > previous_stopshort)) then

devi invece scrivere:

If (BarSince(Low > previous_stoplong) > BarSince(High < previous_stopshort)) then

con questa correzione l'indicatore passa sopra e sotto i valori del grafico.
Sarebbe utile poter variare il valore 10 di atr come input dell'utente ma non riesco a farlo.

saluti

Paolo
apietrop Posted - 21 September 2009 : 13:17:30
ciao,
considera che ho scritto il codice due anni fa e da allora dopo un primo periodo di prova non l'ho più usato.

Ricordo il problema che bvidenzi, e ricordo che feci una modifica (arbitraria) per gestire e correggere la cosa.

Il codice postato era una "traslazione secca" dal codice di un altro programma riportato nell'articolo al link, e la traslazione non funzionava come doveva (motivo per cui chiedevo al supporto tecnico un parere).

Spero di avere ancora da qualche parte del mio vecchio HD il codice "corretto"; se lo trovo te lo invio volentieri.

Saluti
SupportoTecnico Posted - 20 September 2009 : 18:09:36
Allora il problema non è nei settaggi delle proprietà, ma nella formula dell'indicatore. Purtroppo non conosco l'indicatore e non ti so dire dove possa essere, se c'è, l'errore logico (magari "apietrop" che ha scritto l'indicatore voleva proprio questo risultato).
lanas Posted - 20 September 2009 : 16:26:56
quote:
Originally posted by SupportoTecnico

Devi settare giustamente la proprietà dell'indicatore "Usa Min-Max grafico" che trovi nel pannello di controllo tra le proprietà dell'indicatore.

La proprietà abilita l'uso dei massimi e minimi del grafico. E' molto utile per quegli indicatori che come la media mobile seguono l'andamento del grafico.



Si l'avevo fatto...ma il problema persiste
ecco uno screen

http://img84.imageshack.us/img84/9269/imgd.jpg

cosa può essere?
SupportoTecnico Posted - 20 September 2009 : 15:30:24
Devi settare giustamente la proprietà dell'indicatore "Usa Min-Max grafico" che trovi nel pannello di controllo tra le proprietà dell'indicatore.

La proprietà abilita l'uso dei massimi e minimi del grafico. E' molto utile per quegli indicatori che come la media mobile seguono l'andamento del grafico.
lanas Posted - 20 September 2009 : 14:38:55
quote:
Originally posted by SupportoTecnico

A colpo d'occhio a me sembra corretto.
Ti consiglio però di assegnare le espressioni:

2.5 * Atr(10)

e

3 * Atr(10)

a due variabili all'inizio della procedura e poi utilizzare quelle nelle varie parti del codice e non direttamente le due espressioni.
Ne guadagnerai in memoria e soprattutto in velocità di esecuzione.





Salve,
riesco a farlo funzionare correttamente, ma quando aggiungo l'indicatore al grafico, la linea è sempre sopra il prezzo non lo incrocia mai.
Mentre credo l'effetto dovrebbe essere questo

http://www.tradingprofessionale.it/magazine/money_trade_management/stop_loss_e_volatili/Fideuram_Chandelier_SH.gif

grazie
SupportoTecnico Posted - 09 May 2007 : 13:43:09
A colpo d'occhio a me sembra corretto.
Ti consiglio però di assegnare le espressioni:

2.5 * Atr(10)

e

3 * Atr(10)

a due variabili all'inizio della procedura e poi utilizzare quelle nelle varie parti del codice e non direttamente le due espressioni.
Ne guadagnerai in memoria e soprattutto in velocità di esecuzione.

Insider 3000 - Forums © Copyright 2003-2016 Tradersoft s.r.l. Go To Top Of Page
Powered By: Snitz Forums 2000 Version 3.4.07