Ответ
 
Опции темы
Старый 30.12.2014, 16:00   #3361 (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
Сообщение от Alexz2107 Посмотреть сообщение
Поздравляю всех с наступающим НГ! Подскажите, пожалуйста, ответ на глупый вопрос! В моей системе используются некоторые компоненты сторонних разработчиков и во многих местах в них используется return (0); вместо простого return; хотя тип этих скриптов void и по факту в работе никакие данные они не возвращают, просто выполняют действия. И вот в чем вопрос - это сделано вследствие неграмотности или есть какие-то подводные камни в языке, из-за чего и используется некорректный возврат?
Старайтесь побыстрей перейти на формат нового mql4 и используйте #property strict
Тогда все такие неправильные моменты будут показываться в виде предупреждений.
А ответить на вопрос, мне кажется, даже сам написатель не сможет... Никаких камней быть не может. В функциях типа void оператор return выполняет закрывающая фигурная скобка. Либо используется return без параметров для преждевременного выхода из функции.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Alexz2107 (30.12.2014)
Старый 30.12.2014, 16:07   #3362 (permalink)
Интересующийся
 
Аватар для Alexz2107
 
Регистрация: 05.05.2011
Сообщений: 16
Репутация: 2
Alexz2107
Сказал(а) спасибо: 10
Поблагодарили 1 раз в 1 сообщении
Поинты: 20
Сообщение от AlexeyVik Посмотреть сообщение
Старайтесь побыстрей перейти на формат нового mql4 и используйте #property strict
Тогда все такие неправильные моменты будут показываться в виде предупреждений.
А ответить на вопрос, мне кажется, даже сам написатель не сможет... Никаких камней быть не может. В функциях типа void оператор return выполняет закрывающая фигурная скобка. Либо используется return без параметров для преждевременного выхода из функции.
Вот у меня и показывает в виде предупреждений, хочется сократить их количество. Что никаких камней - это радует!
Alexz2107 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.12.2014, 17:37   #3363 (permalink)
Активный участник
 
Аватар для Yura Vakulenko
 
Регистрация: 04.12.2013
Адрес: Швейцария, Cham
Сообщений: 129
Репутация: 77
Yura Vakulenko
Сказал(а) спасибо: 62
Поблагодарили 76 раз(а) в 39 сообщениях
Поинты: 172
Сообщение от matro3 Посмотреть сообщение

Вобще-то не понятно, зачем засекать время, если оно здесь ни к чему.
У Вас закрытия по сигналу, а не по времени. Если я все верно понял.

Кроме того Ваш код не удобно читать ))

Вот кусок Вашего кода:
Понимаю так: Сигнал в BUY
если не включен реверс - покупаем
если включен - продаем
Но сигнал-то BUY. Не совсем понял эту конструкцию.

Еще у Вас две переменные, по сути означающие одно и то же: mode_reverse и Close_on_Oposite.
Если включен реверс, то позицию надо закрывать без необходимости проверки Close_on_Oposite.
Ваша стратегия, как я понял, не позволяет держать больше одной позиции, а это значит что одну из этих переменных надо удалить за ненадобностью.
Значит, если реверс выключен, то продолжаем держать позицию и игнорируем все сигналы в противоход.
Резюме: Close_on_Oposite - удаляем.

Далее. Не плохо бы привести код в примерно такой вид:

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

Код:
//--- Торговые константы
#define        ENTER_NONE              0
#define        ENTER_SELL_BIG          1
#define        ENTER_BUY_BIG           2
#define        ENTER_SELL_SMALL        3
#define        ENTER_BUY_SMALL         4

#define        POS_SELL                5
#define        POS_BUY                 6

#define        PART                    6
#define        ALL                     6

void OnTick()
  {
//---
   // Ищем сигнал для входа
   int nResult = SearchEnter();
   // Если позиции нет
   if(!pos.exist)
      // Если есть сигнал - отправляем его в блок торговых сделок
      if(nResult != ENTER_NONE) TradingBlock(nResult);
   // Если позиция есть
   else
   {
      // Позиция BUY
      if(pos.type == POS_BUY)
      {
         // Закрыть полностью
         if(nResult == ENTER_SELL_BIG) ClosePos(ALL);
         // Закрыть часть
         if(nResult == ENTER_SELL_SMALL) ClosePos(PART);
      }
      // Позиция SELL
      if(pos.type == POS_SELL)
      {
         // Закрыть полностью
         if(nResult == ENTER_BUY_BIG) ClosePos(ALL);
         // Закрыть часть
         if(nResult == ENTER_BUY_SMALL) ClosePos(PART);
      }
   }
   
  }
//+------------------------------------------------------------------+
int SearchEnter()
{
   int nResult = ENTER_NONE;
   
   return(nResult);
}
[свернуть]

Проще вникать в него другим и самому приятней ))
Хотя это дело вкуса.
Спасибо за подсказки! Дело в том, что мне нужно чтобы советник ТОРГОВАЛ ТОЛЬКО ПО ОТКРЫТИЮ БАРА, а не на каждом тике! а стрелка на сигнал может появится и на 0 баре! но мне нужно чтобы сделка совершалась только после закрытия сигнального бара по цене открытия след. бара. Поэтому там указано явное условие торговли по открытию бара.

Это на данном этапе в рынке не больше одной позиции. А будет еще и усреднение и вывод в БУ. поэтому, там нужны 2 переменные.

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

Я сейчас пересмотрю код в соотв. с вашими рекомендациями.

Цитата:
И ещё я не знаю как привязывается продукт из маркета. Может к терминалу?
Они привязываются к Имени пользователя в сообществе МКЛ5 и к конкретному ПК (на котором можно устанавливать продукт в разные терминалы разных брокеров.) Т.е на другом ПК - этот индикатор не запустится, если его не актививровать на этом ПК. А для активации на другом ПК - нужны мой логин и пароль от сообщества МКЛ5 и кол-во свободных активаций (при покупке дается 5 активаций. У меня не осталось ни одной.) Поэтому я и говорю, что не могу вам дать инди, так как у вас он не запустится. А триальной версии там нету. В противном случае я бы давно все скинул! Это не секрет. Речь об этом продукте.. _https://www.mql5.com/ru/market/product/3892

Я начну с начала) Спасибо!

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Музыка веков в звуках рояля - https://soundcloud.com/yura-vakulenko

Последний раз редактировалось Yura Vakulenko; 30.12.2014 в 17:42.
Yura Vakulenko вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.12.2014, 18:40   #3364 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Если стрелка появилась на нулевом баре, что ей мешает остаться на первом?
Или она пропадает?
Снять значения индикатора можно с любого бара, где он рисуется.

Close_on_Oposite имеет говорящее название.
И, если это может быть сигнал на закрытие от другого индикатора, а не сигнал на разворот от того же индикатора, то зачем проверять его в сигналах на покупку?
Это ведь сигнал на закрытие?
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.12.2014, 19:17   #3365 (permalink)
Активный участник
 
Аватар для Yura Vakulenko
 
Регистрация: 04.12.2013
Адрес: Швейцария, Cham
Сообщений: 129
Репутация: 77
Yura Vakulenko
Сказал(а) спасибо: 62
Поблагодарили 76 раз(а) в 39 сообщениях
Поинты: 172
Сообщение от matro3 Посмотреть сообщение
Если стрелка появилась на нулевом баре, что ей мешает остаться на первом?
Или она пропадает?
Снять значения индикатора можно с любого бара, где он рисуется.

Close_on_Oposite имеет говорящее название.
И, если это может быть сигнал на закрытие от другого индикатора, а не сигнал на разворот от того же индикатора, то зачем проверять его в сигналах на покупку?
Это ведь сигнал на закрытие?
Стрелка, которая может появится на 0 баре - на 0 баре так может и пропасть. а с первого бара она уже никогда и никуда не пропадет) Большие стрелки - это сигналы на открытие (Закрытие) по этому индикатору. Close_on_Oposite - это сигнал на закрытие от этого индикатора. Т.е. появление против. напралению позиции стрелки))
а проверять это нужно в сигналах на закрытие-открытие.. потому как я не знаю, с какого сигнала советник начнет открыать сделки после установки на график (С продаж илди с покупок. поэтому там и провереться..)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Музыка веков в звуках рояля - https://soundcloud.com/yura-vakulenko

