Основные понятия [17]
Торговые системы,тактики [67]
Форекс начинающим [16]
Разное [37]

Программирование советников по индикаторам - Легко!

Добавить в социальные закладки:

Программирование советников по индикаторам - Легко!

 
Программирование советников, для проверки своей стратегии по каким либо индикаторам - достаточно простое дело. 
И особых познаний в области программирования не нужны. 
Я расскажу Вам, как сделать советника за 5 минут на основе каких либо индикаторов.  
 
Данный шаблон подходит только для стратегий , которые явно показывают работу индикатора. 
 
Для заказа более сложных систем - обращайтесь к программистам(Программист MQLПрограммист форексСоветники на заказ). 
Такой вид программирования будет платный, но он даст Вам надежность, что Ваша система будет работать именно так, как Вы этого хотите.
 
 
 
 
 
Итак, для написания советника по Вашим индикаторам необходимо скачать шаблон от www.expforex.com 
 Exp
Внимание!!! Расширенная версия шаблона
  
Код полностью открытый и комментированный, поэтому Вам не составит особого труда разобраться в его содержимом.
 
Вы желаете доверить работу профессионалу? Закажите 
 
Еще одна статья по написанию экспертов 
 
 
Остановимся на главном:
 
Настройки
 
extern string Indicators_=" Настройки индикатора";
/* Здесь прописываем настройки Вашего индикатора\индикаторов */
 
 
 
/* Стандартные переменные для шаблона НЕ ИЗМЕНЯТЬ!!! */
extern string In_=" Настройки входа";
extern bool ReverseSignal=false; // true - Переворачивать сигнал стратегии. 
extern string trade_="Настройки торговли";
extern bool StopOrderUSE=false;           // Использовать Отложенные ордера
extern int StopOrderDeltaifUSE=0;         // Дистанция для отложенных ордеров
extern int Magic=777;                     // Магический номер
extern int StopLoss=0;                    // Стоплосс, 0 - не используется
extern int TakeProfit=0;                  // Тейкпрофит , 0 - не используется
extern int Slippage=0;                    // Проскальзывание
extern bool MarketWatch=false;            // Режим торговли по MarketWatch true  = сначала выставляются позиции/ордера без стопов, потом происходит модификация - для некоторых брокеров
extern bool ClosePosifChange=true;        // Закрывать позиции при обратном сигнале
extern bool ONlyOnePosbySignal=true;      // Играть только или бай и / или селл 1 позицией
extern string autolot_="Настройки автолота";
extern double Lots=0.1;                   // Фиксирвоанный лот 
extern bool DynamicLot=false;             // Динамический лот
extern double LotBalancePcnt=20;          // % от депозита
extern double MaxLot = 5;                 // Максимальный лот при расчете
extern double Martin=1; // Если 1 то не используется, Коэффициент мартина на следующую сделку после убытончой
 
extern string timetrade_="Настройки времени торговли";
extern int OpenHour=0;                    // Час открытия торгов
extern int OpenMinute=0;                  // Минута открытия торгов
extern int CloseHour=23;                  // Час закрытия торгов
extern int CloseMinute=59;                // Минута закрытия торгов
extern string Trailing_="Настройки трейлингстопа";
extern bool TrailingStopUSE=false;        // Использовать трейлингстоп 
extern bool IfProfTrail=false;            // Использовать только дял профитных позиций - режим безубытка
extern int TrailingStop=0;                // Дистанция трейлинга = 0 - минимально допустимый
extern int TrailingStep=1;                // Шаг дистанции
extern string Trailing_SAR="Настройки трейлингстопа SAR";
extern bool TrailingStopSAR=false;        // Использовать трейлингстоп 
extern double step   =0.02;//-   Приращение уровня стопа, обычно 0.02. 
extern double maximum=0.2;//   -   Максимальный уровень стопа, обычно 0.2. 
extern string CloseProfitLoss=" Настройки закрытия по общему профиту";
extern string  сlose="= 1 - Доллар, 2 -Пункты ,3 -%Эквити ,4 -%Баланс";
extern int     TypeofClose=1; // Тип закрытия по прибыли 
extern bool CloseProfit=false;// Закрывать если +
extern double prifitessss=10; // Количество юнитов(в зависимости от выбора TypeofClose) для закрытия профита
extern bool CloseLoss=false;// закрывать если -
extern double lossss=-10;// Количество юнитов(в зависимости от выбора TypeofClose) для закрытия убытка
extern bool OFFAllEaAfterClosePROF=false;// Выключать все советники и скрипты после закрытия прибыли.
extern bool OFFAllEaAfterCloseLOSS=false;// Выключать все советники и скрипты после закрытия убытка.
extern string BU_="Настройки безубытка";
extern bool MovingInWLUSE=false;   // Перенос позиции в безубыток
extern int LevelWLoss=0; // Переносим стоплосс в +LevelWLoss пунктов
extern int LevelProfit=0;// Когда сделка вышла в плюс LevelProfit пунктов
 
