Roberto buongiorno:
Approfitto della tua gentilezza e ti pongo 2 quesiti.
Il primo riguarda a quello che ti hanno posto nella data in oggetto e precisamente;
quesito 3) Il sistema entra in posizione di 0,5 (o altro) e a ogni gain incrementa di 0,5 e al primo loss riporta a 0,5. Bene io vorrei invece che ad ogni loss decrementa di 0,5 (o altro) fino a 0, quindi chiude.
Il secondo vorrei il codice di un semplice sistema che entra con RSI < 30 e dopo RSI incrementato di x % stessa cosa per l’uscita con RSI > 70 ma con decremento di x%.
Non so se le cose sono fattibile ma comunque ti ringrazio
Dai un titolo significativo al tuo argomento. Descrivi la tua domanda o l’oggetto nel titolo. Non utilizzare titoli privi di significato come “Aiuto per la codifica”.
Se vuoi fare riferimenti ad un altro post devi includere il link.
Grazie 🙂
New Money Managment
Quello sopra è il link da dove ho trovato una richiesta e precisamente;
Quesito 3) Il sistema entra in posizione di 0,5 e a ogni gain incrementa di 0,5 e al primo loss ritorna a 0,5, questo era la richiesta, ora io chiedo se è possibile avere il codice che invece di tornare a 0,5, decrementa questa quantità fino a 0 e quindi chiude.
Inoltre vorrei sapere se è possibile avere un codice che utilizza RSI per entrare e uscire, ma alla condizione che sul valore di entrata si aggiunga un valore x in %. Esempio se deve entrare a < 30 del RSI il codice deve prevedere 30 più una certa % x.
Grazie
Bastava postare il link, meglio non creare duplicati col rischio di disperdere le risposte tra vari post scollegati. Il titolo l’avevo già variato.
Appena ho un pò di tempo lo guardo.
Sei sempre così gentile che, anche se non puoi rispondere , fa niente.
Rispondo, ma sono rimasto un poò arretrato. Scusami, ma lo farò quanto prima.
Ok, ce l’ho fatta.
Questa è la tua prima richiesta (ho messo che parte da 2 lotti e riduce di 0.5 ogni volta, fino a 0; a quel punto esce):
Once LottiBase = 2
Once Lotti = 0
//
If STRATEGYPROFIT < STRATEGYPROFIT[1] Then
Lotti = Lotti - 0.5
Endif
//
If Lotti = 0 Then
Lotti = LottiBase
SELL AT MARKET
EXITSHORT AT MARKET
Endif
Questo è il codice della tua seconda richiesta:
ONCE RSIentrata = 30 //limite RSI = 30 per entrare
ONCE RSIuscita = 80 //limite RSI = 80 per uscire
ONCE RSIperc = 3 //5% in aggiunta (se metti -5 lo toglie)
MioRSI = Rsi[14](close)
//
// entrata
IF MioRSI < (RSIentrata + (RSIentrata * RSIperc / 100)) AND Not OnMarket THEN
BUY 1 CONTRACT AT MARKET
ENDIF
//
// uscita
IF MioRSI > (RSIuscita + (RSIuscita * RSIperc / 100)) AND OnMarket THEN
SELL AT MARKET
ENDIF
//
//graph MioRSI
//graph (RSIentrata + (RSIentrata * RSIperc / 100))
//graph (RSIuscita + (RSIuscita * RSIperc / 100))
Grazie, come al solito sei molto gentile. Comunque la seconda funziona a meraviglia, il primo invece mi dei risultati strani, di seguito il codice con cui ho provato tf un ora sottostante spot oro e in allegato report.
Di nuovo grazie
// Stop e target: Inserisci qui i tuoi stop di protezione e profit target
// STOCK SIMPLE CODE
// http://www.doctrading.fr
DEFPARAM CUMULATEORDERS = FALSE
defparam flatbefore=080000
defparam flatafter=230000
Once LottiBase = 1
Once Lotti = 1
//
If STRATEGYPROFIT < STRATEGYPROFIT[1] Then
Lotti = Lotti – 1
Endif
//
If Lotti = 0 Then
Lotti = LottiBase
SELL AT MARKET
EXITSHORT AT MARKET
Endif
CONSECNOCYCLE = 1
// DEFINITION DE LA TENDANCE
MMlongue = average[200](close)
MMmoyenne = average[mm](close)
MMcourte = average[cc](close)
// Optimiser les variables mm et cc de 1 à 10
// ACHAT
c1a = close > MMlongue and MMlongue > MMlongue[1]
c2a = MMcourte crosses over MMmoyenne
IF c1a and c2a and LOTTI THEN
BUY LOTTI shares AT MARKET
ENDIF
// SORTIE ACHAT
c1v = MMcourte crosses under MMmoyenne
IF c1v THEN
SELL AT MARKET
ENDIF
//vendita scoperto
c3a = close < MMlongue and MMlongue < MMlongue[1]
c4a = MMcourte crosses under MMmoyenne
IF c3a and c4a and LOTTI THEN
SELLSHORT LOTTI shares AT MARKET
ENDIF
c2v = MMcourte crosses over MMmoyenne
IF c2v THEN
EXITSHORT AT MARKET
ENDIF
SET STOP %LOSS l
//************************************************************************
trailingstart = 20 //Questo numero puoi cambiarlo a tuo piacimento
trailingstep = 5//Questo numero puoi cambiarlo a tuo piacimento
IF NOT ONMARKET THEN
newSL=0
ENDIF
IF LONGONMARKET THEN
IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THEN
newSL = tradeprice(1)+trailingstep*pipsize
ENDIF
IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN
newSL = newSL+trailingstep*pipsize
ENDIF
ENDIF
IF SHORTONMARKET THEN
IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN
newSL = tradeprice(1)-trailingstep*pipsize
ENDIF
IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN
newSL = newSL-trailingstep*pipsize
ENDIF
ENDIF
IF newSL>0 THEN
SELL AT newSL STOP
EXITSHORT AT newSL STOP
ENDIF
Credo di avere interpretato male la tua richiesta n. 1, puoi dettagliarla meglio?
Vuoi diminuire i lotti ad ogni perdita e quando arriva a 0 interrompoere la strategia?
Esatto , per la precisione ; ad ogni gain incremento di un lotto e ad ogni loss decremento di un lotto fino ad azzerarsi e uscire dalla strategia.
Grazie
Sostituisci le tre righe 17-18-19:
Lotti = LottiBase
SELL AT MARKET
EXITSHORT AT MARKET
con questa:
QUIT
Scusami, ho visto bene il codice del RSI e se ho capito entra a mercato al verificarsi della condizione:
IF MioRSI < (RSIentrata + (RSIentrata * RSIperc / 100)) AND Not OnMarket THEN
BUY 1 CONTRACT AT MARKET
ENDIF
Io per l’esattezza avrei voluta l’entrata alle condizioni RSI = 30 e RSI = 30 – %, quindi due condizioni, non so se è logico.
Grazie
30 è il valore dell’entrata
Quindi vuoi entrare a 30 ed uscire a 30 + N%? Non avevo capito bene il tuo primo post.
Va bene, eccolo:
ONCE RSIentrata = 30
ONCE RSIperc = 10 //10% in aggiunta (se metti -10 la toglie)
ONCE RSIuscita = RSIentrata + (RSIentrata * RSIperc / 100)
MioRSI = Rsi[14](close)
//
// entrata
IF MioRSI < RSIentrata AND Not OnMarket THEN
BUY 1 CONTRACT AT MARKET
ENDIF
//
// uscita
IF MioRSI >= RSIuscita AND OnMarket THEN
SELL AT MARKET
ENDIF
//
//graph MioRSI
//graph RSIentrata
//graph RSIuscita