Un buon post inizia dal titolo, che deve essere chiaro e immediato... e non aprite nuovi Topics se ne esiste già uno recente sullo stesso argomento... anche in questo Forum le regole sono poche (ma buone).
  • Pagina:
  • 1
  • 2

ARGOMENTO:

codice da sistemare 7 Anni 4 Mesi fa #25054

  • w4rri0r
  • Avatar di w4rri0r Autore della discussione
  • Offline
  • Junior Member
  • Junior Member
  • Messaggi: 81
  • Ringraziamenti ricevuti 19
Ciao a tutti,
Ho iniziato a codificare una cosa semplice (compra sopra il max o vendi sotto il min) ma il sistema continua a ricomprare una volta chiusa la posizione

è un problema di linguaggio?
Input:	ATRLenght ( 1 ),
		TgtATR ( 2 ),
		StpATR ( 1 ),
		TrlKickIn ( 1 ),
		TrlAmt ( 5 ) ;
Vars: 
	FirstBarHi( 0 ), 
	FirstBarLo( 0 ),
	ATR ( 0 ), 
	MP (0),
	TrlL ( 0 ),
	TrlS ( 9999999999 ),
	StartLTrl ( FALSE ),
	StartSTrl ( FALSE ),
	Value1 (0),
	Value2 (0);
	
MP = Marketposition;
ATR = ( ATRLenght );
FirstBarHi = High; 
FirstBarLo = Low; 
Value1 = FirstBarHi + .01;
Value2 = FirstbarLo - .01;

If CurrentSession(0) <> CurrentSession(0)[1] then begin         
ATR = ( ATRLenght );
FirstBarHi = High; 
FirstBarLo = Low;   
end; 

 // Entries
if Time > 0930 and Time <= 0935 then begin  // allow five min. after the open to break below or above the first min. bar of the day 
Buy ("MyBuy") next bar at  Value1 stop; 
Sell short next bar at Value2 stop; 

if MP <> 1 then
Begin
	StartLTrl = FALSE;
	TrlL = 0;
end;

if MP <> -1 then
Begin
	StartSTrl = FALSE;
	TrlS = 9999999;
end;
end; 


// Stops
if MP = 1 then Sell Next Bar at ( Low ) Stop;
if MP = -1 then BuyToCover Next Bar at ( High ) Stop;

// Targets
if MP = 1 then Sell next bar at (Entryprice + ( .10 )) limit;
if MP = -1 then BuyToCover Next Bar at (EntryPrice - ( .10 ) ) Limit;

// Trailing stop
if MP = 1 and C >= (EntryPrice + ( .10 ) ) then StartLTrl = True;
if MP = -1 and C <= (EntryPrice - ( .10 ) ) then StartSTrl = True;
if   StartLTrl then if C - (EntryPrice + ( .10 ) ) > TrlL then TrlL = C -(EntryPrice + ( .10 ) );
if   StartSTrl then if C + (EntryPrice - ( .10 ) ) < TrlS then TrlL = C +(EntryPrice - ( .10 ) );

// Exit on close
if MP = 1 then Sell Next Bar at TrlL Stop;
if MP = -1 then BuyToCover Next Bar at TrlS Stop;
setexitonclose;
  

Accedi o ✅Crea un account per partecipare alla conversazione.

codice da sistemare 7 Anni 4 Mesi fa #25078

  • marcebelgu
  • Avatar di marcebelgu
  • Offline
  • Senior Member
  • Senior Member
  • Messaggi: 179
  • Ringraziamenti ricevuti 97
Ho provato su MGC 5m e a me sembra funzionare.

Il motivo per cui chiama le uscite ad esempio Sell#2 è perchè non è stato assegnato un nome esplicito alle uscite multiple. Sell#2 è la seconda uscita registrata dallo script. Conviene dare un nome a tutte le uscite come hai fatto per il Buy.

Per fare debug lascia solo gli ingressi e l'uscita a fine giornata commentando il resto, e piano piano includi le parti di codice commentato finchè trovi quel che non va.

Ti allego qualche screenshot.




Questo messaggio ha immagini allegate.
Accedi o registrati per visualizzarle.

Ringraziano per il messaggio: w4rri0r

Accedi o ✅Crea un account per partecipare alla conversazione.

codice da sistemare 7 Anni 4 Mesi fa #25082

  • w4rri0r
  • Avatar di w4rri0r Autore della discussione
  • Offline
  • Junior Member
  • Junior Member
  • Messaggi: 81
  • Ringraziamenti ricevuti 19
grazie Marce,
ho risolto includendo una funzione che "conta" i trade e assegna un numero massimo eseguibile.

