Новые сообщения · Участники · Правила форума · Поиск · RSS · Вход · Регистрация ·

Страница 1 из 11
Форум трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » Доработка советника WSFR-v3.8.5
Доработка советника WSFR-v3.8.5

FufikДата: Четверг, 13.07.2017, 12:23 | Сообщение # 1
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 7
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Уважаемые программисты, большая просьба поправить советник, нужна сделать функцию мартингейл в советнике, там уже есть такая функция, но почему то не работает поправьте пожайлуста

Прикрепления: WSFR-v3.8.5.mq4(66Kb)
 
СообщениеУважаемые программисты, большая просьба поправить советник, нужна сделать функцию мартингейл в советнике, там уже есть такая функция, но почему то не работает поправьте пожайлуста

Автор - Fufik
Дата добавления - 13.07.2017 в 12:23

expforexДата: Воскресенье, 16.07.2017, 17:55 | Сообщение # 2
Главный Администартор
Группа: Администраторы
Сообщений: 9053
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

прикрепите лог фал тестера и картинку



Программирование на заказ || Наши Разработки

 
Сообщениеприкрепите лог фал тестера и картинку

Автор - expforex
Дата добавления - 16.07.2017 в 17:55

FufikДата: Понедельник, 17.07.2017, 19:08 | Сообщение # 3
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 7
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Цитата expforex ()
прикрепите лог фал тестера и картинку




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

Прикрепления: 0780764.jpg(57Kb) · 4458769.jpg(82Kb) · 1760246.jpg(65Kb)


Сообщение отредактировал Fufik - Понедельник, 17.07.2017, 19:11
 
Сообщение
Цитата expforex ()
прикрепите лог фал тестера и картинку




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

Автор - Fufik
Дата добавления - 17.07.2017 в 19:08

expforexДата: Понедельник, 17.07.2017, 19:13 | Сообщение # 4
Главный Администартор
Группа: Администраторы
Сообщений: 9053
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

ну у Вас AutoMM стоит 0 - поэтому мартин не работает, вы бы хотя бы почитали что у Вас в коде написано по настройкам :-)



Программирование на заказ || Наши Разработки

 
Сообщениену у Вас AutoMM стоит 0 - поэтому мартин не работает, вы бы хотя бы почитали что у Вас в коде написано по настройкам :-)

Автор - expforex
Дата добавления - 17.07.2017 в 19:13

FufikДата: Понедельник, 17.07.2017, 19:30 | Сообщение # 5
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 7
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Цитата expforex ()
ну у Вас AutoMM стоит 0 - поэтому мартин не работает, вы бы хотя бы почитали что у Вас в коде написано по настройкам :-)
Я с фиксированным лотом торгую поэтому отключил мм, да мартин вобще не работает по всякому пробывал

 
Сообщение
Цитата expforex ()
ну у Вас AutoMM стоит 0 - поэтому мартин не работает, вы бы хотя бы почитали что у Вас в коде написано по настройкам :-)
Я с фиксированным лотом торгую поэтому отключил мм, да мартин вобще не работает по всякому пробывал

Автор - Fufik
Дата добавления - 17.07.2017 в 19:30

expforexДата: Понедельник, 17.07.2017, 19:38 | Сообщение # 6
Главный Администартор
Группа: Администраторы
Сообщений: 9053
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

Fufik,
тут надо у автора спросить. почему?
я вижу так:
extern double AutoMM = 20.0; //--- ММ включается если AutoMM > 0. Процент риска. При RecoveryMode = FALSE, менять нужно только это значение.
//--- При AutoMM = 20 и депозите в 1000$, лот будет равен 0,2. Далее лот будет увеличиваться исходя из свободных средств, то есть уже при депозите в 2000$ лот будет равен 0,4.
extern double MultiLotPercent = 1.1; //--- Коэффициент умножение лота (Используется при RecoveryMode = True)

функция мартина рабочая и выглядит так:
 

