Новые сообщения · Участники · Правила форума · Поиск · RSS · Вход · Регистрация ·

Страница 1 из 11
Форум трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » учимся создавать советники
учимся создавать советники

startbordДата: Пятница, 24.07.2009, 18:31 | Сообщение # 1
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 9
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

вот шаблон по которому я делаю советники только не могу понять почему какой бы я не воткнул ему индикатор открывает так много сделок а мне надо чтоб одну сделку открыл и ждал когда она закроеться + трал не работает в чем проблема подскажите плиззз

extern string s0 = "Setup: Main";
extern int Magic = 1121;
extern double lots = 0.1;
extern int StopLoss = 20;
extern int TakeProfit = 50;
extern double TrailingStop = 19;
int slip = 3;
extern int MaxTrade =1;

int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
static datetime TimeFlag = 0;
datetime TimeLast = Time[0];
if(TimeFlag < TimeLast)
{
TimeFlag = TimeLast;

//int MACD = GetSignal_MACD();
int RSI = GetSignal_RSI();
//int CCI = GetSignal_CCI();
//int STOCH = GetSignal_STOCH();
//int MA = GetSignal_MA();

AnalyzeSignals( RSI);
}
return(0);
}

void AnalyzeSignals( int RSI )
{
int res;

if( RSI == OP_BUY )
{
res = OrderSend(Symbol(), OP_BUY, lots, Ask, slip, Bid - StopLoss*Point, Bid + TakeProfi+TrailingStopt*Point, NULL, Magic,MaxTrade);
if (OrdersTotal()<MaxTrade)
if(res < 0) {Alert("OrderSend Error: ", GetLastError());}

}

else if( RSI == OP_SELL )
{
res = OrderSend(Symbol(), OP_SELL, lots, Bid, slip, Ask + StopLoss*Point, Ask - TakeProfit-TrailingStop*Point, NULL, Magic,MaxTrade);
if (OrdersTotal()<MaxTrade)
if(res < 0) {Alert("OrderSend Error: ", GetLastError());}
}

}
//----

int GetSignal_RSI()
{
double ha0_M1 = iCustom(NULL,0, "HeikenAshi_DM", 0, 1);
double ha1_m1 = iCustom(NULL,0, "HeikenAshi_DM", 1, 1);

if(ha0_M1 > ha1_m1)
return(OP_SELL);

else

if(ha0_M1< ha1_m1)

return(OP_BUY);

else
return(-1);
}



Сообщение отредактировал startbord - Пятница, 24.07.2009, 18:39
 
Сообщениевот шаблон по которому я делаю советники только не могу понять почему какой бы я не воткнул ему индикатор открывает так много сделок а мне надо чтоб одну сделку открыл и ждал когда она закроеться + трал не работает в чем проблема подскажите плиззз

extern string s0 = "Setup: Main";
extern int Magic = 1121;
extern double lots = 0.1;
extern int StopLoss = 20;
extern int TakeProfit = 50;
extern double TrailingStop = 19;
int slip = 3;
extern int MaxTrade =1;

int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
static datetime TimeFlag = 0;
datetime TimeLast = Time[0];
if(TimeFlag < TimeLast)
{
TimeFlag = TimeLast;

//int MACD = GetSignal_MACD();
int RSI = GetSignal_RSI();
//int CCI = GetSignal_CCI();
//int STOCH = GetSignal_STOCH();
//int MA = GetSignal_MA();

AnalyzeSignals( RSI);
}
return(0);
}

void AnalyzeSignals( int RSI )
{
int res;

if( RSI == OP_BUY )
{
res = OrderSend(Symbol(), OP_BUY, lots, Ask, slip, Bid - StopLoss*Point, Bid + TakeProfi+TrailingStopt*Point, NULL, Magic,MaxTrade);
if (OrdersTotal()<MaxTrade)
if(res < 0) {Alert("OrderSend Error: ", GetLastError());}

}

else if( RSI == OP_SELL )
{
res = OrderSend(Symbol(), OP_SELL, lots, Bid, slip, Ask + StopLoss*Point, Ask - TakeProfit-TrailingStop*Point, NULL, Magic,MaxTrade);
if (OrdersTotal()<MaxTrade)
if(res < 0) {Alert("OrderSend Error: ", GetLastError());}
}

}
//----

int GetSignal_RSI()
{
double ha0_M1 = iCustom(NULL,0, "HeikenAshi_DM", 0, 1);
double ha1_m1 = iCustom(NULL,0, "HeikenAshi_DM", 1, 1);

if(ha0_M1 > ha1_m1)
return(OP_SELL);

else

if(ha0_M1< ha1_m1)

return(OP_BUY);

else
return(-1);
}


Автор - startbord
Дата добавления - 24.07.2009 в 18:31

expforexДата: Пятница, 24.07.2009, 21:09 | Сообщение # 2
Главный Администартор
Группа: Администраторы
Сообщений: 9109
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

Стоит внести некоторые исправления, чтобы сделки не открывались так часто:

Code
extern string s0 = "Setup: Main";   
extern int Magic = 1121;   
extern double lots = 0.1;   
extern int StopLoss = 20;   
extern int TakeProfit = 50;   
extern double TrailingStop = 19;   
int slip = 3;   
extern int MaxTrade =1;   

int Alt;

int start()   
{   
static datetime TimeFlag = 0;   
datetime TimeLast = Time[0];   
if(TimeFlag < TimeLast)   
{   
TimeFlag = TimeLast;   

//int MACD = GetSignal_MACD();   
int RSI = GetSignal_RSI();   
//int CCI = GetSignal_CCI();   
//int STOCH = GetSignal_STOCH();   
//int MA = GetSignal_MA();   

AnalyzeSignals( RSI);   
}   
return(0);   
}   

