Bonjour à tous
Je viens chercher un petit peu d”aide en programmation pour augmenter la taille des positions de 5 en cas de gain et la diminuer de moitié en cas de perte et ainsi de suite.Avec un maximum de 50 contrats en cas de gain.
J’ai essayé de reprendre ce qu”avait fait RAUL avec son intraday dax mais cela ne fonctionne pas…..
J’ai inséré mon essai non concluant….
Si quelqu’un a une idée Merci a vous
DEFPARAM CUMULATEORDERS = FALSE
DEFPARAM FLATBEFORE = 090000
DEFPARAM FLATAFTER = 171500
once Ordersize = 1
N=5
if Ordersize>50 then
Ordersize=50
endif
//Condition 1
//Condition 2
IF TIME > 090000 and Condition 1 and Condition 2 THEN
IF PositionPerf(1) < 0 THEN
OrderSize = OrderSize/2//+1
if ordersize<1 then
ordersize=1
ENDIF
ELSIF PositionPerf(1) > 0 THEN
OrderSize =OrderSize+1
endif
BUY ordersize*n contracts AT MARKET
endif
if TIME > 090000 and Condition 1 and Condition 2 THEN
IF PositionPerf(1) < 0 THEN
OrderSize = OrderSize/2//+1
if ordersize<1 then
ordersize=1
ENDIF
ELSIF PositionPerf(1) > 0 THEN
OrderSize =OrderSize+1
endif
SELLSHORT ordersize*n contracts AT MARKET
ENDIF
SET STOP LOSS 5
SET TARGET PROFIT 9
Apparemment le systeme ne prend pas en compte 50 contrats maximum
Hello, sorry maybe I didn’t understand the problem but maybe you could just use the function “Countofposition”?
IF COUNTOFPOSITION < 50 Then
…..
END IF
Mon premier avis pour t’aider serait de positionner ta condition limitant la positionsize à 50 avant chaque prise de position, car c’est à ce moment là que tu la détermines par ces instructions:
ELSIF PositionPerf(1) > 0 THEN
OrderSize =OrderSize+1
Sinon, tu peux aussi limiter directement la taille des contrats pour chaque ordre à chaque lancement de trade: (exemple pour un short)
SELLSHORT MIN(ordersize*n,50) contracts AT MARKET
Dans ce cas là, l’instruction MIN choisira la valeur minimale entre 50 et ton calcul de lot ‘ordersize*n’. Je pense que ça doit le faire !
Merci à tous
Malheureusement, rien ne fonctionne….j”ai tout essayé avec countofposition de franscesco.
sellshort min de nicolas bloque effectivement à 50 contrats mais ne monte pas en exponentiel les contrats et le diminue encore moins.Pourtant Je pense que la solution n’est pas loin.
je remets ci-dessous l’autotrading de raul en 5mn dax. En le testant on s’aperçoit que le max 54 ne fonctionne pas.Mon principe exponentiel est basé sur celui-ci.
est-ce qu’il est faux ?
Le principe est par contre très bien pensé quel que soit les conditions du bot. Alors merci encore pour votre travail…..
// Definición de los parámetros del código
DEFPARAM CumulateOrders = false // Acumulación de posiciones desactivada
// La posición se cierra a las 17:29 p.m. si no toca ni stop ni take.
DEFPARAM FlatAfter =173000
once ordersize=1
// No se abren nuevas posiciones después de la vela que se cierra a las 09:06
HoraEntradaLimite = 090600
// El análisis de mercado empieza en la vela de 5 minutos que cierra a las 09:05
HoraInicio = 090500
// Órdenes máximas
if Ordersize>54 then
Ordersize=54
endif
// Riesgo, multiplicador de contratos.
n=6
// Condiciones para el analisis.
if Time >= HoraInicio and time <= HoraEntradaLimite then
// Condiciones de entrada de posiciones largas
c1 = open < close-1
IF c1 THEN
IF PositionPerf(1) < 0 THEN
OrderSize = OrderSize/2//+1
if ordersize<1 then
ordersize=1
ENDIF
ELSIF PositionPerf(1) > 0 THEN
OrderSize =OrderSize+2
endif
// Si la primera barra del día de 5 min es positiva, compramos
buy ordersize*n shares at market
endif
// Condiciones de entrada de posiciones cortas
c2= open > close-1
IF c2 THEN
iF PositionPerf(1) < 0 THEN
OrderSize = OrderSize/2//+1
if ordersize<1 then
ordersize=1
ENDIF
ELSIF PositionPerf(1) > 0 THEN
OrderSize =OrderSize+2
ENDIF
// Si la primera barra del día de 5 min es negativa, vendemos
sellshort ordersize*n shares at market
endif
endif
SET STOP ploss 5
SET TARGET pPROFIT 10
Bonjour,
j’ai trouvé cette Formule dans la documentation de PRT
ONCE OrderSize = 1
ONCE ExitIndex = -2
REM On commence avec une position de 1
//*********************//
//*****Code à insérer juste après les instructions liquidant une position*****//
ExitIndex = BarIndex
//***********Code à insérer en fin de système**********//
IF Barindex = ExitIndex + 1 THEN
ExitIndex = 0
IF PositionPerf(1) < 0 THEN
OrderSize = OrderSize * 2
REM Si le dernier trade était perdant, alors on double la taille de la position
ELSIF PositionPerf(1) > 0 THEN
OrderSize = 1
REM Si le dernier trade était gagnant, alors on revient à une position de taille 1
ENDIF
ENDIF
//*********************//
REM La taille de la position doit être déterminée par la variable ordersize pour
l"intégralité du code
Je ne sais pas ou mettre exitindex = barindex
Si quelqu”un a une idée
La diminution de moitié en cas de perte est déjà dans le code, j’ai modifié le reste pour l’augmentation d’un pas de 5 à chaque trade gagnant et inclut la limitation à 50 contrats maximum:
DEFPARAM CUMULATEORDERS = FALSE
DEFPARAM FLATBEFORE = 090000
DEFPARAM FLATAFTER = 171500
once Ordersize = 1
IF TIME > 090000 and Condition 1 and Condition 2 THEN
IF PositionPerf(1) < 0 THEN
OrderSize = OrderSize/2
if ordersize<1 then
ordersize=1
ENDIF
ELSIF PositionPerf(1) > 0 THEN
OrderSize =OrderSize+5
endif
BUY MIN(ordersize,50) contracts AT MARKET
endif
if TIME > 090000 and Condition 1 and Condition 2 THEN
IF PositionPerf(1) < 0 THEN
OrderSize = OrderSize/2
if ordersize<1 then
ordersize=1
ENDIF
ELSIF PositionPerf(1) > 0 THEN
OrderSize =OrderSize+5
endif
SELLSHORT MIN(ordersize,50) contracts AT MARKET
ENDIF
SET STOP LOSS 5
SET TARGET PROFIT 9