Последний раз редактировалось Yura Vakulenko; 30.12.2014 в 19:19.
Yura Vakulenko вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 31.12.2014, 03:15   #3366 (permalink)
Активный участник
 
Аватар для Yura Vakulenko
 
Регистрация: 04.12.2013
Адрес: Швейцария, Cham
Сообщений: 129
Репутация: 77
Yura Vakulenko
Сказал(а) спасибо: 62
Поблагодарили 76 раз(а) в 39 сообщениях
Поинты: 172
Для меня вникато в предложенный вами вариант кода совсем не просто! я вообще не понимаю, что это вы мне там написали! Это совсем другой сиснтаксис в 300 раз сложнее, чем мой! что это за блоки #define ? почему там цифры? там еще для всех операций нужно писать свои функции. я же говрю, я еще не настолько мега крутой программер, чтобы все в функции от функций запихивать..

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

//--- Торговые константы
#define ENTER_NONE 0
#define ENTER_SELL_BIG 1
#define ENTER_BUY_BIG 2
#define ENTER_SELL_SMALL 3
#define ENTER_BUY_SMALL 4

#define POS_SELL 5
#define POS_BUY 6

#define PART 6
#define ALL 6

void OnTick()
{
//---
// Ищем сигнал для входа
int nResult = SearchEnter();
// Если позиции нет
if(!pos.exist)
// Если есть сигнал - отправляем его в блок торговых сделок
if(nResult != ENTER_NONE) TradingBlock(nResult);
// Если позиция есть
else
{
// Позиция BUY
if(pos.type == POS_BUY)
{
// Закрыть полностью
if(nResult == ENTER_SELL_BIG) ClosePos(ALL);
// Закрыть часть
if(nResult == ENTER_SELL_SMALL) ClosePos(PART);
}
// Позиция SELL
if(pos.type == POS_SELL)
{
// Закрыть полностью
if(nResult == ENTER_BUY_BIG) ClosePos(ALL);
// Закрыть часть
if(nResult == ENTER_BUY_SMALL) ClosePos(PART);
}
}

}
//+------------------------------------------------------------------+
int SearchEnter()
{
int nResult = ENTER_NONE;

return(nResult);
}
[свернуть]

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Музыка веков в звуках рояля - https://soundcloud.com/yura-vakulenko
Yura Vakulenko вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 31.12.2014, 07:01   #3367 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,681
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от Yura Vakulenko Посмотреть сообщение
Спасибо за подсказки! Дело в том, что мне нужно чтобы советник ТОРГОВАЛ ТОЛЬКО ПО ОТКРЫТИЮ БАРА, а не на каждом тике! а стрелка на сигнал может появится и на 0 баре! но мне нужно чтобы сделка совершалась только после закрытия сигнального бара по цене открытия след. бара. Поэтому там указано явное условие торговли по открытию бара.

Это на данном этапе в рынке не больше одной позиции. А будет еще и усреднение и вывод в БУ. поэтому, там нужны 2 переменные.

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

Я сейчас пересмотрю код в соотв. с вашими рекомендациями.

Они привязываются к Имени пользователя в сообществе МКЛ5 и к конкретному ПК (на котором можно устанавливать продукт в разные терминалы разных брокеров.) Т.е на другом ПК - этот индикатор не запустится, если его не актививровать на этом ПК. А для активации на другом ПК - нужны мой логин и пароль от сообщества МКЛ5 и кол-во свободных активаций (при покупке дается 5 активаций. У меня не осталось ни одной.) Поэтому я и говорю, что не могу вам дать инди, так как у вас он не запустится. А триальной версии там нету. В противном случае я бы давно все скинул! Это не секрет. Речь об этом продукте.. _https://www.mql5.com/ru/market/product/3892

