digitale ADX - digitale ADX

Vragen en suggesties over Vesticode

Moderator: Perry

digitale ADX - digitale ADX

Berichtdoor arend » zo 12 jan 2003, 12:55

Ik probeer een indicator in elkaar te zetten die in staat is om boven een bepaalde ADX stand een 1 te genereren en in andere gevallen een -1. Om een of andere reden lukt het me niet. Kan iemand mij aangeven wat ik fout doe.

{--- De ADX als digitale functie ---}
value function zADXsystem (value ADX,) begin;
value xADX;
xADX := ADX;
if xADX > 20 then
zADXsystem = 1
else zADXsystem =-1;
plot1(zADXsystem,'digiADX');
end;

Met dit programma is de zADXsystem altijd -1.
arend
 
Berichten: 10
Geregistreerd op: zo 10 feb 2002, 21:32

digitale ADX

Berichtdoor do » zo 12 jan 2003, 13:23

Hij moet zo werken,
zADXsystem is nu even een variabele
kun je weer functie van maken.

{--- De ADX als digitale functie ---}
value zADXsystem;
zADXsystem=0;
if ADX > 20 then zADXsystem = 1 ;
if ADX <= 20 then zADXsystem =-1;

plot88(zADXsystem,'digiADX');
plot89(adx);

Do
do
 
Berichten: 8
Geregistreerd op: wo 01 jan 2003, 20:46

digitale ADX

Berichtdoor RobvZ » zo 12 jan 2003, 20:08

Hoi Arend,

Wel verwarrend. Je hebt het over een indicator en functie en de naamgeving suggereert een systeem.

Hoe dan ook, het probleem is de ADX in je functie. Volgens mij mag je geen indicator als functie-argument ?gebruiken. De oplossing is simpel. Verplaats ADX naar de body van de functie.

Volgende code werkt.

{--- De ADX als digitale functie ---}
value function zADXSystem ?begin
value xADX;
xADX := ADX;
if xADX > 20 then
zADXSystem = 1
else zADXSystem =-1;
plot1(zADXSystem,'digiADX');
end; ?
RobvZ
 
Berichten: 17
Geregistreerd op: di 31 dec 2002, 18:06
Woonplaats: Veghel

digitale ADX

Berichtdoor arend » zo 19 jan 2003, 16:52

Do en RobvZ heel erg bedankt voor de hulp.

Het werkt inderdaad alleen ik moet er nog bij vermleden dat je de ADX wel moet oproepen om de digitale ADX te laten werken. Misschien heeft Pierre nog een idee waarom dat zo is. Ik kan weer verder.
arend
 
Berichten: 10
Geregistreerd op: zo 10 feb 2002, 21:32

digitale ADX

Berichtdoor RobvZ » zo 19 jan 2003, 17:01

Arend,

Kan je uitleggen wat je bedoeld. Om je digitale ADX te laten werken, zal de ADX bekend moeten zijn en dus (ergens) berekend moeten worden.
RobvZ
 
Berichten: 17
Geregistreerd op: di 31 dec 2002, 18:06
Woonplaats: Veghel

digitale ADX

Berichtdoor arend » zo 19 jan 2003, 17:35

Beste RobvZ,

als je een plot laat maken van de ADX en de digitale ADX dan werkt het niet. Zie onderstaande regel.
plot88(zADXsystem,'digiADX');
plot89(adx);

Het gaat pas goed als je in de grafiek de ADX afzonderlijk oproept en daarna pas de digitale ADX oproept.

Ik hoor graag als ik nog iets fout doe.
arend
 
Berichten: 10
Geregistreerd op: zo 10 feb 2002, 21:32

digitale ADX

Berichtdoor RobvZ » wo 22 jan 2003, 0:53

Arend,

Allereerst een opmerking over plot88() en plot89(). De Vesticode handleiding heeft het over Plot1, Plot2, Plot3 en Plot4. Zegt dus niets over bijvoorbeeld Plot88. In feite is dit een ongedocumenteerde functionaliteit en daar moet je altijd voorzichtig mee zijn. Van Pierre heb ik begrepen dat je weliswaar hogere Plot-nummers dan 4 kunt gebruiken maar dat daarvan bepaalde eigenschappen zoals kleur niet kunnen worden ingesteld (in de Designermode).

Nu jouw probleem. Ik heb onderstaande code als uitgangspunt genomen:

{--- De ADX als digitale functie ---}
value function vDigADX(value myPivot=20) ?begin
value digADX[];

if ADX > myPivot then
?digADX := 1
else digADX :=-1;

plot1(digADX,'digiADX'); {de 'blokvorm' met grenzen 1 en -1}
plot2(ADX,'ADX'); ? ? ? ? {de ADX indicator}
plot3(myPivot,'Pivot'); ? {een horizontale lijn}

end;

Hoewel je waarschijnlijk alles al weet ga ik toch stap voor stap door het proces om tot deze indicator te komen:
1. Open een willekoerige grafiek bv die van CMG
2. Ga naar de Designer (in grafiekvenster menu item: Beeld->Designer)
3. Vervolgens een nieuwe indicator toevoegen door te klikken op menu item: Editor->Nieuwe module
4. Kies tabblad Indicator in het dialoog Invoegen en vervolgens <new indicator>
5. Als naam heb ik hier gekozen voor vDigADX. Let op ! Kies de naam zorgvuldig omdat deze overeen moet komen met de naam in je code (value function vDigADX(....)). Als je later de naam in je code verandert, krijg je de hinderlijke foutmelding 84 - Naam moet gelijk zijn aan bestandsnaam.
6. Copieer bovenstaande function vDigADX in het werkvlak (tabblad Bron) ?
7. Controleer de code middels menu item : Editor->Controleren (of gebruik speedbutton met groen vinkje)
8. Als alles oke is, kan je op de standaard manier de nieuwe indicator aan de grafiek toevoegen.
9. Het resultaat is, dat er onder de koersgrafiek een nieuwe sectie is toegevoegd met daarin de drie plots. DigADX is hierin weliswaar getekend, maar nauwelijks zichtbaar omdat de schaal van de ADX vele malen groter is dan 1.
Je kunt de Plots zien en instellen door rechts te klikken op de grafiek. Kies in het dialoog grafiekeigenschappen de tab Subgrafieken en vervolgens Subgrafiek2 ?en dan tab Plots. (Ben je er nog?)
Als je van de Plot digADX in sectie zDigADX het Subgrafieknummer van 2 in 3 veranderd en bevestigd met OK, dan krijg je in de grafiek een nieuwe sectie met daarin een overzichtelijke digADX

Nadeel van deze methode is, dat als je de indicator verwijdert uit de grafiek en later weer toevoegt, de instelling niet bewaard is gebleven. Dit kan je wel bereiken door de code van deze functie in de Designer mode te tonen en vervolgens via menu item: Editor->Module eigenschappen activeert. Via plotinstellingen kan je de verschillende secties instellen. In ons voorbeeld moet je voor ADX de optie 'Nieuwe subgrafiek' kiezen. Het kan zijn dat je de indicator eerst uit de koersgrafiek moet verwijderen en weer toevoegen om de nieuwe instelling te activeren.

Succes.
RobvZ
 
Berichten: 17
Geregistreerd op: di 31 dec 2002, 18:06
Woonplaats: Veghel


Keer terug naar Vesticode

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 14 gasten

cron