a te funzionava giusto sul 5 minuti perchè il programma era settato per inizializzare solo per i primi 5 minuti > con timeframes inferiori apriva un'infinità di operazioni di fila.....
ho incluso anche una funzione per il money management

se interessa posso postare il codice manoa mano che lo completo


******************************************************

nuovo problema.....lo stop non rimane fisso....
dovrebbe essere fisso sui livelli della prima barra invece il programma legge massimo e minimo della barra precedente e adegua di conseguenza


esiste un modo per dirgli ad un certo punto di escludersi? passare al manuale?

Questo messaggio ha un'immagine allegata.
Accedi o registrati per visualizzarla.

Accedi o ✅Crea un account per partecipare alla conversazione.

codice da sistemare 7 Anni 4 Mesi fa #25091

  • marcebelgu
  • Avatar di marcebelgu
  • Offline
  • Senior Member
  • Senior Member
  • Messaggi: 179
  • Ringraziamenti ricevuti 97
Memorizzi il valore che ti serve della prima candela in una variabile e lo usi per il sell stop. Sai anche da quante candele sei in posizione quindi decidi quando memorizzare il valore. Ok?


Non direi che si possa passare manuale / automatico da codice. Per lo meno non con l'EasyLanguage di base (forse con quello ad oggetti).

Accedi o ✅Crea un account per partecipare alla conversazione.

codice da sistemare 7 Anni 4 Mesi fa #25097

  • w4rri0r
  • Avatar di w4rri0r Autore della discussione
  • Offline
  • Junior Member
  • Junior Member
  • Messaggi: 81
  • Ringraziamenti ricevuti 19
ah ok, ci provo grazie!

esiste un easylanguage tipo labview?

Accedi o ✅Crea un account per partecipare alla conversazione.

codice da sistemare 7 Anni 4 Mesi fa #25100

  • marcebelgu
  • Avatar di marcebelgu
  • Offline
  • Senior Member
  • Senior Member
  • Messaggi: 179
  • Ringraziamenti ricevuti 97
Labview ha un linguaggio grafico chiamato G per l'elaborazione dei segnali (digital signal processing).

Ma in generale intendiamo con linguaggio ad oggetti come istanze di classi, cioè non procedurale come ad esempio il C++, Java, C#.

Cioè esiste un EasyLanguage ad oggetti cioè a classi.

www.tradestation.com/education/events/live-webcasts/easylanguage/implementing-objects-in-easylanguage

Accedi o ✅Crea un account per partecipare alla conversazione.

codice da sistemare 7 Anni 4 Mesi fa #25101

  • w4rri0r
  • Avatar di w4rri0r Autore della discussione
  • Offline
  • Junior Member
  • Junior Member
  • Messaggi: 81
  • Ringraziamenti ricevuti 19
ok, come memorizzare il vaore della prima cnadela ho bisogno del max e del min

Accedi o ✅Crea un account per partecipare alla conversazione.

codice da sistemare 7 Anni 4 Mesi fa #25102

  • marcebelgu
  • Avatar di marcebelgu
  • Offline
  • Senior Member
  • Senior Member
  • Messaggi: 179
  • Ringraziamenti ricevuti 97
Prima barra della sessione? Oppure prima barra ad 1 minuto cioè alle 9.31?
if Time = 0931 then begin

FirstBarHi = H;
FirstBarLow = L;

end;

Accedi o ✅Crea un account per partecipare alla conversazione.

codice da sistemare 7 Anni 4 Mesi fa #25105

  • w4rri0r
  • Avatar di w4rri0r Autore della discussione
  • Offline
  • Junior Member
  • Junior Member
  • Messaggi: 81
  • Ringraziamenti ricevuti 19
@Marce
if Time = 0931 then begin

FirstBarHi = H;
FirstBarLow = L;

end;

prima barra della sessione (poi il time frame diventa relativo)

il codice che mi segnali era già inserito nel programma che ho postato sopra. Non funziona.
Mi restituisce quanto postato nello screenshot

...boh...se trovo una soluzione la posto

grazie

Accedi o ✅Crea un account per partecipare alla conversazione.

codice da sistemare 7 Anni 4 Mesi fa #25106

  • marcebelgu
  • Avatar di marcebelgu
  • Offline
  • Senior Member
  • Senior Member
  • Messaggi: 179
  • Ringraziamenti ricevuti 97
Questo succede perche' assegni i due valori ad ogni barra senza condizioni nelle prime righe dello script:
MP = Marketposition;
ATR = ( ATRLenght );
FirstBarHi = High; 
FirstBarLo = Low;

