Ответ
 
Опции темы
Старый 27.11.2012, 18:47   #601 (permalink)
::: __,,,^._.^,,,__ :::
 
Аватар для ale002
 
Регистрация: 28.02.2010
Сообщений: 1,246
Репутация: 2528
ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002
Сказал(а) спасибо: 794
Поблагодарили 2,502 раз(а) в 770 сообщениях
Поинты: 670
Сообщение от Ugar Посмотреть сообщение
Можно конечно извернуться, и в функции найти все нужные значения, но возвращать их придётся через глобальные переменные, так как нормально функция возвращает только одно значение.
Это не обязательно, функция может вернуть сколько нужно значений - ей можно передать переменные поштучно или целый массив, куда ф-ция запишет что нужно и вернёт в основную программу. Напр:

PHP код:
// тело программы:
double
 dOne 
0,
 
dTwo 0
;
bool bResult fSetNine(dOnedTwo);

// функция:
bool fSetNine(doubledOnedoubledTwo) {
 
dOne dTwo 9;
 return(
true)

После выполнения в bResult будет true, в dOne и dTwo будут девятки. Для этого используется значок & меж типом и именем в перечислении переменных функции

Сообщение от hoz Посмотреть сообщение
Т.е. суть в том, что после кажого if имеется return, а это уже выход из функции. Как после того как вышли из функции можно испольнить оператор?
А нафига нам знать уровень гемоглобина, если у пациента пульса нет? Проверки выстроены в порядке приоритетности, если предыдущая не пройдена, последующие лишены смысла
ale002 вне форума   Ответить с цитированиемОтветить с цитированием  
3 пользователя(ей) сказали cпасибо:
eevviill (27.11.2012), hoz (27.11.2012), Ugar (28.11.2012)
Старый 27.11.2012, 19:13   #602 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от ale002 Посмотреть сообщение
Это не обязательно, функция может вернуть сколько нужно значений - ей можно передать переменные поштучно или целый массив, куда ф-ция запишет что нужно и вернёт в основную программу. Напр:

PHP код:
// тело программы:
double
 dOne 
0,
 
dTwo 0
;
bool bResult fSetNine(dOnedTwo);

// функция:
bool fSetNine(doubledOnedoubledTwo) {
 
dOne dTwo 9;
 return(
true)

После выполнения в bResult будет true, в dOne и dTwo будут девятки. Для этого используется значок & меж типом и именем в перечислении переменных функции
Ну или так.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (27.11.2012)
Старый 27.11.2012, 22:07   #603 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от ale002 Посмотреть сообщение
Это не обязательно, функция может вернуть сколько нужно значений - ей можно передать переменные поштучно или целый массив, куда ф-ция запишет что нужно и вернёт в основную программу. Напр:

PHP код:
// тело программы:
double
 dOne 
0,
 
dTwo 0
;
bool bResult fSetNine(dOnedTwo);

// функция:
bool fSetNine(doubledOnedoubledTwo) {
 
dOne dTwo 9;
 return(
true)

После выполнения в bResult будет true, в dOne и dTwo будут девятки. Для этого используется значок & меж типом и именем в перечислении переменных функции

Хм. А при невыполнении в bResult будет false. Я вот смотрю на эту конструкцию и не въезжаю, какое у неё может быть применение...


Сообщение от ale002 Посмотреть сообщение
А нафига нам знать уровень гемоглобина, если у пациента пульса нет? Проверки выстроены в порядке приоритетности, если предыдущая не пройдена, последующие лишены смысла

Мой затуп, тут всё элементарно.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 27.11.2012, 23:21   #604 (permalink)
::: __,,,^._.^,,,__ :::
 
Аватар для ale002
 
Регистрация: 28.02.2010
Сообщений: 1,246
Репутация: 2528
ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002
Сказал(а) спасибо: 794
Поблагодарили 2,502 раз(а) в 770 сообщениях
Поинты: 670
Сообщение от hoz Посмотреть сообщение
Я вот смотрю на эту конструкцию и не въезжаю, какое у неё может быть применение...
Ну вы вроде советниками увлеклись, если делаете их не 1 шт, то используете модульную структуру - работа с ордерами, тралами и проч сопровождение сделок остается неизменным (хотя..), а стратегии меняются. Эту изменяемую часть - получение сигнала по конкретной стратегии - помещаете в отдельную функцию. Если, напр, стратегия предусматривает расчёт размеров SL и TP в зависимости от каких-то условий, то функция может вернуть их через сданные ей на время переменные, как в этом примере. А возвращаемое ф-ей основное значение true/false даст отмашку есть ли там ваще какой-ть сигнал
ale002 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 28.11.2012, 21:34   #605 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от hoz Посмотреть сообщение
Хм. А при невыполнении в bResult будет false. Я вот смотрю на эту конструкцию и не въезжаю, какое у неё может быть применение...

PHP код:
тело программы:
double
 dOne 
0,
 
dTwo 0
;
bool bResult fSetNine(dOnedTwo);

// функция:
bool fSetNine(doubledOnedoubledTwo) {
 
dOne dTwo 9;
 return(
true)


Тут есть один нюанс. У вас передача по ссылке значений с тела программы. В теле программы же все переменные глобальные. На сколько я читал, по ссылке передаются значения переменных только из функций т.е. тел функций, а не программы самой. В чём загводка?
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 28.11.2012, 22:04   #606 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
У меня возникла ошибка в эксперте:

Код:
2012.11.28 23:58:00	2012.11.01 21:51  Gann_2Days EURUSD,H1: OrderSend error 138

Торговля ведётся на ТФ Н1. Цены вроде как не обновляются часто, торговля лимитными ордерами выставленными заранее до открытие следующего дня.
В чём может быть загвоздка?

Вот нужные функции:

Скрытый текст

PHP код:
//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
   
string qwert "баянул сов";
   
   if(
g_type == OP_SELL)               // Если есть противоположная позиция,..
     
if(!CloseDeal(g_ticket))          // Закроем её
     
return(false);
     
   if(
g_type == OP_BUY)                // Если есть баевый ордер,..
     
return(true);
                          
// Ничего не делаем
      
   
return(SendOrder(Symbol(),g_type,lot,priceForBuy,0,0,qwert,magic));
}
//+-------------------------------------------------------------------------------------+
//| Посыл ордера                                                                        |
//+-------------------------------------------------------------------------------------+
int SendOrder(int symbolint g_typedouble lotdouble pricedouble SL,double TPstring qwertint magic)
{
  
RefreshRates();
//Print("g_type = ", g_type);
//Print("lot = ", lot);
//Print("GetPriceToInput() = ", GetPriceToInput());
//Print("SL = ", SL);
//Print("TP = ", TP);
  
int ticket OrderSend(Symbol(),g_type,lot,GetPriceToInput(),NULL,0,0," ",magic,86400,Green);

  
  return(
ticket);
}
//+-------------------------------------------------------------------------------------+
//| Получение цены установки отложенного ордера                                         |
//+-------------------------------------------------------------------------------------+
double GetPriceToInput()

  
double firstBarClosed iClose(Symbol(),1440,2);                          // Цена закрытия предпоследнего дня
  
double secondBarClosed iClose(Symbol(),1440,1);                         // Цена закрытия последнего дня
  
  
if(firstBarClosed secondBarClosed)                                      // Если закрытие вчерашнего дня ниже закрытия предыдущего..
  
{                                                                         //.. (линия по ценам закрытий направлена вниз), то..
    
double deltaForSell = (firstBarClosed secondBarClosed)/2;             // Находим дельту изменения цены до 12 часов текущего дня
    
double priceForSell secondBarClosed deltaForSell;                   // Вычисляем цену продажи
    
return(NormalizeDouble(priceForSell,Digits));
  }

  if(
firstBarClosed secondBarClosed)                                      // Если закрытие предыдущего днях ниже закрытия вчерашнего..
  
{                                                                         //..(линия по ценам закрытий направлена вверх), то..
    
double deltaForBuy = (secondBarClosed firstBarClosed)/2;              // Находим дельту изменения цены до 12 часов текущего дня
    
double priceForBuy secondBarClosed deltaForBuy;                     // Вычисляем цену покупки
    
return(NormalizeDouble(priceForBuy,Digits));
  }

[свернуть]



В чём неверность?

Последний раз редактировалось NSerega; 28.11.2012 в 22:18.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 29.11.2012, 09:14   #607 (permalink)
::: __,,,^._.^,,,__ :::
 
Аватар для ale002
 
Регистрация: 28.02.2010
Сообщений: 1,246
Репутация: 2528
ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002
Сказал(а) спасибо: 794
Поблагодарили 2,502 раз(а) в 770 сообщениях
Поинты: 670
Сообщение от hoz Посмотреть сообщение
В теле программы же все переменные глобальные. На сколько я читал, по ссылке передаются значения переменных только из функций т.е. тел функций, а не программы самой.
Для моих мозгов слишком умное что-то загнули, не понял. Мозги, чу-чу помычав, выдали тока это: "в mql никакой код не выполняется в глобальной области, всё в функциях, включая основной рабочий цикл". Что это значит я тоже не понял

Сообщение от hoz Посмотреть сообщение
У меня возникла ошибка в эксперте: EURUSD,H1: OrderSend error 138
Сравните полученную после RefreshRates() цену Bid (или Ask, смотря какой ордер) с тем уровнем, котор вам возвращает GetPriceToInput. Вполне вероятно, что этот уровень уже проехали, соотв ставить отложку нужного вам типа туда уже нельзя

Последний раз редактировалось ale002; 29.11.2012 в 09:16.
ale002 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 29.11.2012, 11:15   #608 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от ale002 Посмотреть сообщение
Сравните полученную после RefreshRates() цену Bid (или Ask, смотря какой ордер) с тем уровнем, котор вам возвращает GetPriceToInput. Вполне вероятно, что этот уровень уже проехали, соотв ставить отложку нужного вам типа туда уже нельзя

Нет. Там у меня тип был другой. Не отложка, а рыночный же. В функции OpenBuy() нужно было явно задать тип ордера. Вместо g_type прописать OP_BUYLIMIT.

PHP код:
return(SendOrder(Symbol(),g_type,lot,priceForBuy,0,0,qwert,magic)); 

Теперь другая задача. Обычно, что бы получить значение возвращаемое ф-цией в место, где нужно получить это значение вписывается название ф-ции с параметрами в кавычках, если они есть. Например, Lot()


У меня есть ф-ция которая вычисляет цену для открытия лимитного ордера:

Скрытый текст

PHP код:
//+-------------------------------------------------------------------------------------+
//| Получение цены установки отложенного ордера                                         |
//+-------------------------------------------------------------------------------------+
double GetPriceToInput()

  
double firstBarClosed iClose(Symbol(),1440,2);                          // Цена закрытия предпоследнего дня
  
double secondBarClosed iClose(Symbol(),1440,1);                         // Цена закрытия последнего дня
  
  
if(firstBarClosed secondBarClosed)                                      // Если закрытие вчерашнего дня ниже закрытия предыдущего..
  
{                                                                         //.. (линия по ценам закрытий направлена вниз), то..
    
double deltaForSell = (firstBarClosed secondBarClosed)/2;             // Находим дельту изменения цены до 12 часов текущего дня
    
double priceForSell secondBarClosed deltaForSell;                   // Вычисляем цену продажи
    
return(NormalizeDouble(priceForSell,Digits));
  }

  if(
firstBarClosed secondBarClosed)                                      // Если закрытие предыдущего днях ниже закрытия вчерашнего..
  
{                                                                         //..(линия по ценам закрытий направлена вверх), то..
    
double deltaForBuy = (secondBarClosed firstBarClosed)/2;              // Находим дельту изменения цены до 12 часов текущего дня
    
double priceForBuy secondBarClosed deltaForBuy;                     // Вычисляем цену покупки
    
return(NormalizeDouble(priceForBuy,Digits));
  }

[свернуть]



Можно как-н. мне использовать её не так GetPriceToInput() , а по-скольку данная ф-ция возвращает не одно значение, то я хотел бы напрямую вызвать либо priceForBuy либо priceForSell непосредствеено. Типа прописать данную переменную в нужном месте.
Такого я нигде не встречал, но может быть подобные варианты существуют?

Последний раз редактировалось NSerega; 29.11.2012 в 12:15.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 01.12.2012, 15:05   #609 (permalink)
Местный житель
 
Аватар для Алекc1234
 
Регистрация: 24.03.2011
Сообщений: 697
Репутация: 276
Алекc1234 Алекc1234 Алекc1234
Сказал(а) спасибо: 391
Поблагодарили 276 раз(а) в 176 сообщениях
Поинты: 0
Приветствую всех. Как в коде написать, чтобы стоплосс второго открытого ордера(конкретно бая или селла) ставился на уровне первого открытого ордера(если открыт бай, то бая, если селл, то селла)?
Алекc1234 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 01.12.2012, 16:39   #610 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Алекc1234 Посмотреть сообщение
Приветствую всех. Как в коде написать, чтобы стоплосс второго открытого ордера(конкретно бая или селла) ставился на уровне первого открытого ордера(если открыт бай, то бая, если селл, то селла)?
Перебирай в цикле ордера в порядке открытия. Сначала попадётся ордер открытый первым, пиши в переменную его стоп лосс. Когда попадётся второй ордер сравни его стоп лосс со значением переменной, если отличается модифицируй ордер задав стоп лосс из переменной.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Алекc1234 (01.12.2012)
Старый 01.12.2012, 16:50   #611 (permalink)
Местный житель
 
Аватар для Алекc1234
 
Регистрация: 24.03.2011
Сообщений: 697
Репутация: 276
Алекc1234 Алекc1234 Алекc1234
Сказал(а) спасибо: 391
Поблагодарили 276 раз(а) в 176 сообщениях
Поинты: 0
Сообщение от Ugar Посмотреть сообщение
Перебирай в цикле ордера в порядке открытия. Сначала попадётся ордер открытый первым, пиши в переменную его стоп лосс. Когда попадётся второй ордер сравни его стоп лосс со значением переменной, если отличается модифицируй ордер задав стоп лосс из переменной.
Спасибо, только возможно это всё в коде написать? Я сам не осилю...
Алекc1234 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 01.12.2012, 17:38   #612 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Алекc1234 Посмотреть сообщение
Спасибо, только возможно это всё в коде написать? Я сам не осилю...
Примерно так:

Скрытый текст

Код:
int total, i;
   double sl1Buy=-1, sl1Sell=-1;
   for(i=0; i<total; i++)
      {
      if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         {
         Print("Ордер не выбран, ошибка = ",GetLastError());
         return(0);
         }
      if(OrderType()==OP_BUY)
         {
         if(sl1Buy<0)sl1Buy=OrderStopLoss();
         else
            {
            if(MathAbs(OrderStopLoss()-sl1Buy)>Point)
               {
               if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(sl1Buy,Digits),
               OrderTakeProfit(),0,Blue))
                  {
                  Print("Ордер не модифицирован, ошибка=",GetLastError());
                  Sleep(3000);
                  }
               }
            }
         }
      if(OrderType()==OP_SELL)
         {
         if(sl1Sell<0)sl1Sell=OrderStopLoss();
         else
            {
            if(MathAbs(OrderStopLoss()-sl1Sell)>Point)
               {
               if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(sl1Sell,Digits),
               OrderTakeProfit(),0,Red))
                  {
                  Print("Ордер не модифицирован, ошибка=",GetLastError());
                  Sleep(3000);
                  }
               }
            }
         }
      }