void AnalyzeSignals( int RSI )   
{   
int res;   

if( RSI == OP_BUY  && Alt!=Time[0])   
{   
res = OrderSend(Symbol(), OP_BUY, lots, Ask, slip, Bid - StopLoss*Point, Bid + TakeProfi+TrailingStopt*Point, NULL, Magic,MaxTrade);   
Alt=Time[0];
if(res < 0) {Alert("OrderSend Error: ", GetLastError());}   

}   

else if( RSI == OP_SELL && Alt!=Time[0])   
{   
res = OrderSend(Symbol(), OP_SELL, lots, Bid, slip, Ask + StopLoss*Point, Ask - TakeProfit-TrailingStop*Point, NULL, Magic,MaxTrade);   
Alt=Time[0];
if(res < 0) {Alert("OrderSend Error: ", GetLastError());}   
}   

}   
//----   

int GetSignal_RSI()   
{   
double ha0_M1 = iCustom(NULL,0, "HeikenAshi_DM", 0, 1);   
double ha1_m1 = iCustom(NULL,0, "HeikenAshi_DM", 1, 1);   

if(ha0_M1 > ha1_m1)   
return(OP_SELL);   

else   

if(ha0_M1< ha1_m1)   

return(OP_BUY);   

else   
return(-1);   
}



Программирование на заказ || Наши Разработки
 
СообщениеСтоит внести некоторые исправления, чтобы сделки не открывались так часто:

Code
extern string s0 = "Setup: Main";   
extern int Magic = 1121;   
extern double lots = 0.1;   
extern int StopLoss = 20;   
extern int TakeProfit = 50;   
extern double TrailingStop = 19;   
int slip = 3;   
extern int MaxTrade =1;   

int Alt;

int start()   
{   
static datetime TimeFlag = 0;   
datetime TimeLast = Time[0];   
if(TimeFlag < TimeLast)   
{   
TimeFlag = TimeLast;   

//int MACD = GetSignal_MACD();   
int RSI = GetSignal_RSI();   
//int CCI = GetSignal_CCI();   
//int STOCH = GetSignal_STOCH();   
//int MA = GetSignal_MA();   

AnalyzeSignals( RSI);   
}   
return(0);   
}   

void AnalyzeSignals( int RSI )   
{   
int res;   

if( RSI == OP_BUY  && Alt!=Time[0])   
{   
res = OrderSend(Symbol(), OP_BUY, lots, Ask, slip, Bid - StopLoss*Point, Bid + TakeProfi+TrailingStopt*Point, NULL, Magic,MaxTrade);   
Alt=Time[0];
if(res < 0) {Alert("OrderSend Error: ", GetLastError());}   

}   

else if( RSI == OP_SELL && Alt!=Time[0])   
{   
res = OrderSend(Symbol(), OP_SELL, lots, Bid, slip, Ask + StopLoss*Point, Ask - TakeProfit-TrailingStop*Point, NULL, Magic,MaxTrade);   
Alt=Time[0];
if(res < 0) {Alert("OrderSend Error: ", GetLastError());}   
}   

}   
//----   

int GetSignal_RSI()   
{   
double ha0_M1 = iCustom(NULL,0, "HeikenAshi_DM", 0, 1);   
double ha1_m1 = iCustom(NULL,0, "HeikenAshi_DM", 1, 1);   

if(ha0_M1 > ha1_m1)   
return(OP_SELL);   

else   

if(ha0_M1< ha1_m1)   

return(OP_BUY);   

else   
return(-1);   
}

Автор - expforex
Дата добавления - 24.07.2009 в 21:09

startbordДата: Четверг, 24.09.2009, 01:23 | Сообщение # 3
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 9
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

ой спасибо и правда все стало нормально только в тестере он все по прежнему также все делает biggrin

Добавлено (23.09.2009, 22:23)
---------------------------------------------
нее не помогло это просто по я воткнул туда индикатор который сигналит не так часто вот и получилась вроде как фильтрация сигнала и при новом сигнале новая сделка а старая не закрылась)а по моей тс нужно чтоб одна сделка была)конечно можно поискать другую библиотеку функций но заметил что не все эксперты могут привязываться к чат таймфрему а этот может )я понимаю что лучше написать с чистого листа самому но я еще не до конца разобрался в программировании еще нужно учиться и учиться но увы времени не хватает штурмовать учебники но я упорно тружусь над этим младший)) брат блин не помогает хотя знает этот язык от и до. говорит учись сам смотри как люди пишут сравнивай узнавай что это значит а что то ))



Сообщение отредактировал startbord - Четверг, 24.09.2009, 01:29
 
Сообщениеой спасибо и правда все стало нормально только в тестере он все по прежнему также все делает biggrin

Добавлено (23.09.2009, 22:23)
---------------------------------------------
нее не помогло это просто по я воткнул туда индикатор который сигналит не так часто вот и получилась вроде как фильтрация сигнала и при новом сигнале новая сделка а старая не закрылась)а по моей тс нужно чтоб одна сделка была)конечно можно поискать другую библиотеку функций но заметил что не все эксперты могут привязываться к чат таймфрему а этот может )я понимаю что лучше написать с чистого листа самому но я еще не до конца разобрался в программировании еще нужно учиться и учиться но увы времени не хватает штурмовать учебники но я упорно тружусь над этим младший)) брат блин не помогает хотя знает этот язык от и до. говорит учись сам смотри как люди пишут сравнивай узнавай что это значит а что то ))


Автор - startbord
Дата добавления - 24.09.2009 в 01:23
Форум трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » учимся создавать советники
Страница 1 из 11
Поиск:


WebMoney Яндекс цитирования.