Как видите в настройках существует блок, в который нужно перенести все внешние параметры индикатора. 
 
 
Далее, для запуска Вашей стратегии, необходимо прописать сигналы от Вашего индикатора в блок:
 /* Блок управления сигналом от Вашего индикатора
Создаем переменные для сигналов индикатора
*/
int IndicatorSignal()
{
int Sig=0;
double ExampleMA=iMA(Symbol(),0,20,0,MODE_SMA,PRICE_CLOSE,1); // Пример Вызова МА
double ExampleADX=iADX(Symbol(),0,34,PRICE_CLOSE,MODE_MAIN,1);// Пример Вызова АДХ
double ExampleCustom=iCustom(Symbol(),0,"Moving Averages",20,0,MODE_SMA,1); // Пример вызова пользовательского индикатора
//Указываем Сигналы:
if( ExampleMA<Bid)Sig=1; // Если МА ниже цены БИД - открываемся в бай
if( ExampleMA>Bid)Sig=2; // Если МА выше цены БИД - открываемся в селл
// 1 - бай 2 - селл
return(Sig);
}
 
В данном примере показан лишь пример работы советника по индикатору МА. 
 
Вы можете посмотреть реализацию алгоритма на примере Советника по Стратегии (Форекс ПУРИА) 


Получить бесплатно Программирование советников по индикаторам - Легко!

Категория: Разное | Добавил: expforex (27.05.2012)
Просмотров: 19049 | Комментарии: 10 | Рейтинг: 5.0/3 |
Всего комментариев: 10
   9               ngefremova        (12.07.2016 15:06)
Добрый день! Раньше у Вас в шаблоне было написано условие для открытия позиций, если индикатор рисует стрелочки. Сейчас не могу найти, не подскажите?

   10               expforex        (30.07.2016 09:09)
Каждый индикатор обрабатывается индивидуально для любого сигнала, в том числе и стрелки. поэтому прежде чем писать условие нужно смотреть на индикатор

   7               expforex        (29.09.2015 10:10)
Приветствую. ответил Вам на форуме

   5               expforex        (08.02.2015 22:18)
ок пришлите на почту admin@expforex.com

   3               expforex        (07.02.2015 15:31)
Я ответил Вам на почту? Или это были не Вы :-) 
любой индикатор можно вставить функцией iCustom
Возвращает значение указанного пользовательского индикатора.
Код
double  iCustom(
    string       symbol,           // имя символа
    int          timeframe,        // таймфрейм
    string       name,             // папка/имя_пользовательского индикатора
    ...                            // список входных параметров индикатора
    int          mode,             // источник данных
    int          shift             // сдвиг
    );


параметры придется вытаскивать из индикатора с графика - по другому есть еще способ, = сохранять шаблон и открывать шаблон а в нем искать параметры, но это более продвинутый вариант.

Имя *:
Email:
Код *:



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