[свернуть]
Только не стоит всё копировать и надеяться что будет работать как надо. Надо разобрать код с помощью справочника и понять почему сделано так. Может в конкретном случае что то нужно добавить или изменить. Пользы больше будет.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

Последний раз редактировалось NSerega; 01.12.2012 в 18:02.
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
alexshell (01.12.2012), Алекc1234 (01.12.2012)
Старый 01.12.2012, 19:49   #613 (permalink)
Местный житель
 
Аватар для Алекc1234
 
Регистрация: 24.03.2011
Сообщений: 697
Репутация: 276
Алекc1234 Алекc1234 Алекc1234
Сказал(а) спасибо: 391
Поблагодарили 276 раз(а) в 176 сообщениях
Поинты: 0
Сообщение от Ugar Посмотреть сообщение
Примерно так:

Скрытый текст

Код:
int total, i;
   double sl1Buy=-1, sl1Sell=-1;
   for(i=0; i<total; i++)
      {
      if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         {
         Print("Ордер не выбран, ошибка = ",GetLastError());
         return(0);
         }
      if(OrderType()==OP_BUY)
         {
         if(sl1Buy<0)sl1Buy=OrderStopLoss();
         else
            {
            if(MathAbs(OrderStopLoss()-sl1Buy)>Point)
               {
               if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(sl1Buy,Digits),
               OrderTakeProfit(),0,Blue))
                  {
                  Print("Ордер не модифицирован, ошибка=",GetLastError());
                  Sleep(3000);
                  }
               }
            }
         }
      if(OrderType()==OP_SELL)
         {
         if(sl1Sell<0)sl1Sell=OrderStopLoss();
         else
            {
            if(MathAbs(OrderStopLoss()-sl1Sell)>Point)
               {
               if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(sl1Sell,Digits),
               OrderTakeProfit(),0,Red))
                  {
                  Print("Ордер не модифицирован, ошибка=",GetLastError());
                  Sleep(3000);
                  }
               }
            }
         }
      }
