Ну конечно нужно чтобы не сливал. Да и вообще, сливает на более ранних периодах.
В логике там можно выделить две части:
Вот эта первая, если вторую закоментировать, ведет себя в прошлом лучше.
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
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Эксперт для 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);
}
//+------------------------------------------------------------------+