date_range Добавлено: 29.07.2010

date_range Обновлено:

remove_red_eyeПросмотров: 13490

dashboardКатегория: Наши советники и утилиты


Шаблон советника для автоматической торговли

Описание

Данный шаблон предназначен для общих целей создания экспертов, в этом шаблоне заложены самые важные и 

необходимые функции работы с экспертом 


Среди возможностей данного шаблона есть:
1. Использование / НЕ использование - Стоплоссов / Тейкпрофитов
2. Использование / НЕ использование - Торговли по времени
3. Использование / НЕ использование - MarketWatch технологии ведении торговли (включение - Только для знающих)
4. Использование / НЕ использование - Отложенных ордеров / позиций по рынку - на выбор
5. Использование / НЕ использование - Автолота, либо же использование фиксированного лота
6. Использование / НЕ использование - Закрытия позиций по обратному сигналу
7. Использование / НЕ использование - Трейлингстопа


ВНИМАНИЕ!!! КОД ПОЛНОСТЬЮ ОТКРЫТЫЙ И КОММЕНТИРОВАННЫЙ

 

  1. Подробнее о шаблоне номер 1
  2. Программирование на заказ
  3. Шаблон №10
  4. Расширенный шаблон №12
  5. (Статья описаний функций)
 

В этом шаблоне заложены самые важные и необходимые функции работы с экспертом.

 
  1. Автолот(Расчет лота от текущего баланса) Мани менеджмент
  2. Работа по времени(Ограничение работы советника по времени торговли);
  3. Трейлингстоп(Стандартный, с алгоритмом "Только профитные");
  4. Трейлингстоп по ПАРАБОЛИКу ;
  5. MarketWatch ECN(Работа на счетах групп ECN NDD);
  6. Функции обработки ошибок для реальных счетов;
  7. Блок закрытия по общей прибыли и убытку с возможностью отключить все советники на счете;
  8. Безубыток(Установка стоплоссов на нулевой уровень);
  9. Мартингейл(Увеличения следующего лота, после убыточной позиции);
  10. Работа исключительно по сигналам индикатора(Сигнал - открытие, Сигнал - закрытие противоположного ордера - открытие );
  11. Закрытие противоположного сигнала, при смене сигнала;
  12. Функция "РЕВЕРС", переворот сигналов Вашей стратегии;
  13. Работа на отложенных ордерах / работа на позициях;
  14. Блок работы усреднения;  Описание
  15. Блок работы траллингстопа на откатах  Описание

 

 

Введение

 

Многие трейдеры сталкивалось с проблемой написания своих экспертов.

С чего начать?
Как задать в коде советника тейк-профит, стоп-лосс или трейлинг-стоп?
Как проверить стратегию на работоспособность?
Вы не хотите заказывать у программиста то, что уже давно сделано до Вас?
Вы нашли похожую стратегию и желаете ее улучшить?
Как программист хочу сказать, что каждый 3 заказ похож на предшественника по своей логике.
Такие заказы выполняются как правило дешевле.

 

Каждый программист имеет в своем наборе ряд функций и библиотек для написания советников и пользуется

 ими при написании того или иного заказа.

 

Благодаря данной статье и шаблону, Вы сами сможете написать свой первый код на языке MQL4.

 

Шаблон советника для автоматической торговли


Данный шаблон предназначен для общих целей создания экспертов, в этом шаблоне заложены самые

 важные и необходимые функции работы с экспертом

Среди возможностей данного шаблона есть:

Использование / НЕ использование - Стоплоссов / Тейкпрофитов
Использование / НЕ использование - Торговли по времени
Использование / НЕ использование - MarketWatch технологии ведении торговли
 (включение - Только для знающих)
Использование / НЕ использование - Отложенных ордеров / позиций по рынку - на выбор
Использование / НЕ использование - Автолота, либо же использование фиксированного лота
Использование / НЕ использование - Закрытия позиций по обратному сигналу
Использование / НЕ использование - Трейлингстопа

 

Внешние параметры шаблона:  

