Нейросети. Однослойный перцептрон. |
double perceptron()
{
double w1 = x1 - 100;
double w2 = x2 - 100;
double w3 = x3 - 100;
double w4 = x4 - 100;
double a1 = Open[p] - Close[0];
double a2 = Open[p] - Open[p*2];
double a3 = Open[p*2] - Open[p * 3];
double a4 = Open[p*3] - Open[p * 4];
return(w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4);
}
if(OrdersTotal()<1 && tm!=Time[0])
{
if(perceptron()<0) PutOrder(0,Ask);
if(perceptron()>0) PutOrder(1,Bid);
tm=Time[0];
}
//+------------------------------------------------------------------+
//| Perceptron.mq4 |
//| Copyright 2016, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
//---- input parameters
extern double tp = 50;
extern double sl = 50;
extern int p=10;
extern int x1 = 100;
extern int x2 = 100;
extern int x3 = 100;
extern int x4 = 100;
extern double lot=0.1;
datetime tm=0;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
{
int r=0;
color clr=Green;
double s=0,t=0;
if(type==1 || type==3 || type==5)
{
clr=Red;
if(sl>0) s=NormalizeDouble(price+sl*Point,Digits);
if(tp>0) t=NormalizeDouble(price-tp*Point,Digits);
}
if(type==0 || type==2 || type==4)
{
clr=Blue;
if(sl>0) s=NormalizeDouble(price-sl*Point,Digits);
if(tp>0) t=NormalizeDouble(price+tp*Point,Digits);
}
r=OrderSend(NULL,type,lot,NormalizeDouble(price,Digits),33,s,t,"",0,clr);
return;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double perceptron()
{
double w1 = x1 - 100;
double w2 = x2 - 100;
double w3 = x3 - 100;
double w4 = x4 - 100;
double a1 = Open[p] - Close[0];
double a2 = Open[p] - Open[p*2];
double a3 = Open[p*2] - Open[p * 3];
double a4 = Open[p*3] - Open[p * 4];
return(w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(OrdersTotal()<1 && tm!=Time[0])
{
if(perceptron()<0) PutOrder(0,Ask);
if(perceptron()>0) PutOrder(1,Bid);
tm=Time[0];
}
}
//+------------------------------------------------------------------+
26 июля 2016
|
03 сентября 2016
|
Комментарии (10)
Формула была бы похожа на формулу взвешенного скользящего среднего, если было бы деление на сумму коэффициентов.
Наверное, мне ближе формула, которая бы показывала значимость события от 0 до 1 (или от 0 до 100%). Хотя в этой тоже что-то есть
Раньше мне казалось, что нейросети, это что-то заумное — типо логически мыслящего робота, способного самообучаться Неужели это всего лишь математическая формула?
Андрей, ты разбил мои иллюзии
27 Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..
Здесь только самый простейший вариант.
34 AM2 Автор Сообщений: 15879 - Андрей
Вот даже подумываю посетить.
27 Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..
Настройки использовал 1:1 как на скрине.
24 ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.
34 AM2 Автор Сообщений: 15879 - Андрей
10 Nadejda-stav Сообщений: 157
10 Nadejda-stav Сообщений: 157
45 Bishop Сообщений: 5720 - АЛЬФАХАМЕЦ-Машковод
10 Nadejda-stav Сообщений: 157
10 Nadejda-stav Сообщений: 157
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий