Эксперт для Laguerre

 

Эксперт для Laguerre EURUSD 1H



не сливает в 2008, может будут идеи по усовершенствованию


//+==================================================================+
//| Exp_0.mq4 |
//| Copyright © 2008, Nikolay Kositsin |
//| Khabarovsk, farria@mail.redcom.ru |
//+==================================================================+
// Спасибо Николаю Косицыну!
#property copyright "Copyright © 2008 by timex"
#property link "yar_at_quantum_дот_by"
//---- ВХОДНЫЕ ПАРАМЕТРЫ ЭКСПЕРТА ДЛЯ СДЕЛОК
extern double Money_Management = 0.15; //При открытие позиции будет использоваться указанная часть свободной маржи.
//Если указано отрицательное число, например, -0.1, то, независимо от величины
//свободной маржи, всегда будет делаться попытка открыть позицию размером равной абсолютной
//величине указанного числа
double IndValue;
int Line_0 = 0;
int Line_1 = 1;
extern int Timeframe = PERIOD_H1; //Период графика:
//PERIOD_M1 1 1 минута
//PERIOD_M5 5 5 минут
//PERIOD_M15 15 15 минут
//PERIOD_M30 30 30 минут
//PERIOD_H1 60 1 час
//PERIOD_H4 240 4 часа
//PERIOD_D1 1440 1 день
//PERIOD_W1 10080 1 неделя
//PERIOD_MN1 43200 1 месяц
//0 (ноль) 0 Период текущего графика
extern int STOPLOSS = 60; // стоплосс
extern int TAKEPROFIT = 120; // тейкпрофит
extern int TrailingStop = 40;
extern bool ClosePos = false; // разрешение принудительного закрывания позиции
extern int L60_flag=0;
extern int L80_flag=0;
//extern bool reverse = false;
//---- Целая переменная для минимума расчётных баров
int MinBar;
//+==================================================================+
//| Custom Expert functions |
//+==================================================================+
#include <Lite_EXPERT1.mqh>
//+==================================================================+
//| Custom Expert initialization function |
//+==================================================================+
int init()
{
//---- Инициализация переменных
MinBar = 500;
//---- завершение инициализации
return(0);
}
//+==================================================================+
//| expert deinitialization function |
//+==================================================================+
int deinit()
{
//----+

//---- Завершение деинициализации эксперта
return(0);
//----+
}
//+==================================================================+
//| Custom Expert iteration function |
//+==================================================================+
int start()
{
//----+ Объявление локальных переменных
int IBARS, bar;
//----+ Объявление статических переменных
static int LastBars;
static bool BUY_Sign, BUY_Stop, SELL_Sign, SELL_Stop;

//----++
IBARS = iBars(NULL, Timeframe);
if (IBARS >= MinBar)
{
if (LastBars != IBARS)
{
//----+ Инициализация переменных
BUY_Sign = false;
BUY_Stop = false;
SELL_Sign = false;
SELL_Stop = false;
LastBars = IBARS;

double L60PRE1 = iCustom(Symbol(),Timeframe,"Laguerre-ACS1",0.60,1000,2,0,1);
double L80PRE1 = iCustom(Symbol(),Timeframe,"Laguerre-ACS1",0.80,1000,2,0,1);

double L60PRE2 = iCustom(Symbol(),Timeframe,"Laguerre-ACS1",0.60,1000,2,0,2);
double L80PRE2 = iCustom(Symbol(),Timeframe,"Laguerre-ACS1",0.80,1000,2,0,2);

double L60PRE3 = iCustom(Symbol(),Timeframe,"Laguerre-ACS1",0.60,1000,2,0,3);
double L80PRE3 = iCustom(Symbol(),Timeframe,"Laguerre-ACS1",0.80,1000,2,0,3);

double FLU = iCustom(Symbol(),Timeframe,"FractalsLine",0,1); // Верхняя линия
double FLL = iCustom(Symbol(),Timeframe,"FractalsLine",1,1); // Нижняя линия


if(L60PRE1==1) L60_flag=1;
if(L60PRE1==0) L60_flag=0;
if(L80PRE1==1) {L80_flag=1;}//BUY_Stop=true;}
if(L80PRE1==0) {L80_flag=0;}//SELL_Stop=true;}

if(L80_flag==1 && L60_flag==0 && L80PRE1<0.6 && L60PRE1>L60PRE2) {
if(Low[1]>FLL) {
SELL_Stop=true;
BUY_Sign = true;
} else {
BUY_Stop=true;
//SELL_Sign = true;
}
}

if(L80_flag==0 && L60_flag==1 && L80PRE1>0.9 && L60PRE1>L60PRE2) {
if(High[1]<FLU) {
SELL_Stop=true;
//BUY_Sign = true;
} else {
BUY_Stop=true;
SELL_Sign = true;
}

}


if(L80_flag==1 && L60_flag==1 && L80PRE1<L80PRE2 && L60PRE1<L60PRE2 && L80PRE1<0.9) {
if(Low[1]>FLL) {
SELL_Stop=true;
BUY_Sign = true;
} else {
BUY_Stop=true;
//SELL_Sign = true;
}
}

if(L80_flag==0 && L60_flag==0 && L80PRE1>L80PRE2 && L60PRE1>L60PRE2 && L80PRE1>0.1) {
if(High[1]<FLU) {
SELL_Stop=true;
//BUY_Sign = true;
} else {
BUY_Stop=true;
SELL_Sign = true;
}
}

}

//----+ СОВЕРШЕНИЕ СДЕЛОК
if (!OpenBuyOrder1(BUY_Sign, 1, Money_Management,
STOPLOSS, TAKEPROFIT))
return(-1);
if (!OpenSellOrder1(SELL_Sign, 2, Money_Management,
STOPLOSS, TAKEPROFIT))
return(-1);

if (ClosePos)
{
if (!CloseOrder1(BUY_Stop, 1))
return(-1);

if (!CloseOrder1(SELL_Stop, 2))
return(-1);
}

Make_TreilingStop(1, TrailingStop);
Make_TreilingStop(2, TrailingStop);
}
//----+

return(0);
}
//+------------------------------------------------------------------+

 
sol писал (а) >>

