EA N7S_AO_772012 - página 22

 
capellini писал(а) >>

Eu gostaria de fazer uma pergunta complementar...

Há pares em que a EA não otimiza de forma alguma, nem mesmo os primeiros resultados aparecem. USDCHF, por exemplo.

Com o que ele pode estar conectado?

Bem, aqui vamos nós novamente.

Mais uma vez, pela vigésima sexta vez.
Não existem instrumentos idênticos em termos de movimentação de preços, existem instrumentos semelhantes.
Não tentaremos adivinhar ou conjurar sobre os gráficos onde entrar e quando fazer isso.
É por isso que se não houver resultados, ou apenas maus resultados, devemos mudar os intervalos e os períodos de otimização, e você também pode brincar com o SL e os níveis de trilha. Para alguns símbolos eu diminuí o período até três ou até duas semanas, tentei aumentar o SL para as cruzes de iene. Em geral, tento encontrar os melhores valores que proporcionam bons resultados durante a otimização. Como resultado, considero relativamente corretos os parâmetros que dão 6-8 mil combinações rentáveis em 10 mil execuções durante a otimização com a genética. Então, de acordo com a lei de grandes números, a probabilidade de lucro é duas vezes maior do que a probabilidade de perda, o que significa que a otimização é apenas uma formalidade e os lucros excederão as perdas pelo menos duas vezes no caso de um número significativo de semanas. Realisticamente mais.
Então, compartilhe como você está testando e quais são os resultados. Isto não é fácil em uma semana.
Meu saldo da semana é +$690 e equity.... O patrimônio líquido está um pouco acima de +$750, eh, esteve perto de $1000 esta tarde. Quase todas as posições foram fechadas.

 

Sobre o erro. Ela está aqui na função startM1(). Por causa disso, houve uma diferença nas primeiras negociações sobre o testador e a demonstração.

//+------------------------------------------------------------------+
início vazioM1() {ticket = -1;RefreshRates();
if (total < HM_ALL) { BuSll (0,1,772012000); cmmnt();
if( !(DayOfWeek( ) == 1 && Hour( ) <2) && !(DayOfWeek( ) == 5 && Hour( ) >=18))
{se (Trd_Up_X && VSR() > 0 && bu<HM_Up_X&&Flq) {
if (MOS( 0, lots, sl, tp, WindowExpertName(), mn)==1) {Flq=false;}} // substituir por >=

if (Trd_Dn_Y && VSR() < 0 && sll<HM_Dn_Y&&Flq) {
if (MOS( 1, lots, sl, tp, WindowExpertName(), mn)==1) {Flq=false;}}} // substituir por >=
}}}

//+------------------------------------------------------------------+

O erro não é crítico, por causa dele a proibição de abertura de mais um negócio em um bar não funcionou.

Vou corrigi-lo em novas versões, mas por enquanto você pode fazer isso manualmente.

 

SHooter777ру: Советник понравился. После сегодняшнего слива демки оптимизацию делаю под 200$ (MiniForex). В принципе почти не отличается от 2000$. в оптимизационных сетах стоплоссы ставлю 50 с шагом 10, но все равно лучшие профиты со стоплоссами от 500 получаются. Уже в конечных сетах подбираю приемлемые в пределах 50-200 вручную. Влияет ли шаг и стоп в сетах на торговлю? (По наблюдениям не заметил). Еще вопрос: Можно ли оптимизировать под MicroForex (мин. лот 0,01)? Торгую на Pro Finance Group Inc платформа PFG FX Trader 4 (поддерживает MQL4). К сожалению на МикроФорексе нет демки.

Alguém já tentou a EA na vida real? É muito diferente da demonstração?


A foto mostra o comércio na demonstração desta semana com os conjuntos SHooter777r .Tendo +800 em saldo comercial, decidi usar outro EA em 3 pares e ... A ganância matou a ganância - os fundos disponíveis caíram abaixo de 100 e, é claro, as contraposições não foram abertas, então minha conta quase se quebrou.


Boa sorte para todos!

Arquivos anexados:
 

Eu baixei o Expert Advisor e fiquei convencido novamente de que para ler o ano de outra pessoa rapidamente, você precisa de um conhecimento mais profissional do idioma mql, para escrever seu próprio código, conhecimento e experiência é um mínimo. Os autores, se você publicar o código, escrevam comentários nele e dividam o código inteiro em blocos.

Este pode ser um Expert Advisor interessante, posso ter recomendado algo de minha própria experiência, mas não quero mergulhar no código bruto. O tempo é precioso.

 
.
Arquivos anexados:
 

Algo sobre a última versão não funciona.

O otimista nem sequer abre um único negócio na primeira etapa.