Я начну с начала) Спасибо!
Глянь мой шаблон.
Вложения:
Тип файла: mq4 Shabl.mq4 (17.3 Кб, 12 просмотров)
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Yura Vakulenko (01.01.2015)
Старый 31.12.2014, 07:17   #3368 (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
Сообщение от Yura Vakulenko Посмотреть сообщение
Они привязываются к Имени пользователя в сообществе МКЛ5 и к конкретному ПК (на котором можно устанавливать продукт в разные терминалы разных брокеров.) Т.е на другом ПК - этот индикатор не запустится, если его не актививровать на этом ПК. А для активации на другом ПК - нужны мой логин и пароль от сообщества МКЛ5 и кол-во свободных активаций (при покупке дается 5 активаций. У меня не осталось ни одной.) Поэтому я и говорю, что не могу вам дать инди, так как у вас он не запустится. А триальной версии там нету. В противном случае я бы давно все скинул! Это не секрет. Речь об этом продукте.. _https://www.mql5.com/ru/market/product/3892

Я начну с начала) Спасибо!
Ну вот и встало всё на свои места...
И не жалко было платить за то что лежит совсем бесплатно???
Миниатюры:
Нажмите на изображение для увеличения
Название: traderdream-evolution-screen-5774[1].png
Просмотров: 36
Размер:	15.0 Кб
ID:	190082   Нажмите на изображение для увеличения
Название: 00.png
Просмотров: 25
Размер:	32.0 Кб
ID:	190087  
Вложения:
Тип файла: mq4 HalfTrend 1.01.mq4 (4.6 Кб, 27 просмотров)

Последний раз редактировалось AlexeyVik; 31.12.2014 в 07:22.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
Ladzius (31.12.2014), Yura Vakulenko (01.01.2015)
Старый 31.12.2014, 17:41   #3369 (permalink)
Активный участник
 
Аватар для Yura Vakulenko
 
Регистрация: 04.12.2013
Адрес: Швейцария, Cham
Сообщений: 129
Репутация: 77
Yura Vakulenko
Сказал(а) спасибо: 62
Поблагодарили 76 раз(а) в 39 сообщениях
Поинты: 172
Сообщение от AlexeyVik Посмотреть сообщение
Ну вот и встало всё на свои места...
И не жалко было платить за то что лежит совсем бесплатно???
Вот, Блин! вот это да!! и что, давно он в бесплатном доступе есть? блин.. а я не знал даже.. конечно, жалко! Огромное вам спасибо! да уж.. а есть где-то здесь на форуме тема, где именно можно разыскать то, что продается в маркете? может быть уже есть бесплатные варианты, чтобы не платить деньги и чтобы не вышло, как в этотр раз?

Сообщение от eevviill
Глянь мой шаблон.
Спасибо большое, сейчас гляну!

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Музыка веков в звуках рояля - https://soundcloud.com/yura-vakulenko
Yura Vakulenko вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 31.12.2014, 17:51   #3370 (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
Сообщение от Yura Vakulenko Посмотреть сообщение
Вот, Блин! вот это да!! и что, давно он в бесплатном доступе есть? блин.. а я не знал даже.. конечно, жалко! Огромное вам спасибо! да уж.. а есть где-то здесь на форуме тема, где именно можно разыскать то, что продается в маркете? может быть уже есть бесплатные варианты, чтобы не платить деньги и чтобы не вышло, как в этотр раз?
Всё гораздо проще. Прежде чем купить надо читать отзывы и обсуждение на странице продажи продукта. Там и сказано что этот дрем тренд поразительно похож на ози и попользовавшись поисковиком, я предпочитаю яндекс, находишь то что уже давно лежит в свободном доступе.
Дай тебе Бог не попадать в сети таких барыг в новом году.

А вот такую тему, с разоблачением таких торговцев надо будет завести в новом году. А сейчас пойду уже водку пьянствовать...

Последний раз редактировалось AlexeyVik; 31.12.2014 в 17:55.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Yura Vakulenko (01.01.2015)
Старый 01.01.2015, 01:19   #3371 (permalink)
Активный участник
 
Аватар для Yura Vakulenko
 
Регистрация: 04.12.2013
Адрес: Швейцария, Cham
Сообщений: 129
Репутация: 77
Yura Vakulenko
Сказал(а) спасибо: 62
Поблагодарили 76 раз(а) в 39 сообщениях
Поинты: 172
Сообщение от AlexeyVik Посмотреть сообщение
Ну вот и встало всё на свои места...
И не жалко было платить за то что лежит совсем бесплатно???
Спасибо большое!! НО! Я вот не могу понять! ... дело в том, что сигналы этот индикатор дает точно такие же как и тот, который я купил в маркете! Они одинаковы! НО!! почему в тестере стратегий.. тестирование с индикатором из маркета "по открытым барам" занимает 2-3 минуты за 2 года (2013-2015), а с индикатором, который вы мне скинули, где исходный код есть - аналогичное тестирование с одинаковыми параметрами и "по открытым барам" за те же 2 года занимает около 40 минут!! Еле ползет график!! Я уже все перепробовал! Почему так? Почему тест такой медленный?

и, кстати, к расчетех эти индикатора все-таки отлилаются.. так как в том, что в маркете - стрелки рисуются только на барах, гже совпадают значения буфера на покупку и продажу.. а у этого, с открытым кодом - стредлки рисуются на след баре после совпадения значений буферов.. но стрелки рисуются на одинаковых местах для обеих индикаторов..

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Музыка веков в звуках рояля - https://soundcloud.com/yura-vakulenko
Yura Vakulenko вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 01.01.2015, 11:02   #3372 (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
Сообщение от Yura Vakulenko Посмотреть сообщение
...и, кстати, к расчетех эти индикатора все-таки отлилаются.. так как в том, что в маркете - стрелки рисуются только на барах, гже совпадают значения буфера на покупку и продажу.. а у этого, с открытым кодом - стредлки рисуются на след баре после совпадения значений буферов.. но стрелки рисуются на одинаковых местах для обеих индикаторов..
Так ведь сам писал:

Сообщение от Yura Vakulenko Посмотреть сообщение
Стрелка, которая может появится на 0 баре - на 0 баре так может и пропасть. а с первого бара она уже никогда и никуда не пропадет...
Так в том варианте, что не с маркета, стрелка появляется на закрытом баре. Вот тебе еще один вариант Ози с возможностью выбора сигнального бара и выведенными настройками, но без стрелок:
Вложения:
Тип файла: mq4 Ozymandias„(F).mq4 (2.9 Кб, 20 просмотров)
mobidik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (02.01.2015), Yura Vakulenko (01.01.2015)
Старый 01.01.2015, 21:25   #3373 (permalink)
Активный участник
 
Аватар для Yura Vakulenko
 
Регистрация: 04.12.2013
Адрес: Швейцария, Cham
Сообщений: 129
Репутация: 77
Yura Vakulenko
Сказал(а) спасибо: 62
Поблагодарили 76 раз(а) в 39 сообщениях
Поинты: 172
Сообщение от mobidik Посмотреть сообщение
Тк ведь сам писал:
Так в том варианте, что не с маркета, стрелка появляется на закрытом баре. Вот тебе еще один вариант Ози с возможностью выбора сигнального бара и выведенными настройками, но без стрелок:
Огромное спасибо! Ваш исходник ведет себя гораздо лучше, чем тот, который выложили на пост выше! В тестере стратегий тест по этому исходному коду проходит так же быстро (По открытию бара), как и по моему платному индикатору из маркета! Я прикрутил к индикатору стрелки, так, что , если кому нужно - скачайте со стрелками)

И у меня еще один вопрос! Как мне рисовать на графике максимальную просадку по Средствам (в пунктах) для каждого из открытих рыночныых ордеров? я в рисунке привел пример (ТОлстая голубая трендовая линия, которой обозначил максим. просадку и где она должна рисоваться.. )

и на графике так же нужно вывести текстовые сообщения с максимальной и минимальной и средней просадкой по средствам за весь период торговли (С начала открытие первого ордера)
Миниатюры:
Нажмите на изображение для увеличения
Название: EURUSDproM30_ddn.png
Просмотров: 32
Размер:	97.4 Кб
ID:	190179  
Вложения:
Тип файла: mq4 Ozymandias„(F).mq4 (3.4 Кб, 15 просмотров)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Музыка веков в звуках рояля - https://soundcloud.com/yura-vakulenko
Yura Vakulenko вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Vladimir1 (02.01.2015)
Старый 02.01.2015, 01:29   #3374 (permalink)
Активный участник
 
