Ответ
 
Опции темы
Старый 28.09.2013, 16:46   #1681 (permalink)
gzh
Интересующийся
 
Аватар для gzh
 
Регистрация: 11.12.2012
Сообщений: 47
Репутация: 2
gzh
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Поинты: 64
Допустим получил я значения фракталов
double fractal_1 = iFractals(Symbol(),0,1,0);
double fractal_2 = iFractals(Symbol(),0,2,0);

А дальше что писать? как написать, если появился верхний фрактал, открыть селл, если нижний открыть Бай ??? Подскажите пожалуйста, а то я вообще не представляю как это написать.
gzh вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 28.09.2013, 16:50   #1682 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 828
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 842 раз(а) в 554 сообщениях
Поинты: 1308
Нну, типа
PHP код:
double val=iFractals(NULL0MODE_UPPER3); // верхний фрактал
if(val>0продать
val
=iFractals(NULL0MODE_LOWER3); // нижний фрактал
if(val>0купить 

Последний раз редактировалось ansol; 28.09.2013 в 16:53.
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 28.09.2013, 17:40   #1683 (permalink)
gzh
Интересующийся
 
Аватар для gzh
 
Регистрация: 11.12.2012
Сообщений: 47
Репутация: 2
gzh
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Поинты: 64
Спасибо за помощь! Разобрался. Можно еще вопрос? Допустим появился сигнал,открылся Бай, при срабатывании SL или TP ордер закрывается и тут же открывается новый ордер.
Если не затруднит, подскажи пожалуйста, как сделать, чтобы если ордер закрылся, то новый ордер открывался только, когда появится новый фрактал ???
gzh вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 28.09.2013, 17:51   #1684 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 828
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 842 раз(а) в 554 сообщениях
Поинты: 1308
Фрактал имеет значение High(или Low) на свече, так что можно его запомнить и сравнивать с новым - оно хоть на пипс, но будет отличаться. С открытием новой свечи опять же если и появится фрактал, то все равно другой - текущий у тебя с 3-й свечи "переедет" на четвертую относительно новой
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 28.09.2013, 18:03   #1685 (permalink)
gzh
Интересующийся
 
Аватар для gzh
 
Регистрация: 11.12.2012
Сообщений: 47
Репутация: 2
gzh
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Поинты: 64
Спасибо, попробую!
gzh вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 29.09.2013, 07:52   #1686 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от gzh Посмотреть сообщение
Господа программисты, помогите пожалуйста с кодом, никак не получается. Я новичок в программировании, только учусь. Хочу написать простой советник по фракталам: появился нижний фрактал - Buy, появился верхний фрактал - Sell.
Подскажите, что не правильно, как правильно. Буду благодарен!!!

for (int i=0; i<OrdersTotal(); i++) {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if (OrderType()==1 && Close[2] < Close[3] && Close[1] > Close[2]) OrderClose(OrderTicket(),OrderLots(),Ask,0);

if (OrderType()==0 && Close[2] > Close[3] && Close[1] < Close[2]) OrderClose(OrderTicket(),OrderLots(),Bid,0); }


if (OrdersTotal()==0) {

if (Close[2] < Close[3] && Close[1] > Close[2]) OrderSend(Symbol(),0,lot,Ask,0,0,0);

if (Close[2] > Close[3] && Close[1] < Close[2]) OrderSend(Symbol(),1,lot,Bid,0,0,0); }

А теперь внимательно и по слогам прокомментируйте каждую строку...
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 29.09.2013, 12:06   #1687 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Я тут продолжаю капать библиотеки _http://codebase.mql4.com/ru/8518
Появился интерес к странному и сложноватому способу (у меня реализация данной функции на порядок проще и удобнее...). Так вот смотря функцию:

PHP код:
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  UNI:   Сортируем индексы массива по убыванию                                     |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fRun_Sort (intar_INDEX[],     // массив индексов для сортировки
                
double fda_Value[])  // массив значений
{
    
int li_INDli_intli_tmpli_size ArraySize (fda_Value);
//----
    
for (li_IND 0li_IND li_sizeli_IND++)
    {
ar_INDEX[li_IND] = li_IND;}
    for (
li_IND 0li_IND li_sizeli_IND++)
    {
          for (
li_int li_IND 1li_int li_sizeli_int++)
          {
               if (
fda_Value[ar_INDEX[li_IND]] < fda_Value[ar_INDEX[li_int]])
               {
                    
li_tmp ar_INDEX[li_int]; 
                    
ar_INDEX[li_int] = ar_INDEX[li_IND]; 
                    
ar_INDEX[li_IND] = li_tmp;
               }
          }
     }
//----
    
return;


Поясните, зачем вложенный цикл тут? вообще что происходит по порядку в данной функции.. Интересно, лишь понять логику автора.. Так для общего..
Для меня этот код не особо читабельный.

Последний раз редактировалось NSerega; 29.09.2013 в 23:58.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 29.09.2013, 12:26   #1688 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от hoz Посмотреть сообщение
Я тут продолжаю капать библиотеки _http://codebase.mql4.com/ru/8518
Появился интерес к странному и сложноватому способу (у меня реализация данной функции на порядок проще и удобнее...). Так вот смотря функцию:

PHP код:
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  UNI:   Сортируем индексы массива по убыванию                                     |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fRun_Sort (intar_INDEX[],     // массив индексов для сортировки
                
double fda_Value[])  // массив значений
{
    
int li_INDli_intli_tmpli_size ArraySize (fda_Value);
//----
    
for (li_IND 0li_IND li_sizeli_IND++)
    {
ar_INDEX[li_IND] = li_IND;}
    for (
li_IND 0li_IND li_sizeli_IND++)
    {
          for (
li_int li_IND 1li_int li_sizeli_int++)
          {
               if (
fda_Value[ar_INDEX[li_IND]] < fda_Value[ar_INDEX[li_int]])
               {
                    
li_tmp ar_INDEX[li_int]; 
                    
ar_INDEX[li_int] = ar_INDEX[li_IND]; 
                    
ar_INDEX[li_IND] = li_tmp;
               }
          }
     }
//----
    
return;


Поясните, зачем вложенный цикл тут? вообще что происходит по порядку в данной функции.. Интересно, лишь понять логику автора.. Так для общего..
Для меня этот код не особо читабельный.
Здесь происходит сортировка индексов массива по простейшему алгоритму, известному как "пузырьковая сортировка". Я вики переписывать не буду, погугли алгоритмы сортировки, а если ты умеешь делать это еще проще, хвала тебе.

Последний раз редактировалось NSerega; 29.09.2013 в 23:59.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
hoz (29.09.2013)
Старый 29.09.2013, 21:31   #1689 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от qqmber Посмотреть сообщение
Здесь происходит сортировка индексов массива по простейшему алгоритму, известному как "пузырьковая сортировка". Я вики переписывать не буду, погугли алгоритмы сортировки, а если ты умеешь делать это еще проще, хвала тебе.

Очень интересно.. Так получается что вложенные циклы перебираются как? Поочерёдно или одновременно? Имею ввиду, в первом цикле берётся значение переменной, дальше сразу на вложенный - берётся значение... и тд? потом происходит выполнение условия?
Или всё-таки, берётся первый индекс в первом цикле, и дальше сразу по второму циклу прогоняется весь просчёт, выполняются условия и.. берётся второй индекс первого цикла, прогоняется второй цикл по переменной полученной с первого цикла и выполняются условия. И тд и тп, я правильно понимаю?
С такими вложенными циклами не работал раньше, смотрю.. Мозг не очень чётко понимает данную ситуацию, хотя теоритически я понял всё прекрасно.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.09.2013, 05:09   #1690 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от hoz Посмотреть сообщение
Очень интересно.. Так получается что вложенные циклы перебираются как? Поочерёдно или одновременно? Имею ввиду, в первом цикле берётся значение переменной, дальше сразу на вложенный - берётся значение... и тд? потом происходит выполнение условия?
Или всё-таки, берётся первый индекс в первом цикле, и дальше сразу по второму циклу прогоняется весь просчёт, выполняются условия и.. берётся второй индекс первого цикла, прогоняется второй цикл по переменной полученной с первого цикла и выполняются условия. И тд и тп, я правильно понимаю?
С такими вложенными циклами не работал раньше, смотрю.. Мозг не очень чётко понимает данную ситуацию, хотя теоритически я понял всё прекрасно.
На примере может стать понятнее.
Если в массиве 5 элементов, то перебор пойдет так
Код:
Внешний цикл   Внутренний цикл
0                     1 2 3 4
1                     2 3 4
2                     3 4 
3                     4
4                     -
Внутренний цикл вертится от текущего индекса внешнего цикла (не включая его) до конца массива.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.09.2013, 06:21   #1691 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 828
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 842 раз(а) в 554 сообщениях
Поинты: 1308
Цитата:
Если в массиве 5 элементов, то перебор пойдет так
Код:
Внешний цикл Внутренний цикл
0 1 2 3 4
1 2 3 4
2 3 4
3 4
4 -


Внутренний цикл вертится от текущего индекса внешнего цикла (не включая его) до конца массива.
Т.е. если:
PHP код:
li_IND=2;
for (
li_IND 0li_IND li_sizeli_IND++)
    {... 
то перебор нчнется не с нуля, а с 2?
Ой-ёй-ёй!
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 30.09.2013, 06:49   #1692 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от ansol Посмотреть сообщение
Т.е. если:
PHP код:
li_IND=2;
for (
li_IND 0li_IND li_sizeli_IND++)
    {... 
то перебор нчнется не с нуля, а с 2?
Ой-ёй-ёй!
Что-то я мысль твою не уловил
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.09.2013, 06:52   #1693 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 828
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 842 раз(а) в 554 сообщениях
Поинты: 1308
Цитата:
Что-то я мысль твою не уловил
Внутренний цикл, как, впрочем, и внешний начинается с нуля, как у него в параметрах и записано, без вариантов:
PHP код:
for (li_IND 0
Значит ноль и погнали дальше!
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 30.09.2013, 06:57   #1694 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от ansol Посмотреть сообщение
Внутренний цикл, как, впрочем, и внешний начинается с нуля, как у него в параметрах и записано, без вариантов:
PHP код:
for (li_IND 0
Значит ноль и погнали дальше!
Издеваешься?

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

Код:
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  UNI:   Сортируем индексы массива по убыванию                                     |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fRun_Sort (int& ar_INDEX[],     // массив индексов для сортировки
                double fda_Value[])  // массив значений
{
    int li_IND, li_int, li_tmp, li_size = ArraySize (fda_Value);
//----
    for (li_IND = 0; li_IND < li_size; li_IND++)
    {ar_INDEX[li_IND] = li_IND;}
    for (li_IND = 0; li_IND < li_size; li_IND++)
    {
          for (li_int = li_IND + 1; li_int < li_size; li_int++)
          {
               if (fda_Value[ar_INDEX[li_IND]] < fda_Value[ar_INDEX[li_int]])
               {
                    li_tmp = ar_INDEX[li_int]; 
                    ar_INDEX[li_int] = ar_INDEX[li_IND]; 
                    ar_INDEX[li_IND] = li_tmp;
               }
          }
     }
//----
    return;
}
[свернуть]
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (30.09.2013)
Старый 30.09.2013, 07:00   #1695 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 828
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 842 раз(а) в 554 сообщениях
Поинты: 1308
Хм. Я думал, что вы первые два дурацких цикла обсуждаете, с третьим и так все ясно, я его и не смотрел.
Извиняюсь, что влез, типа "тады ой!"
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 30.09.2013, 08:07   #1696 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от ansol Посмотреть сообщение
Т.е. если:
PHP код:
li_IND=2;
for (
li_IND 0li_IND li_sizeli_IND++)
    {... 
то перебор нчнется не с нуля, а с 2?
Ой-ёй-ёй!

С нуля естественно, цикл то от нуля!
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.09.2013, 08:16   #1697 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от qqmber Посмотреть сообщение
На примере может стать понятнее.
Если в массиве 5 элементов, то перебор пойдет так
Код:
Внешний цикл   Внутренний цикл
0              1 2 3 4
1              2 3 4
2              3 4 
3              4
4              -
Внутренний цикл вертится от текущего индекса внешнего цикла (не включая его) до конца массива.

Интересно 2 последних случая.
1. Внешний цикл на 3 индексе. У внутреннего цикла остался один индекс. Сравнивать уже не с чем, значит ничего не делаем?
2. Внешний цикл на 4 индексе. У внутреннего цикла нечего перебирать. Значит опять ничего не делаем.. Так?
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.09.2013, 08:24   #1698 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 828
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 842 раз(а) в 554 сообщениях
Поинты: 1308
Либо сравнивать есть с чем, либо индекс больше, чем задано и цикл не выполняется, посмотрите - там нет индекса больше, чем размер массива.
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 30.09.2013, 08:36   #1699 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от hoz Посмотреть сообщение
Интересно 2 последних случая.
1. Внешний цикл на 3 индексе. У внутреннего цикла остался один индекс. Сравнивать уже не с чем, значит ничего не делаем?
2. Внешний цикл на 4 индексе. У внутреннего цикла нечего перебирать. Значит опять ничего не делаем.. Так?
1. Сравниваем индекс внешнего цикла (3) с индексом внутреннего (4) и меняем элементы местами, если порядок не тот.
2. Ничего не делаем.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.09.2013, 08:39   #1700 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от ansol Посмотреть сообщение
Либо сравнивать есть с чем, либо индекс больше, чем задано и цикл не выполняется, посмотрите - там нет индекса больше, чем размер массива.

Ну так да, цикл то до сайза массива. Сложновато это чутка воспринять, тем более в том коде, где стиль своеобразный, в плане оформления кода. Но я уже по ходу понял. Ещё немного помудохаюсь, помедетирую на этот код и совсем дойду..
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Ответ

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


Опции темы

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

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



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


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