[свернуть]
Только не стоит всё копировать и надеяться что будет работать как надо. Надо разобрать код с помощью справочника и понять почему сделано так. Может в конкретном случае что то нужно добавить или изменить. Пользы больше будет.
Спасибо большое. Я подстроился под свой код и всё получилось!
Алекc1234 на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
alexshell (01.12.2012)
Старый 04.12.2012, 06:25   #614 (permalink)
Активный участник
 
Аватар для sochinik
 
Регистрация: 10.05.2012
Адрес: Курск-Краснодар
Сообщений: 326
Репутация: 170
sochinik - sochinik -
Сказал(а) спасибо: 142
Поблагодарили 169 раз(а) в 65 сообщениях
Поинты: 254
Отправить сообщение для sochinik с помощью ICQ Отправить сообщение для sochinik с помощью MSN Отправить сообщение для sochinik с помощью Skype™
Пытаюсь понять, как правильно составлять функции в MQL? просматривая коды советников( декомпил) заметил что в них часто появляются такие функции " f0_23" может только цифровое обозначение сменится. Как образуются такие функции?
sochinik вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 04.12.2012, 07:56   #615 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от sochinik Посмотреть сообщение
Пытаюсь понять, как правильно составлять функции в MQL? просматривая коды советников( декомпил) заметил что в них часто появляются такие функции " f0_23" может только цифровое обозначение сменится. Как образуются такие функции?
Мммдааа... Может стоит начинать с учебника? Вряд ли получится хоть как то изучить язык программирования методом научного тыка.
Все функции образуются одинаково. Их пишет программист, иногда вспомогательное программное обеспечение. Скорее всего они имели нормальные имена, пока их декомпил не покорёжил. Каждый программист именует свои функции как хочет. По этому функции с одинаковыми именами в разных программах не обязательно одинаковые. Декомпил вообще именует не по смыслу, а чуть ли не по порядку. По этому функции с одинаковыми именами в разных программах, наверняка разные.
Я имел ввиду пользовательские функции.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

Последний раз редактировалось Ugar; 04.12.2012 в 07:58.
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
sochinik (04.12.2012)
Старый 04.12.2012, 08:13   #616 (permalink)
Активный участник
 
Аватар для sochinik
 
Регистрация: 10.05.2012
Адрес: Курск-Краснодар
Сообщений: 326
Репутация: 170
sochinik - sochinik -
Сказал(а) спасибо: 142
Поблагодарили 169 раз(а) в 65 сообщениях
Поинты: 254
Отправить сообщение для sochinik с помощью ICQ Отправить сообщение для sochinik с помощью MSN Отправить сообщение для sochinik с помощью Skype™
Сообщение от Ugar Посмотреть сообщение
Мммдааа... Может стоит начинать с учебника? Вряд ли получится хоть как то изучить язык программирования методом научного тыка.
Все функции образуются одинаково. Их пишет программист, иногда вспомогательное программное обеспечение. Скорее всего они имели нормальные имена, пока их декомпил не покорёжил. Каждый программист именует свои функции как хочет. По этому функции с одинаковыми именами в разных программах не обязательно одинаковые. Декомпил вообще именует не по смыслу, а чуть ли не по порядку. По этому функции с одинаковыми именами в разных программах, наверняка разные.
Я имел ввиду пользовательские функции.
Спасибо , уроки по MQL почитал и даже посмотрел видеоуроки, но пока практика на О, вот и пытаюсь понять составление функций с помощью кодов советников с которыми я знаком в работе, но к сожалению больщинство из них декомпилл,
Ещё для новичков могу заметить есть прога Forex EA Generator 4 , как утверждают разработчики в ней можно составить сову не зная MQL? да это так, но только простую, а для составления сложного эксперта функций в ней недостаточно.А вот для поннимания правильного написания кода очень полезная штука, так как сгенерирвав в ней код можно его доработать в метаэдиторе..
sochinik вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 04.12.2012, 08:44   #617 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от sochinik Посмотреть сообщение
Спасибо , уроки по MQL почитал и даже посмотрел видеоуроки, но пока практика на О, вот и пытаюсь понять составление функций с помощью кодов советников с которыми я знаком в работе, но к сожалению больщинство из них декомпилл,
Уроки читать мало, надо изучать и программировать, разбирать примеры кодов... Этого достаточно для написания нормально работающей программы.
Пользовательские функции дело десятое. Вот когда будет написано несколько программ, появится понимание надобности функций для удобства программирования. Разбирать чужие функции не стоит, лучше писать свои. В чужих можно только подсмотреть как автор решил определённую задачу. А разбирать чужие функции после декомпила, это мазахизм.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
sochinik (04.12.2012)
Старый 04.12.2012, 08:51   #618 (permalink)
Активный участник
 
