Insider 3000 - Forums
Insider 3000 - Forums
Home | Profile | Active Topics | Members | Search | FAQ
Username:
Password:
Save Password
Forgot your Password?

 All Forums
 Community
 Scambio Indicatori, Trading System ecc..
 Chandelier in Insider 3000
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

apietrop
Nuovo Utente

9 Posts

Posted - 08 May 2007 :  23:23:37  Show Profile  Reply with Quote
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


SupportoTecnico
Forum Admin

1261 Posts

Posted - 09 May 2007 :  13:43:09  Show Profile  Reply with Quote
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.
Go to Top of Page

lanas
Nuovo Utente

22 Posts

Posted - 20 September 2009 :  14:38:55  Show Profile  Reply with Quote
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
Go to Top of Page

SupportoTecnico
Forum Admin

1261 Posts

Posted - 20 September 2009 :  15:30:24  Show Profile  Reply with Quote
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.
Go to Top of Page

lanas
Nuovo Utente

22 Posts

Posted - 20 September 2009 :  16:26:56  Show Profile  Reply with Quote
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?
Go to Top of Page

SupportoTecnico
Forum Admin

1261 Posts

Posted - 20 September 2009 :  18:09:36  Show Profile  Reply with Quote
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).
Go to Top of Page

apietrop
Nuovo Utente

9 Posts

Posted - 21 September 2009 :  13:17:30  Show Profile  Reply with Quote
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
Go to Top of Page

paolog
Nuovo Utente

10 Posts

Posted - 18 March 2010 :  08:43:02  Show Profile  Reply with Quote
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
Go to Top of Page

SupportoTecnico
Forum Admin

1261 Posts

Posted - 18 March 2010 :  11:26:30  Show Profile  Reply with Quote
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).
Go to Top of Page

paolog
Nuovo Utente

10 Posts

Posted - 19 March 2010 :  07:52:58  Show Profile  Reply with Quote
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
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
Insider 3000 - Forums © Copyright 2003-2016 Tradersoft s.r.l. Go To Top Of Page
Powered By: Snitz Forums 2000 Version 3.4.07