Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Поиск на MQL5.community ведется во всех разделах. Попробуй сам!
samuliak
7
samuliak 2012.06.25 18:35 

Привет, у меня есть советник, в котором после того, как вручную нарисовал линию тренда, то она при прикосновении входит с рынок. Мне сова нравиться. Но я хочу добавить в него трейлинг стоп и по возможности, что бы он сам рисовал линию тренда. Так как я в программировании почти ничего не понимаю. Прошу вашей помощи! За одно и себе возьмете советник.

А вот и сам код советника

//+------------------------------------------------------------------+
//| SimulatorTrend v.1.0.mq4 |
//| Samuliak Roman |
//| r.samuliak@yandex.ua |
//+------------------------------------------------------------------+
#property copyright "Samuliak Roman"
#property link "http://mql4you.ru"
#include <MyLib.mqh>
extern int MaxRisk=1;
extern int Take=50;
extern int Stop=100;
extern int Delta=5;
//+------------------------------------------------------------------+
int init() {return(0);}
//+------------------------------------------------------------------+
int deinit() {Comment("");return(0);}
//+------------------------------------------------------------------+
int start()
{if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
//проверим что есть трендовая линия и она в единственном экземпляре
if(ObjectsTotal(OBJ_TREND)!=1)
{Comment("Нарисуйте 1 трендовую линию!");
return(0);}
//получим ИМЯ трендовой линии
for(int i=0;i<ObjectsTotal();i++)
{string name=ObjectName(i);
if(ObjectType(name)==OBJ_TREND) break;}
//проверим что трендовая линия нарисована правильно (по движению цены)
datetime t1=ObjectGet(name,OBJPROP_TIME1);
datetime t2=ObjectGet(name,OBJPROP_TIME2);
if(t1>t2)
{Comment("Неправильно нарисована трендовая линия!");
return(0);}
//продолжим линию (свойство луч)
ObjectSet(name,OBJPROP_RAY,true);
//определим тренд (вверх или вниз)
bool trend=false;
double p1=ObjectGet(name,OBJPROP_PRICE1);
double p2=ObjectGet(name,OBJPROP_PRICE2);
if(p1<p2) trend=true;
//определим текущее значение трендовой линии и сообщим ее параметры
double pr=ObjectGetValueByShift(name,0);
Comment("Name=",name," Trend=",trend," Value=",pr);
//подсчитаем кол-во ордеров
int oBuy=0,oSell=0;
for(i=OrdersTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol())
{if(OrderType()==OP_BUY) oBuy++;
if(OrderType()==OP_SELL) oSell++;}
//если нет ордеров и цена подошла к трендовой линии - откроем ордер
double tp=0,sl=0;
double Lot=GetLot(MaxRisk);
if(Lot==0.0) {Alert("Недостаточно средств!");return(0);}
if(oBuy+oSell==0 && trend && Bid>=pr && Bid<=pr+Delta*Point)
{if(TakeProfit>0) tp=Ask+TakeProfit*Point;
if(StopLoss>0) sl=Ask-StopLoss*Point;
NewOrder(OP_BUY,Lot,Ask,tp,sl);}
if(oBuy+oSell==0 && !trend && Ask<=pr && Ask>=pr-Delta*Point)
{if(TakeProfit>0) tp=Bid-TakeProfit*Point;
if(StopLoss>0) sl=Bid+StopLoss*Point;
NewOrder(OP_SELL,Lot,Bid,tp,sl);}
return(0);}
//+------------------------------------------------------------------+

Alexey Subbotin
4999
Alexey Subbotin 2012.06.25 19:23  
Думаю, Вам в job
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий