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

 All Forums
 Problemi con "Insider 3000 versione 3"
 Problemi col linguaggio di programmazione
 BarSince
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

VpV
Utente Medio

155 Posts

Posted - 27 April 2016 :  01:03:12  Show Profile  Reply with Quote
Salve,

in merito all'oggetto, volevo sapere se l'utilizzo dello stesso per inibire ad un TS l'operatività per qualche giorno, sia una funzione corretta oppure no.

Nello specifico intendo vietare ad un TS di operare per qualche giorno a seguito di un segnale di chiusura normale o di stoploss verificato.
L'aiuto in locale non mi ha fornito ulteriori spunti e quello sul sito non esiste più, la pagina è quella di Over.
Ho guardato anche su Over ma per adesso non trovo una descrizione delle funzioni in generale.

Se non ho capito male BarSince mi dovrebbe fornire il numero di periodi in cui una condizione risulta verificata, vera.

Grazie.

SupportoTecnico
Forum Admin

1261 Posts

Posted - 27 April 2016 :  11:18:55  Show Profile  Reply with Quote
Teoricamente si, BarSince dovrebbe essere la funzione giusta, anche se io sinceramente opterei per un controllo più manuale della cosa, e cioè creerei una variabile comune a tutti i moduli (cioè dichiarata nel modulo comune), per tenere conto del conteggio dei giorni, e poi inserirei la mia condizione sia nel modulo di entrata long che entrata short:

If (condizione di incremento giorni) Then
VariabileComune = VariabileComune + 1
EndIf

If (VariabileComune < NumeroGiorni) Then
Return False
EndIf

VariabileComune = 0


Le due If vanno messe ovviamente all'inizio della funzione Main dei rispettivi moduli. Se la condizione è superata è necessario azzerare la variabile comune.
Go to Top of Page

VpV
Utente Medio

155 Posts

Posted - 27 April 2016 :  18:28:36  Show Profile  Reply with Quote
Buonasera,

allora ho provato più volte la funzione BarSince per evitare ulteriore righe di programma, ma allo stato attuale, implementandola nel modulo di ingresso, ho ottenuto solo strani risultati, direi poco logici nel funzionamento.

Allora ho fatto quanto scritto da voi, ovvero ho creato una variabile nel modulo comune e poi ho proceduto come segue (esempio) :

MOD.Comune
Dim VariabileComune as numeric

MOD.EntraInVendita

Function main ()

Dim a as numeric
Dim b as numeric

if close > stoploss then
VariabileComune = VariabileComune + 1
endif

if VariabileComune < 2 then
return false
endif

VariabileComune = 0

stoploss=close+close*0,03

return a < b

endfunction

Ovviamente è solo un esempio per farvi capire, l'algortimo del TS è altra cosa.
Ho provato a spostare tutto, dagli IF allo stoploss, sopra, sotto e altro ancora ma quello che ottengo è niente ovvero il TS non produce segnali di vendita.

A parte la logica difficile da capire, ovvero come funziona l'interprete, un pò come avviene per lo stop che occorre dichiararlo nel modulo di ingresso per poi utilizzarlo in quello in uscita, qui posso solo ipotizzare il fatto che il problema si trovi nello stoploss dello stesso modulo e che magari non venga letto.

In questo specifico caso non riesco a capire "come ragiona" l'interprete.

Go to Top of Page

SupportoTecnico
Forum Admin

1261 Posts

Posted - 27 April 2016 :  21:53:12  Show Profile  Reply with Quote
Probabilmente bisogna gestire meglio l'azzeramento della VariabileComune. Forse va fatto solo quando la funzione Main ritorna True e quindi entra o long o short.
Insomma dovresti scrivere una cosa del tipo:

dim bSignal as Boolean
bSignal = (a < b)

if (bSignal = True) then
VariabileComune = 0
EndIf

Return bSignal



La logica con cui l'interprete esegue i vari moduli è:

