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

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

Регистрация: 22.04.2010 / Сообщений: 2,039
Поблагодарили 873 раз(а) / Репутация: 859
Нну, типа
PHP код:
double val=iFractals(NULL0MODE_UPPER3); // верхний фрактал
if(val>0продать
val
=iFractals(NULL0MODE_LOWER3); // нижний фрактал
if(val>0купить 

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

Регистрация: 22.04.2010 / Сообщений: 2,039
Поблагодарили 873 раз(а) / Репутация: 859
Фрактал имеет значение High(или Low) на свече, так что можно его запомнить и сравнивать с новым - оно хоть на пипс, но будет отличаться. С открытием новой свечи опять же если и появится фрактал, то все равно другой - текущий у тебя с 3-й свечи "переедет" на четвертую относительно новой
28.09.2013, 18:03
Аватар для gzh
gzh gzh вне форума Интересующийся
Регистрация: 11.12.2012 / Сообщений: 47
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
Спасибо, попробую!
29.09.2013, 07:52
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Господа программисты, помогите пожалуйста с кодом, никак не получается. Я новичок в программировании, только учусь. Хочу написать простой советник по фракталам: появился нижний фрактал - 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); }

А теперь внимательно и по слогам прокомментируйте каждую строку...
29.09.2013, 12:06
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для 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.
29.09.2013, 12:26
Аватар для qqmber
qqmber qqmber вне форума Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Я тут продолжаю капать библиотеки _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.
hoz 
29.09.2013, 21:31
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Здесь происходит сортировка индексов массива по простейшему алгоритму, известному как "пузырьковая сортировка". Я вики переписывать не буду, погугли алгоритмы сортировки, а если ты умеешь делать это еще проще, хвала тебе.

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

Регистрация: 22.04.2010 / Сообщений: 2,039
Поблагодарили 873 раз(а) / Репутация: 859
Цитата:
Если в массиве 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?
Ой-ёй-ёй!
30.09.2013, 06:49
Аватар для qqmber
qqmber qqmber вне форума Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Т.е. если:
PHP код:
li_IND=2;
for (
li_IND 0li_IND li_sizeli_IND++)
    {... 
то перебор нчнется не с нуля, а с 2?
Ой-ёй-ёй!
Что-то я мысль твою не уловил
30.09.2013, 06:52
Аватар для ansol
ansol ansol вне форума Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,039
Поблагодарили 873 раз(а) / Репутация: 859
Цитата:
Что-то я мысль твою не уловил
Внутренний цикл, как, впрочем, и внешний начинается с нуля, как у него в параметрах и записано, без вариантов:
PHP код:
for (li_IND 0
Значит ноль и погнали дальше!
30.09.2013, 06:57
Аватар для qqmber
qqmber qqmber вне форума Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Внутренний цикл, как, впрочем, и внешний начинается с нуля, как у него в параметрах и записано, без вариантов:
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;
}
[свернуть]
30.09.2013, 07:00
Аватар для ansol
ansol ansol вне форума Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,039
Поблагодарили 873 раз(а) / Репутация: 859
Хм. Я думал, что вы первые два дурацких цикла обсуждаете, с третьим и так все ясно, я его и не смотрел.
Извиняюсь, что влез, типа "тады ой!"
30.09.2013, 08:07
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Т.е. если:
PHP код:
li_IND=2;
for (
li_IND 0li_IND li_sizeli_IND++)
    {... 
то перебор нчнется не с нуля, а с 2?
Ой-ёй-ёй!

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

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

Регистрация: 22.04.2010 / Сообщений: 2,039
Поблагодарили 873 раз(а) / Репутация: 859
Либо сравнивать есть с чем, либо индекс больше, чем задано и цикл не выполняется, посмотрите - там нет индекса больше, чем размер массива.
30.09.2013, 08:36
Аватар для qqmber
qqmber qqmber вне форума Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Интересно 2 последних случая.
1. Внешний цикл на 3 индексе. У внутреннего цикла остался один индекс. Сравнивать уже не с чем, значит ничего не делаем?
2. Внешний цикл на 4 индексе. У внутреннего цикла нечего перебирать. Значит опять ничего не делаем.. Так?
1. Сравниваем индекс внешнего цикла (3) с индексом внутреннего (4) и меняем элементы местами, если порядок не тот.
2. Ничего не делаем.
30.09.2013, 08:39
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Либо сравнивать есть с чем, либо индекс больше, чем задано и цикл не выполняется, посмотрите - там нет индекса больше, чем размер массива.

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

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


Опции темы

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

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



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


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