Refiro-me a um simples perseptron linear, como o utilizado pela Reshetov. Rosenblatt criou seu perseptron como modelo de função cerebral), um modelo muito primitivo...
O simples perseptron linear usado pelo Sr. Reshetov está mais de 40 anos desactualizado.
A verdadeira história das redes neurais começou com o Rosenblatt perseptron com sua função de ativação.
Tomemos por exemplo um algoritmo simples que dá pontos de entrada com stop losses e lucros com base no último fractal:
Se tivermos um fractal para cima, colocamos uma ordem de Buy Stop para um avanço fractal, com um stop loss abaixo do preço mínimo entre as barras de zero até a barra em que o fractal foi formado. A tomada de lucro é igual ao stop loss.
Aqui está o código deste Expert Advisor:
externdouble Lot=0.1;externint Slippage=3;// Проскальзываниеexternint Magic=1;//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init(){//----//----return(0);}//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit(){//----//----return(0);}//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start(){//----int i;// Фрактал вверх int iUpFr;// Номер бара на котором образовался последний фрактал вверхdouble UpFr;// Значение последнего фрактала вверх for( i=3; i<Bars; i++){
UpFr=iFractals(NULL,0,MODE_UPPER, i);if( UpFr>0){
iUpFr= i;//Print ("UpFr = ", UpFr, ", ", " iUpFr = ", iUpFr);break;}}// Проверяем прорван-ли найденый фрактал, если он прорван, то по нему не имеет смысла выставлять ордерbool OkUpFr;// Если false, то прорван, если true, то не прорванif( UpFr>=High[iHighest(NULL,0,MODE_HIGH, iUpFr,0)]){ OkUpFr=true;}double SellSl=High[iHighest(NULL,0,MODE_HIGH, iUpFr+1,0)];// Минимальное значение цены от нулевого бара до номера на котором сформировался последний фрактал вверх// Фрактал внизint iDnFr;// Номер бара на котором образовался последний фрактал внизdouble DnFr;// Значение последнего фрактала внизfor( i=3; i<Bars; i++){
DnFr=iFractals(NULL,0,MODE_LOWER, i);if( DnFr>0){
iDnFr= i;//Print ("DnFr = ", DnFr, ", ", " iDnFr = ", iDnFr);break;}}// Проверяем прорван-ли найденый фрактал, если он прорван, то по нему не имеет смысла выставлять ордерbool OkDnFr;// Если false, то прорван, если true, то не прорванif( DnFr<=Low[iLowest(NULL,0,MODE_LOW, iDnFr,0)]){ OkDnFr=true;}double BuySl=Low[iLowest(NULL,0,MODE_LOW, iDnFr+1,0)];// Максимальное значение цены от нулевого бара до номера на котором сформировался последний фрактал вниз// Параметры ордеровdouble Tick=MarketInfo(Symbol(),MODE_TICKSIZE);double spread=MarketInfo(Symbol(),MODE_SPREAD)* Tick;double B;double Bsl;double S;double Ssl;double Btp;double Stp;
B=NormalizeDouble( UpFr+1* Tick+ spread,Digits);// Цена для покупки
Bsl=NormalizeDouble( BuySl-1* Tick,Digits);// Стоп лосс для ордера на покупку
Btp=NormalizeDouble( B+( B- Bsl),Digits);// Тейк профит для ордера на покупку
S=NormalizeDouble( DnFr-1* Tick,Digits);// Цена для продажи
Ssl=NormalizeDouble( SellSl+ spread+1* Tick,Digits);// Стоп лосс для ордера на продажу
Stp=NormalizeDouble( S-( Ssl- S),Digits);// Тейк профит для ордера на продажуbool Buy;// если Buy==true, значит появились условия для Buy stopbool Sell;// если Sell==true, значит появились условия для Sell stopif( OkUpFr==true){ Buy=true;}if( OkDnFr==true){ Sell=true;}// Проверка открытых ордеров и выставленых ордеровint total =OrdersTotal();// Общее кол-во открытых и отложеных ордеров.int Ticket =OrderTicket();// Возвращает номер тикета для текущего выбранного ордера. bool PendingOrderBuy=false;bool PendingOrderSell=false;bool MarketOrderBuy=false;bool MarketOrderSell=false;if( total>0){for( i=0; i<= total; i++){if(OrderSelect( i, SELECT_BY_POS)==true){if(OrderSymbol()==Symbol()&&OrderMagicNumber()== Magic){double OpenPrice=NormalizeDouble(OrderOpenPrice(),Digits);double StopLoss=NormalizeDouble(OrderStopLoss(),Digits);double TakeProfit=NormalizeDouble(OrderTakeProfit(),Digits);
Ticket =OrderTicket();if(OrderType()==OP_BUY){
MarketOrderBuy =true;}if(OrderType()==OP_SELL){
MarketOrderSell =true;}if(OrderType()==OP_BUYSTOP){
PendingOrderBuy =true;if( OpenPrice!= B){OrderDelete( Ticket,CLR_NONE);}if( StopLoss!= Bsl){OrderDelete( Ticket,CLR_NONE);}}if(OrderType()==OP_SELLSTOP){
PendingOrderSell =true;if( OpenPrice!= S){OrderDelete( Ticket,CLR_NONE);}if( StopLoss!= Ssl){OrderDelete( Ticket,CLR_NONE);}}}}}}// Выставление отложеных ордеровif( Buy==true&& PendingOrderBuy==false&& MarketOrderBuy==false){
Ticket=OrderSend(Symbol(),OP_BUYSTOP, Lot, B, Slippage, Bsl, Btp,NULL, Magic,0,CLR_NONE);if( Ticket<0){Print("OrderSend failed with error #",GetLastError());return(0);}}if( Sell==true&& PendingOrderSell==false&& MarketOrderSell==false){
Ticket=OrderSend(Symbol(),OP_SELLSTOP, Lot, S, Slippage, Ssl, Stp,NULL, Magic,0,CLR_NONE);if( Ticket<0){Print("OrderSend failed with error #",GetLastError());return(0);}}//----return(0);}
Neste algoritmo, você pode selecionar vários pontos de ancoragem, com base nos quais o modelo fractal será medido:
Parâmetros, que podem ser usados como pesos:
Para comprar: iUpFr iUpFr-iSellSl UpFr-SellSl (UpFr-SellSl)/(iUpFr-iSellSl) (UpFr-SellSl)/(iUpFr)
Para vender: iDnFr iDnFr-iBuySl BuySl-DnFr (BuySl-DnFr)/(iDnFr-iBuySl) (BuySl-DnFr)/(iDnFr)
Entendo corretamente que o próximo passo da criação da rede neural será a introdução de variáveis que serão comparadas a essas propriedades?
E a comparação ocorrerá durante a otimização?
Se eu estiver errado, que outras medidas práticas eu preciso tomar para fechar esta EA, uma simples rede neural?
A matemática das redes neurais não é tão complicada assim. A escolha dos parâmetros de entrada é muito mais importante para o sucesso da previsão da rede. A questão aqui é: quais indicadores e seus parâmetros descrevem completamente o estado atual do mercado e sua história? Conhecer apenas alguns preços passados de uma moeda está longe de ser suficiente para prever o preço futuro, não importa quantas camadas estejam na rede. É por isso que você tem que escolher ou muitos preços passados ou indicadores de períodos diferentes. A grande maioria utiliza indicadores, pois permitem uma maneira mais eficiente de descrever a posição do último preço em relação aos preços do passado. Talvez devêssemos mudar a discussão para a seleção dos parâmetros de entrada. Penso que a correlação dos valores recentes dos muves de diferentes períodos pode ser um bom input para a rede. Quem tem uma opinião diferente? É possível misturar diferentes tipos de indicadores, por exemplo, MACD, RSI, AC, Stoch etc., na entrada da mesma rede?
Podem ser misturados diferentes tipos de indicadores, por exemplo, MACD, RSI, AC, Stoch, etc., na entrada da mesma rede?
Acho que você pode, desde que o conjunto de indicadores dê boas entradas no mercado. Depois disso, temos outra pergunta difícil - o que devemos fornecer à produção líquida durante o treinamento? O que nós queremos? Para reconhecer um padrão? Prever a cor da próxima vela? Ou talvez não um, mas vários? Ou talvez queiramos prever a magnitude do movimento? )))
Eu gostaria de encontrar as respostas para estas perguntas.
Talvez os praticantes me digam, em que eles treinam suas redes? :))
Prezados membros do fórum, o tópico deste tópico é Redes Neurais, como dominá-las e por onde começar?
Vamos nos aproximar do tópico....
Aqui está uma breve descrição das redes futuras, que às vezes cito quando surge um tópico semelhante. Então, vamos criar uma rede simples de encaminhamento.
Passo 1: Escolha os dados de entrada. Por exemplo,
x1 = WPR Per1
x2 = WPR Per2
x3 = WPR Per3
Passo 2: Selecione o número de neurônios na camada oculta, por exemplo, dois neurônios, y1 e y2. Selecione o número de neurônios na camada de saída, por exemplo, dois neurônios, z1 e z2. Assim, criamos uma rede 3-2-2. z1 e z2 são nossas saídas.
Passo 3: Definir a lógica de decisão. Por exemplo z1>=u comprar, z1<=-u vender, z2<=-v fechar compra, z2>=v fechar venda, onde |u|<=1 e |v|<==1.
Passo 4: Descreva os neurônios ocultos y1=F(x1,x2,x3) e y2=F(x1,x2,x3):
y1 = F(a0+a1*x1+a2*x2+a3*x3)
y2 = F(b0+b1*x1+b2*x2+b3*x3)
onde F() é uma função não-linear. Por exemplo, F(x)=tanh(x)=(exp(x)-exp(-x))/(exp(x)+exp(-x)). Eu prefiro uma função mais simples para evitar erros no cálculo de exp():
F(x) = -1 se x<=-1, x se -1<x<1, 1 se x>=1.
Passo 5: Descreva os neurônios de saída z1=F(y1,y2) e z2=F(y1,y2):
z1 = F(c0+c1*y1+c2*y2)
z2 = F(d0+d1*y1+d2*y2)
onde F() é a mesma função de ativação do neurônio.
Assim, a rede foi criada e descrita. Dar períodos Per1, Per2 e Per3 para Williamps-Percent-Range (WPR) e otimizar via metadrae batter a0, a1, a2, a3, b0, b1, b2, b3, c0, c1, c2, d0, d1, d2, -1<=u<=+1, -1<=v<=+1. Você também pode otimizar Per1, Per2 e Per3. Você pode brincar com diferentes entradas. Por exemplo, em vez de WPR, tente MACD ou outro indicador. Você pode limitá-lo a um neurônio de saída para abrir posições: z(y1,y2)>=u comprar, z(y1,y2)<=-u vender. E próximo ao stoploss, trailing stop ou takeprofit.
Você também pode criar uma rede mais complexa onde cada decisão comercial é associada a um neurônio de saída correspondente. Por exemplo, com os mesmos dados de entrada e neurônios ocultos, criamos 4 neurônios de saída
z1(y1,y2)>u1 - aberto longo
z2(y1,y2)>u2 - abrir curto
z3(y1,y2)>u3 - fechar longo
z4(y1,y2)>u4 - fechar curto
Neste caso, o número de coeficientes otimizados aumenta significativamente. Normalmente u1=u2=u3=u4=u4=0,9.
Você pode aumentar o número de camadas e neurônios ocultos neles se você tiver um computador potente.
Prezados membros do fórum, o tópico deste tópico é Redes Neurais, como dominá-las e por onde começar?
Vamos nos aproximar do assunto....
Não se preocupe em programar redes neurais você mesmo, existem programas já prontos. O único programa que tem um livro em russo - Statistica Neural Networks, e este livro dá a impressão de que foi escrito por especialistas em redes neurais, e tem uma introdução bastante decente e uma visão geral das técnicas de redes neurais e dos tipos existentes de redes neurais. O programa permite exportar redes treinadas como um dll que pode ser usado no MT Expert Advisors (não tentei eu mesmo, desculpe se estou errado). Os programas de comércio especializado com redes não-rede não são tão fáceis de anexar à MT e, se for possível, são tortuosos ou muito caros. Existem terminais de corretagem que exportam dados para meta arquivos, não é tão fácil implementar software especializado para trabalhar com redes não agrícolas. Eh! Por que os desenvolvedores da MT não oferecem a possibilidade de exportar dados para poder utilizar quaisquer outros programas de análise financeira sem mudanças desnecessárias.
Para começar, imho, o melhor programa é o NeuroShell -2, há uma ajuda russa e exemplos em russo. Além disso, as redes neurais de NS 2 podem ser facilmente anexadas a consultores e indicadores especializados em MT4.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Refiro-me a um simples perseptron linear, como o utilizado pela Reshetov. Rosenblatt criou seu perseptron como modelo de função cerebral), um modelo muito primitivo...
O simples perseptron linear usado pelo Sr. Reshetov está mais de 40 anos desactualizado.
A verdadeira história das redes neurais começou com o Rosenblatt perseptron com sua função de ativação.
O simples perseptron linear usado pelo Sr. Reshetov está mais de 40 anos desactualizado.
A verdadeira história das redes neurais começou com o Rosenblatt perseptron com sua função de ativação.
Mas sua persepensão também não é perfeita. E não é bom para prever a direção do curso.
Então, nas duas camadas de Rosenblatt perseptrons (ele os criou primeiro), a primeira camada oculta desempenhou o papel de uma função de ativação?
Mas sua persepensão também não é perfeita. E não é adequado para prever a direção do curso.
Isto é, nas duas camadas de Rosenblatt perseptrons (ele os criou primeiro), a primeira camada oculta desempenhou o papel de uma função de ativação?
Estou acompanhando o tema, mas você está falando de assuntos superiores. Devemos ao menos entender como fazer algo simples...
Aqui está um algoritmo de um simples Expert Advisor:
Tomemos por exemplo um algoritmo simples que dá pontos de entrada com stop losses e lucros com base no último fractal:
Se tivermos um fractal para cima, colocamos uma ordem de Buy Stop para um avanço fractal, com um stop loss abaixo do preço mínimo entre as barras de zero até a barra em que o fractal foi formado. A tomada de lucro é igual ao stop loss.
Aqui está o código deste Expert Advisor:
Neste algoritmo, você pode selecionar vários pontos de ancoragem, com base nos quais o modelo fractal será medido:
Parâmetros, que podem ser usados como pesos:
Para comprar:
iUpFr
iUpFr-iSellSl
UpFr-SellSl
(UpFr-SellSl)/(iUpFr-iSellSl)
(UpFr-SellSl)/(iUpFr)
Para vender:
iDnFr
iDnFr-iBuySl
BuySl-DnFr
(BuySl-DnFr)/(iDnFr-iBuySl)
(BuySl-DnFr)/(iDnFr)
Entendo corretamente que o próximo passo da criação da rede neural será a introdução de variáveis que serão comparadas a essas propriedades?
E a comparação ocorrerá durante a otimização?
Se eu estiver errado, que outras medidas práticas eu preciso tomar para fechar esta EA, uma simples rede neural?
A matemática das redes neurais não é tão complicada assim. A escolha dos parâmetros de entrada é muito mais importante para o sucesso da previsão da rede. A questão aqui é: quais indicadores e seus parâmetros descrevem completamente o estado atual do mercado e sua história? Conhecer apenas alguns preços passados de uma moeda está longe de ser suficiente para prever o preço futuro, não importa quantas camadas estejam na rede. É por isso que você tem que escolher ou muitos preços passados ou indicadores de períodos diferentes. A grande maioria utiliza indicadores, pois permitem uma maneira mais eficiente de descrever a posição do último preço em relação aos preços do passado. Talvez devêssemos mudar a discussão para a seleção dos parâmetros de entrada. Penso que a correlação dos valores recentes dos muves de diferentes períodos pode ser um bom input para a rede. Quem tem uma opinião diferente? É possível misturar diferentes tipos de indicadores, por exemplo, MACD, RSI, AC, Stoch etc., na entrada da mesma rede?
Podem ser misturados diferentes tipos de indicadores, por exemplo, MACD, RSI, AC, Stoch, etc., na entrada da mesma rede?
Acho que você pode, desde que o conjunto de indicadores dê boas entradas no mercado. Depois disso, temos outra pergunta difícil - o que devemos fornecer à produção líquida durante o treinamento? O que nós queremos? Para reconhecer um padrão? Prever a cor da próxima vela? Ou talvez não um, mas vários? Ou talvez queiramos prever a magnitude do movimento? )))
Eu gostaria de encontrar as respostas para estas perguntas.
Talvez os praticantes me digam, em que eles treinam suas redes? :))
Caros membros do fórum, o tópico deste tópico é Redes Neurais, como dominá-las, por onde começar?
Vamos nos aproximar do tópico....
Rapazes, não se trata de redes neurais - trata-se da forma como são aplicadas......
Prezados membros do fórum, o tópico deste tópico é Redes Neurais, como dominá-las e por onde começar?
Vamos nos aproximar do tópico....
Aqui está uma breve descrição das redes futuras, que às vezes cito quando surge um tópico semelhante. Então, vamos criar uma rede simples de encaminhamento.
Passo 1: Escolha os dados de entrada. Por exemplo,
x1 = WPR Per1
x2 = WPR Per2
x3 = WPR Per3
Passo 2: Selecione o número de neurônios na camada oculta, por exemplo, dois neurônios, y1 e y2. Selecione o número de neurônios na camada de saída, por exemplo, dois neurônios, z1 e z2. Assim, criamos uma rede 3-2-2. z1 e z2 são nossas saídas.
Passo 3: Definir a lógica de decisão. Por exemplo z1>=u comprar, z1<=-u vender, z2<=-v fechar compra, z2>=v fechar venda, onde |u|<=1 e |v|<==1.
Passo 4: Descreva os neurônios ocultos y1=F(x1,x2,x3) e y2=F(x1,x2,x3):
y1 = F(a0+a1*x1+a2*x2+a3*x3)
y2 = F(b0+b1*x1+b2*x2+b3*x3)
onde F() é uma função não-linear. Por exemplo, F(x)=tanh(x)=(exp(x)-exp(-x))/(exp(x)+exp(-x)). Eu prefiro uma função mais simples para evitar erros no cálculo de exp():
F(x) = -1 se x<=-1, x se -1<x<1, 1 se x>=1.
Passo 5: Descreva os neurônios de saída z1=F(y1,y2) e z2=F(y1,y2):
z1 = F(c0+c1*y1+c2*y2)
z2 = F(d0+d1*y1+d2*y2)
onde F() é a mesma função de ativação do neurônio.
Assim, a rede foi criada e descrita. Dar períodos Per1, Per2 e Per3 para Williamps-Percent-Range (WPR) e otimizar via metadrae batter a0, a1, a2, a3, b0, b1, b2, b3, c0, c1, c2, d0, d1, d2, -1<=u<=+1, -1<=v<=+1. Você também pode otimizar Per1, Per2 e Per3. Você pode brincar com diferentes entradas. Por exemplo, em vez de WPR, tente MACD ou outro indicador. Você pode limitá-lo a um neurônio de saída para abrir posições: z(y1,y2)>=u comprar, z(y1,y2)<=-u vender. E próximo ao stoploss, trailing stop ou takeprofit.
Você também pode criar uma rede mais complexa onde cada decisão comercial é associada a um neurônio de saída correspondente. Por exemplo, com os mesmos dados de entrada e neurônios ocultos, criamos 4 neurônios de saída
z1(y1,y2)>u1 - aberto longo
z2(y1,y2)>u2 - abrir curto
z3(y1,y2)>u3 - fechar longo
z4(y1,y2)>u4 - fechar curto
Neste caso, o número de coeficientes otimizados aumenta significativamente. Normalmente u1=u2=u3=u4=u4=0,9.
Você pode aumentar o número de camadas e neurônios ocultos neles se você tiver um computador potente.
Prezados membros do fórum, o tópico deste tópico é Redes Neurais, como dominá-las e por onde começar?
Vamos nos aproximar do assunto....
Não se preocupe em programar redes neurais você mesmo, existem programas já prontos. O único programa que tem um livro em russo - Statistica Neural Networks, e este livro dá a impressão de que foi escrito por especialistas em redes neurais, e tem uma introdução bastante decente e uma visão geral das técnicas de redes neurais e dos tipos existentes de redes neurais. O programa permite exportar redes treinadas como um dll que pode ser usado no MT Expert Advisors (não tentei eu mesmo, desculpe se estou errado). Os programas de comércio especializado com redes não-rede não são tão fáceis de anexar à MT e, se for possível, são tortuosos ou muito caros. Existem terminais de corretagem que exportam dados para meta arquivos, não é tão fácil implementar software especializado para trabalhar com redes não agrícolas. Eh! Por que os desenvolvedores da MT não oferecem a possibilidade de exportar dados para poder utilizar quaisquer outros programas de análise financeira sem mudanças desnecessárias.
Para começar, imho, o melhor programa é o NeuroShell -2, há uma ajuda russa e exemplos em russo. Além disso, as redes neurais de NS 2 podem ser facilmente anexadas a consultores e indicadores especializados em MT4.
Você pode ler aqui: http://www.fxreal.ru/forums/forums.php?forum=3