Buenas a todos:
Llevo varios días intentando insertar el código Piquemouche que sale en el manual de Prorealtime y no me funciona de ninguna de las maneras posibles.
Alguien me podría facilitar un código Piquemouche que lo haya probado y que le este funcionando bien.
Yo lo he intentado de todas las formas, pero no soy capaz de que funcione en mis Sistemas de Trading.
Muchas Gracias a todos los que me leáis y que me puedan ayudar.
Siempre el curioso (¡yo! :)) aquí está el código de Piquemouche.
Albert0769, ¿por favor confirme que ha agregado condiciones de entrada y salida al código a continuación?
//This code must be integrated with your own entry and exit conditions.
//***********Code to insert at the beginning of the trading system**********//
ONCE OrderSize = 1
ONCE BadTrades = 0
ONCE ExitIndex = -2
// Initial position size of 1.
//*********************//
//***********Code to insert just after closing a position**********//
ExitIndex = BarIndex
//***********Code to insert at the end of the trading system**********//
IF Barindex = ExitIndex + 1 THEN
ExitIndex = 0
IF PositionPerf(1) < 0 THEN
BadTrades = BadTrades + 1
IF BadTrades < 3 THEN
// If the last trade was losing and there are less than 3 successive losses,
// add one to OrderSize.
OrderSize = OrderSize + 1
ELSIF BadTrades MOD 3 = 0 THEN
// If the last position was losing and there are more than 3 consecutive losses,
// double OrderSize.
OrderSize = OrderSize * 2
ENDIF
ELSIF PositionPerf(1) >= 0 THEN
// If the previous trade was winning, reset OrderSize to 1.
OrderSize = 1
BadTrades = 0
ENDIF
ENDIF
//*********************//
// The position size must be determined depending on the variable OrderSize in the entire
code.
Hola GraHal:
He agregado el código según yo entiendo que se debe de agregar y NO hay manera de que me funcione correctamente, hace cosas muy raras y no entiendo nada de nada.
GraHal, te paso el código para que por favor revises si lo he agregado bien, y ya de paso si lo quieres probar, pues mejor que mejor.
Ya me dirás que tal todo.
Muchas Gracias por tu tempo.
DEFPARAM PRELOADBARS = 10000
DEFPARAM CUMULATEORDERS = False
ONCE ORDERSIZE = 1
ONCE BADTRADES = 0
ONCE EXITINDEX = -2
Period = 45
inner = 2*weightedaverage[round(Period/2)](CLOSE)-weightedaverage[Period](CLOSE)
MMH = weightedaverage[round(sqrt(Period))](inner)
Period1 = 220
inner1 = 2*weightedaverage[round(Period1/2)](CLOSE)-weightedaverage[Period1](CLOSE)
MMH1 = weightedaverage[round(sqrt(Period1))](inner1)
M = 60
MM = 50
IF MMH[M] CROSSES OVER MMH1[M] AND (CLOSE - CLOSE[M]) > MM AND MMH > MMH1 THEN
BAROVER = 1
ENDIF
IF BAROVER = 1 AND MMH CROSSES UNDER MMH1 THEN
REST = MMH
BAROVER = 0
ENDIF
IF MMH[M] CROSSES UNDER MMH1[M] AND (CLOSE[M] - CLOSE) > MM AND MMH < MMH1 THEN
BARUNDER = 1
ENDIF
IF BARUNDER = 1 AND MMH CROSSES OVER MMH1 THEN
REST = MMH
BARUNDER = 0
ENDIF
IF MMH[0] CROSSES OVER MMH1[0] THEN
RES = MMH
BAROVER1 = 1
ENDIF
IF BAROVER1 = 1 AND MMH CROSSES UNDER MMH1 AND MMH - RES >= 100 THEN
REST = MMH
BAROVER1 = 0
ENDIF
IF MMH[0] CROSSES UNDER MMH1[0] THEN
RES1 = MMH
BARUNDER1 = 1
ENDIF
IF BARUNDER1 = 1 AND MMH CROSSES OVER MMH1 AND RES1 - MMH >= 100 THEN
REST = MMH
BARUNDER1 = 0
ENDIF
IF REST > REST[2] AND REST < MMH THEN
BUY ORDERSIZE CONTRACTS AT MARKET
EXITINDEX = BARINDEX
ENDIF
IF REST < REST[2] AND REST > MMH THEN
SELLSHORT ORDERSIZE CONTRACTS AT MARKET
EXITINDEX = BARINDEX
ENDIF
IF REST <> REST[1] THEN
STARTBARCOM = BARINDEX
ENDIF
BARCOMPRAS = BARINDEX - STARTBARCOM
CC = 9
IF BARCOMPRAS <= CC AND MMH CROSSES OVER REST THEN
BUY ORDERSIZE CONTRACTS AT MARKET
EXITINDEX = BARINDEX
ENDIF
IF BARCOMPRAS <= CC AND MMH CROSSES UNDER REST THEN
SELLSHORT ORDERSIZE CONTRACTS AT MARKET
EXITINDEX = BARINDEX
ENDIF
IF BARCOMPRAS > CC AND MMH CROSSES OVER REST AND CLOSE > MMH THEN
EXITSHORT ORDERSIZE CONTRACTS AT MARKET
EXITINDEX = BARINDEX
ENDIF
IF BARCOMPRAS > CC AND MMH CROSSES UNDER REST AND CLOSE < MMH THEN
SELL ORDERSIZE CONTRACTS AT MARKET
EXITINDEX = BARINDEX
ENDIF
IF BARINDEX = EXITINDEX + 1 THEN
EXITINDEX = 0
IF POSITIONPERF(1) < 0 THEN
BADTRADES = BADTRADES + 1
IF BADTRADES < 3 THEN
ORDERSIZE = ORDERSIZE + 1
ELSIF BADTRADES MOD 3 = 0 THEN
ORDERSIZE = ORDERSIZE * 2
ENDIF
ELSIF POSITIONPERF(1) >= 0 THEN
ORDERSIZE = 1
BADTRADES = 0
ENDIF
ENDIF
/////////////////////
//// Stops y objetivos:
SET STOP pLOSS 300
////SET TARGET pPROFIT 200
//////GRAPH
Al realizar una prueba retrospectiva del código anterior, se adjunta lo que obtengo en DJI 1 Hour TF con una extensión de 10 000 barras = 5.
Hola GraHal:
Ves lo que hace??????
No tiene lógica, no duplica bien los contratos según el sistema de Piquemouche original.
Pruébalo en el DJ, pero con TF de 1 min. que es con el que yo he diseñado esta estrategia.
A ver si logras averiguar donde esta el fallo de este sistema.
Gracias por tu interés y Un Saludo,
Pruebe a continuación con las líneas 108 y 109…
//ELSIF BADTRADES MOD 3 = 0 THEN
//ORDERSIZE = ORDERSIZE * 2