Параметр Обозначение
Indicator " Настройки индикатора";
FastEMA Пример для вывода внешних параметров индикатора в шаблон
SlowEMA  
SignalSMA  
trade Настройки торговли
CorectStopLevelwServers Корректировка значений стопов StopLoss TakeProfit StopOrderDeltaifUSE TrailingStop на минимально возможный уровень, при этом параметры следует установить на -1
Magic Магический номер
StopLoss Стоплосс, 0 - не используется
TakeProfit Тейкпрофит, 0 - не используется
Slippage Проскальзывание
MarketWatch Режим торговли по MarketWatch true = сначала выставляются позиции/ордера без стопов, потом происходит модификация - для некоторых брокеров
StopOrderUSE Использовать Отложенные ордера
StopOrderDeltaifUSE Дистанция для отложенных ордеров
ClosePosifChange Закрывать позиции при обратном сигнале
ONlyOnePosbySignal Играть только или бай и / или селл 1 позицией
autolot "Настройки автолота";
Lots Фиксированный лот
DynamicLot Динамический лот
LotBalancePcnt % от депозита
MinLot Минимальный лот при расчете
MaxLot Максимальный лот при расчете
timetrade "Настройки времени торговли";
OpenHour Час открытия торгов
OpenMinute Минута открытия торгов
CloseHour Час закрытия торгов
CloseMinute Минута закрытия торгов
Trailing "Настройки трейлингстопа";
TrailingStopUSE Использовать трейлингстоп
IfProfTrail Использовать только дял профитных позиций - режим безубытка
TrailingStop Дистанция трейлинга = 0 - минимально допустимый
TrailingStep Шаг дистанции

Список функций используемых в шаблоне

 
 
// Работа по времени
bool TDt(string CloseHour,string CloseMinute,string OpenHour,string OpenMinute)
 
// Удаление отложенных ордеров
bool DxO(string sy="",int op=-1,int mn=-1,datetime ot=0)
 
// Модификация позиций/ордеров
void ModifyOrder(double pp=-1,double sl=0,double tp=0,datetime ex=0)
 
// Наличие отложенных ордеров
bool ExO(string sy="",int op=-1,int mn=-1,datetime ot=0)
 
// Установка отложенного ордера
nt SetOrder(string sy,int op,double ll,double pp, double sl=0,double tp=0,int mn=0,datetime ex=0,string lsComm="")
 
// Возвращает флаг удачного выбора позиции по тикету
bool SBT(int ti,string sy="",int op=-1,int mn=-1)
 
// Открытие позиции по рынку
int OPs(string sy,int op,double ll,double sl=0,double tp=0,int mn=0,string coomment="")
 
// Наличие позиций по рынку
bool EPs(string sy="",int op=-1,int mn=-1,int ticket=0)
 
// Автолот
double GetSizeLot()
 
// Удаление 1 предварительно выбранной позиции
void CPBS()
 
// Удаление позиций по рынку
void CPD(string sy="",int op=-1,int mn=-1)
 
// Описание : Сопровождение позиций простым тралом
void SimpleTrailing(string sy="",int op=-1,int mn=-1)
 

 

int start()
  {
   int Signal; // Сигнал к открытию
//+-+
// Коррекция стоп уровней заданных пользователем, на минимально 
возможные уровни установленные сервером.: 
//+-+
   if(CorectStopLevelwServers)
     {
      if(StopOrderDeltaifUSE!=0 
&& StopOrderDeltaifUSE<MarketInfo(Symbol(),MODE_STOPLEVEL))
StopOrderDeltaifUSE=MarketInfo(Symbol(),MODE_STOPLEVEL);
      if(TrailingStop!=0 && TrailingStop<MarketInfo(Symbol(),MODE_STOPLEVEL))
TrailingStop=MarketInfo(Symbol(),MODE_STOPLEVEL);
      if(StopLoss!=0 && StopLoss<MarketInfo(Symbol(),MODE_STOPLEVEL))
StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL);
      if(TakeProfit!=0 && TakeProfit<MarketInfo(Symbol(),MODE_STOPLEVEL))
TakeProfit=MarketInfo(Symbol(),MODE_STOPLEVEL);
     }
//+-+
//Проверяем наличие торгового времени(разрешения на торговлю)
//+-+
   bool Traiding=TDt(DoubleToStr(CloseHour,0),DoubleToStr(CloseMinute,0),
DoubleToStr(OpenHour,0),DoubleToStr(OpenMinute,0));
//+-+
// Включение трейлингстопа:
//+-+
   if(TrailingStopUSE)SimpleTrailing(Symbol(),-1,Magic);

//+-+
//Получение сигналов от индикаторов:
//+-+