Код
//--- Если ММ включен, то
   if (MultiLotPercent > 0.0 && AutoMM > 0.0) {
      
      //--- Обнуляем значения
      SumProfit = 0;
      OldOrdersCount = 0;
      loss = 0;
      LossOrdersCount = 0;
      pr = 0;
      ProfitOrdersCount = 0;
      //---
      
      //--- Выбираем закрытие ранее ордера
      for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) {
         if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
               OldOrdersCount++; //--- Считаем ордера
               SumProfit += OrderProfit(); //--- и суммарный профит
               
               //--- Если суммарный профит больше pr (для начала больше 0)
               if (SumProfit > pr) {
                  //--- Инициализируем профит и счетчик прибыльных ордеров
                  pr = SumProfit;
                  ProfitOrdersCount = OldOrdersCount;
               }
               //--- Если суммарный профит меньше loss (для начала больше 0)
               if (SumProfit < loss) {
                  //--- Инициализируем просадку и счетчик убыточных ордеров
                  loss = SumProfit;
                  LossOrdersCount = OldOrdersCount;
               }
               //--- Если текущее кол-во подсчитанных ордеров больше или равно MaxAnalizCount (50), то в будущем считаем только свеженькие ордера а старые вычитаем.
               if (OldOrdersCount >= MaxAnalizCount) break;
            }
         }
      } //--- Закрытие for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) {
      
      
      //--- Если число прибыльных ордеров меньше или равно числу лосей, то расчитываем значение умножения лота MultiLot
      if (ProfitOrdersCount <= LossOrdersCount) MultiLot = MathPow(MultiLotPercent, LossOrdersCount);
      
      //--- Если нет, то
      else {
         
         //--- Инициализируем параметры по профиту
         SumProfit = pr;
         OldOrdersCount = ProfitOrdersCount;
         LastPr = pr;
         LastCount = ProfitOrdersCount;
         
         //--- Выбираем закрытие ранее ордера (минус число прибыльных ордеров)
         for (i = OrdersHistoryTotal() - ProfitOrdersCount - 1; i >= 0; i--) {
            if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
               if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
                  //--- Если выбрано более 50 ордеров прекразщаем выбирать
                  if (OldOrdersCount >= MaxAnalizCount) break;
                  //---
                  OldOrdersCount++; //--- Считаем кол-во ордеров
                  SumProfit += OrderProfit(); //--- и профит
                  
                  //--- Если новый профит меньше предыдущего (LastPr), то
                  if (SumProfit < LastPr) {
                     //--- Переинициализируем значения профита и кол-во ордеров
                     LastPr = SumProfit;
                     LastCount = OldOrdersCount;
                  }
               }
            }
         } //--- Закрытие for (i = OrdersHistoryTotal() - ProfitOrdersCount - 1; i >= 0; i--) {
         
         //--- Если значение счетчика LastCount равно счетчику прибыльных ордеров или прошлый профит равен текщему, то
         if (LastCount == ProfitOrdersCount || LastPr == pr) MultiLot = MathPow(MultiLotPercent, LossOrdersCount); //--- расчитываем значение умножения лота MultiLot
         
         //--- Если нет, то
         else {
            //--- Делим положительный (loss - pr) на положительный (LastPr - pr) и сравниваем с риском, после расчитываем умножение лота MultiLot
            if (MathAbs(loss - pr) / MathAbs(LastPr - pr) >= (Risk + 100.0) / 100.0) MultiLot = MathPow(MultiLotPercent, LossOrdersCount);
            else MultiLot = MathPow(MultiLotPercent, LastCount);
         }
      }
   } //--- Закрытие if (MultiLotPercent > 0.0 && AutoMM > 0.0) {


может автор этим хотел что-то сказать?



Программирование на заказ || Наши Разработки

 
СообщениеFufik,
тут надо у автора спросить. почему?
я вижу так:
extern double AutoMM = 20.0; //--- ММ включается если AutoMM > 0. Процент риска. При RecoveryMode = FALSE, менять нужно только это значение.
//--- При AutoMM = 20 и депозите в 1000$, лот будет равен 0,2. Далее лот будет увеличиваться исходя из свободных средств, то есть уже при депозите в 2000$ лот будет равен 0,4.
extern double MultiLotPercent = 1.1; //--- Коэффициент умножение лота (Используется при RecoveryMode = True)