Аватар для Yura Vakulenko
 
Регистрация: 04.12.2013
Адрес: Швейцария, Cham
Сообщений: 129
Репутация: 77
Yura Vakulenko
Сказал(а) спасибо: 62
Поблагодарили 76 раз(а) в 39 сообщениях
Поинты: 172
Думаю, здесь скоро прописку получу))

Настучал я вот функцию для рисования, как я предполагал максимальной просадки для ордеров.. а она что-то не то рисует.. не могу понять, в чем причина) Смотрите на картинке, что нарисовала)

вот код...

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

КОД АПОКАЛЛИПСИСА


//+------------------------------------------------------------------+
bool CreateTLine(string NAME,color col,datetime time1,double price1,datetime time2,double price2,bool ray=true,int window=0,int width=2)
{
string name=prefix+NAME;
if(ObjectFind(name)!=window)
ObjectCreate(name,OBJ_TREND,window,time1,price1,time2,price2);

ObjectSet(name,OBJPROP_WIDTH,width);
ObjectSet(name,OBJPROP_COLOR,col);
ObjectSet(name,OBJPROP_STYLE,STYLE_SOLID);
ObjectSet(name,OBJPROP_TIME1,time1);
ObjectSet(name,OBJPROP_TIME2,time2);
ObjectSet(name,OBJPROP_PRICE1,price1);
ObjectSet(name,OBJPROP_PRICE2,price2);
ObjectSet(name,OBJPROP_RAY,ray);

if(ObjectFind(name)==window)return(true);
return(false);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Draw Closed Orders |
//+------------------------------------------------------------------+
void DrawMaxDrawdown()
{
int history=OrdersHistoryTotal();
if(Draw_Drawdown_for_Closed_Orders && history!=OrdersHistory)
{
for(int i=history-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()<=OP_SELL)
{
if(OrderType()==OP_BUY)
{
int orderBuyCandles = ( (OrderCloseTime() - OrderOpenTime())/60 )/Period();
double LowestCandle = NormalizeDouble( iLow(NULL,0,iLowest(NULL,0,MODE_LOW,orderBuyCandles,orderBuyCandles) ), Digits);
Print ("(",OrderCloseTime() - OrderOpenTime(),"), Order #",OrderTicket()," (",OrderType(),"), OTime: ",TimeToString (OrderOpenTime(),TIME_DATE|TIME_MINUTES),", Buy Candles: ",orderBuyCandles, ", Lowest Candle: ",LowestCandle,", Lowest Candle Time: ", TimeToString(iTime(NULL,0,iLowest(NULL,0,MODE_LOW,orderBuyCandles,orderBuyCandles)),TIME_DATE|TIME_MINUTES
) );
CreateTLine(OrderTicket(),Aqua,OrderOpenTime(),OrderOpenPrice(),iTime(NULL,0,iLowest(NULL,0,MODE_LOW,orderBuyCandles,orderBuyCandles)),LowestCandle,false);
}
if(OrderType()==OP_SELL)
{
int orderSellCandles = ( (OrderCloseTime() - OrderOpenTime())/60 )/Period();
double HighestCandle = NormalizeDouble( iHigh(NULL,0,iHighest(NULL,0,MODE_HIGH,orderSellCandles,orderSellCandles) ), Digits);
Print ("(",OrderCloseTime() - OrderOpenTime(),"), Order #",OrderTicket()," (",OrderType(),"), OTime: ",TimeToString (OrderOpenTime(),TIME_DATE|TIME_MINUTES),", Sell Candles: ",orderSellCandles, ", Highest Candle: ",HighestCandle,", Highest Candle Time: ", TimeToString ( iTime(NULL,0,iHighest(NULL,0,MODE_HIGH,orderSellCandles,orderSellCandles)), TIME_DATE|TIME_MINUTES ) );
CreateTLine(OrderTicket(),Red,OrderOpenTime(),OrderOpenPrice(),iTime(NULL,0,iHighest(NULL,0,MODE_HIGH,orderSellCandles,orderSellCandles)),HighestCandle,false);
}
}

}
OrdersHistory=history;
}
}
//+------------------------------------------------------------------+
//| End of Draw Closed Orders |
//+------------------------------------------------------------------+
[свернуть]
Миниатюры:
Нажмите на изображение для увеличения
Название: EURUSDproDaily.png
Просмотров: 30
Размер:	298.5 Кб
ID:	190182  

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Музыка веков в звуках рояля - https://soundcloud.com/yura-vakulenko