/*    *--- Здесь находится главнй блок управления сигналами ---*
При использовании этого блока следует знать:

При сигнале на покупку следует присваивать значение Signal=1;
При сигнале на продажу следует присваивать значение Signal=2;

 *--- Использование встроенных индикаторов ---*
 
 При использовании встроенных индикаторов необходимо руководствоваться 
встроенной справкой по языку программирования.


  *--- Использование внешних индикаторов (пользовательских) ---*

double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)

Расчет указанного пользовательского индикатора. Пользовательский индикатор
 должен быть скомпилирован (файл с расширением EX4) и находиться в директории 
каталог_терминала\experts\indicators.

Параметры:
symbol   -   Символьное имя инструмента, на данных которого будет вычисляться 
индикатор. NULL означает текущий символ.
timeframe   -   Период. Может быть одним из периодов графика. 0 означает период 
текущего графика.
name   -   Имя пользовательского индикатора.
...   -   Список параметров (при необходимости). Передаваемые параметры должны 
соответствовать порядку объявления и типу внешних (extern) переменных 
пользовательского индикатора.
mode   -   Индекс линии индикатора. Может быть от 0 до 7 и должен 
соответствовать индексу, используемому одной из функций SetIndexBuffer.
shift   -   Индекс получаемого значения из индикаторного буфера 
(сдвиг относительно текущего бара на указанное количество периодов назад).

Пример:
  double val=iCustom(NULL, 0, "SampleInd",13,1,0);

//
//       СТАРТ --- Г Л А В Н Ы Й   Б Л О К   И С П О Л Ь З О В А Н И Я    Ш А Б Л О Н А 
//
Пример
//+-+
// Пример: (Это лишь показательный пример использования пользовательского индикатора) 
//+-+
// Для этого ЧТОБЫ  эти параметры были доступны для оптимизации, их следует 
вывест в блок extern string Indicator_=" Настройки индикатора";
// (пример показан в внешних переменных)
   int FastEMA=12;
   int SlowEMA=26;
   int SignalSMA=9;

   double ind1=iCustom(NULL, 0, "MACD",FastEMA,SlowEMA,SignalSMA,0,0);
   double ind2=iCustom(NULL, 0, "MACD",FastEMA,SlowEMA,SignalSMA,0,1);


   if(/* Здесь указываем условие для индикатора, при котором мы будем покупать*/ 
    ind1>0 && ind2>0  )Signal=1;
   if(/* Здесь указываем условие для индикатора, при котором мы будем продавать*/  
  ind1<0 && ind2<0  )Signal=2;
//
//              ФИНИШ --- Г Л А В Н Ы Й   Б Л О К   И С П О Л Ь З О В А Н И Я    Ш А Б Л О Н А
//
//
//             Б Л О К   С О В Е Р Ш Е Н И Я    О П Е Р А Ц И Й
//




