Ответ
 
Опции темы
Старый 04.05.2016, 16:39   #4801 (permalink)
Почётный гражданин
 
Аватар для Yurkov
 
Регистрация: 19.01.2011
Сообщений: 642
Репутация: 359
Yurkov - Yurkov - Yurkov - Yurkov -
Сказал(а) спасибо: 163
Поблагодарили 356 раз(а) в 166 сообщениях
Поинты: 200
Сообщение от _SERG_ Посмотреть сообщение
Настрой историю в терминале, и первый параметр в индикаторе и не будет беды.
Мне не важно что показывает конкретно этот индикатор У меня есть вопрос с которым я обратился сюда

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803
Yurkov на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.05.2016, 16:49   #4802 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от Yurkov Посмотреть сообщение
Мне не важно что показывает конкретно этот индикатор У меня есть вопрос с которым я обратился сюда
Суть в том, что индикатор(и методика вычислений в нем) зависит от того, как показывается история терминала.
Если в терминале выбрать "Сегодня" или "Последняя неделя", то такая методика будет показывать именно "Сегодня", а вовсе не последний месяц.
Поэтому и предлагается в первый день месяца внести баланс в глоабльные переменные терминала через GlobalVariableSet() и потом проверять и сравнивать текущий баланс с этим значением, полученным через GlobalVariableGet().
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.05.2016, 16:54   #4803 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от Yurkov Посмотреть сообщение
Мне не важно что показывает конкретно этот индикатор У меня есть вопрос с которым я обратился сюда
Думаю, что готовый код для твоего вопроса никто специально не писал, поэтому вряд ли даст.
Есть ветки где народ кодит за деньги и даром, кинь вопрос туда, вместе с совой, мож кто и возьмётся.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.05.2016, 17:10   #4804 (permalink)
Почётный гражданин
 
Аватар для Yurkov
 
Регистрация: 19.01.2011
Сообщений: 642
Репутация: 359
Yurkov - Yurkov - Yurkov - Yurkov -
Сказал(а) спасибо: 163
Поблагодарили 356 раз(а) в 166 сообщениях
Поинты: 200
Сообщение от ansol Посмотреть сообщение
Суть в том, что индикатор(и методика вычислений в нем) зависит от того, как показывается история терминала.
Если в терминале выбрать "Сегодня" или "Последняя неделя", то такая методика будет показывать именно "Сегодня", а вовсе не последний месяц.
Поэтому и предлагается в первый день месяца внести баланс в глоабльные переменные терминала через GlobalVariableSet() и потом проверять и сравнивать текущий баланс с этим значением, полученным через GlobalVariableGet().
А если так (ограничение по пунктам в месяц):
Добавляем некую переменную Y, присваиваем ей 0. Сделка закрылась, записываем значение Y = X или -X (количество пунктов) в переменную. Закрывается вторая сделка, прибавляем значение к переменной Y=Y+X и так далее, пока Y не станет равна или больше нужного значения, при котором срабатывает запрет на открытие нового ордера до наступления первого числа месяца и тогда Y снова присваиваем 0 и все начинается снова. ???
(Знаю, что при перезапуске советника или терминала переменная обнулится)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803

Последний раз редактировалось Yurkov; 04.05.2016 в 17:12.
Yurkov на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.05.2016, 17:17   #4805 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от Yurkov Посмотреть сообщение
А если так (ограничение по пунктам в месяц):
Добавляем некую переменную Y, присваиваем ей 0. Сделка закрылась, записываем значение Y = X или -X (количество пунктов) в переменную. Закрывается вторая сделка, прибавляем значение к переменной Y=Y+X и так далее, пока Y не станет равна или больше нужного значения, при котором срабатывает запрет на открытие нового ордера до наступления первого числа месяца и тогда Y снова присваиваем 0 и все начинается снова. ???
(Знаю, что при перезапуске советника или терминала переменная обнулится)
Да, так оно и делается (+/-), алгоритм называется.

Выучи пару операторов, и кодер - готов.

Есть правда нюансы, надо ещё найти место в том алгоритме куда вставлять будешь, для того алгоритма, который сам написал.