Эксперт для Laguerre EURUSD 1H


не сливает в 2008, может будут идеи по усовершенствованию

Надо что бы сливал?:)

Тогда приложите инклудник и индикатор, а то не интересно как-то... Хотя не думаю что индикатор далеко ушел от прародителя перерисовщика

 

Ну конечно нужно чтобы не сливал. Да и вообще, сливает на более ранних периодах. В логике там можно выделить две части: Вот эта первая, если вторую закоментировать, ведет себя в прошлом лучше.





if(L80_flag==1 && L60_flag==0 && L80PRE1<0.6 && L60PRE1>L60PRE2) {
if(Low[1]>FLL) {
SELL_Stop=true;
BUY_Sign = true;
} else {
BUY_Stop=true;
//SELL_Sign = true;
}
}

if(L80_flag==0 && L60_flag==1 && L80PRE1>0.9 && L60PRE1>L60PRE2) {
if(High[1]<FLU) {
SELL_Stop=true;
//BUY_Sign = true;
} else {
BUY_Stop=true;
SELL_Sign = true;
}

}





...



К сожалению кода индикатора у меня нет.

edited:

Вроде как можно взять тут:

http://www.forexfactory.com/showpost.php?p=2120577&postcount=214

Файлы:
 
Файлы:
 
include
Файлы:
 

Индикатор FractalsLine.mq4

Тут есть скрытая неточность работы. Может проявиться только во время появления гэпа.

Посмотрите внимательно на скрин. При создании АТС необходимо эту возможность учитывать, что бы не было мучительно больно

продублировал эту инфу и в Code Base