Последний раз редактировалось Yura Vakulenko; 02.01.2015 в 01:38.
Yura Vakulenko вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 06.01.2015, 12:19   #3375 (permalink)
Интересующийся
 
Аватар для planod
 
Регистрация: 24.12.2013
Сообщений: 11
Репутация: 1
planod
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 8
Доброго времени суток. Подскажите, как можно посчитать длину бара (от максимума до минимума) в пунктах?
planod вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 06.01.2015, 13:06   #3376 (permalink)
Активный участник
 
Аватар для Lender
 
Регистрация: 19.07.2011
Сообщений: 56
Репутация: 75
Lender
Сказал(а) спасибо: 9
Поблагодарили 74 раз(а) в 35 сообщениях
Поинты: 6
Отправить сообщение для Lender с помощью Skype™
Сообщение от planod Посмотреть сообщение
Доброго времени суток. Подскажите, как можно посчитать длину бара (от максимума до минимума) в пунктах?
PHP код:
int bar 1;
double barSize1 High[bar]-Low[bar]; 
  
// пример:  1.2237-1.2230 = 0.0007
int barSize2=(High[bar]-Low[bar])/Point;
  
// пример:  (1.2237-1.2230)/0.0001 = 7 

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Программит, инфа в профиле

Последний раз редактировалось Lender; 06.01.2015 в 13:09.
Lender вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 06.01.2015, 13:06   #3377 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 825
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 839 раз(а) в 553 сообщениях
Поинты: 1308
Сообщение от planod Посмотреть сообщение
Доброго времени суток. Подскажите, как можно посчитать длину бара (от максимума до минимума) в пунктах?
PHP код:
(High[0]-Low[0])/Point //Макс-мин
или 
fabs
(Open[0]-Close[0])/Point //открытие-закрытие 
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 06.01.2015, 13:31   #3378 (permalink)
Интересующийся
 
Аватар для planod
 
Регистрация: 24.12.2013
Сообщений: 11
Репутация: 1
planod
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 8
Lender и ansol
спасибо большое за разъяснения, но я добавил еще NormalizeDouble до 0
planod вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 06.01.2015, 14:28   #3379 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 825
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 839 раз(а) в 553 сообщениях
Поинты: 1308
Сообщение от planod Посмотреть сообщение
Lender и ansol
спасибо большое за разъяснения, но я добавил еще NormalizeDouble до 0
Гм! Если переменная имеет тип "целое"/int, то ничего добавлять не надо - она дробной уже никогда не станет в крайнем случает к результату можно применить оператор (int)
PHP код:
points = (int)(High[0]-Low[0])/Point;
или
points 
int( (High[0]-Low[0])/Point ); 
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 09.01.2015, 18:56   #3380 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547
Сообщение от Yura Vakulenko Посмотреть сообщение
...я конечно понимаю, что тогда погорячился.. но просто уже нервы были на пределе) я 2 дня далбаюсь с этим кодом) не хотел..
Юрий не хочу вас ничем обидеть, просто запаситесь терпением на месяц , а лучше на полгодика-год, а вы хотели наскоком за 2 дня освоить язык MQL4, и уже писать граальные совы?
я помню как сидел сутками над справкой по языку и кодом самого простого советника, не желая чтобы он приносил профит, а хотя бы открывал ордера, и никаких индикаторов внешних не брал, все проще и сложнее одновременно, в языке уже прописаны десятки индикаторов, внешние индюки вапще можно не использовать... удачи вам и терпения!

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Ответ

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


Опции темы

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

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



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


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