Автор Тема: СОВЕТНИК VR---Overturn  (Прочитано 10189 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

17 Февраль 2014, 18:11:34
Прочитано 10189 раз

Trading-Go

  • Администратор
  • Ветеран

  • Оффлайн
  • *****

  • 2 011
  • Репутация:
    493
  • Пол
    Мужской

    Мужской
В данном советнике вы сможете проверить классические принципы работы мартингейла, а так же антимартингейла.

Код советника максимально прост и весь раскомментирован.

Принцип торговли при Martingale:

Получили тейк профит открылись начальным лотом в том же направлении.
Получили стоп лосс открылись обратным ордером с увеличенным лотом.
Принцип торговли при AntiMartingale:
Получили тейк профит открылись с увеличенным лотом в том же направлении
Получили стоп лосс открылись обратным ордером с начальным лотом
Скачать
ВАЖНО НОВОСТЬ О ПЕРЕЕЗДЕ ФОРУМА
Своей помощью я стараюсь не давать готовое, я стараюсь натолкнуть Вас на понимание и на правильные мысли, что бы Вы сами решили свою задачу и получили знания... Как то так...

18 Февраль 2014, 07:09:04
Ответ #1

Kozak

  • Постоялец

  • Оффлайн
  • ***

  • 103
  • Репутация:
    25
  • Пол
    Мужской

    Мужской
Владимир, а Ваши рекомендации, наблюдения(наработки) и пожелания при работе с данным советником можно услышать?

18 Февраль 2014, 08:17:21
Ответ #2

Trading-Go

  • Администратор
  • Ветеран

  • Оффлайн
  • *****

  • 2 011
  • Репутация:
    493
  • Пол
    Мужской

    Мужской
Владимир, а Ваши рекомендации, наблюдения(наработки) и пожелания при работе с данным советником можно услышать?
Данный советник является просто примером программирования и торговых стратегий , ставить на реал только на свой страх и риск... Я бы не рискнул ...
ВАЖНО НОВОСТЬ О ПЕРЕЕЗДЕ ФОРУМА
Своей помощью я стараюсь не давать готовое, я стараюсь натолкнуть Вас на понимание и на правильные мысли, что бы Вы сами решили свою задачу и получили знания... Как то так...

18 Февраль 2014, 12:40:47
Ответ #3

Kozak

  • Постоялец

  • Оффлайн
  • ***

  • 103
  • Репутация:
    25
  • Пол
    Мужской

    Мужской
Владимир, а Ваши рекомендации, наблюдения(наработки) и пожелания при работе с данным советником можно услышать?
Данный советник является просто примером программирования и торговых стратегий , ставить на реал только на свой страх и риск... Я бы не рискнул ...

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

20 Февраль 2014, 07:49:51
Ответ #4

Kozak

  • Постоялец

  • Оффлайн
  • ***

  • 103
  • Репутация:
    25
  • Пол
    Мужской

    Мужской
Не знаю интересно или нет, но напишу.
Значит на тестере Альпари пара дол\иена Н1 период 14.01.2013-08.02.2013, настройки по умолчанию, начальный депозит 1000 дол., не слил.
Прибыль 149,52, максимальная просадка 118,04 (10,75%).
Как бы и не много, но все таки заработал копейку.


23 Февраль 2014, 21:26:50
Ответ #5

artemov2012

  • Новичок

  • Оффлайн
  • *

  • 43
  • Репутация:
    3
  • Пол
    Мужской

    Мужской
Около 1 недели назад, мне пришла в голову идея написать ИМЕННО такой советник
Принцип торговли при Martingale:

Получили тейк профит открылись начальным лотом в том же направлении.
Получили стоп лосс открылись обратным ордером с увеличенным лотом.

Начал изучать мануалы по MQL, смотреть видео уроки... Т.к. в программировании я полный ноль. А сейчас смотрю в терминале в библиотеке лежит этот советник. Открыл, почитал описание... Круто!
Начал тестить. Больше года тестировал на многих парах с ТФ М15 и он ни разу не слил.

Настройки по умолчанию, депо 10000
************
Моё мнение: если добавить пору фильтров в него, а не просто использовать стратегию описаную выше, то использовать на реале можно
________________________
Кто может добавить в код Трейлинг стоп? Я в программировании не силен вообще
« Последнее редактирование: 24 Февраль 2014, 00:00:28 от artemov2012 »

24 Февраль 2014, 07:14:13
Ответ #6

Trading-Go

  • Администратор
  • Ветеран

  • Оффлайн
  • *****

  • 2 011
  • Репутация:
    493
  • Пол
    Мужской

    Мужской
Около 1 недели назад, мне пришла в голову идея написать ИМЕННО такой советник
Принцип торговли при Martingale:

Получили тейк профит открылись начальным лотом в том же направлении.
Получили стоп лосс открылись обратным ордером с увеличенным лотом.

Начал изучать мануалы по MQL, смотреть видео уроки... Т.к. в программировании я полный ноль. А сейчас смотрю в терминале в библиотеке лежит этот советник. Открыл, почитал описание... Круто!
Начал тестить. Больше года тестировал на многих парах с ТФ М15 и он ни разу не слил.

Настройки по умолчанию, депо 10000
************
Моё мнение: если добавить пору фильтров в него, а не просто использовать стратегию описаную выше, то использовать на реале можно
________________________
Кто может добавить в код Трейлинг стоп? Я в программировании не силен вообще
Чуть позже будет доступна полная версия данного советника с фильтрами и трейлингом ...
ВАЖНО НОВОСТЬ О ПЕРЕЕЗДЕ ФОРУМА
Своей помощью я стараюсь не давать готовое, я стараюсь натолкнуть Вас на понимание и на правильные мысли, что бы Вы сами решили свою задачу и получили знания... Как то так...

25 Февраль 2014, 09:00:33
Ответ #7

Kozak

  • Постоялец

  • Оффлайн
  • ***

  • 103
  • Репутация:
    25
  • Пол
    Мужской

    Мужской
Не знаю интересно или нет, но напишу.
Значит на тестере Альпари пара дол\иена Н1 период 14.01.2013-08.02.2013, настройки по умолчанию, начальный депозит 1000 дол., не слил.
Прибыль 149,52, максимальная просадка 118,04 (10,75%).
Как бы и не много, но все таки заработал копейку.
Все то же, кроме стоплос - 150, тейкпрофит - 150.
Прибыль 277,27, максимальная просадка 240,48 (22,43%).

25 Февраль 2014, 09:17:06
Ответ #8

artemov2012

  • Новичок

  • Оффлайн
  • *

  • 43
  • Репутация:
    3
  • Пол
    Мужской

    Мужской
Хотел немного изменить советник и сделать расчет выставляемого лота не фиксированным, а в зависимости от депозита, вот что получилось
//=========================================================================================================================================//
//|                                                                                                                                       |//
//=========================================================================================================================================//
#property strict
#define BUY 0                    // создадим предопределенню переменную со значением 0
#define SEL 1                    // создадим предопределенню переменную со значением 1
enum  sp { Buy,Sell };           // создадим выбор с помощью enum для типа первого ордера
enum  tip{ Martingale, AntiMartingale};// создадим выбор с помощью enum для типа торговли
// тип торговли Martingale, AntiMartingale
input tip    TypTrade   = Martingale; 
// стартовая позиция Buy или Sell
input sp     StartPoz   = Buy;   
// установим значение тейк профита
input int    MaxRisk    = 2; //Сколько процентов от депозита выделать каждому ордеру
input int    TakeProfit = 300;   
// установим значение стоп лосса
input int    StopLoss   = 300;   
// установим значение стартового лота
input double MultiplierLot=2;
// установим значение MagicNumber если -1 то по всем MagicNumber   
input int    MagicNumber= 227; 
// установим значение проскальзывания
input int    Slippage   = 30;   
int Typ=0,tik=-2;                // инициализируем глобальные переменные
double Lot=0,Pro=0,MLot=0,ALot=0;// инициализируем глобальные переменные
double Step    = MarketInfo(Symbol(),MODE_LOTSTEP);            //Шаг изменения лота, нужна для округления
double Free    = AccountFreeMargin();                          //Определяет сколько свободно денег на счету
double OneLot  = MarketInfo(Symbol(), MODE_MARGINREQUIRED);    //Сколько стоит 1.00 лотс учетом кредитного плеча
double MyLot   = MathFloor(Free*MaxRisk/100/OneLot/Step)*Step; //Каким будет МОЙ лот c учетом риска

int StartLot = MyLot;
//=========================================================================================================================================//
//|                                                                                                                                       |//
//=========================================================================================================================================//
Менял только эту часто кода, всё что ниже не трогал.
При компиляции вылазит предупреждение:
Цитировать
possible loss of data due to type conversion

Пробую протестировать советник, но он ВООБЩЕ не совершает сделки. Что я сделал не так?
Ногами не бить, в программировании вообще ничего не понимаю

25 Февраль 2014, 10:09:48
Ответ #9

AlexL

  • Новичок

  • Оффлайн
  • *

  • 23
  • Репутация:
    2
  • Пол
    Мужской

    Мужской
Хотел немного изменить советник и сделать расчет выставляемого лота не фиксированным, а в зависимости от депозита, вот что получилось
//=========================================================================================================================================//
//|                                                                                                                                       |//
//=========================================================================================================================================//
#property strict
#define BUY 0                    // создадим предопределенню переменную со значением 0
#define SEL 1                    // создадим предопределенню переменную со значением 1
enum  sp { Buy,Sell };           // создадим выбор с помощью enum для типа первого ордера
enum  tip{ Martingale, AntiMartingale};// создадим выбор с помощью enum для типа торговли
// тип торговли Martingale, AntiMartingale
input tip    TypTrade   = Martingale; 
// стартовая позиция Buy или Sell
input sp     StartPoz   = Buy;   
// установим значение тейк профита
input int    MaxRisk    = 2; //Сколько процентов от депозита выделать каждому ордеру
input int    TakeProfit = 300;   
// установим значение стоп лосса
input int    StopLoss   = 300;   
// установим значение стартового лота
input double MultiplierLot=2;
// установим значение MagicNumber если -1 то по всем MagicNumber   
input int    MagicNumber= 227; 
// установим значение проскальзывания
input int    Slippage   = 30;   
int Typ=0,tik=-2;                // инициализируем глобальные переменные
double Lot=0,Pro=0,MLot=0,ALot=0;// инициализируем глобальные переменные
double Step    = MarketInfo(Symbol(),MODE_LOTSTEP);            //Шаг изменения лота, нужна для округления
double Free    = AccountFreeMargin();                          //Определяет сколько свободно денег на счету
double OneLot  = MarketInfo(Symbol(), MODE_MARGINREQUIRED);    //Сколько стоит 1.00 лотс учетом кредитного плеча
double MyLot   = MathFloor(Free*MaxRisk/100/OneLot/Step)*Step; //Каким будет МОЙ лот c учетом риска

int StartLot = MyLot;
//=========================================================================================================================================//
//|                                                                                                                                       |//
//=========================================================================================================================================//
Менял только эту часто кода, всё что ниже не трогал.
При компиляции вылазит предупреждение:
Цитировать
possible loss of data due to type conversion

Пробую протестировать советник, но он ВООБЩЕ не совершает сделки. Что я сделал не так?
Ногами не бить, в программировании вообще ничего не понимаю

int StartLot = MyLot; вот тут
надо double StartLot= MyLot;

Вы целому типу присваиваете значение с плав.точкой. Все что после точки отбросится.

25 Февраль 2014, 11:22:06
Ответ #10

artemov2012

  • Новичок

  • Оффлайн
  • *

  • 43
  • Репутация:
    3
  • Пол
    Мужской

    Мужской
Спасибо за ответ. Это помогло. Я пробовал вот так сначала
int double StartLot= MyLot;

25 Февраль 2014, 11:48:58
Ответ #11

artemov2012

  • Новичок

  • Оффлайн
  • *

  • 43
  • Репутация:
    3
  • Пол
    Мужской

    Мужской
Теперь еще такой вопрос.
Какой будет размер лота определяет функция
double MyLot   = MathFloor(Free*MaxRisk/100/OneLot/Step)*Step; //Каким будет МОЙ лот c учетом риска
НО, размер лота определяется ТОЛЬКО при старте советника, а я хочу, чтобы размер лота определялся перед каждым новым ордером.
Для этого как я понимаю нужно эту функцию нужно перенести сюда?
void OnTick()
{
... ... ... ...
}
else return ;
Или как это сделать? Пробовал по разному - не получается хоть убей.
Покажите на пальцах, что и куда нужно прописать
« Последнее редактирование: 25 Февраль 2014, 11:59:38 от artemov2012 »

25 Февраль 2014, 13:04:33
Ответ #12

AlexL

  • Новичок

  • Оффлайн
  • *

  • 23
  • Репутация:
    2
  • Пол
    Мужской

    Мужской
Теперь еще такой вопрос.
Какой будет размер лота определяет функция
double MyLot   = MathFloor(Free*MaxRisk/100/OneLot/Step)*Step; //Каким будет МОЙ лот c учетом риска
НО, размер лота определяется ТОЛЬКО при старте советника, а я хочу, чтобы размер лота определялся перед каждым новым ордером.
Для этого как я понимаю нужно эту функцию нужно перенести сюда?
void OnTick()
{
... ... ... ...
}
else return ;
Или как это сделать? Пробовал по разному - не получается хоть убей.
Покажите на пальцах, что и куда нужно прописать

Расчет лота можно впихнуть и в ОнТик()
Ордера открываются функцией bool openorders(int typ,double lot) второй параметр это размер лота, туда нужно подсунуть свой лот.

Но если честно не понимаю зачем вам это. Тут тогда половина кода не нужна. Если просто хочется открывать ордера с % от свободных средств.
То просто впихните всю свою "функцию" в функцию открытия ордера и у вас всегда будут ордера открываться исходя из риска
Цитировать
bool openorders(int typ,double lot)           // Функция принимает тип требуемого ордера и требуемый лот
  {
   lot   = MathFloor(Free*MaxRisk/100/OneLot/Step)*Step; //Каким будет МОЙ лот c учетом риска
   double price=0; int p=0;                   // обнулим переменные для цены и счетчик попыток открытия ордеров
   if(typ==BUY)                               // если мы хотим открыть ордер на покупку
      price=NormalizeDouble(Ask,_Digits);     // запросим цену для его открытия и сразуже ее нормализуем под 4 или 5 знаков автоматически
   else                                       // если мы хотим открыть ордер на продажу
      price=NormalizeDouble(Bid,_Digits);     // запросим цену для его открытия и сразуже ее нормализуем под 4 или 5 знаков автоматически
   if(IsTradeAllowed())                       // проверим свободен ли поток котировок и можем ли мы открыть ордер     
      while(p<5)                              // запустим цикл попыток открытия ордера на 5 попыток
        {                                     // отправляем сформированный запрос серверу брокера
         tik=OrderSend(Symbol(),typ,NormalizeDouble(lot,2),NormalizeDouble(price,_Digits),Slippage,0,0,WindowExpertName()+"  "+(string)MagicNumber,MagicNumber,0,clrBlue);
         if(tik>=0)                           // если наш ордер одобрили запомним его тиккет в переменную tik
            return true;                      // выйдем из функции с успехом
         else                                 // если сервер не принял наш ордер
           {
            p++;                              // увеличим счетчик на 1
            Print(__FUNCTION__,"_Error_",GetLastError()); // выведем в журнал имя функции и номер ошибки
            Sleep(500);                       // подождем пол секунды и снова повторим запрос
           }
        }
   return false;                              // в случае если за 5 попыток ордер не открылся выйдем из функции с неудачей
  }

08 Апрель 2014, 05:46:30
Ответ #13

Kot666

  • Новичок

  • Оффлайн
  • *

  • 7
  • Репутация:
    1
  • Пол
    Мужской

    Мужской
Ссылка на скачивание не работает, на главной странице сайта.

08 Апрель 2014, 09:08:22
Ответ #14

Trading-Go

  • Администратор
  • Ветеран

  • Оффлайн
  • *****

  • 2 011
  • Репутация:
    493
  • Пол
    Мужской

    Мужской
Ссылка на скачивание не работает, на главной странице сайта.
Спасибо ! Исправили.
ВАЖНО НОВОСТЬ О ПЕРЕЕЗДЕ ФОРУМА
Своей помощью я стараюсь не давать готовое, я стараюсь натолкнуть Вас на понимание и на правильные мысли, что бы Вы сами решили свою задачу и получили знания... Как то так...