Diferença entre os códigos MQL e EL!
3 respostas
Eastpeace
7 anos atrás #115293
Versão:SQ 3.8.1 (Que período difícil! SQ3 sem atualização fixa e lançamento do SQ4 sem previsão)
Voltando a este tópico, acho que há pouca diferença entre o código traduzido do mql e do el. Qual deles é o exato?
Pseudocódigo do SQ
==================================================================== == Condições de entrada ==================================================================== LongEntryCondition = ((WMA(145) cruza abaixo da SMA(3)) e (Low(10) > Lowest(53))) ShortEntryCondition = ((WMA(145) cruza acima da SMA(3)) e (High(10) < Highest(53)))
Código EL
if(MaxTradesPerDay = 0 or EntriesToday(Date) Average(Close,3)[1]) e (WAverage(Close,145)[0] Lowest(Low, 53+0))); if(LongEntryCondition = true) then begin
Código do MT4
// REGRAS DE ENTRADA // LONGA: ((WMA(145) cruza abaixo da SMA(3)) e (mínima(10) > mínima(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); } }
Low[10] em EL significa:
Portanto, o pseudocódigo, o código el, o código mt4: low(10), low[9], low[10]. Eles são iguais?
Eastpeace
7 anos atrás #138035
E a curva de lucro ou a linha de patrimônio no backtest do SQ e no MC são muito diferentes.
Fiz o upload do arquivo str, por favor, verifique isso. Obrigado!
Marca Fric
7 anos atrás #138037
As diferenças no EasyLanguage estão corretas, porque no EL a condição é verificada no final da barra, enquanto no MT4 ela é testada no início da barra.
Quanto às diferenças entre SQ e MC, você usa os mesmos dados?
Marcar
EstratégiaQuant arquiteto
Eastpeace
7 anos atrás #138048
NÃO, os dados são semelhantes, mas de fontes diferentes. Talvez seja um problema do meu software de backtest.
Mas ainda tenho outra pergunta.
A condição de saída curta é a seguinte
-- Saída curta se MarketPosition for Short { se (Barras desde a entrada >= 42) { Fechar a posição no mercado; } se (a mínima(11) cruzar abaixo da WMA(86)) { Fechar a posição no mercado; } }
código el:
// Regra de saída ShortExitCondition = ((Lowest(Low, 11+1) > WAverage(Close,86)[1]) e (Lowest(Low, 11+0) <= WAverage(Close,86)[0]);
Acho que o código correto é :
// Regra de saída
LowestValue = Lowest(Low, 11);
ShortExitCondition = (( LowestValue[1] > WAverage(Close,86)[1]) e ( LowestValue <= WAverage(Close,86)[0]);
Visualizando 3 respostas - 1 até 3 (de um total de 3)