Ответ
 
Опции темы
Старый 19.07.2014, 09:45   #2921 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от Дмитрий 2010 Посмотреть сообщение
Добрый день. Скажите пожалуйста существуел ли функция чтобы присоединяла определённый скрипт при работе советника. Пример if(a+b>5 && Script125==0){Присоединяем скрипт;Script125=1;}.
Не совсем ясно, что вы называете присоединением скрипта. Выполнение внешней программы может быть? С помощью системных вызовов можно устроить, в самом MQL такой функции нет.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 19.07.2014, 16:54   #2922 (permalink)
Интересующийся
 
Аватар для Дмитрий 2010
 
Регистрация: 13.08.2010
Сообщений: 12
Репутация: 2
Дмитрий 2010
Сказал(а) спасибо: 7
Поблагодарили 1 раз в 1 сообщении
Поинты: 18
Я имею в виду что есть скрипт (например Script125) его можно присоединить к графику из нутри советника.
Суть проблемы заключается в том что при разных условиях (событиях) ведётся много разных расчётов с одними и теми-же переменными, много ошибок, для устранения которых приходится писать неимоверное количество условий и пользовательских функций, и хотелось-бы часть таких условий (событий) вынести за пределы советника.
Скажите есть возможность решения выше перечисленных задач при использовании библиотек, и где можно почитать примеры таких реализаций.
Дмитрий 2010 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 19.07.2014, 20:37   #2923 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Включение файлов _http://docs.mql4.com/ru/basis/preprosessor/include
Импорт функций _http://docs.mql4.com/ru/basis/preprosessor/import

Последний раз редактировалось NSerega; 20.07.2014 в 16:29.
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Дмитрий 2010 (19.07.2014)
Старый 20.07.2014, 15:42   #2924 (permalink)
Интересующийся
 
Аватар для Александр_Стручков
 
Регистрация: 14.07.2014
Адрес: Ачинск
Сообщений: 20
Репутация: 2
Александр_Стручков
Сказал(а) спасибо: 10
Поблагодарили 1 раз в 1 сообщении
Поинты: 32
Сообщение от tatianati Посмотреть сообщение
что неправильно?
Tatianati, я в этом деле новичок, и, если сказать проще, не очень понимаю смысл и принцип действия Вашей функции ExistPositions
Если есть необходимость узнать, есть ли открытые ордеры на покупку/продажу, то у Вас для этого всё есть в коде, который в цитируемом сообщении. Логично же, что данные переменные op_b и op_s после прохождения всего цикла будут равняться нулю в случае отсутствия открытых ордеров соответствующего типа. Правда я не знаю, предусмотрено ли у Вас обнуление переменных перед циклом. Если нет обнуления, то это не будет работать как надо. Т.е. они будут постоянно расти в численном значении. Если так задумано, то можно просто добавить еще пару подобных переменных и использовать их по узкому назначению, предусмотрев обнуление перед циклом.

Также нужно вынести функцию изменения отложенных ордеров из цикла. Это тоже избавит от неправильной работы. Вот еще вариант выполнения Ваших условий (без использования ExistPositions ):

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

PHP код:
op_s=0
op_b
=//обнуляем счетчики для того, чтобы после каждого прохождения цикла они содержали актуальные значения. Отмечу, что если у Вас они используются еще как-то, то лучше их заменить на новые переменные.

for(i=OrdersTotal()-1i>=0i--) //проверяем наличие открытых ордеров Sell и Buy
     
{OrderSelect(iSELECT_BY_POSMODE_TRADES);
      if(
OrderSymbol()==Symbol() && OrderMagicNumber()==magic 
        {
//пересчитываем количество ордеров:
         
if(OrderType()==OP_BUY)      {op_b++; }  
         if(
OrderType()==OP_SELL)     {op_s++; }  
         }
     }

// теперь, когда нам уже известно, есть или нет соответствующие ордеры, модифицируем лимитники в случае выполнения условий
for(i=OrdersTotal()-1i>=0i--) //проверяем наличие открытых ордеров Sell и Buy
     
{OrderSelect(iSELECT_BY_POSMODE_TRADES);
      if(
OrderSymbol()==Symbol() && OrderMagicNumber()==magic 
        {
         if(
OrderType()==OP_BUYLIMIT && op_b==0//если выбран BUYLIMIT и нет ордеров Buy
           
{b_lm++; 
            if(
low>0.2 && OrderOpenPrice()!=low) {
               
modify_limit_order(OP_BUYLIMITlow);
               
Sleep(1000*10);
              }
           }
         if(
OrderType()==OP_SELLLIMIT && op_s==0//если выбран SELLLIMIT и нет ордеров Sell
           
{s_lm++; 
            if(
high>0.2 && OrderOpenPrice()!=high) {
               
modify_limit_order(OP_SELLLIMIThigh); 
               
Sleep(1000*10);
              }
           }
        }
     } 
[свернуть]

Исключил из условий функцию ExistPositions. Опять же, если ее смысл только в проверке, то можно исключить ее, сделав проверку по счетчикам. Честно, я уже тоже подзапутался. Не мудрено. Попробуйте так, может получится

Последний раз редактировалось Александр_Стручков; 20.07.2014 в 16:27.
Александр_Стручков вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
tatianati (21.07.2014)
Старый 21.07.2014, 03:40   #2925 (permalink)
Активный участник
 
Аватар для tatianati
 
Регистрация: 10.01.2013
Сообщений: 20
Репутация: 40
tatianati
Сказал(а) спасибо: 12
Поблагодарили 39 раз(а) в 6 сообщениях
Поинты: 24
Сообщение от Александр_Стручков Посмотреть сообщение
Исключил из условий функцию ExistPositions. Опять же, если ее смысл только в проверке, то можно исключить ее, сделав проверку по счетчикам. Честно, я уже тоже подзапутался. Не мудрено. Попробуйте так, может получится
Спасибо, все работает как нужно - Вы здόрово помогли. Отдельное спасибо за подробные комментарии. Вам бы учебники писать, кстати об учебнике не нашла в нём когда нужно использовать функцию проверки существования позиций а в каких случаях можно обойтись проверкой по счётчикам (понимание придёт с опытом). Исключительно академический интерес, если найдёте время, приведите пожалуйста пример, когда использование функции проверки существования позиций не заменить проверкой по счетчикам.

Последний раз редактировалось tatianati; 21.07.2014 в 04:04.
tatianati вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 21.07.2014, 04:17   #2926 (permalink)
Интересующийся
 
Аватар для Александр_Стручков
 
Регистрация: 14.07.2014
Адрес: Ачинск
Сообщений: 20
Репутация: 2
Александр_Стручков
Сказал(а) спасибо: 10
Поблагодарили 1 раз в 1 сообщении
Поинты: 32
Сообщение от tatianati Посмотреть сообщение
Спасибо, все работает как нужно - Вы здόрово помогли.
Спасибо, приятный отзыв Хотя мне самому учебники еще читать и читать..

Если я правильно понял Ваш вопрос, то ответ таков: на мой взгляд, если позиций много, и нужна проверка именно по типам позиций (как в Вашем случае), то лучше использовать счетчики с последующим их сравнением с нулем. Если же открыта одна позиция и нужно работать только с ней (модифицировать, либо закрыть и открыть новую), то, конечно, в счетчиках необходимости нет. Можно сразу назначить проверку ордеру под номером "0" в списке (нумерация ордеров в списке начинается с нуля).

А случай, когда вообще невозможно заменить, даже не соображу.. Думаю, что это вопрос к программистам с более богатым опытом

Последний раз редактировалось Александр_Стручков; 21.07.2014 в 04:28.
Александр_Стручков вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 21.07.2014, 11:57   #2927 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Есть у кого-нть открытая формула ММ от DDSMM?
По сети гулял эксель, теперь найти не могу.
А может и уже в коде есть?
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 21.07.2014, 14:50   #2928 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Вопрос снят - нашел.
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 22.07.2014, 17:55   #2929 (permalink)
 
Аватар для ksardas
 
Регистрация: 20.10.2013
Адрес: Лас-Пальмас-де-Гран-Канария
Сообщений: 701
Репутация: 2595
ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas
Сказал(а) спасибо: 680
Поблагодарили 2,598 раз(а) в 582 сообщениях
Поинты: 475
Нужна помощь!
Подсмотрел функцию закрытия ордеров не дающих прибыли за период, но работает криво- нужно закрывать в плюс ""double pip""", но когда в плюс, когда в минус, что тут не так????
PHP код:
     total=OrdersTotal();
     for ( 
int a=0;a<totala++)      
     {                                
          if((
OrderSelect(a,SELECT_BY_POS)==true) && ((TimeCurrent()-OrderOpenTime())>Timeclose*60)&&
                  
OrderMagicNumber()==Magic)
                   {  
          if((
OrderType()==OP_SELL )&&((OrderOpenPrice()-iClose(NULL,PERIOD_M5,0))/(10*Point))>=pip)
              {
               if(
OrderClose(OrderTicket(),OrderLots(),Ask,10,Blue)) Print ("Завис Sell");
              }
          if((
OrderType()==OP_BUY )&&((iClose(NULL,PERIOD_M5,0)-OrderOpenPrice())/(10*Point))>=pip)
                {
                if(
OrderClose(OrderTicket(),OrderLots(),Ask,10,Blue))Print ("Завис Buy");
                }
         } 

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ты не старайся, и у тебя всё получится.
ksardas на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 22.07.2014, 18:25   #2930 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Сообщение от ksardas Посмотреть сообщение
Нужна помощь!
Подсмотрел функцию закрытия ордеров не дающих прибыли за период, но работает криво- нужно закрывать в плюс ""double pip""", но когда в плюс, когда в минус, что тут не так????
PHP код:
     total=OrdersTotal();
     for ( 
int a=0;a<totala++)      
     {                                
          if((
OrderSelect(a,SELECT_BY_POS)==true) && ((TimeCurrent()-OrderOpenTime())>Timeclose*60)&&
                  
OrderMagicNumber()==Magic)
                   {  
          if((
OrderType()==OP_SELL )&&((OrderOpenPrice()-iClose(NULL,PERIOD_M5,0))/(10*Point))>=pip)
              {
               if(
OrderClose(OrderTicket(),OrderLots(),Ask,10,Blue)) Print ("Завис Sell");
              }
          if((
OrderType()==OP_BUY )&&((iClose(NULL,PERIOD_M5,0)-OrderOpenPrice())/(10*Point))>=pip)
                {
                if(
OrderClose(OrderTicket(),OrderLots(),Ask,10,Blue))Print ("Завис Buy");
                }
         } 
Наверное комиссия есть, а ты её не учитываешь. И возможно своп, если получается закрытие после 00:00
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
ksardas (22.07.2014)
Старый 22.07.2014, 18:33   #2931 (permalink)
 
Аватар для ksardas
 
Регистрация: 20.10.2013
Адрес: Лас-Пальмас-де-Гран-Канария
Сообщений: 701
Репутация: 2595
ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas
Сказал(а) спасибо: 680
Поблагодарили 2,598 раз(а) в 582 сообщениях
Поинты: 475
Сообщение от AlexeyVik Посмотреть сообщение
Наверное комиссия есть, а ты её не учитываешь. И возможно своп, если получается закрытие после 00:00
Спасибо! А выражение
PHP код:
(iClose(NULL,PERIOD_M5,0)-OrderOpenPrice())/(10*Point
какого типа -double, я корректно сравниваю?

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ты не старайся, и у тебя всё получится.
ksardas на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 22.07.2014, 19:08   #2932 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Сообщение от ksardas Посмотреть сообщение
Спасибо! А выражение
PHP код:
(iClose(NULL,PERIOD_M5,0)-OrderOpenPrice())/(10*Point
какого типа -double, я корректно сравниваю?
Закрытие нулевого бара это текущий Bid. И надо-ли так извращаться, проще использовать Bid. А так, в принципе нормально.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
ksardas (22.07.2014), Александр_Стручков (24.07.2014)
Старый 26.07.2014, 07:04   #2933 (permalink)
Прохожий
 
Аватар для commready
 
Регистрация: 13.02.2014
Сообщений: 2
Репутация: 1
commready
Сказал(а) спасибо: 77
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 2
Прошу помощи!
Gi_436 = ; открывает ордер один раз.

Нужно чтобы открывал ордер раза два к примеру.

Расчет f0_15(1, 2, 3) здесь

int f0_15(int Ai_0, int Ai_4, int Ai_8)
{
int Li_12;

int str2time_24;

if (Ai_0 + Ai_8 >= 24) Li_12 = Ai_0 + Ai_8 - 24;
else {
if (Ai_0 + Ai_8 < 0) Li_12 = Ai_0 + 24 + Ai_8;
else Li_12 = Ai_0 + Ai_8;
}
string str_concat_16 = StringConcatenate(Li_12, ":", Ai_4);
str2time_24 = StrToTime(str_concat_16);
return (str2time_24);
commready вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 26.07.2014, 15:01   #2934 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,251
Репутация: 1961
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 347
Поблагодарили 1,890 раз(а) в 1,067 сообщениях
Поинты: 1268
Отправить сообщение для Ugar с помощью ICQ
Сообщение от commready Посмотреть сообщение
Прошу помощи!
Gi_436 = ; открывает ордер один раз.
Это переменная, она не открывает ордера, ей всего лишь присваивается значение.
Сообщение от commready Посмотреть сообщение
Нужно чтобы открывал ордер раза два к примеру.

Расчет f0_15(1, 2, 3) здесь

int f0_15(int Ai_0, int Ai_4, int Ai_8)
{
int Li_12;

int str2time_24;

if (Ai_0 + Ai_8 >= 24) Li_12 = Ai_0 + Ai_8 - 24;
else {
if (Ai_0 + Ai_8 < 0) Li_12 = Ai_0 + 24 + Ai_8;
else Li_12 = Ai_0 + Ai_8;
}
string str_concat_16 = StringConcatenate(Li_12, ":", Ai_4);
str2time_24 = StrToTime(str_concat_16);
return (str2time_24);
В этой функции, возможно, осуществляется сдвиг времени. Ордера она не открывает и даже не считает их.

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

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
3 пользователя(ей) сказали cпасибо:
commready (29.07.2014), Dobryj (27.07.2014), ksardas (27.07.2014)
Старый 27.07.2014, 18:54   #2935 (permalink)
 
Аватар для mobidik
 
Регистрация: 09.08.2012
Адрес: Ua_Khm
Сообщений: 1,647
Репутация: 8540
mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik
Сказал(а) спасибо: 633
Поблагодарили 8,536 раз(а) в 1,561 сообщениях
Поинты: 800
Подскажите.

Вот, что бы удалить объект с графика, есть ф-ция: ObjectDelete(), а как удалить Comment(), кроме как задать удаление в int deinit() ?
mobidik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 27.07.2014, 19:19   #2936 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 825
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 839 раз(а) в 553 сообщениях
Поинты: 1308
Сообщение от mobidik Посмотреть сообщение
Подскажите.

Вот, что бы удалить объект с графика, есть ф-ция: ObjectDelete(), а как удалить Comment(), кроме как задать удаление в int deinit() ?
Написать
PHP код:
Comment(""); 
в любом месте(где и когда нужно) и все
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
ksardas (27.07.2014), mobidik (27.07.2014)
Старый 27.07.2014, 19:20   #2937 (permalink)
 
Аватар для ksardas
 
Регистрация: 20.10.2013
Адрес: Лас-Пальмас-де-Гран-Канария
Сообщений: 701
Репутация: 2595
ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas
Сказал(а) спасибо: 680
Поблагодарили 2,598 раз(а) в 582 сообщениях
Поинты: 475
Сообщение от mobidik Посмотреть сообщение
Подскажите.

Вот, что бы удалить объект с графика, есть ф-ция: ObjectDelete(), а как удалить Comment(), кроме как задать удаление в int deinit() ?
Если просто отключать? присвоить условию флаг false
PHP код:
if(coment==false)
comment(........); 
ansol а..так-
PHP код:
if (TimeCurrent() > StrToTime(Gs_260) + 86400 Gi_268) {
             
Comment("Your version is expired!");
              return (
0);
      } 

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ты не старайся, и у тебя всё получится.

Последний раз редактировалось ksardas; 27.07.2014 в 19:25.
ksardas на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
mobidik (27.07.2014)
Старый 27.07.2014, 19:23   #2938 (permalink)
 
Аватар для mobidik
 
Регистрация: 09.08.2012
Адрес: Ua_Khm
Сообщений: 1,647
Репутация: 8540
mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik
Сказал(а) спасибо: 633
Поблагодарили 8,536 раз(а) в 1,561 сообщениях
Поинты: 800
ansol, ksardas благодарю, так и знал, что ларчик просто открывается ):
mobidik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 28.07.2014, 20:12   #2939 (permalink)
 
Аватар для ksardas
 
Регистрация: 20.10.2013
Адрес: Лас-Пальмас-де-Гран-Канария
Сообщений: 701
Репутация: 2595
ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas ksardas
Сказал(а) спасибо: 680
Поблагодарили 2,598 раз(а) в 582 сообщениях
Поинты: 475
Люди добрые -помогите с индюком!
Цель -точки над баром при свечной комбинации
Результат - точки над каждым баром((
Чего не хватает?? В смысле нужно

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

PHP код:
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Aqua
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_color4 Orange
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1
#property indicator_width4 1
 

double CUp[];
double CDown[];
bool  Up false;
bool  Down false;

int SignalLabeled 0




//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
  
   
SetIndexStyle(2DRAW_ARROW);
   
SetIndexArrow(2159);
   
SetIndexBuffer(2CUp);
   
SetIndexStyle(3DRAW_ARROW);
   
SetIndexArrow(3159);
   
SetIndexBuffer(3CDown);
//----
   
return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 

//----
   
return(0);
  }
  
  
  
  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
   
int limiti;

   
   

   
int counted_bars=IndicatorCounted();

   if(
counted_bars<0) return(-1);

   if(
counted_bars>0counted_bars--;

   
limit=Bars-counted_bars;
   
   for(
0<= limiti++) {
   
     
  

  if (
iLow(NULL02) < iLow(NULL03) && iLow(NULL01) < iLow(NULL02) && iLow(NULL01) < iLow(NULL00) && iLow(NULL03) < Ask && iHigh(NULL0,
      
3) > Ask)Up true;
  if((
SignalLabeled != 1)&&(Up true))
      {
      
CUp[i]=Low[i] - 50*Point;
       
SignalLabeled 1;
  }
  
 
  if (
iHigh(NULL02) > iHigh(NULL03) && iHigh(NULL01) > iHigh(NULL02) && iHigh(NULL01) > iHigh(NULL00) && iHigh(NULL03) > Bid && iLow(NULL,
      
03) < BidDown true;
   if((
SignalLabeled != 2)&&(Down true))
     {
      
CDown[i]= High[i] + 50*Point;
      
SignalLabeled 2;
  }
  
  }
  
 
  return(
0);
  
  } 
[свернуть]

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ты не старайся, и у тебя всё получится.
ksardas на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 28.07.2014, 21:16   #2940 (permalink)
 
Аватар для mobidik
 
Регистрация: 09.08.2012
Адрес: Ua_Khm
Сообщений: 1,647
Репутация: 8540
mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik
Сказал(а) спасибо: 633
Поблагодарили 8,536 раз(а) в 1,561 сообщениях
Поинты: 800
Сообщение от ksardas Посмотреть сообщение
Люди добрые -помогите с индюком!
Цель -точки над баром при свечной комбинации
Результат - точки над каждым баром((
Чего не хватает?? В смысле нужно

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

PHP код:
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Aqua
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_color4 Orange
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1
#property indicator_width4 1
 

double CUp[];
double CDown[];
bool  Up false;
bool  Down false;

int SignalLabeled 0




//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
  
   
SetIndexStyle(2DRAW_ARROW);
   
SetIndexArrow(2159);
   
SetIndexBuffer(2CUp);
   
SetIndexStyle(3DRAW_ARROW);
   
SetIndexArrow(3159);
   
SetIndexBuffer(3CDown);
//----
   
return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 

//----
   
return(0);
  }
  
  
  
  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
   
int limiti;

   
   

   
int counted_bars=IndicatorCounted();

   if(
counted_bars<0) return(-1);

   if(
counted_bars>0counted_bars--;

   
limit=Bars-counted_bars;
   
   for(
0<= limiti++) {
   
     
  

  if (
iLow(NULL02) < iLow(NULL03) && iLow(NULL01) < iLow(NULL02) && iLow(NULL01) < iLow(NULL00) && iLow(NULL03) < Ask && iHigh(NULL0,
      
3) > Ask)Up true;
  if((
SignalLabeled != 1)&&(Up true))
      {
      
CUp[i]=Low[i] - 50*Point;
       
SignalLabeled 1;
  }
  
 
  if (
iHigh(NULL02) > iHigh(NULL03) && iHigh(NULL01) > iHigh(NULL02) && iHigh(NULL01) > iHigh(NULL00) && iHigh(NULL03) > Bid && iLow(NULL,
      
03) < BidDown true;
   if((
SignalLabeled != 2)&&(Down true))
     {
      
CDown[i]= High[i] + 50*Point;
      
SignalLabeled 2;
  }
  
  }
  
 
  return(
0);
  
  } 
[свернуть]

С условиями нужно еще разбираться, для наглядной работы я его сократил.
А так, есть не точности:
PHP код:
 if (условиеUp true
а если оно не выполняется, тогда чему равно Up? Правильно будет:
PHP код:
if (условие)  Up true;  else Up false
И проверка на истину для Up:
PHP код:
if((SignalLabeled != 1)&&(Up true)) 
заменить на:
PHP код:
 if((SignalLabeled != 1)&&(Up == true)) 
И что бы видеть историю, заменить бары 0,1,2,3 на i, i+1, i+2 ,i+3.
Сам файл ниже.
Вложения:
Тип файла: mq4 ksardas.mq4 (2.6 Кб, 9 просмотров)
mobidik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
ksardas (29.07.2014)
Ответ

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


Опции темы

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

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



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


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