функция мартина рабочая и выглядит так:
 
Код
//--- Если ММ включен, то
   if (MultiLotPercent > 0.0 && AutoMM > 0.0) {
      
      //--- Обнуляем значения
      SumProfit = 0;
      OldOrdersCount = 0;
      loss = 0;
      LossOrdersCount = 0;
      pr = 0;
      ProfitOrdersCount = 0;
      //---
      
      //--- Выбираем закрытие ранее ордера
      for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) {
         if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
               OldOrdersCount++; //--- Считаем ордера
               SumProfit += OrderProfit(); //--- и суммарный профит
               
               //--- Если суммарный профит больше pr (для начала больше 0)
               if (SumProfit > pr) {
                  //--- Инициализируем профит и счетчик прибыльных ордеров
                  pr = SumProfit;
                  ProfitOrdersCount = OldOrdersCount;
               }
               //--- Если суммарный профит меньше loss (для начала больше 0)
               if (SumProfit < loss) {
                  //--- Инициализируем просадку и счетчик убыточных ордеров
                  loss = SumProfit;
                  LossOrdersCount = OldOrdersCount;
               }
               //--- Если текущее кол-во подсчитанных ордеров больше или равно MaxAnalizCount (50), то в будущем считаем только свеженькие ордера а старые вычитаем.
               if (OldOrdersCount >= MaxAnalizCount) break;
            }
         }
      } //--- Закрытие for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) {
      
      
      //--- Если число прибыльных ордеров меньше или равно числу лосей, то расчитываем значение умножения лота MultiLot
      if (ProfitOrdersCount <= LossOrdersCount) MultiLot = MathPow(MultiLotPercent, LossOrdersCount);
      
      //--- Если нет, то
      else {
         
         //--- Инициализируем параметры по профиту
         SumProfit = pr;
         OldOrdersCount = ProfitOrdersCount;
         LastPr = pr;
         LastCount = ProfitOrdersCount;
         
         //--- Выбираем закрытие ранее ордера (минус число прибыльных ордеров)
         for (i = OrdersHistoryTotal() - ProfitOrdersCount - 1; i >= 0; i--) {
            if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
               if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
                  //--- Если выбрано более 50 ордеров прекразщаем выбирать
                  if (OldOrdersCount >= MaxAnalizCount) break;
                  //---
                  OldOrdersCount++; //--- Считаем кол-во ордеров
                  SumProfit += OrderProfit(); //--- и профит
                  
                  //--- Если новый профит меньше предыдущего (LastPr), то
                  if (SumProfit < LastPr) {
                     //--- Переинициализируем значения профита и кол-во ордеров
                     LastPr = SumProfit;
                     LastCount = OldOrdersCount;
                  }
               }
            }
         } //--- Закрытие for (i = OrdersHistoryTotal() - ProfitOrdersCount - 1; i >= 0; i--) {
         
         //--- Если значение счетчика LastCount равно счетчику прибыльных ордеров или прошлый профит равен текщему, то
         if (LastCount == ProfitOrdersCount || LastPr == pr) MultiLot = MathPow(MultiLotPercent, LossOrdersCount); //--- расчитываем значение умножения лота MultiLot
         
         //--- Если нет, то
         else {
            //--- Делим положительный (loss - pr) на положительный (LastPr - pr) и сравниваем с риском, после расчитываем умножение лота MultiLot
            if (MathAbs(loss - pr) / MathAbs(LastPr - pr) >= (Risk + 100.0) / 100.0) MultiLot = MathPow(MultiLotPercent, LossOrdersCount);
            else MultiLot = MathPow(MultiLotPercent, LastCount);
         }
      }
   } //--- Закрытие if (MultiLotPercent > 0.0 && AutoMM > 0.0) {


может автор этим хотел что-то сказать?

Автор - expforex
Дата добавления - 17.07.2017 в 19:38
Форум трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » Доработка советника WSFR-v3.8.5
Страница 1 из 11
Поиск:


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