Последний раз редактировалось _SERG_; 04.05.2016 в 17:20.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.05.2016, 17:21   #4806 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от Yurkov Посмотреть сообщение
А если так (ограничение по пунктам в месяц):
Добавляем некую переменную Y, присваиваем ей 0. Сделка закрылась, записываем значение Y = X или -X (количество пунктов) в переменную. Закрывается вторая сделка, прибавляем значение к переменной Y=Y+X и так далее, пока Y не станет равна или больше нужного значения, при котором срабатывает запрет на открытие нового ордера до наступления первого числа месяца и тогда Y снова присваиваем 0 и все начинается снова. ???
(Знаю, что при перезапуске советника или терминала переменная обнулится)
Нну... Кто ж такое советовать будет именно из-за того, что закрытие терминала или перезапуск советника приведет к сбросу значения.
А глобальная переменная терминала хранится 4 недели, если к ней не обращаться совсем, т.е. никакие перезапуски не напрягают - это раз. И два - ее можно посмотреть и поменять самому по кнопочке F3 в терминале, что иногда удобно бывает.
А что именно вы будет сохранять и увеличивать - ваш выбор. Например, сохранять баланс 1 раз в месяц и сравнивать с текущим проще, ибо текущий без вашего участия изменяется в зависимости от результатов сделок. Это как бы немножко лучше, чем самому что-то куда-то прибавлять, ИМХО.

Последний раз редактировалось ansol; 04.05.2016 в 17:24.
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.05.2016, 17:27   #4807 (permalink)
Почётный гражданин
 
Аватар для Yurkov
 
Регистрация: 19.01.2011
Сообщений: 642
Репутация: 359
Yurkov - Yurkov - Yurkov - Yurkov -
Сказал(а) спасибо: 163
Поблагодарили 356 раз(а) в 166 сообщениях
Поинты: 200
Сообщение от ansol Посмотреть сообщение
Нну... Кто ж такое советовать будет именно из-за того, что закрытие терминала или перезапуск советника приведет к сбросу значения.
А глобальная переменная терминала хранится 4 недели, если к ней не обращаться совсем, т.е. никакие перезапуски не напрягают - это раз. И два - ее можно посмотреть и поменять самому по кнопочке F3 в терминале, что иногда удобно бывает.
Думаю простой переменной будет достаточно в моем случае. Терминал стоит на VPS. Мне нужно проверить в тестере стоит ли вообще заморачиваться.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803
Yurkov на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.05.2016, 17:33   #4808 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от Yurkov Посмотреть сообщение
Думаю простой переменной будет достаточно в моем случае. Терминал стоит на VPS. Мне нужно проверить в тестере стоит ли вообще заморачиваться.
Хозяин - барин.
Возьмите баланс в вашу переменную BALANCE = AccountBalance() при Day() == 1 и потом сравнивайте его с текущим AccountBalance()
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Yurkov (04.05.2016)
Старый 04.05.2016, 17:36   #4809 (permalink)
Элитный участник
 
Аватар для officialboob
 
Регистрация: 13.07.2013
Адрес: Moscow
Сообщений: 2,269
Репутация: 1260
officialboob officialboob officialboob officialboob officialboob officialboob officialboob officialboob officialboob
Сказал(а) спасибо: 63
Поблагодарили 1,301 раз(а) в 826 сообщениях
Поинты: 1467
Сообщение от Yurkov Посмотреть сообщение
Может кто подскажет код? Нужно запретить советнику торговать при достижении определенного процента прибыли и чтоб это ограничение действовало до начала следующего месяца, и потом вновь повторялось.

Это не для новичков.

Пользовательские функции вставлять умеете?

Код будет выглядеть так (надо протестить):


PHP код:
void OnTick()


double LastCalendarMonthProfit=GetProfitFromDateInCurrency(Symbol(),-1,Magic,TimeCurrent()-((TimeDay(TimeCurrent())*3600*24)+(TimeHour(TimeCurrent())*3600)+(TimeMinute(TimeCurrent())*60))); //Результат закрытых позиций с 1 числа до конца месяца  

bool EquityPercent=(LastCalendarMonthProfit*100)/(AccountBalance()-LastCalendarMonthProfit) < 10//Если прибыль меньше 10% == true

