Especialistas: FAT PANEL - página 2

 
Vigor:
Farei um manual, mas um manual curto. ...................

E um manual para adicionar sua própria funcionalidade (indicadores, elementos de registro, estados etc.).

Variante ideal (mas não fácil): tornar todos os elementos funcionais "facilmente anexáveis", como plug-ins, para que eles se multipliquem e se multipliquem na base de código como cogumelos ... :)

--

Muito legal o que você fez, Igor. Obrigado! Fiquei brincando com isso a noite toda.

Ainda não me aprofundei no código, mas estou planejando fazer isso neste fim de semana. Estou muito curioso para entender em detalhes como alguns recursos são implementados.

Em uma rápida olhada no código, a impressão é muito agradável.

 

Os blocos são escritos de forma elementar! Se a MQL tivesse um mecanismo semelhante a get_declared_classes, class_exists e is_subclass_of, toda a instalação de uma nova funcionalidade seria apenas um arquivo enclode/add de uma nova classe (um descendente de uma das classes base).

//+------------------------------------------------------------------+
class CAlgoBlockLogicOr: public CAlgoBlockLogic {
        public:
        //+------------------------------------------------------------------+ 
        void CAlgoBlockLogicOr() {              
                setLabel("name",12,20,1,"OR");//--uniq, x, y, fontsize, title                
                //--conectores
                CConnectPointer* pointer1 = new CConnectPointer();
                pointer1.connectType = ALGO_BOOL;
                pointer1.connectDirection = ALGO_DIRECTION_IN;
                pointer1.x = 0;
                pointer1.y = 0.11;
                connectPointers.Add(pointer1);
                
                CConnectPointer* pointer2 = new CConnectPointer();
                pointer2.connectType = ALGO_BOOL;
                pointer2.connectDirection = ALGO_DIRECTION_IN;
                pointer2.x = 0;
                pointer2.y = 0.89;
                connectPointers.Add(pointer2);
                
                CConnectPointer* pointer3 = new CConnectPointer();
                pointer3.connectType = ALGO_BOOL;
                pointer3.connectDirection = ALGO_DIRECTION_OUT;
                pointer3.x = 1;
                pointer3.y = 0.5;
                connectPointers.Add(pointer3);
        }
        
        bool operate(CAlgoBlockLogic* s1, CAlgoBlockLogic* s2) {
                bool S1 = s1.process();
                bool S2 = s2.process();
                if ( S2 || S1 ) {  
                        return (true);
                }
                return (false);
        }
        
        //+------------------------------------------------------------------+
};

E se você fizer a inserção de código no modo visual, o novo bloco se adicionará sozinho. A recompilação do EA em tempo real e a coleta de novos includes "gerados" já foram resolvidas. É assim que a atualização dos parâmetros de entrada dos blocos para o testador é implementada agora.

 
Olá, autor, você tem a possibilidade de postar uma captura de tela dos blocos montados ou um arquivo salvo que tenha dado essa imagem no teste? Seria um bom manual.
 

Na descrição do codebase, o esquema é o mesmo, com 4 blocos. Somente o valor 300 no bloco de operação é ">". O arquivo de esquema está no arquivo, descompacte-o na pasta

C:\Documents and Settings\All Users\Application Data\MetaQuotes\Terminal\Common\.

(o caminho pode ser diferente, é melhor procurar o arquivo fatpanel.dat e substituí-lo)

Arquivos anexados:
FATPANEL.rar  1 kb
 

Enquanto a nova versão está sendo preparada, mostrarei uma execução da mesma estratégia de 2005. Modo de teste "every tick". Experimentos com trailing stop:

O diagrama mostra todos os parâmetros da estratégia e seu princípio. Sem reinvestimentos. Uma versão com blocos adicionais será publicada em breve.

Relatório do testador de estratégia
MetaQuotes-Demo (Build 370)

Configurações
Consultor especialista: FatPanel
Símbolo: EURUSD
Período: M1 (2005.01.01 - 2010.12.17)
Parâmetros de entrada:
Corretora: MetaQuotes Software Corp.
Moeda: USD
Depósito inicial: 10 000.00
Alavancagem: 1:100

Resultados
Barras: 2095758 Tiki: 39061924
Lucro líquido: 468 436.28 Lucro total: 1 377 840.48 Perda total: -909 404.20
Lucratividade: 1.52 Expectativa de ganhar: 84.33
Fator de recuperação: 16.62 Índice de Sharpe: 0.05

Redução do balanço patrimonial:
Rebaixamento absoluto do balanço patrimonial: 4 393.10 Redução máxima do saldo: 5 593.40 (8.46%) Levantamento do saldo relativo: 8.46% (5 593.40)
Redução de fundos:
Retirada absoluta de fundos: 4 622.90 Desembolso máximo em fundos: 6 119.20 (9.21%) Rebaixamento relativo dos fundos: 9.21% (6 119.20)

Total de negociações: 5555 Negociações a descoberto (% ganho): 3237 (56.32%) Negociações longas (% de ganhos): 2318 (60.05%)
Total de negociações: 268659 Negociações lucrativas (% de todas): 3215 (57.88%) Negociações com perdas (% de todas): 2340 (42.12%)

Maiores negociações lucrativas: 8 040.10 Maior negociação com perda: -7 181.70

Média de negociações lucrativas: 428.57 Média de negociações perdedoras: -388.63

Número máximo de vitórias contínuas (lucro): 75 (9 306.86) Número máximo de perdas contínuas (prejuízo): 24 (-13 829.70)

Máximo de lucros contínuos (número de vitórias): 12 396.20 (14) Perda máxima contínua (número de perdas): -13 829.70 (24)

Ganho médio contínuo: 3 Perda média contínua: 2

 
A restrição do número de negociações será real, porque ele abre negociações a cada tick com o lote especificado, e o que é bom?
Документация по MQL5: Торговые функции / HistoryDealsTotal
Документация по MQL5: Торговые функции / HistoryDealsTotal
  • www.mql5.com
Торговые функции / HistoryDealsTotal - Документация по MQL5
 
Dessa forma, o volume da posição é ganho. As porções constantemente reabastecidas "por sensação" acabam encontrando um extremo local no lance. E se você limitar a abertura de não mais do que uma posição em uma direção, então momentos de abertura mais favoráveis serão perdidos e a estratégia falhará. Não é difícil acrescentar essa restrição: +3 blocos para cada direção. AND e IS_BUY (ou IS_SELL) + NOT
 
Vigor:
Dessa forma, o volume da posição é ganho. As porções constantemente reabastecidas "por sensação" acabam encontrando um extremo local no lance. E se você limitar a abertura de não mais do que uma posição em uma direção, então momentos de abertura mais favoráveis serão perdidos e a estratégia falhará. Não é difícil acrescentar essa restrição: +3 blocos para cada direção. E e IS_BUY (ou IS_SELL) + NOT
Obrigado, entendo que o volume final será desconhecido, é ruim....
 

A versão 0.2 não quer funcionar. Como faço para que ela funcione?

 

Esse problema ocorreu em uma das versões recentes do terminal.

https://www.mql5.com/ru/forum/1111/page232

Se o terminal for atualizado para a versão mais recente (onde o problema foi corrigido), você precisará recompilar o indicador (na pasta mql5/indicators/fatpanel/ ) e o Expert Advisor (mql5/experts/fatpanel/).