vengono assegnati ad ogni barra. Quindi si riaggiornano.

Invece come ho accennato devi assegnare i due valori solo con una condizione precisa.

Pulisci il codice e vedrai che funziona.

Accedi o ✅Crea un account per partecipare alla conversazione.

  • Pagina:
  • 1
  • 2

Copyright© 2020 QTLab® - Quantitative Trading Lab SA - Tutti i diritti sono riservati.
Bellinzona (Svizzera), E-Mail: info@qtlab.ch


Questo sito Web non è rivolto a persone giuridiche o fisiche appartenenti a giurisdizioni in cui, in virtù della nazionalità, della tipologia di persona, del proprio domicilio o residenza, della sede sociale o per qualsiasi altro motivo, l’accesso allo stesso, la relativa consultazione, la disponibilità, la pubblicazione, come pure la presentazione di servizi finanziari o la commercializzazione di determinati prodotti finanziari dovesse essere vietata o soggetta a restrizioni. Alle persone cui si applicano tali restrizioni è conseguentemente vietato accedere a questo sito internet. Le informazioni e le opinioni contenute nelle pagine del sito internet e nel materiale in esso contenuto non costituiscono in nessun caso un invito, un’offerta, una raccomandazione o una sollecitazione di acquisto o di vendita, una richiesta o una sottoscrizione di titoli o strumenti finanziari, prodotti o servizi finanziari o d’investimento, né un’esortazione ad effettuare transazioni di alcun genere. Il contenuto del sito internet è stato allestito con la maggiore cura e diligenza possibile. Tuttavia non si fornisce alcuna garanzia circa la correttezza, l’esattezza, la completezza, l’affidabilità o l’attualità dei contenuti proposti. I dati storici relativi ai rendimenti e agli scenari sui mercati finanziari, le prestazioni passate, effettive o indicate da test storici o strategie, non sono garanzia di analoghi risultati futuri. Facendo trading si possono sostenere perdite superiori al proprio investimento iniziale: non si dovrebbe investire o rischiare denari che non si si può permettere di perdere.Per ulteriori dettagli, si prega di leggere le "Condizioni di Utilizzo" nel menù verticale in alto a sinistra. In nessuna circostanza – ivi compresa la negligenza – la nostra società può essere considerata responsabile per perdite e/o danni di qualsiasi natura – sia che si tratti di danni diretti, indiretti oppure consequenziali – derivanti dall’accesso agli elementi di questo sito internet o dal loro utilizzo (o dall’impossibilità di accedere al sito internet stesso e di utilizzarne gli elementi) o da link che portano a siti internet di terzi. Noi non monitoriamo le pagine collegate al sito internet mediante link e decliniamo pertanto qualsiasi responsabilità per i relativi contenuti e per le eventuali prestazioni ivi offerte. La totalità dei contenuti presenti nel sito internet è tutelata dal diritto d’autore. Senza previo consenso scritto da parte nostra non è pertanto consentito riprodurre (anche parzialmente), trasmettere (né per via elettronica né in altro modo), modificare, stabilire link o utilizzare il sito internet per qualsivoglia finalità pubblica o commerciale.Qualsiasi controversia riguardante l’utilizzo del sito internet è soggetta al diritto svizzero, che disciplina in maniera esclusiva l’interpretazione, l’applicazione e gli effetti di tutte le condizioni sopra elencate. Il foro di Bellinzona è esclusivamente competente in merito a qualsiasi disputa o contestazione che dovesse sorgere in merito al presente sito internet e al suo utilizzo. Accedendo e continuando nella lettura dei contenuti di questo sito Web dichiari di aver letto, compreso e accettato le sopracitate informazioni legali. Accedendo e continuando nella lettura dei contenuti di questo sito Web dichiari di aver letto, compreso e accettato le sopracitate informazioni legali. 
The material on this website is for information purposes only. Any reference on this Web site to QTLab, the authors, and its affiliated companies should not be construed as an offer or solicitation, directed to residents in jurisdictions where QTLab, by and through any of its affiliates, is not registered to do business. No investment advice or solicitation to buy or sell securities is given or in any manner endorsed by QTLab or any of its affiliates. Charts created using TradeStation. ©TradeStation Technologies, Inc. All rights reserved. No investment or trading advice, recommendation or opinions is being given or intended. Past performance, whether actual or indicated by historical tests of strategies, is no guarantee of future performance or success. There is a possibility that you may sustain a loss greater than your entire investment; therefore, you should not invest or risk money that you cannot afford to lose. For further details please read the "Condizioni di Utilizzo" to see the full set of terms and conditions.