Amibroker - Problema afl

brucee

Nuovo Utente
Registrato
15/9/03
Messaggi
255
Punti reazioni
9
Devo differenziare l'uscita dalla posizione in base alla posizione assunta... es. se sono long usa media(10) se sono short usa media(50)
Come faccio a sapere se sono long o short?
Le variabili buy e sell diventano true solo il giorno del segnale e settarsi una variabile segnale 0 1 è un casino...
Mi sembra strano non ci sia una funzione nativa che implementa questa semplice richiesta...
C'è nessuno che puo' darmi una mano?
Brucee
 
Scritto da Guglielmo
La funzione FLIP dovrebbe fare al caso tuo
Grazie mille, sembra proprio quello che mi serve
Ero indeciso se scriverti un MP direttamente a te oppure creare un nuovo 3d.
Ho pensato che forse poteva interessare anche ad altri visto l'enorme interesse per questo stupendo programmino praticamente free (129$)
Visto che ci sono approfitto per chiederti un altra cosa:
ho un TS che si basa sul parabolic Sar
volevo modificare i parametri in base al valore dell'adx in pratica se c'è un bel trend usa dei valori morbidi se non c'è trend (tipo l'ultimo anno ) usa dei valori piu' aggressivi.
if(adx(14)>30){parametro=10;}
else{parametro=50;}
Il codice qui sopra non funziona... in pratica non valorizza adx(14)...
io faro' un altro po' di esperimenti ma se per caso sai che c'è un giro particolare da fare fammelo sapere.
Ciao
Grazie ancora
Brucee
 
I MP sono per i messaggi personali, le cose che possono interessare più di due persone è meglio trattarle sul forum, non trovi?
Altrimenti il forum a cosa serve? :)

Non so se funziona ma puoi provare così:

Parametro=IIF(adx(14)>30,10,50);

Anzi :) , probabilmente non funziona perchè bisogna vedere se la funzione che usi accetta come parametro un vettore (Parametro, cosi calcolato è un vettore) o un numero.

Ciao
 
Scritto da Guglielmo
Parametro=IIF(adx(14)>30,10,50);

Anzi :) , probabilmente non funziona perchè bisogna vedere se la funzione che usi accetta come parametro un vettore (Parametro, cosi calcolato è un vettore) o un numero.
[/B]

Infatti è la prima cosa è ho provato. Mi sembra di ricordare che non lo calcola proprio, non solo non lo da in pasto ad un altra funzione.
Parametro=IIF(adx(14)>30,10,50);
Parametro è vuoto, non valorizzato... anche se mi sembra strano perchè gli esempi sono molto simili.
Comunque provero' ancora.
In qualche maniera bisognerà pur riuscirci, mi sembra anche questa una funzione abbastanza basilare.
Grazie
Brucee
 
Mi sa che SAR() non accetta come parametro dei vettori ma solo dlegli scalari :(

Puoi ovviare a questo in questo modo:

Imposti tante variabili (Sar1, sar2, Sar3, ecc) quanti sono i possibili parametri di sar che vuoi usare (100 parametri = 100 variabili da Sar1 a Sar100) e poi tante istruzioni IIF quante sono le variabili in modo da selezionare la variabile corrispondente al parametro che ti interessa.

Questa soluzione moltiplica i calcoli richiesti ma è semplice e i processori attuali sono molto potenti ;)

Se conosci il C++ ( o Jscript o VBScript) le soluzioni possono essere molto migliori e molto più efficienti, ma quella che ti ho indicato può bastare. ,

Facci sapere,

Ciao :)
 
Scritto da brucee
Infatti è la prima cosa è ho provato. Mi sembra di ricordare che non lo calcola proprio, non solo non lo da in pasto ad un altra funzione.
Parametro=IIF(adx(14)>30,10,50);
Parametro è vuoto, non valorizzato... anche se mi sembra strano perchè gli esempi sono molto simili.
Comunque provero' ancora.
In qualche maniera bisognerà pur riuscirci, mi sembra anche questa una funzione abbastanza basilare.
Grazie
Brucee


Ora devo lavorare ;) a casa provo con AB cosa si può fare

Ciao
 
Un esempio da provare in indicator builder (a me funziona)

------------------------
Parametro=IIf(ADX(14)>30,10,IIf(ADX(14)>15,25,50));
//Plot(Parametro,"Par",colorBlack,styleLine);

X10=EMA(C,10);
X25=EMA(C,25);
X50=EMA(C,50);

x=IIf(Parametro==10,X10,IIf(Parametro==25,X25,IIf(Parametro==50,X50,0)));
Plot(C,"",colorBlack,styleCandle);
Plot(x,"x",colorRed,styleThick);
---------------------------

Ciao
 
Scritto da Guglielmo
Un esempio da provare in indicator builder (a me funziona)

Io ci ho provato anche ieri sera, ma non ce l'ho fatta. Stasera provo con i tuoi suggerimenti e vediamo che succede.
Speriamo snelliscano l'afl per la gestione condizionale nelle prossime release altrimenti è un casino.
Grazie mille.
Brucee
 
posta il codice che non funziona, per quanto riguarda la gestione condizionale nell'ultima release c'è tutta la serie dei comandi condizionali e di loop (if, else, do, for, ecc.) per l'uso però ti conviene leggere bene la documentazione e gli esempi perchè è facile confondere la sequenza del programma con la sequenza dei vettori che rappresentano la serie storica dei prezzi e dei valori dei relativi indicatori.

Ciao
 
AFL

IIf(ADX(14)>10,p1=0.01,p2=0.11);
IIf(ADX(14)<10,p1=0.01,p2=0.51);
//p1=Optimize("acc",0.02,0.01,1,0.01);
//p2=Optimize("max",0.2,0.01,1,0.1);

Buy = Cross( SAR(p1,p2),C);
Sell= Cross( C,SAR(p1,p2));


IIf(ADX(14)>10... intendo l'adx del giorno corrente ma non valorizza correttamente le due variabili.
Questo è il codice molto semplificato (sto andando a memoria) ma non funziona. Stasera provo con i tuoi esempi.
Grazie
Ciao
 
Re: AFL

Scritto da brucee
IIf(ADX(14)>10,p1=0.01,p2=0.11);
IIf(ADX(14)<10,p1=0.01,p2=0.51);
//p1=Optimize("acc",0.02,0.01,1,0.01);
//p2=Optimize("max",0.2,0.01,1,0.1);

Buy = Cross( SAR(p1,p2),C);
Sell= Cross( C,SAR(p1,p2));


IIf(ADX(14)>10... intendo l'adx del giorno corrente ma non valorizza correttamente le due variabili.
Questo è il codice molto semplificato (sto andando a memoria) ma non funziona. Stasera provo con i tuoi esempi.
Grazie
Ciao

IIf è una funzione che serve ad assegnare un valore ad una variabile, nel tuo codice la usi in modo errato, prova così:

p1=0,01;
p2=IIf(ADX(14)>10,0.11,0.51);

Ciao
 
Re: Re: AFL

Scritto da Guglielmo
p2=IIf(ADX(14)>10,0.11,0.51);
[/B]

Andavo a memoria ed ho usato degli appunti che mi ero salvato su di un file... adesso sono riuscito a provare il codice sulla versione trial che mi sono scaricato per l'occasione e mi dice con le modifiche che giustamente mi hai segnalato:
Primo argomento passato alla funzione non valido o inesistente... in pratica non valorizza p2
:confused:
Grazie ancora
Brucee
 
Re: Re: Re: AFL

Scritto da brucee
Primo argomento passato alla funzione non valido o inesistente... in pratica non valorizza p2

ciao,
il modo corretto di asegnare valori di ritorno ad una funzine IIF e' quello che ti ha segnalato Gugliemo

Nel tuo caso l'errore e' dovuto, penso, al fatto che in certe situazioni l'Adx non ha un valore, anche da me fa' cosi', non chiedermi il perche', AB non lo conosco ancora bene e ultimamente ho davvero poco tempo per applicarmi.

In ogni caso se anche non riesi a scoprire cosa causa il valore nullo dell'Adx, puoi sempre mettere un altro IIF che in caso di valore nullo di p2 lo assegni ad un valore minimo.

Tipo:
p1=0.01;
p2=IIf(ADX(14)>10,0.11,0.51);
p2=IIf(p2=0,0.11,0.51);

Non prendere per buona la formula, probabilmente e' sbagliata come concetto dovrai applicaric la tua idea, ma sintatticamente lo e'.


In quel modo se non altro bypassi l'avvertimento bloccante di AB.
 

Allegati

  • noname.jpg
    noname.jpg
    28,8 KB · Visite: 108
Prova questa versione, è quello che volevi?
Io l'ho provata e funziona sia in indicator builder che come TS.
Tra l'altro non è neanche malaccio come TS :)

-----------------

acc_1=Optimize("acc_1",0.01,0.01,0.1,0.01);
acc_2=Optimize("acc_2",0.01,0.01,0.1,0.01);
max_1=Optimize("max_1",0.4,0.1,1,0.1);
max_2=Optimize("max_2",0.2,0.1,1,0.1);

SAR_1=SAR(acc_1,max_1);
SAR_2=SAR(acc_2,max_2);

x=IIf(ADX(14)>30,SAR_1,SAR_2);

Buy = Cross( C,x);
Sell= Cross( x,C);

Plot(C,"C",colorBlack,styleCandle);
Plot(x,"x",colorRed,styleDots|styleNoLine);

-----------------------

ciao
 
Scritto da Guglielmo
Prova questa versione, è quello che volevi?
Io l'ho provata e funziona sia in indicator builder che come TS.
Tra l'altro non è neanche malaccio come TS :)

Grazie infinite... è proprio quello che cercavo.
Non si sa mai che vi abbia dato anche qualche nuovo spunto di riflessione...
Brucee
 
Indietro