if (EquityPercent//Если прибыль меньше 10% == true
result=OrderSend(...); //Открываемся




PHP код:
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит в валюте депозита                  |
//|             закрытых с определённой даты позиций                           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента             (""   - любой символ,         |
//|                                               NULL - текущий символ)       |
//|    op - операция                             (-1   - любая позиция)        |
//|    mn - MagicNumber                          (-1   - любой магик)          |
//|    dt - Дата и время в секундах с 1970 года  ( 0   - с начала истории)     |
//+----------------------------------------------------------------------------+
double GetProfitFromDateInCurrency(string sy=""int op=-1int mn=-1datetime dt=0)
{
  
double p=0;
  
int    ik=OrdersHistoryTotal();

  if (
sy=="0"sy=Symbol();
  for (
i=0i<ki++) {
    if (
OrderSelect(iSELECT_BY_POSMODE_HISTORY)) {
      if ((
OrderSymbol()==sy || sy=="") && (op<|| OrderType()==op)) {
        if (
OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (
mn<|| OrderMagicNumber()==mn) {
            if (
dt<OrderCloseTime()) {
              
p+=OrderProfit()+OrderCommission()+OrderSwap();
            }
          }
        }
      }
    }
  }
  return(
p);


_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Всем бобра!
Алексея Бонифациевича Фіерсова (Пылесоса) на портянку!

Последний раз редактировалось officialboob; 04.05.2016 в 17:51.
officialboob вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Yurkov (04.05.2016)
Старый 04.05.2016, 17:57   #4810 (permalink)
Почётный гражданин
 
Аватар для Yurkov
 
Регистрация: 19.01.2011
Сообщений: 642
Репутация: 359
Yurkov - Yurkov - Yurkov - Yurkov -
Сказал(а) спасибо: 163
Поблагодарили 356 раз(а) в 166 сообщениях
Поинты: 200
Сообщение от officialboob Посмотреть сообщение
Это не для новичков.

Код будет выглядеть так (надо протестить):


А в этих скобках "result=OrderSend(...)" что должно быть?

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803
Yurkov на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.05.2016, 18:02   #4811 (permalink)
Элитный участник
 
Аватар для officialboob
 
Регистрация: 13.07.2013
Адрес: Moscow
Сообщений: 2,269
Репутация: 1260
officialboob officialboob officialboob officialboob officialboob officialboob officialboob officialboob officialboob
Сказал(а) спасибо: 63
Поблагодарили 1,301 раз(а) в 826 сообщениях
Поинты: 1467
Сообщение от Yurkov Посмотреть сообщение
А в этих скобках "result=OrderSend(...)" что должно быть?

Открытие ордера. Это не полный код. Это код для дополнения в любую существующую сову.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Всем бобра!
Алексея Бонифациевича Фіерсова (Пылесоса) на портянку!

Последний раз редактировалось officialboob; 04.05.2016 в 18:05.
officialboob вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 04.05.2016, 18:05   #4812 (permalink)
Почётный гражданин
 
Аватар для Yurkov
 
Регистрация: 19.01.2011
Сообщений: 642
Репутация: 359
Yurkov - Yurkov - Yurkov - Yurkov -
Сказал(а) спасибо: 163
Поблагодарили 356 раз(а) в 166 сообщениях
Поинты: 200
Сообщение от officialboob Посмотреть сообщение
Открытие ордера.
Это я понял)
Вот эти строчки мне не помогут?
PHP код:
bool OrderOpenBuy(int aReturnedTicket,double aLots,double aSL,double aTP
и
PHP код:
bool OrderOpenSell(int aReturnedTicket,double aLots,double aSL,double aTP

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803
Yurkov на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.05.2016, 18:14   #4813 (permalink)
Элитный участник
 
Аватар для officialboob
 
Регистрация: 13.07.2013
Адрес: Moscow
Сообщений: 2,269
Репутация: 1260
officialboob officialboob officialboob officialboob officialboob officialboob officialboob officialboob officialboob
Сказал(а) спасибо: 63
Поблагодарили 1,301 раз(а) в 826 сообщениях
Поинты: 1467
Сообщение от Yurkov Посмотреть сообщение
Это я понял)
Вот эти строчки мне не помогут?
PHP код:
bool OrderOpenBuy(int aReturnedTicket,double aLots,double aSL,double aTP
и
PHP код:
bool OrderOpenSell(int aReturnedTicket,double aLots,double aSL,double aTP


Перед запросом на открытие ордера нужно поставить дополнительное условие

PHP код:
if (EquityPercent) {

//здесь должны быть другие условия на открытие и само открытие. 



_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Всем бобра!
Алексея Бонифациевича Фіерсова (Пылесоса) на портянку!
officialboob вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 04.05.2016, 18:20   #4814 (permalink)
Местный знаток
 
Аватар для vlad_123
 
Регистрация: 29.01.2013
Сообщений: 335
Репутация: 824
vlad_123 - vlad_123 - vlad_123 - vlad_123 - vlad_123 - vlad_123 - vlad_123 -
Сказал(а) спасибо: 29
Поблагодарили 820 раз(а) в 327 сообщениях
Поинты: 388
Сообщение от Yurkov Посмотреть сообщение
Может кто подскажет код? Нужно запретить советнику торговать при достижении определенного процента прибыли и чтоб это ограничение действовало до начала следующего месяца, и потом вновь повторялось.
Я еще понимаю попытки ограничить просадки, но вот прибыль - это да...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Мониторинг советников: http://www.myfxbook.com/members/vlad_123/

На заказ не программирую.
vlad_123 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 04.05.2016, 18:24   #4815 (permalink)
Почётный гражданин
 
Аватар для Yurkov
 
Регистрация: 19.01.2011
Сообщений: 642
Репутация: 359
Yurkov - Yurkov - Yurkov - Yurkov -
Сказал(а) спасибо: 163
Поблагодарили 356 раз(а) в 166 сообщениях
Поинты: 200
Сообщение от vlad_123 Посмотреть сообщение
Я еще понимаю попытки ограничить просадки, но вот прибыль - это да...
Грубый пример:
В первой половине месяца прибыль составила 5%, во второй был получен убыток -4%. В общей сложности прибыль = 1%. Если бы стояло ограничение 5%, то не был бы получен убыток во второй половине месяца.
Сообщение от officialboob Посмотреть сообщение
Это не для новичков.
С простой переменной и ограничением по пунктам проще? )

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803

Последний раз редактировалось Yurkov; 04.05.2016 в 18:27.
Yurkov на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.05.2016, 18:31   #4816 (permalink)
Элитный участник
 
Аватар для officialboob
 
Регистрация: 13.07.2013
Адрес: Moscow
Сообщений: 2,269
Репутация: 1260
officialboob officialboob officialboob officialboob officialboob officialboob officialboob officialboob officialboob
Сказал(а) спасибо: 63
Поблагодарили 1,301 раз(а) в 826 сообщениях
Поинты: 1467
Сообщение от Yurkov Посмотреть сообщение
С простой переменной и ограничением по пунктам проще? )

Я только что написал готовый код. Чтобы его вставить в сову надо сделать 3 действия:

1. Скопировать условие if (EquityPercent) пред открытием,
2. Скопировать функцию в подвал,
3. Скопировать расчет LastCalendarMonthProfit и EquityPercent в любое место до запроса условий на открытие ордера (например, в самое начало совы сразу после void OnTick() ).

Проще этого уже ничего не будет.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Всем бобра!
Алексея Бонифациевича Фіерсова (Пылесоса) на портянку!

Последний раз редактировалось officialboob; 04.05.2016 в 18:40.
officialboob вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Yurkov (04.05.2016)
Старый 04.05.2016, 18:50   #4817 (permalink)
Почётный гражданин
 
Аватар для Yurkov
 
Регистрация: 19.01.2011
Сообщений: 642
Репутация: 359
Yurkov - Yurkov - Yurkov - Yurkov -
Сказал(а) спасибо: 163
Поблагодарили 356 раз(а) в 166 сообщениях
Поинты: 200
Сообщение от officialboob Посмотреть сообщение
Проще этого уже ничего не будет.
Что-то получается. Буду проверять! Благодарю!!!

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803
Yurkov на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.05.2016, 19:36   #4818 (permalink)
Местный житель
 
Аватар для zQuant
 
Регистрация: 21.01.2016
Адрес: https://www.mql5.com/
Сообщений: 395
Репутация: 237
zQuant - zQuant - zQuant -
Сказал(а) спасибо: 67
Поблагодарили 237 раз(а) в 103 сообщениях
Поинты: 88
Сообщение от Yurkov Посмотреть сообщение
Исходник есть, НО я не программист ) Мне нужен кусок кода, который будет за это отвечать и я вставлю его в советник.
мир перевернулся

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Программирую почти даром zQuant@outlook.com
FREE - _https://www.mql5.com/ru/market/product/16097
_https://www.mql5.com/ru/market/product/16246
zQuant вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 04.05.2016, 19:40   #4819 (permalink)
Местный житель
 
Аватар для zQuant
 
Регистрация: 21.01.2016
Адрес: https://www.mql5.com/
Сообщений: 395
Репутация: 237
zQuant - zQuant - zQuant -
Сказал(а) спасибо: 67
Поблагодарили 237 раз(а) в 103 сообщениях
Поинты: 88
officialboob все правильно написал... Особенно для тестера это самый лучший вариант...
А потом, опять же, как правильно подсказали, если историю в терминале не будешь ограничивать сильно, то и в реале будет работать...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Программирую почти даром zQuant@outlook.com
FREE - _https://www.mql5.com/ru/market/product/16097
_https://www.mql5.com/ru/market/product/16246
zQuant вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 04.05.2016, 20:17   #4820 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от Yurkov Посмотреть сообщение
Что-то получается. Буду проверять! Благодарю!!!
При проверке пользуйся отладчиком, в нём цифры можно посмотреть, а не домыслы.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 08:13. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO