Ответ
 
Опции темы
Старый 29.11.2014, 23:33   #3221 (permalink)
Активный участник
 
Аватар для Lender
 
Регистрация: 19.07.2011
Сообщений: 56
Репутация: 75
Lender
Сказал(а) спасибо: 9
Поблагодарили 74 раз(а) в 35 сообщениях
Поинты: 6
Отправить сообщение для Lender с помощью Skype™
думаю тебе подойдет такой вариант:

PHP код:
#property strict

input string iStoshParam "Нaстройки Стохастика";
input string lol_K// K = 10
      
int    K      10;
input string lol_D// D = 5
      
int    D      5;
input string lol_Slowing// Slowing = 5
      
int    Slowing 10
скомпиль, и посмотри как отображается


спустя 10 мин придумал как можно сделать параметр, который нельзя изменять
PHP код:
enum lolParamD 
{
 
lolD // 5
};

input lolParamD D lolD

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Программит, инфа в профиле

Последний раз редактировалось Lender; 29.11.2014 в 23:55.
Lender вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (30.11.2014)
Старый 30.11.2014, 07:28   #3222 (permalink)
Новичок форума
 
Аватар для Andy200577
 
Регистрация: 20.06.2012
Сообщений: 57
Репутация: 9
Andy200577
Сказал(а) спасибо: 3
Поблагодарили 8 раз(а) в 6 сообщениях
Поинты: 90
Сообщение от Lender Посмотреть сообщение
думаю тебе подойдет такой вариант:

PHP код:
#property strict

input string iStoshParam "Нaстройки Стохастика";
input string lol_K// K = 10
      
int    K      10;
input string lol_D// D = 5
      
int    D      5;
input string lol_Slowing// Slowing = 5
      
int    Slowing 10
скомпиль, и посмотри как отображается


спустя 10 мин придумал как можно сделать параметр, который нельзя изменять
PHP код:
enum lolParamD 
{
 
lolD // 5
};

input lolParamD D lolD
Спасибо, но это не то. К тому же в последнем варианте нельзя вставить строку, а только числовое значение.
В общем, я надеюсь отыщу того советника и покажу тогда скрин, как это выглядит.
Andy200577 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.11.2014, 12:08   #3223 (permalink)
Активный участник
 
Аватар для Lender
 
Регистрация: 19.07.2011
Сообщений: 56
Репутация: 75
Lender
Сказал(а) спасибо: 9
Поблагодарили 74 раз(а) в 35 сообщениях
Поинты: 6
Отправить сообщение для Lender с помощью Skype™
Сообщение от Andy200577 Посмотреть сообщение
Спасибо, но это не то. К тому же в последнем варианте нельзя вставить строку, а только числовое значение.
вот пример с "обманкой", типа строка
PHP код:
enum lolParamD 
{
 
lolD_str// My str
};

// только для отображения в настройках сова
input lolParamD lolD lolD_str// readD
      // для использования в сове
      
string    readD "My str"

Только не понимаю зачем это нужно)

как выглядит:
Миниатюры:
Нажмите на изображение для увеличения
Название: 1111.png
Просмотров: 14
Размер:	33.0 Кб
ID:	186580  

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Программит, инфа в профиле

Последний раз редактировалось Lender; 30.11.2014 в 12:10.
Lender вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 01.12.2014, 14:35   #3224 (permalink)
Новичок форума
 
Аватар для egorr007
 
Регистрация: 31.08.2012
Сообщений: 45
Репутация: 15
egorr007
Сказал(а) спасибо: 13
Поблагодарили 14 раз(а) в 6 сообщениях
Поинты: 40
Помогите пожалуйста,

функция, показывает текущую просадку/профит по инструменту,

возможно ли сделать так,

что бы она, фиксировала бы, максимальное/минимальное значение, а с приходом D1 сбрасывала бы счётчик.

Нужна максимальная просадка , по инструменту , за сегодня. минусовое значение.

то есть, что бы, каждое новое макс. или мин. значение, фиксировалось бы,
до следующего, более максимального или минимального значения.
и сброс значения, с приходом нового дня.

Спасибо.
///////////////////////////////////////////////////////////////////////
PHP код:
//+------------------------------------------------------------------+
 
double Profit_OLSS(string sy=""int op=-1) {
        
int i;
        
int k=OrdersTotal();
        
double Profit=0.0;
        if (
sy=="0"sy=Symbol();
        for (
i=0i<ki++){
          if (
OrderSelect(iSELECT_BY_POSMODE_TRADES)) {
            if (
OrderSymbol()==sy || sy=="") {
             if (
OrderType()==OP_BUY || OrderType()==OP_SELL) {
              if (
op<|| OrderType()==op) {
               
Profit +=OrderProfit()+OrderCommission()+OrderSwap(); 
              }}}}}
              return(
Profit);} // Nast   
//+------------------------------------------------------------------+ 

Последний раз редактировалось egorr007; 01.12.2014 в 15:01.
egorr007 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.12.2014, 06:50   #3225 (permalink)
Новичок форума
 
Аватар для egorr007
 
Регистрация: 31.08.2012
Сообщений: 45
Репутация: 15
egorr007
Сказал(а) спасибо: 13
Поблагодарили 14 раз(а) в 6 сообщениях
Поинты: 40
Или счётчик для этой функции, который смог бы фиксировать максимальные значения,
а на начало дня, делать сброс.

Спасибо.
egorr007 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.12.2014, 07:27   #3226 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,527
Репутация: 3647
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,118
Поблагодарили 3,651 раз(а) в 1,471 сообщениях
Поинты: 2007
Сообщение от egorr007 Посмотреть сообщение
Или счётчик для этой функции, который смог бы фиксировать максимальные значения,
а на начало дня, делать сброс.

Спасибо.
Направление мыслей у тебя правильное. Только вот не понимаю почему вместо проб и отсеивания ошибочных решений ты тратишь время на ожидание советов, и к сожалению не всегда адекватных.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
egorr007 (03.12.2014)
Старый 02.12.2014, 07:30   #3227 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от egorr007 Посмотреть сообщение
Или счётчик для этой функции, который смог бы фиксировать максимальные значения,
а на начало дня, делать сброс.

Спасибо.
Но чтобы макс просадку то в глобальных переменных
double max_pros;
После OnTick()
if(Profit_OLSS()<max_pros) max_pros=Profit_OLSS();


Чтобы скинуть счётчик
В глобальных
datetime prevtime_D;
После OnTick()
if (iTime(Symbol(),PERIOD_D1,0)!= prevtime) max_pros=0;
prevtime = iTime(Symbol(),PERIOD_D1,0);
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
egorr007 (02.12.2014), Milord (03.12.2014)
Старый 02.12.2014, 19:49   #3228 (permalink)
Новичок форума
 
Аватар для egorr007
 
Регистрация: 31.08.2012
Сообщений: 45
Репутация: 15
egorr007
Сказал(а) спасибо: 13
Поблагодарили 14 раз(а) в 6 сообщениях
Поинты: 40
Спасибо Большое!! Очень помогли!!!
egorr007 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.12.2014, 20:44   #3229 (permalink)
Новичок форума
 
Аватар для egorr007
 
Регистрация: 31.08.2012
Сообщений: 45
Репутация: 15
egorr007
Сказал(а) спасибо: 13
Поблагодарили 14 раз(а) в 6 сообщениях
Поинты: 40
Сообщение от AlexeyVik Посмотреть сообщение
Направление мыслей у тебя правильное. Только вот не понимаю почему вместо проб и отсеивания ошибочных решений ты тратишь время на ожидание советов, и к сожалению не всегда адекватных.
Простите?
egorr007 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.12.2014, 07:54   #3230 (permalink)
Новичок форума
 
Аватар для egorr007
 
Регистрация: 31.08.2012
Сообщений: 45
Репутация: 15
egorr007
Сказал(а) спасибо: 13
Поблагодарили 14 раз(а) в 6 сообщениях
Поинты: 40
Делаю так:
PHP код:
//+------------------------------------------------------------------+
 
double Profit_Minus(string sy=""int op=-1) {
        
int i;
        
double max_minus;
        
int k=OrdersTotal();
        
double Profit=0.0;
        if (
sy=="0"sy=Symbol();
        for (
i=0i<ki++){
          if (
OrderSelect(iSELECT_BY_POSMODE_TRADES)) {
            if (
OrderSymbol()==sy || sy=="") {
             if (
OrderType()==OP_BUY || OrderType()==OP_SELL) {
              if (
op<|| OrderType()==op) {
               
Profit +=OrderProfit()+OrderCommission()+OrderSwap(); 
                if(
max_minus<ProfitProfit max_minus;
              }}}}}
              return(
Profit);} //  
//+------------------------------------------------------------------+ 
минусовое значение , не фиксирует. Посмотрите, пожалуйста.
Сейчас показывает всё что меньше нуля и ноль.

Можно ли как то, фиксировать минусовые значения, типо храповика.
Например было -1, -2, фиксировать -2, если появилось -4, фиксировать -4,
если появилось -5,-6,-7,- 9, фиксировать -9.

Спасибо.

Последний раз редактировалось egorr007; 03.12.2014 в 08:38.
egorr007 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.12.2014, 08:04   #3231 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от egorr007 Посмотреть сообщение
Делаю так:
PHP код:
//+------------------------------------------------------------------+
 
double Profit_Minus(string sy=""int op=-1) {
        
int i;
        
double max_minus;
        
int k=OrdersTotal();
        
double Profit=0.0;
        if (
sy=="0"sy=Symbol();
        for (
i=0i<ki++){
          if (
OrderSelect(iSELECT_BY_POSMODE_TRADES)) {
            if (
OrderSymbol()==sy || sy=="") {
             if (
OrderType()==OP_BUY || OrderType()==OP_SELL) {
              if (
op<|| OrderType()==op) {
               
Profit +=OrderProfit()+OrderCommission()+OrderSwap(); 
                if(
max_minus<ProfitProfit max_minus;
              }}}}}
              return(
Profit);} //  
//+------------------------------------------------------------------+ 
минусовое значение , не фиксируется. Посмотрите плз.
PHP код:
Profit =OrderProfit()+OrderCommission()+OrderSwap(); 
if(
Profit<max_minusmax_minus Profit
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.12.2014, 10:03   #3232 (permalink)
Новичок форума
 
Аватар для egorr007
 
Регистрация: 31.08.2012
Сообщений: 45
Репутация: 15
egorr007
Сказал(а) спасибо: 13
Поблагодарили 14 раз(а) в 6 сообщениях
Поинты: 40
Сообщение от eevviill Посмотреть сообщение
PHP код:
Profit =OrderProfit()+OrderCommission()+OrderSwap(); 
if(
Profit<max_minusmax_minus Profit
А так, всё подряд показывает, и минусовые и плюсовые значения.
egorr007 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.12.2014, 11:23   #3233 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от egorr007 Посмотреть сообщение
А так, всё подряд показывает, и минусовые и плюсовые значения.
Не верю.
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.12.2014, 11:56   #3234 (permalink)
Новичок форума
 
Аватар для egorr007
 
Регистрация: 31.08.2012
Сообщений: 45
Репутация: 15
egorr007
Сказал(а) спасибо: 13
Поблагодарили 14 раз(а) в 6 сообщениях
Поинты: 40
Сообщение от eevviill Посмотреть сообщение
Не верю.
Комментарий в начале старта 67 строка.

Функция в самом низу 477 строка.
Вложения:
Тип файла: rar Auto-prof.rar (4.1 Кб, 2 просмотров)
egorr007 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.12.2014, 11:57   #3235 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,527
Репутация: 3647
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,118
Поблагодарили 3,651 раз(а) в 1,471 сообщениях
Поинты: 2007
Сообщение от egorr007 Посмотреть сообщение
Простите?
Теперь прощаю. Даже с правильным направлением мысли, из подсказки получить ничего не получилось.
Вот полный код в виде советника. Компилируй, проверяй и переделывай как тебе удобней.
Код:
/********************************************************************\
//|                                                       !!Test.mq4 |
//|                                         Copyright 2014, Viktorov |
//|                                                   v4forex@qip.ru |
\********************************************************************/
#property copyright "Copyright 2014, Viktorov"
#property link      "v4forex@yandex.ru"
#property version   "1.00"
#property strict

double minEquity, maxEquity;
/*******************expert initialization function*******************/
int OnInit()
{
  minEquity = AccountEquity();
   return(INIT_SUCCEEDED);
}/*******************************************************************/

/************************Expert tick function************************/
void OnTick()
{
   if(NewBar(PERIOD_D1)) minEquity = AccountEquity();
    SymbEquity(_Symbol);
   Comment("\n", "maxEquity = ", DoubleToString(maxEquity, 2)
         , "\n", "minEquity = ", DoubleToString(minEquity, 2)
         );
}/*******************************************************************/

void SymbEquity(string symbol)
{
 double Pros = 0;
  int i, total = OrdersTotal();
   for(i = 0; i < total; i++)
    {
     if(OrderSelect(i, SELECT_BY_POS) && OrderSymbol() == _Symbol)
      {
       Pros += OrderProfit()+OrderSwap()+OrderCommission();
      }
    }
   minEquity = MathMin(Pros, minEquity);
   maxEquity = MathMax(Pros, maxEquity);
}/*******************************************************************/

bool NewBar(int tf)
{
  static datetime lastbar;
   datetime curbar = iTime(_Symbol, tf, 0);
   if(lastbar != curbar)
    {
     lastbar = curbar;
     return (true);
    }
   else return(false);
}//******************************************************************|

/******************expert deinitialization function******************/
void OnDeinit(const int reason)
{
   Comment("");
}/*******************************************************************/
Если при запуске профит по символу меньше нуля, то maxEquity будет показывать 0
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
egorr007 (03.12.2014)
Старый 03.12.2014, 12:49   #3236 (permalink)
Новичок форума
 
Аватар для egorr007
 
Регистрация: 31.08.2012
Сообщений: 45
Репутация: 15
egorr007
Сказал(а) спасибо: 13
Поблагодарили 14 раз(а) в 6 сообщениях
Поинты: 40
Сообщение от AlexeyVik Посмотреть сообщение
Теперь прощаю. Даже с правильным направлением мысли, из подсказки получить ничего не получилось.
Вот полный код в виде советника. Компилируй, проверяй и переделывай как тебе удобней.

Если при запуске профит по символу меньше нуля, то maxEquity будет показывать 0
Да! Супер, оно самое!!! всё отлично фиксируется. сброс сделал по началу торговой сессии, в тостере всё работает.

Ещё раз огромное Спасибо!! Браво!!!

Последний раз редактировалось egorr007; 03.12.2014 в 12:53.
egorr007 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.12.2014, 15:36   #3237 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547

По умолчанию Вопрос - к профи, как написать кусок кода???


в процессе освоения языка, и просмотра чужих кодов, возникло 3 вопроса:
1) как же все таки работает команда Start() по тексту кода, сверху вниз или как то иначе, всегда думал что вначале кода нужно открывать ордера, а ниже уже их селектить и делать что угодно, в том числе тралить и прочие вещи, пока не увидел кусок кода советника, в котором все было сделано наоборот, после Start() сразу шел кусок где селектились ордера и трались, а ниже уже кусок кода где ордера открывались...

2)как написать и подключить простой безубыток к готовому советнику,желательно в старом билде МТ4

3)есть ли смысл иметь безубыток и трал в одном советнике, или достаточно иметь что то одно?

Просьба сильно не пинать, потому что многое что позабыл, что знал...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)

Последний раз редактировалось Milord; 03.12.2014 в 15:39.
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.12.2014, 16:20   #3238 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
1) Принципиальной разницы нет. Все равно на следующем тике будет выполнен проход и сработает трал или бу, или что там еще...
2) В сети есть уйма примеров, но если Вы не программируете, то вопрос лишен смысла ))
3) Есть, смотря что за стратегия реализована в советнике.
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (03.12.2014), Milord (03.12.2014)
Старый 03.12.2014, 16:21   #3239 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Например:
_http://forum.mql4.com/ru/38949/page8#434276
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (03.12.2014), Milord (03.12.2014)
Старый 03.12.2014, 16:25   #3240 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1966
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,895 раз(а) в 1,071 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Milord Посмотреть сообщение
в процессе освоения языка, и просмотра чужих кодов, возникло 3 вопроса:
1) как же все таки работает команда Start() по тексту кода, сверху вниз или как то иначе, всегда думал что вначале кода нужно открывать ордера, а ниже уже их селектить и делать что угодно, в том числе тралить и прочие вещи, пока не увидел кусок кода советника, в котором все было сделано наоборот, после Start() сразу шел кусок где селектились ордера и трались, а ниже уже кусок кода где ордера открывались...
Код внутри функции выполняется сверху вниз. Ну кроме циклов, там по кругу пока не выйдет. Как раз многие пишут открытие ордеров именнов конце кода. То есть сначала работаем с уже открытыми ордерами и собирает инфу по их наличию и параметрам если нужно.
Потом уже открытие новых, если нужно.
Сообщение от Milord Посмотреть сообщение
2)как написать и подключить простой безубыток к готовому советнику,желательно в старом билде МТ4
Взять готовую функцию безубытка. Разместить её за пределами функции start, вызвать её внутри функции start, как раз можно в начале.
Сообщение от Milord Посмотреть сообщение
3)есть ли смысл иметь безубыток и трал в одном советнике, или достаточно иметь что то одно?
Это зависит от стратегии которая реализована в советнике.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Milord (03.12.2014)
Ответ

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


Опции темы

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

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



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


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