Аватар для sochinik
 
Регистрация: 10.05.2012
Адрес: Курск-Краснодар
Сообщений: 326
Репутация: 170
sochinik - sochinik -
Сказал(а) спасибо: 142
Поблагодарили 169 раз(а) в 65 сообщениях
Поинты: 254
Отправить сообщение для sochinik с помощью ICQ Отправить сообщение для sochinik с помощью MSN Отправить сообщение для sochinik с помощью Skype™
Сообщение от Ugar Посмотреть сообщение
Уроки читать мало, надо изучать и программировать, разбирать примеры кодов... Этого достаточно для написания нормально работающей программы.
Пользовательские функции дело десятое. Вот когда будет написано несколько программ, появится понимание надобности функций для удобства программирования. Разбирать чужие функции не стоит, лучше писать свои. В чужих можно только подсмотреть как автор решил определённую задачу. А разбирать чужие функции после декомпила, это мазахизм.
Это я уже и начинаю понимать, просто подыскать как составлена функция для того чтобы составить свою очень сложно в нете, так как в массе советников надо разбираться- но мне теперья ясно что в декомпил лучще не лезть
sochinik вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 04.12.2012, 13:27   #619 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,114
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от sochinik Посмотреть сообщение
Это я уже и начинаю понимать, просто подыскать как составлена функция для того чтобы составить свою очень сложно в нете, так как в массе советников надо разбираться- но мне теперья ясно что в декомпил лучще не лезть
А ты попробуй почитать здесь http://docs.mql4.com/ru/basis/functions
Цитата:
Функция - это поименованная часть программы, которая может вызываться из других частей программы столько раз, сколько необходимо. Она состоит из описания типа возвращаемого значения, имени, формальных параметров и составного оператора (блока) из выполняемых действий. Количество параметров, передаваемых в функцию, ограничено и не может превышать 64.
А можно такую часть кода написать столько раз, сколько необходимо. Вот и вся разница... А как удобней читать и как легче заблудиться в строках как в лесу...
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
sochinik (04.12.2012)
Старый 05.12.2012, 09:01   #620 (permalink)
Местный знаток
 
Аватар для vetallic
 
Регистрация: 31.08.2010
Сообщений: 352
Репутация: 511
vetallic - vetallic - vetallic - vetallic - vetallic - vetallic -
Сказал(а) спасибо: 87
Поблагодарили 509 раз(а) в 104 сообщениях
Поинты: 96
прет,
хотел сделать чтоб робот работал после открытия ордера вручную и вел дальше...
какой меджик прописать чтоб он определял и вел их дальше правильно? 0?
vetallic вне форума   Ответить с цитированиемОтветить с цитированием  
Ответ

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


Опции темы

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

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



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


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