//+-+
// Если время торговли не истекло и мы не открывали позицию на этом баре:
//+-+

   if(Traiding && timeCheckSignal!=Time[0])

     {
      //+-+
      // Если сигнал на бай:
      //+-+
      if(Signal==1)// buy
        {
         //+-+
         // Проверяем если не используем отложки то
         //+-+
         if(!StopOrderUSE)
           {
            //Вычисляем стоплосс
            if(StopLoss!=0)sl=Bid-StopLoss*Point; else sl=0;
            // ВЫчисляем тейкпрофит
            if(TakeProfit!=0)tp=Ask+TakeProfit*Point; else tp=0;
            //+-+
            //Закрываем противоположную позицию
            //+-+
            if(ClosePosifChange)CPD(Symbol(),OP_SELL,Magic);
            //+-+
            //Открываем позицию
            //+-+
            if ((ONlyOnePosbySignal&&!EPs(Symbol(),OP_BUY,Magic)) || !ONlyOnePosbySignal)
OPs(Symbol(),OP_BUY,GetSizeLot(),sl,tp,Magic,"Templates www.expforex.com");

           }
         //+-+
         //Если используем отложки то 
         //+-+
         if(StopOrderUSE)
           {
            //Вычисляем стоплосс
            if(StopLoss!=0)sl=Bid+StopOrderDeltaifUSE*Point-StopLoss*Point; else sl=0;
            // ВЫчисляем тейкпрофит
            if(TakeProfit!=0)tp=Ask+StopOrderDeltaifUSE*Point+TakeProfit*Point; else tp=0;
            //+-+
            //Закрываем противоположную позицию
            //+-+
            if(ClosePosifChange){CPD(Symbol(),OP_SELL,Magic);DxO(Symbol(),OP_SELLSTOP,Magic);}
            //+-+
            //Открываем Ордер
            //+-+
            if ((ONlyOnePosbySignal&&!ExO(Symbol(),OP_BUYSTOP,Magic)&&!EPs(Symbol(),OP_BUY,Magic)) 
|| !ONlyOnePosbySignal)SetOrder(Symbol(),OP_BUYSTOP,GetSizeLot(),
Ask+StopOrderDeltaifUSE*Point,sl,tp,Magic,"Templates www.expforex.com");

           }

        }

      //+-+
      // Если сигнал на селл:
      //+-+
      if(Signal==2)// селл
        {
         //+-+
         // Проверяем если не используем отложки то
         //+-+
         if(!StopOrderUSE)
           {
            //Вычисляем стоплосс
            if(StopLoss!=0)sl=Ask+StopLoss*Point; else sl=0;
            // ВЫчисляем тейкпрофит
            if(TakeProfit!=0)tp=Bid-TakeProfit*Point; else tp=0;
            //Закрываем противоположную позицию
            if(ClosePosifChange)CPD(Symbol(),OP_BUY,Magic);
            //+-+
            //Открываем позицию
            //+-+
            if ((ONlyOnePosbySignal&&!EPs(Symbol(),OP_SELL,Magic)) || !ONlyOnePosbySignal)
OPs(Symbol(),OP_SELL,GetSizeLot(),sl,tp,Magic,"Templates www.expforex.com");
           }
         //+-+
         //Если используем отложки то 
         //+-+
         if(StopOrderUSE)
           {
            //Вычисляем стоплосс
            if(StopLoss!=0)sl=Ask-StopOrderDeltaifUSE*Point+StopLoss*Point; else sl=0;
            // ВЫчисляем тейкпрофит
            if(TakeProfit!=0)tp=Bid-StopOrderDeltaifUSE*Point-TakeProfit*Point; else tp=0;
            //Закрываем противоположную позицию
            if(ClosePosifChange){CPD(Symbol(),OP_BUY,Magic);DxO(Symbol(),OP_BUYSTOP,Magic);}
            //+-+
            //Открываем Ордер
            //+-+
            if ((ONlyOnePosbySignal&&!ExO(Symbol(),OP_SELLSTOP,Magic)&&!EPs(Symbol(),OP_SELL,Magic)) 
|| !ONlyOnePosbySignal)SetOrder(Symbol(),OP_SELLSTOP,GetSizeLot(),
Bid-StopOrderDeltaifUSE*Point,sl,tp,Magic,"Templates www.expforex.com");

           }

        }

      //+-+
      timeCheckSignal=Time[0];
      //+-+

     }

   return(0);
  }

 

Основной код шаблона заключен в start()

Блок определения сигналов
 

 

 if(/* Здесь указываем условие для индикатора, при котором мы будем покупать*/    
 ind1>0 && ind2>0  )Signal=1;
   if(/* Здесь указываем условие для индикатора, при котором мы будем продавать*/   
 ind1<0 && ind2<0  )Signal=2;

в Данном блоке и следует задавать свои сигналы для торговли. В качестве примера здесь 

приведен пример использования индикатора MACD

 

 

Заключение  

Данная статья и шаблон поможет новичкам в создании своих первых экспертов, 

исчезнут вопросы на форумах 

- как сделать простейшие системы торговли, а программисты смогут взять этот 

шаблон для разработки своих сложных систем.

Похожие записи
Здесь можно скачать Шаблон советника для автоматической торговли
Купить Шаблон советника для автоматической торговли можно здесь - Прочитать о Шаблон советника для автоматической торговли можно здесь - Обсуждение Шаблон советника для автоматической торговли - стейты, отзывы, комментарии - Отзывы о Шаблон советника для автоматической торговли - Настройки к Шаблон советника для автоматической торговли - Мониторинг Шаблон советника для автоматической торговли - Download Шаблон советника для автоматической торговли - Buy Шаблон советника для автоматической торговли - Read about Шаблон советника для автоматической торговли - Discusion of Шаблон советника для автоматической торговли - Comments of Шаблон советника для автоматической торговли - Settings Шаблон советника для автоматической торговли - Monitoring Шаблон советника для автоматической торговли - Шаблон советника для автоматической торговли скачать бесплатно - Шаблон советника для автоматической торговли ключ - Шаблон советника для автоматической торговли открытый код - Шаблон советника для автоматической торговли скачать
-