O testador com parâmetros otimizados para a EA anterior funciona da mesma forma.

 

Desculpe-me! Eu passei meia hora escrevendo as instruções, mas este fórum com falhas não só encobre as cartas, mas também perdeu todo o texto.

Vou escrevê-lo em wordpress e colá-lo aqui. Espere um pouco.

 

A nova versão da L9 contém uma série de pequenas adições e mudanças, mas eu acho necessário.

Primeiro: a função FLG() foi acrescentada - ela é responsável por duas coisas

//+------------------------------------------------------------------+

bool FLG (int cs )

{ int AE = AccountEquity( ) ;

interruptor(cs)

{case 0: if((DayOfWeek( ) == 5 && Hour( ) >=22) ||| (TrBlnc && (AE > UBlnc))

retornar (verdadeiro); caso contrário, retornar (falso);

caso 1: string dttm = StringConcatenate (Ano(),",Mês(),",Dia());

datetime smtm=StrToTime(dttm);

bool Gp;

int shft = iBarShift(NULL,0,smtm);

iOpn duplo = iOpen (NULL,0,shft); iCls duplo = iClose (NULL,0,shft+1);

duplo dOC = MathAbs ((iOpn - iCls)/(Ponto*10)) ;

se (dOC>20) Gp = verdadeiro ; Imprimir (Gp);

string var1=TimeToStr(smtm,TIME_DATE|TIME_SECONDS);

if((TrBlnc && ((AE > UBlnc)|||(AE < DBlnc)) || (!Flq)

||| ((DayOfWeek( ) == 1 && Hora( ) <2) ||| (DayOfWeek( ) == 5 && Hora( ) >=18))

|| ((DayOfWeek( ) == 1 && Hora( ) <14) && Gp))

retornar (falso); caso contrário, retornar (verdadeiro);

}

}

//+------------------------------------------------------------------+

a) FLG( 0 ) - fechamento forçado de posições abertas em condições especificadas.

b) FLG( 1 ) - proíbe a abertura de posições em condições especificadas.

Aqui você pode inserir qualquer condição adicional e não "sobrecarregar" a função startM1() void startM1() e outros lugares.

Selecionei final de semana para fechamento forçado if((DayOfWeek( ) == 5 && Hora( ) >= 22) e aumento da equidade para algum tamanho

e proibir a abertura em gep sobre um determinado valor if(dOC>20) Gp = verdadeiro ; e se a equidade aumentar para if((TrBlnc && ((AE > UBlnc)

ou diminuir para |||(AE < DBlnc))

 

Portanto, se você estiver testando ou otimizando, certifique-se de que a Equidade esteja dentro da faixa definida nos parâmetros

bool TrBlnc = true; int StrtBlnc = 3000; int DBlnc = 1500; int UBlnc = 4000;

ou adicionar a int init() linha se ( IsOptimization( ) ) TrBlnc = falso;// se ( IsTesting() ) TrBlnc = falso;

 

O seguinte não é uma mudança, mas sim uma adição mais substancial e refere-se ao Delta_G12 agora não é delta AO mas função G12(),

que, dependendo de seu parâmetro externo int Indctr; usa o antigo AO se Indctr = 1

ou se Indctr = 2 qualquer outra função ou indicador (uso o meu próprio, TSM anexo), se int Indctr = 0 então os sinais são somados de ambos os indicadores &&

//+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF+

duplo G12() {switch(Indctr)

{caixa 0:

iCusAO_1 = iAO(NULL, 240, 1); iCusAO_2 = iAO(NULL, 240, 2);

iCusTSM_1 = iCusTSM (24, 1); iCusTSM_2 = iCusTSM (24, 2);

Dlt_AO12 = iCusAO_1 -iCusAO_2; Dlt_TSM12 = iCusTSM_1-iCusTSM_2;

se ( Dlt_AO12>=0 && Dlt_TSM12 <=0) retornar (0);

se ( Dlt_AO12<=0 && Dlt_TSM12 >=0) retornar (0);

return(Dlt_AO12);

caso 1:

iCusAO_1 = iAO(NULL, 240, 1); iCusAO_2 = iAO(NULL, 240, 2);

Dlt_AO12 = iCusAO_1 -iCusAO_2; retorno(Dlt_AO12);

caso 2:

iCusTSM_1 = iCusTSM (24, 1); iCusTSM_2 = iCusTSM (24, 2);

Dlt_AO12 = iCusTSM_1-iCusTSM_2; return(Dlt_AO12);}}}

//+--------------------------------------------------------------------------------------+

duplo iCusTSM (int pr, int shft)

{ retornar (iCustom(NULL, 240, "iCus_N7S_TSM_forExp",pr,1,shft)); }

//+--------------------------------------------------------------------------------------+

Razão: