Ответ
 
Опции темы
27.11.2012, 18:47
Аватар для ale002
ale002 ::: __,,,^._.^,,,__ :::
Регистрация: 28.02.2010 / Сообщений: 1,246
Поблагодарили 2,502 раз(а) / Репутация: 2528
Сообщение от 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
Регистрация: 13.03.2009 / Сообщений: 2,320
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от 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
Аватар для hoz
hoz Активный участник
Регистрация: 01.04.2011 / Сообщений: 530
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для 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
Аватар для ale002
ale002 ::: __,,,^._.^,,,__ :::
Регистрация: 28.02.2010 / Сообщений: 1,246
Поблагодарили 2,502 раз(а) / Репутация: 2528
Сообщение от hoz Посмотреть сообщение
Я вот смотрю на эту конструкцию и не въезжаю, какое у неё может быть применение...
Ну вы вроде советниками увлеклись, если делаете их не 1 шт, то используете модульную структуру - работа с ордерами, тралами и проч сопровождение сделок остается неизменным (хотя..), а стратегии меняются. Эту изменяемую часть - получение сигнала по конкретной стратегии - помещаете в отдельную функцию. Если, напр, стратегия предусматривает расчёт размеров SL и TP в зависимости от каких-то условий, то функция может вернуть их через сданные ей на время переменные, как в этом примере. А возвращаемое ф-ей основное значение true/false даст отмашку есть ли там ваще какой-ть сигнал
ale002 вне форума Ответить с цитированиемОтветить с цитированием  
28.11.2012, 21:34
Аватар для hoz
hoz Активный участник
Регистрация: 01.04.2011 / Сообщений: 530
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для 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
Аватар для hoz
hoz Активный участник
Регистрация: 01.04.2011 / Сообщений: 530
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для 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
Аватар для ale002
ale002 ::: __,,,^._.^,,,__ :::
Регистрация: 28.02.2010 / Сообщений: 1,246
Поблагодарили 2,502 раз(а) / Репутация: 2528
Сообщение от hoz Посмотреть сообщение
В теле программы же все переменные глобальные. На сколько я читал, по ссылке передаются значения переменных только из функций т.е. тел функций, а не программы самой.
Для моих мозгов слишком умное что-то загнули, не понял. Мозги, чу-чу помычав, выдали тока это: "в mql никакой код не выполняется в глобальной области, всё в функциях, включая основной рабочий цикл". Что это значит я тоже не понял

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

Последний раз редактировалось ale002; 29.11.2012 в 09:16.
ale002 вне форума Ответить с цитированиемОтветить с цитированием  
29.11.2012, 11:15
Аватар для hoz
hoz Активный участник
Регистрация: 01.04.2011 / Сообщений: 530
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для 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
Аватар для Алекc1234
Алекc1234 Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Приветствую всех. Как в коде написать, чтобы стоплосс второго открытого ордера(конкретно бая или селла) ставился на уровне первого открытого ордера(если открыт бай, то бая, если селл, то селла)?
Алекc1234 вне форума Ответить с цитированиемОтветить с цитированием  
01.12.2012, 16:39
Регистрация: 13.03.2009 / Сообщений: 2,320
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от Алекc1234 Посмотреть сообщение
Приветствую всех. Как в коде написать, чтобы стоплосс второго открытого ордера(конкретно бая или селла) ставился на уровне первого открытого ордера(если открыт бай, то бая, если селл, то селла)?
Перебирай в цикле ордера в порядке открытия. Сначала попадётся ордер открытый первым, пиши в переменную его стоп лосс. Когда попадётся второй ордер сравни его стоп лосс со значением переменной, если отличается модифицируй ордер задав стоп лосс из переменной.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Алекc1234 (01.12.2012)
01.12.2012, 16:50
Аватар для Алекc1234
Алекc1234 Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Сообщение от Ugar Посмотреть сообщение
Перебирай в цикле ордера в порядке открытия. Сначала попадётся ордер открытый первым, пиши в переменную его стоп лосс. Когда попадётся второй ордер сравни его стоп лосс со значением переменной, если отличается модифицируй ордер задав стоп лосс из переменной.
Спасибо, только возможно это всё в коде написать? Я сам не осилю...
Алекc1234 вне форума Ответить с цитированиемОтветить с цитированием  
01.12.2012, 17:38
Регистрация: 13.03.2009 / Сообщений: 2,320
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от Алек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
Аватар для Алекc1234
Алекc1234 Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Сообщение от 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
Аватар для sochinik
sochinik Активный участник
Регистрация: 10.05.2012 / Адрес: Курск-Краснодар / Сообщений: 326
Поблагодарили 169 раз(а) / Репутация: 170
  • Отправить сообщение для sochinik с помощью ICQ Отправить сообщение для sochinik с помощью MSN Отправить сообщение для sochinik с помощью Skype™
