Группа "Стол заказов MQL"

Рейтинг 2081



РЕКОМЕНДУЮ



Советник помощник для фиксации прибыли МТ4 - 4 знак

Андрей, прошу написать советник который будет подстраховывать прибыль. Бывает что цена не доходит до тейк профита 1-2 пункта и разворачивается закрывая сделку в ноль. Чтоб такого не происходило нужен советник.

1. Советник стоит на одной паре, а отслеживает все пары с открытыми сделками.
2. ТР в пунктах может стоять любой и когда до ТР остается дойти 5 п, то стоп лосс подтягивается на 10 п ниже цены ТР.

Например: открыта сделка с выставленным ТР 60 п, когда цена будет + 55 п, то СЛ подтягивается на + 50 п.

3. Функция безубытка срабатывает когда цена пройдет например 2 размера стопа, тогда СЛ ставиться на цену открытия сделки. ТР на разных парах всегда разный и такая функция перевода в безубыток была бы самой подходящей.
  • 0
  • Просмотров: 2475
  • 16 марта 2020, 02:04
  • Wizas
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Доработка индикатора Auto_trend_forecaster
15 марта 2020
16 марта 2020

Комментарии (19)

+
0
идея интересная готов быть поручителем если надо*budenov* 
avatar

  9  Borg Сообщений: 88 - Borg

  • 16 марта 2020, 12:29
+
0
А универсальный трейлтн-стоп от сMillionа не пробовали.Ставите трейлингстарт 55пунктов, а трейлингстоп 5пунктов и получаете то что просите: трейлингстоп стартует при достижении прибыли в 55 пунктов на растояние 5 пунктов от цены.
avatar

  19  alex30774 Сообщений: 715

  • 16 марта 2020, 12:57
+
0
вчера другие его работы тестил, сейчас гляну, спасибо!
avatar

  9  Wizas Автор Сообщений: 146

  • 16 марта 2020, 15:32
+
0
alex30774 ссылка есть на советник? у него там целая куча ихи все не то.
avatar

  9  Wizas Автор Сообщений: 146

  • 16 марта 2020, 15:49
+
0
Ссылки не работает, он похоже погорячился когда выложил.Могу дать код: перенеси в
МетаЕдитор и от компилируй.

//+------------------------------------------------------------------+
//| Copyright © 2014, Хлыстов Владимир |
//| cmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright «Copyright © 2014, <a href="http://cmillion.narod.ru">cmillion.narod.ru</a>»
#property link «cmillion@narod.ru»
#property description «Советник выставляет всем ордерам стоплосс тейкпрофит и переводит их в безубыток»
//--------------------------------------------------------------------*/
extern int Stoploss = 100, //стоплосс
Takeprofit = 50, //тейкпрофит
NoLoss = 10, //перевод в безубыток, если 0, то нет перевода в безубыток
MinProfitNoLoss = 1, //минимальная прибыль при переводе вбезубыток
TrailingStop = 0, //трейлингстоп, если 0, то нет трейлинга
TrailingStart = 0, //когда включать тралл, например после достижения 40 п прибыл
StepTrall = 2, //шаг тралла — перемещать стоплосс не ближе чем StepTrall
Magic = 0; //магический номер ордера
//-------------------------------------------------------------------- 
int init() 
{ 
DrawLABEL(«Stoploss»,StringConcatenate(«Stoploss »,Stoploss),5,15,Gray);
DrawLABEL(«Takeprofit»,StringConcatenate(«Takeprofit »,Takeprofit),5,35,Gray);
DrawLABEL(«NoLoss»,StringConcatenate(«NoLoss »,NoLoss," + ",MinProfitNoLoss),5,55,Gray);
DrawLABEL(«TrailingStop»,StringConcatenate(«TrailingStop »,TrailingStop," + ",TrailingStart," + ",StepTrall),5,75,Gray);
return(0);
}
//-------------------------------------------------------------------
int deinit()
{
ObjectDelete(«Stoploss»);
ObjectDelete(«Takeprofit»);
ObjectDelete(«NoLoss»);
ObjectDelete(«TrailingStop»);
return(0);
}
//--------------------------------------------------------------------
int start()
{
if (!IsTradeAllowed()) return(0);
int STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
double OSL,OTP,OOP,StLo,SL,TP;
int tip;
for (int i=0; i<OrdersTotal(); i++)
{ 
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{ 
if (OrderSymbol()==Symbol()&& Magic==OrderMagicNumber())

{ 
tip = OrderType(); 
OSL = NormalizeDouble(OrderStopLoss(),Digits);
OTP = NormalizeDouble(OrderTakeProfit(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
SL=OSL;TP=OTP;
if (tip==OP_BUY) 
{ 
if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0 )
{
SL = NormalizeDouble(OOP — Stoploss * Point,Digits);
} 
if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)
{
TP = NormalizeDouble(OOP + Takeprofit * Point,Digits);
} 
if (OSL<OOP && MinProfitNoLoss!=0 && MinProfitNoLoss>=STOPLEVEL)
{
StLo = NormalizeDouble(OOP+MinProfitNoLoss*Point,Digits); 
if (StLo > OSL && StLo <= NormalizeDouble(OOP+ NoLoss * Point,Digits)) SL = StLo;
}
if (TrailingStop>=STOPLEVEL && TrailingStop!=0 && (Bid — OOP)/Point >= TrailingStart)
{
StLo = NormalizeDouble(Bid — TrailingStop*Point,Digits); 
if (StLo>=OOP && StLo > OSL+StepTrall*Point) SL = StLo;
}
if (SL != OSL || TP != OTP)
{ 
if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print(«Error OrderModify »,GetLastError());
}
} 
if (tip==OP_SELL) 
{
if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)
{
SL = NormalizeDouble(OOP + Stoploss * Point,Digits);
}
if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)
{
TP = NormalizeDouble(OOP — Takeprofit * Point,Digits);
}
if ((OSL>OOP || OSL==0) && NoLoss!=0 && NoLoss>=STOPLEVEL)
{
StLo = NormalizeDouble(OOP-MinProfitNoLoss*Point,Digits); 
if ((StLo < OSL || OSL==0) && StLo >= NormalizeDouble(Ask + NoLoss * Point,Digits)) SL = StLo;
}
if (TrailingStop>=STOPLEVEL && TrailingStop!=0 && (OOP — Ask)/Point >= TrailingStart)
{
StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits); 
if (StLo<=OOP && (StLo < OSL-StepTrall*Point || OSL==0)) SL = StLo;
}
if (SL != OSL || TP != OTP)
{ 
if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print(«Error OrderModify »,GetLastError());
}
} 
}
}
} 
return(0);
}
//--------------------------------------------------------------------
void DrawLABEL(string name, string Name, int X, int Y, color clr)
{
if (ObjectFind(name)==-1)
{
ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
ObjectSet(name, OBJPROP_CORNER, 1);
ObjectSet(name, OBJPROP_XDISTANCE, X);
ObjectSet(name, OBJPROP_YDISTANCE, Y);
}
ObjectSetText(name,Name,12,«Arial»,clr);
}
//--------------------------------------------------------------------

Редактирован: 17 марта 2020, 15:30
avatar

  19  alex30774 Сообщений: 715

  • 16 марта 2020, 17:33
+
0
Когда перенесёшь в МетаЕдитор нажми на расчёску потом компиляция.
avatar

  19  alex30774 Сообщений: 715

  • 16 марта 2020, 17:34
+
0
Исправил ошибки*zapoy* 
avatar

  12  Slava78 Сообщений: 598

  • 16 марта 2020, 18:04
+
0
//+------------------------------------------------------------------+
//|                               Copyright © 2014, Хлыстов Владимир |
//|                                                cmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright "http://cmillion.narod.ru/" 
#property link "cmillion@narod.ru"
#property description "Советник выставляет всем ордерам стоплосс тейкпрофит и переводит их в безубыток"
//--------------------------------------------------------------------*/
extern int Stoploss = 100, //стоплосс
Takeprofit = 50, //тейкпрофит
NoLoss = 10, //перевод в безубыток, если 0, то нет перевода в безубыток
MinProfitNoLoss = 1, //минимальная прибыль при переводе вбезубыток
TrailingStop = 0, //трейлингстоп, если 0, то нет трейлинга
TrailingStart = 0, //когда включать тралл, например после достижения 40 п прибыл
StepTrall = 2, //шаг тралла — перемещать стоплосс не ближе чем StepTrall
Magic = 0; //магический номер ордера
//--------------------------------------------------------------------
int init()
{
DrawLABEL("Stoploss",StringConcatenate("Stoploss",Stoploss),5,15,Gray);
DrawLABEL("Takeprofit",StringConcatenate("Takeprofit",Takeprofit),5,35,Gray);
DrawLABEL("NoLoss",StringConcatenate("NoLoss",NoLoss," + ",MinProfitNoLoss),5,55,Gray);
DrawLABEL("TrailingStop",StringConcatenate("TrailingStop",TrailingStop," + ",TrailingStart," + ",StepTrall),5,75,Gray);
return(0);
}
//-------------------------------------------------------------------
int deinit()
{
ObjectDelete("Stoploss");
ObjectDelete("Takeprofit");
ObjectDelete("NoLoss");
ObjectDelete("TrailingStop");
return(0);
}
//--------------------------------------------------------------------
int start()
{
if (!IsTradeAllowed()) return(0);
int STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
double OSL,OTP,OOP,StLo,SL,TP;
int tip;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol()&& Magic==OrderMagicNumber())

{
tip = OrderType();
OSL = NormalizeDouble(OrderStopLoss(),Digits);
OTP = NormalizeDouble(OrderTakeProfit(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
SL=OSL;TP=OTP;
if (tip==OP_BUY)
{
if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0 )
{
SL = NormalizeDouble(OOP-Stoploss * Point,Digits);
}
if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)
{
TP = NormalizeDouble(OOP + Takeprofit * Point,Digits);
}
if (OSL<OOP && MinProfitNoLoss!=0 && MinProfitNoLoss>=STOPLEVEL)
{
StLo = NormalizeDouble(OOP+MinProfitNoLoss*Point,Digits);
if (StLo > OSL && StLo <= NormalizeDouble(OOP+ NoLoss * Point,Digits)) SL = StLo;
}
if (TrailingStop>=STOPLEVEL && TrailingStop!=0 && (Bid-OOP)/Point >= TrailingStart)
{
StLo = NormalizeDouble(Bid-TrailingStop*Point,Digits);
if (StLo>=OOP && StLo > OSL+StepTrall*Point) SL = StLo;
}
if (SL != OSL || TP != OTP)
{
if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error OrderModify",GetLastError());
}
}
if (tip==OP_SELL)
{
if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)
{
SL = NormalizeDouble(OOP + Stoploss * Point,Digits);
}
if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)
{
TP = NormalizeDouble(OOP-Takeprofit * Point,Digits);
}
if ((OSL>OOP || OSL==0) && NoLoss!=0 && NoLoss>=STOPLEVEL)
{
StLo = NormalizeDouble(OOP-MinProfitNoLoss*Point,Digits);
if ((StLo < OSL || OSL==0) && StLo >= NormalizeDouble(Ask + NoLoss * Point,Digits)) SL = StLo;
}
if (TrailingStop>=STOPLEVEL && TrailingStop!=0 && (OOP-Ask)/Point >= TrailingStart)
{
StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits);
if (StLo<=OOP && (StLo < OSL-StepTrall*Point || OSL==0)) SL = StLo;
}
if (SL != OSL || TP != OTP)
{
if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error OrderModify",GetLastError());
}
}
}
}
}
return(0);
}
//--------------------------------------------------------------------
void DrawLABEL(string name, string Name, int X, int Y, color clr)
{
if (ObjectFind(name)==-1)
{
ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
ObjectSet(name, OBJPROP_CORNER, 1);
ObjectSet(name, OBJPROP_XDISTANCE, X);
ObjectSet(name, OBJPROP_YDISTANCE, Y);
}
ObjectSetText(name,Name,12,clr);
}
//--------------------------------------------------------------------
avatar

  12  Slava78 Сообщений: 598

  • 16 марта 2020, 18:03
+
0
Там не было ошибок, я просто коректно не умею выкладывать на сайт

avatar

  19  alex30774 Сообщений: 715

  • 16 марта 2020, 18:11
+
0
При компиляции выдало неправильные символы
<< >> такие ковычки не могут быть
"" такие могут
avatar

  12  Slava78 Сообщений: 598

  • 17 марта 2020, 20:31
+
0
на 24-е
avatar

  34  AM2 Сообщений: 15866 - Андрей

  • 16 марта 2020, 17:34
+
0
Спасибо, буду ждать!
avatar

  9  Wizas Автор Сообщений: 146

  • 16 марта 2020, 18:03
+
0
Друзья, всем спасибо за помощь кто откликнулся! *good* 
avatar

  9  Wizas Автор Сообщений: 146

  • 16 марта 2020, 18:05
+
0
делать или найдено готовое решение?
avatar

  34  AM2 Сообщений: 15866 - Андрей

  • 17 марта 2020, 20:19
+
0
Конечно делай, готовое решение не найдено.
avatar

  9  Wizas Автор Сообщений: 146

  • 18 марта 2020, 13:05
+
0
avatar

  34  AM2 Сообщений: 15866 - Андрей

  • 18 марта 2020, 20:03
+
0
Спасибо, буду ждать! *good* 
avatar

  9  Wizas Автор Сообщений: 146

  • 19 марта 2020, 00:58
+
0
я вам вчера сделал: zakaz.opentraders.ru/53827.html
avatar

  34  AM2 Сообщений: 15866 - Андрей

  • 19 марта 2020, 19:42
+
0
Спасибо за скорость! *good* 
avatar

  9  Wizas Автор Сообщений: 146

  • 24 марта 2020, 01:03

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари