Автоматическая установка стопа и тейка

indАрхив с советником Loss-Take Скачать.

Часто мы понимаем, что стоп ставить надо, но не ставим по ряду причин. Поэтому гораздо проще, если расстановкой стопов и тейков занимается "специально обученный" советник. Этот советник находится в архиве. Суть предельно проста. Он устанавливается на любой график, в настройках ему необходимо разрешить торговлю, плюс включить автоторговлю. Как только ордер открыт, советник автоматически выставит заранее заданные стоп и тейк по этому ордеру в зависимости от цены его открытия. Советник ставится один раз на любой график, а модифицировать он будет любые открытые ордера, где отсутствует стоп лосс.
При этом, заданные параметры стопа и тейка будут применены абсолютно к любым парам и графикам. Исключение составляет лишь валютная пара USDDKK. Для этой пары входные значения увеличатся автоматически в 2,5 раза. То есть, если по всем парам стоп установлен на уровне 400 пунктов, то на USDDKK он будет равен 1000 пунктов.

Важно: В советнике не допускается нулевых параметров. При значении параметра "0", соответствующий отложенный ордер будет установлен на уровне цены открытия при первой же возможности.

Входные параметры:
ST
- StopLoss - размер стоп лосса в пунктах;
- TakeProfit - размер тейк профита в пунктах.
Для установки советника необходимо распаковать архив, Скопировать файл Loss-Take.ex4 в папку Experts Вашего терминала, (например, эта папка может находиться по адресу C:\Program Files\Alpari Limited MT4\MQL4\Experts) запустить терминал.
ind
Архив с советником Loss-Take Скачать.

И сам код с комментариями для любителей в нем повозиться:

//+------------------------------------------------------------------+
//| Loss-Take.mq4 |
//| Copyright 2015-2016, Assurkov.ru |
//| http://www.assurkov.ru |
//+------------------------------------------------------------------+
#property strict // особый режим проверки на ошибки и далее немного описания
#property copyright "Copyright © 2015-2016, www.assurkov.ru, Alexey Surkov"
#property link "http://www.assurkov.ru/"
#property version "1.00"
// блок входных данных, только размер стопа и тейка указывается
input double StopLoss =400;
input double TakeProfit =800;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnTick() //Запускаем наш код при каждом новом тике
{

int _GetLastError = 0, _OrdersTotal = OrdersTotal(); // в цикле перебираем открытые ордера
for ( int z = _OrdersTotal - 1; z >= 0; z -- )
{

if ( !OrderSelect( z, SELECT_BY_POS, MODE_TRADES ) ) // условие: если выбрана открытая позиция
{
_GetLastError = GetLastError(); // а если не выбрана выводим сообщение об ошибке
Print( "OrderSelect( ", z, ", SELECT_BY_POS ) - Error #", _GetLastError );
continue;
}

if(OrderType()==OP_BUY && OrderStopLoss()==0 && OrderSymbol()!="USDDKK")// если открыт ордер на покупку, у него стопа нет (равен нулю) и он открыт на любой паре кроме USDDKK
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-MarketInfo(OrderSymbol(),MODE_POINT)*StopLoss,OrderOpenPrice()+MarketInfo(OrderSymbol(),MODE_POINT)*TakeProfit,0,Green))
Print("OrderModify error ",GetLastError()); // тогда устанавливаем ему наш стоп и тейк
return;
}

if(OrderType()==OP_SELL && OrderStopLoss()==0 && OrderSymbol()!="USDDKK")// если открыт ордер на продажу, у него стопа нет (равен нулю) и он открыт на любой паре кроме USDDKK
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+MarketInfo(OrderSymbol(),MODE_POINT)*StopLoss,OrderOpenPrice()-MarketInfo(OrderSymbol(),MODE_POINT)*TakeProfit,0,Green))
Print("OrderModify error ",GetLastError());// тогда устанавливаем ему наш стоп и тейк
return;
}
// а теперь то же самое только для пары USDDKK, но умножая наш стоп и тейк на 2,5

if(OrderType()==OP_BUY && OrderStopLoss()==0 && OrderSymbol()=="USDDKK")
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-MarketInfo(OrderSymbol(),MODE_POINT)*2.5*StopLoss,OrderOpenPrice()+MarketInfo(OrderSymbol(),MODE_POINT)*2.5*TakeProfit,0,Green))
Print("OrderModify error ",GetLastError());
return;
}

if(OrderType()==OP_SELL && OrderStopLoss()==0 && OrderSymbol()=="USDDKK")
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+MarketInfo(OrderSymbol(),MODE_POINT)*2.5*StopLoss,OrderOpenPrice()-MarketInfo(OrderSymbol(),MODE_POINT)*2.5*TakeProfit,0,Green))
Print("OrderModify error ",GetLastError());
return;
}

}}

1 Comment on Автоматическая установка стопа и тейка

  1. Можно сделать советник который будет на одном графике контролировать 4 открытых ордера одновременно с разными стопами?
    И добавить нулевое значение для стопа, бывают сделки в которых стоп не сильно нужен.

Комментарии закрыты.