Пытаюсь понять, как правильно составлять функции в MQL? просматривая коды советников( декомпил) заметил что в них часто появляются такие функции " f0_23" может только цифровое обозначение сменится. Как образуются такие функции?
sochinik вне форума Ответить с цитированиемОтветить с цитированием  
04.12.2012, 07:56
Регистрация: 13.03.2009 / Сообщений: 2,320
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от 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
Аватар для sochinik
sochinik Активный участник
Регистрация: 10.05.2012 / Адрес: Курск-Краснодар / Сообщений: 326
Поблагодарили 169 раз(а) / Репутация: 170
  • Отправить сообщение для sochinik с помощью ICQ Отправить сообщение для sochinik с помощью MSN Отправить сообщение для sochinik с помощью Skype™
Сообщение от Ugar Посмотреть сообщение
Мммдааа... Может стоит начинать с учебника? Вряд ли получится хоть как то изучить язык программирования методом научного тыка.
Все функции образуются одинаково. Их пишет программист, иногда вспомогательное программное обеспечение. Скорее всего они имели нормальные имена, пока их декомпил не покорёжил. Каждый программист именует свои функции как хочет. По этому функции с одинаковыми именами в разных программах не обязательно одинаковые. Декомпил вообще именует не по смыслу, а чуть ли не по порядку. По этому функции с одинаковыми именами в разных программах, наверняка разные.
Я имел ввиду пользовательские функции.
Спасибо , уроки по MQL почитал и даже посмотрел видеоуроки, но пока практика на О, вот и пытаюсь понять составление функций с помощью кодов советников с которыми я знаком в работе, но к сожалению больщинство из них декомпилл,
Ещё для новичков могу заметить есть прога Forex EA Generator 4 , как утверждают разработчики в ней можно составить сову не зная MQL? да это так, но только простую, а для составления сложного эксперта функций в ней недостаточно.А вот для поннимания правильного написания кода очень полезная штука, так как сгенерирвав в ней код можно его доработать в метаэдиторе..
sochinik вне форума Ответить с цитированиемОтветить с цитированием  
04.12.2012, 08:44
Регистрация: 13.03.2009 / Сообщений: 2,320
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от sochinik Посмотреть сообщение
Спасибо , уроки по MQL почитал и даже посмотрел видеоуроки, но пока практика на О, вот и пытаюсь понять составление функций с помощью кодов советников с которыми я знаком в работе, но к сожалению больщинство из них декомпилл,
Уроки читать мало, надо изучать и программировать, разбирать примеры кодов... Этого достаточно для написания нормально работающей программы.
Пользовательские функции дело десятое. Вот когда будет написано несколько программ, появится понимание надобности функций для удобства программирования. Разбирать чужие функции не стоит, лучше писать свои. В чужих можно только подсмотреть как автор решил определённую задачу. А разбирать чужие функции после декомпила, это мазахизм.

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

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


Опции темы

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

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



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


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