Resposta

StrategyQuant Estratégias não lucrativas ao codificá-las em C

8 respostas

Charles

Cliente, bbp_participante, comunidade, 0 respostas.

Perfil da visita

5 anos atrás #237334

Recodifiquei as estratégias geradas pelo strategyquant no Zorro Trader, que usa C leve, e os resultados são da noite para o dia.

O SQ X mostra um lucro enorme, enquanto o Zorro está mostrando uma perda. A quantidade de negociações não chega nem perto e os dois sistemas estão usando os mesmos dados, pois exportei as velas diretamente da minha corretora por meio do Zorro.

A estratégia foi encontrada usando barras de 15 minutos do EURUSD e, quando codifiquei no Zorro para barras de 15 minutos, há 29.568 negociações contra 3902 do SQ. Mesmo que eu mude o Zorro para usar barras de 1H, ele ainda tem o dobro de negociações... resultando em 7154 negociações. Tanto o Zorro 15 min quanto o 60 min produzem retornos anuais (perdas) de -14% e -15%, respectivamente, enquanto o SQ X diz que todos os anos foram de ganhos e com enormes fatores de lucro.

Posso entender pequenas diferenças usando os mesmos dados, mas essas diferenças são enormes. A SQ está dizendo que é um sistema vencedor ano após ano, enquanto a Zorro está dizendo que está perdendo -14% por ano.

Por favor, informe.

 

 

Anexos:
Você deve ser logado para ver os arquivos anexos.

0

Charles

Cliente, bbp_participante, comunidade, 0 respostas.

Perfil da visita

5 anos atrás #237338


//--------------------------------------------------------------------
// Pseudocódigo-fonte da estratégia 0.850460
//
// Gerada pelo StrategyQuant X Build 115 para MetaTrader
// em 12/12/2018 01:03
//--------------------------------------------------------------------

//--------------------------------------------------------------------
// Parâmetros da estratégia
//--------------------------------------------------------------------
int MagicNumber = 11111;

Gráfico principal = Símbolo atual / TF atual

//--------------------------------------------------------------------
// Regra de negociação: Sinais de negociação (na abertura da barra)
//--------------------------------------------------------------------
LongEntrySignal = (CCI(Gráfico principal,30)[2] é maior que 25,0);

ShortEntrySignal = (CCI (gráfico principal, 30)[2] é menor que -25)
;

LongExitSignal = ((DeMarker(Gráfico principal,40) muda de direção para cima)
   e (Williams % R(Gráfico principal,22) > -10,0));

ShortExitSignal = ((DeMarker(Gráfico principal,40) muda a direção para baixo)
   e (Williams % R(Gráfico principal,22) < -90));

//--------------------------------------------------------------------
// Regra de negociação: Entrada longa (na abertura da barra)
//--------------------------------------------------------------------
se LongEntrySignal
{
    // Ação #1
    Abrir ordem longa no mercado;
        Stop Loss = 2,3 * ATR(20);
        Profit meta = 2,9 * ATR(20);

        Sair após 18 barras;

}

//--------------------------------------------------------------------
// Regra de negociação: Entrada curta (na abertura da barra)
//--------------------------------------------------------------------
Se (ShortEntrySignal
   and Not LongEntrySignal)
{
    // Ação #1
    Abrir ordem curta no mercado;
        Stop Loss = 2,3 * ATR(20);
        Profit meta = 2,9 * ATR(20);

        Sair após 18 barras;

}

//--------------------------------------------------------------------
// Regra de negociação: Saída longa (na abertura da barra)
//--------------------------------------------------------------------
se ((LongExitSignal
   e não for LongEntrySignal)
   e (MarketPosition("Any", MagicNumber, "") for Long))
{
    // Ação #1
    Fechar a posição total para Symbol = Any e Magic Number = MagicNumber;

}

//--------------------------------------------------------------------
// Regra de negociação: Saída curta (na abertura da barra)
//--------------------------------------------------------------------
se ((ShortExitSignal
   e não for ShortEntrySignal)
   e (MarketPosition("Any", MagicNumber, "") for Short))
{
    // Ação #1
    Fechar a posição total para Symbol = Any e Magic Number = MagicNumber;

}

0

mabi

Cliente, bbp_participant, comunidade, 261 respostas.

Perfil da visita

5 anos atrás #237340

Gostaria que isso fosse tão fácil, mas não é. Tentei fazer isso usando o SQ3 e o Ninjatrader, mas também não funcionou por vários motivos. Portanto, fique com o MT4 até que eles adicionem suporte ao Zorry ou você só perderá seu tempo.

0

Charles

Cliente, bbp_participante, comunidade, 0 respostas.

Perfil da visita

5 anos atrás #237341

Recodifiquei muitas estratégias nos últimos dias e todas elas falharam.

O Zorro é bastante simples na codificação, pois a maioria das porcas e parafusos é feita para você. Portanto, não acho que seja um problema com o Zorro. Estou inclinado a pensar que o StrategyQuant não está gerando sinais falsos ou é impreciso.

Gostaria muito de receber feedback dos desenvolvedores e trabalhar para resolver isso!

0

Charles

Cliente, bbp_participante, comunidade, 0 respostas.

Perfil da visita

5 anos atrás #237342

Acabei de passar a última hora recodificando uma estratégia diferente que tem regras muito simples e ela também falha.


//--------------------------------------------------------------------
// Pseudocódigo-fonte da estratégia 0.899785
//
// Gerada pelo StrategyQuant X Build 115 para MetaTrader
// em 14/12/2018 01:23
//--------------------------------------------------------------------

//--------------------------------------------------------------------
// Parâmetros da estratégia
//--------------------------------------------------------------------
int MagicNumber = 11111;

Gráfico principal = Símbolo atual / TF atual

//--------------------------------------------------------------------
// Regra de negociação: Sinais de negociação (na abertura da barra)
//--------------------------------------------------------------------
LongEntrySignal = (ADX DI Minus(Gráfico principal)[1] está subindo);

ShortEntrySignal = (ADX DI Minus(Gráfico principal)[1] está caindo);

LongExitSignal = false;

ShortExitSignal = falso;

//--------------------------------------------------------------------
// Regra de negociação: Entrada longa (na abertura da barra)
//--------------------------------------------------------------------
se LongEntrySignal
{
    // Ação #1
    Abrir ordem Longa em (Close(Main chart)[3] + (2 * ATR(Main chart,40)[1])) Stop;
        Ordem válida por 1 barra;
        Stop Loss = 75,0 pips;
        Meta Profit = 195,0 pips;

        Mover SL para BE = 135,0 pips;

        Sair após 7 barras;

}

//--------------------------------------------------------------------
// Regra de negociação: Entrada curta (na abertura da barra)
//--------------------------------------------------------------------
Se (ShortEntrySignal
   and Not LongEntrySignal)
{
    // Ação #1
    Abrir ordem curta em (Close(Main chart)[3] - (2 * ATR(Main chart,40)[1])) Stop;
        Ordem válida por 1 barra;
        Stop Loss = 75 pips;
        Profit target = 195 pips;

        Mover SL para BE = 135 pips;

        Sair após 7 barras;

}

//--------------------------------------------------------------------
// Regra de negociação: Saída longa (na abertura da barra)
//--------------------------------------------------------------------
se ((LongExitSignal
   e não for LongEntrySignal)
   e (MarketPosition("Any", MagicNumber, "") for Long))
{
    // Ação #1
    Fechar a posição total para Symbol = Any e Magic Number = MagicNumber;

}

//--------------------------------------------------------------------
// Regra de negociação: Saída curta (na abertura da barra)
//--------------------------------------------------------------------
se ((ShortExitSignal
   e não for ShortEntrySignal)
   e (MarketPosition("Any", MagicNumber, "") for Short))
{
    // Ação #1
    Fechar a posição total para Symbol = Any e Magic Number = MagicNumber;

}

0

Charles

Cliente, bbp_participante, comunidade, 0 respostas.

Perfil da visita

5 anos atrás #237343

Aqui está o código Zorro para quem quiser experimentar, o código SQ está acima. A estratégia SQ indica Sharpe de 4,12, fator Profit de 3,82. Não há anos perdidos. No entanto, quando eu executo no Zorro, ela tem um retorno anual de -18% PF 0,02 e um Sharpe de -0,69.

 


//--------------------------------------------------------------------
// Código-fonte da estratégia do Zorro 0.899785
//
//--------------------------------------------------------------------

function run()
{
StartDate = 2010;
EndDate = 2015; // período fixo de simulação 2010-2015

BarPeriod = 15; //
LookBack = 200;
MaxLong = MaxShort = 1;

//--------------------------------------------------------------------
// Regra de negociação: Sinais de negociação (na abertura da barra)
//--------------------------------------------------------------------

/*
ADX(int TimePeriod): var
Índice de movimento direcional médio. Média móvel do indicador DX (veja abaixo). Usa a série de preços do ativo atual. Não é compatível com o TimeFrame. Os valores retornados variam de 0 a 100.
*/

vars close = série ( priceClose() );
vars mDI = series( MinusDI( 14 ) );
var *atr = series( ATR( 40 ) );

bool LongEntrySignal ;
bool ShortEntrySignal;
bool LongExitSignal = false;
bool ShortExitSignal = false;

LongEntrySignal = mDI[1] > mDI[2];
ShortEntrySignal = mDI[1] < mDI[2];

//--------------------------------------------------------------------
// Regra de negociação: Entrada longa (na abertura da barra)
//--------------------------------------------------------------------
se ( LongEntrySignal )
{
LifeTime = 7;
EntryTime = 1;
Stop = 75 * PIP;
TakeProfit = 195 * PIP;
Trail = 135 * PIP;
TrailLock = 1 * PIP;
Entry = close[3] + ( 2 * atr[1] );
enterLong();

}

//--------------------------------------------------------------------
// Regra de negociação: Entrada curta (na abertura da barra)
//--------------------------------------------------------------------
Se ((ShortEntrySignal
e !LongEntrySignal))
{
// Ação #1
LifeTime = 7;
EntryTime = 1;
Stop = 75 * PIP;
TakeProfit = 195 * PIP;
Trail = 135 * PIP;
TrailLock = 1 * PIP;
Entry = close[3] - ( 2 * atr[1] );
enterShort();

}

plot("mDI", mDI, NEW, RED );

}

0

tníquel

Customer, bbp_participant, community, sq-ultimate, 489 replies.

Perfil da visita

5 anos atrás #237349

Anexe o arquivo *.sqx

Assim, podemos fazer um backtest no MT4 e comparar as negociações.

Se o strategyquant 4.x tiver um problema, o backtest do metatrader será diferente.

 

thomas

https://monitortool.jimdofree.com/

0

Charles

Cliente, bbp_participante, comunidade, 0 respostas.

Perfil da visita

5 anos atrás #237351

Oi Tomas, em anexo está a última estratégia postada acima.

Anexos:
Você deve ser logado para ver os arquivos anexos.

0

mabi

Cliente, bbp_participant, comunidade, 261 respostas.

Perfil da visita

5 anos atrás #237390

Essa estratégia falha totalmente quando a testo no SQX. Verifique a qualidade ou as configurações de seus dados.

Anexos:
Você deve ser logado para ver os arquivos anexos.

0

Visualizando 8 respostas - 1 até 8 (de um total de 8)