Diferencia entre código MQL y EL
3 respuestas
eastpeace
hace 7 años #115293
Versión:SQ 3.8.1 (¡Qué periodo tan duro! SQ3 sin actualización fija, y el lanzamiento de SQ4 sin calendario).
Volviendo a este tema, me parece que hay poca diferencia entre mql y el código traducido. ¿Cuál es exacta?
Pseudocódigo de SQ
==================================================================== == Condiciones de entrada ==================================================================== LongEntryCondition = ((WMA(145) cruza por debajo de SMA(3)) y (Low(10) > Lowest(53)) ShortEntryCondition = ((WMA(145) Crosses Above SMA(3)) And (High(10) < Highest(53)))
Código EL
if(MaxTradesPerDay = 0 or EntriesToday(Date) Average(Close,3)[1]) and (WAverage(Close,145)[0] Lowest(Low, 53+0))); if(LongEntryCondition = true) then begin
Código de MT4
// NORMAS DE INSCRIPCIÓN // LARGO: ((WMA(145) cruza por debajo de SMA(3)) y (Mínimo(10) > Mínimo(53))) if(TradeLong) { bool LongEntryCondition = (((iMA(NULL, 0, 145, 0, MODE_LWMA, PRICE_CLOSE, 2) > iMA(NULL, 0, 3, 0, MODE_SMA, PRICE_CLOSE, 2)) && (iMA(NULL, 0, 145, 0, MODE_LWMA, PRICE_CLOSE, 1) getLowest(53, 1)); if(LongEntryCondition == true) { openPosition(1); } }
Bajo[10] en EL significa:
Entonces, el pseudo código, el código, el código mt4: low(10), low[9], low[10]. ¿Son iguales?
eastpeace
hace 7 años #138035
Y la curva de beneficios o línea de equidad en SQ backtest y MC, son muy diferentes.
He subido el archivo str. Por favor, compruébelo. Gracias.
Mark Fric
hace 7 años #138037
Las diferencias en EasyLanguage son correctas, porque en EL la condición se comprueba al final de la barra, mientras que en MT4 se comprueba al principio de la barra.
En cuanto a las diferencias entre SQ y MC, ¿utilizan los mismos datos?
Mark
Arquitecto de StrategyQuant
eastpeace
hace 7 años #138048
NO, los datos son similares, pero de diferente fuente. Tal vez es problema de mi software de backtest.
Pero aún tengo otra pregunta.
La condición de salida corta es la siguiente
-- Salida en corto si PosiciónMercado es Corto { if (Bars Since Entry >= 42) { Cerrar posición a mercado; } if (Lowest(11) Crosses Below WMA(86)) { Cierre la posición en el mercado; } }
el código:
// Regla de salida ShortExitCondition = ((Lowest(Low, 11+1) > WAverage(Close,86)[1]) and (Lowest(Low, 11+0) <= WAverage(Close,86)[0]);
Creo que el código correcto es :
// Regla de salida
LowestValue = Lowest(Low, 11);
ShortExitCondition = (( LowestValue[1] > WAverage(Close,86)[1]) and ( LowestValue <= WAverage(Close,86)[0]);
Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)