Se la posizione è "Out":
Cerca ingresso Long
Se non trovato ingresso long allora cerca Ingresso Short

Se la posizione è "Long"
Cerca uscita long
Cerca segnale Short

Se la posizione è "Short"
Cerca uscita short
Cerca segnale Long



Detto questo ti invito a utilizzare Overcharts per mettere a punto il tuo trading system.
Il motivo è che tra le altre cose Overcharts ti mette a disposizione un vero debugger.
In pratica, contrariamente ad Insider 3000, Developer di Overcharts ti consente di eseguire passo passo il tuo trading system esattamente come verrà poi eseguito nella realtà, con la possibilità di controllare il valore delle varie variabili ecc..
Insomma un aiuto in più non indifferente. Con Insider 3000 invece puoi eseguire il debug di un solo modulo per volta, con tutte le limitazioni del caso.
Go to Top of Page

VpV
Utente Medio

155 Posts

Posted - 02 May 2016 :  16:34:13  Show Profile  Reply with Quote
Allora, allo stato attuale ancora non sono riuscito a creare la giusta procedura.

1)Ho provato nuovamente BarSince ma ho notato che lo stesso produce sempre la somma dei periodi da dove è partito l'evento. Ho provato ad azzerare ma non ho ottenuto risultati, nel senso che mi dà errore.

2)Ho provato con la vostra contaperiodi, VaribileComune + 1 ecc...ma il TS non entra proprio in posizione.

3)Ho provato con un ciclo for...next, dicendogli in pratica "se si verifica questo evento, rimani fermo x giorni"..ma ho ottenuto lo stesso risultato del caso 2.

Credo che il problema sia che una volta che scatta la condizione, il TS lo legge "per sempre"; se quindi ho uno stop esplicito, devo trovare il modo di scrivere :

-se STOP vero allora aspetta x periodi-

-se x > y allora procedi-

-se x > y allora azzera tutto-

Non posso farla semplice perchè le uscite dai vari moduli, come gli ingressi, hanno molteplici casistiche e variabili.

Spero di essere stato chiaro.

Grazie
Go to Top of Page

VpV
Utente Medio

155 Posts

Posted - 02 May 2016 :  17:18:30  Show Profile  Reply with Quote
Forse ho risolto con CurrentBar.

Vi faccioa sapere.
Go to Top of Page

SupportoTecnico
Forum Admin

1261 Posts

Posted - 02 May 2016 :  20:03:41  Show Profile  Reply with Quote
L'uso di CurrentBar potrebbe essere una buona idea!
Memorizzando la barra al momento giusto e poi andando di differenza tra CurrentBar e la barra memorizzata potresti di fatto risolvere.
Go to Top of Page

VpV
Utente Medio

155 Posts

Posted - 03 May 2016 :  14:33:03  Show Profile  Reply with Quote
Confermo, problema risolto con CurrentBar. Processo inverso per quanto riguarda lo stop che viene indicato, come valore, nel modulo acquisto/vendita.

Qui è il modulo "chiudi posizione" che comanda e quindi il modulo
acquisto/vendita richiamerà dal primo il valore della barra e la condizione verificata.

Risolto questo problema, volevo sapere la differenza tra le funzioni "DbValue" e "DbExp"; io uso solo DbValue ma ho letto che è una funzione obsoleta e che DbExp è un sostituto.
Visto che di calcoli ne faccio tanti e quindi la velocità non è mai troppa, volevo sapere se potevo sostituire tutte le funzioni DbValue con DbExp e quindi se vi è certezza che nei risultati non cambierà nulla.

Grazie
Go to Top of Page

SupportoTecnico
Forum Admin

1261 Posts

Posted - 03 May 2016 :  16:05:09  Show Profile  Reply with Quote
L'utilizzo di DbExp è assolutamente consigliato, primo per la versatilità rispetto a DbValue e poi per la velocità.
In Overcharts, per esempio, DbValue non esiste più.
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