Ответ
 
Опции темы
Старый 06.10.2013, 08:26   #1781 (permalink)
Новичок форума
 
Аватар для Рыболов
 
Регистрация: 16.07.2013
Сообщений: 24
Репутация: 15
Рыболов
Сказал(а) спасибо: 24
Поблагодарили 14 раз(а) в 5 сообщениях
Поинты: 36
Сообщение от expforex Посмотреть сообщение
Привет,

на примере вполне известного индикатора:
double ExampleCustom=iCustom(Symbol(),0,"Moving Averages",20,0,MODE_SMA,shift); // Пример вызова пользовательского индикатора
обращение примерно так и думал, функцию iCustom() только не нашел

Последний раз редактировалось Рыболов; 06.10.2013 в 08:32.
Рыболов вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 06.10.2013, 08:29   #1782 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от ansol Посмотреть сообщение

Надо хорошо подумать:
PHP код:
int iProfit OrderProfit()/(MarketInfo(Symbol(), MODE_TICKVALUE)*OrderLots()); 
Поинты тут ни при чем
И тик валуе здесь нипричём.
PHP код:
prof_sel=(OrderOpenPrice()-Ask)/Point;
prof_buy=(Bid-OrderOpenPrice())/Point
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 07.10.2013, 23:45   #1783 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547

По умолчанию Вопрос профи программерам???


подскажите плиз,как открыть ордер на Open[0] или на Close[0], можно два варианта если знаете, желательно чтобы поменьше кода было...заранее СПАСИБО!

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 08.10.2013, 05:36   #1784 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,252
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 348
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1270
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Milord Посмотреть сообщение
подскажите плиз,как открыть ордер на Open[0] или на Close[0], можно два варианта если знаете, желательно чтобы поменьше кода было...заранее СПАСИБО!
Close[0]=Bid это текущая цена. По ней и открывается Sell, Buy открывается по Ask=Close[0]+спред.

Проще всего по Open[0] открывать Sell в момент открытия нового бара. Открытие Buy в этот момент будет по Ask=Open[0]+спред.

Момент открытия бара, по простому
static datetime LastTime;
if(LastTime==0)LastTime=Time[0];
if(LastTime==Time[0])return(0);
LastTime=Time[0];

дальше код будет выполняться только при открытии нового бара.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (08.10.2013), Milord (08.10.2013)
Старый 08.10.2013, 05:50   #1785 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от Ugar Посмотреть сообщение
Close[0]=Bid это текущая цена. По ней и открывается Sell, Buy открывается по Ask=Close[0]+спред.

Проще всего по Open[0] открывать Sell в момент открытия нового бара. Открытие Buy в этот момент будет по Ask=Open[0]+спред.

Момент открытия бара, по простому
static datetime LastTime;
if(LastTime==0)LastTime=Time[0];
if(LastTime==Time[0])return(0);
LastTime=Time[0];

дальше код будет выполняться только при открытии нового бара.
У меня так. Но суть одинакова.
PHP код:
static int prevtime;
...
if (
Time[0] == prevtime) {Sleep(50);return(0);}
   
prevtime Time[0]; 

У меня вопрос. Зачем статик в этом случае?
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Milord (08.10.2013)
Старый 08.10.2013, 12:41   #1786 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от eevviill Посмотреть сообщение
У меня так. Но суть одинакова.
PHP код:
static int prevtime;
...
if (
Time[0] == prevtime) {Sleep(50);return(0);}
   
prevtime Time[0]; 

У меня вопрос. Зачем статик в этом случае?
Рудимент от языка С остался. В MQL static практически то же самое, что и глобальная переменная, но видно его только внутри функции, в которой он объявлен. Основное свойство - сохраняет значение при выходе и повторном входе в функцию. Здесь нужен чтобы помнить Time[0] предыдущего тика.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (08.10.2013)
Старый 08.10.2013, 14:44   #1787 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от qqmber Посмотреть сообщение
Рудимент от языка С остался. В MQL static практически то же самое, что и глобальная переменная, но видно его только внутри функции, в которой он объявлен. Основное свойство - сохраняет значение при выходе и повторном входе в функцию. Здесь нужен чтобы помнить Time[0] предыдущего тика.
Тоесть если переменная в глобальных то статик не нужен. Правильно?
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 08.10.2013, 14:48   #1788 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от eevviill Посмотреть сообщение
Тоесть если переменная в глобальных то статик не нужен. Правильно?
Правильно. Если переменная объявлена выше функций, то static ничего не дает и не отнимает. Можно убрать для ясности.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (08.10.2013)
Старый 08.10.2013, 15:28   #1789 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,252
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 348
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1270
Отправить сообщение для Ugar с помощью ICQ
Сообщение от eevviill Посмотреть сообщение
У меня вопрос. Зачем статик в этом случае?
У меня весь код внутри функции start(), в том числе и объявление переменной
static datetime LastTime;
По этому она статическая обязательно.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (10.10.2013)
Старый 08.10.2013, 16:24   #1790 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,518
Репутация: 3644
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,110
Поблагодарили 3,648 раз(а) в 1,469 сообщениях
Поинты: 2004
Сообщение от eevviill Посмотреть сообщение
У меня так. Но суть одинакова.
PHP код:
static int prevtime;
...
if (
Time[0] == prevtime) {Sleep(50);return(0);}
   
prevtime Time[0]; 
У меня вопрос. Зачем статик в этом случае?
Суть то одинакова, но у Андрея правильней.
Переменная принимающая значение времени должна быть datetime не смотря на то, что имеет целочисленное значение и работает без проблем.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (10.10.2013), Ugar (08.10.2013)
Старый 08.10.2013, 20:02   #1791 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547
Сообщение от Ugar Посмотреть сообщение
Close[0]=Bid это текущая цена. По ней и открывается Sell, Buy открывается по Ask=Close[0]+спред.

Проще всего по Open[0] открывать Sell в момент открытия нового бара. Открытие Buy в этот момент будет по Ask=Open[0]+спред.

Момент открытия бара, по простому
static datetime LastTime;
if(LastTime==0)LastTime=Time[0];
if(LastTime==Time[0])return(0);
LastTime=Time[0];

дальше код будет выполняться только при открытии нового бара.
спасибо за ответ, но что то не понял куда прицепить это:
{
OrderSend(.....);
}

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 09.10.2013, 03:21   #1792 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 74
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 74 раз(а) в 60 сообщениях
Поинты: 284
Сообщение от ansol Посмотреть сообщение
Есть ли способ выводить текстовую или графическую инфу в окно, отличное, от того, в котором работает советник?
Типа, мультивалютник выводит инфу по сделке в окно пары, по которой сделка произошла?
В книге Сергея Ковалева в разделе создание обычной программы, есть пример вывода данных в другое окно.
функция Inform.mqh. Там с исходником и пояснениями. Сам пользую чтобы не заморачиваться.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (09.10.2013)
Старый 09.10.2013, 05:06   #1793 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,252
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 348
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1270
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Milord Посмотреть сообщение
спасибо за ответ, но что то не понял куда прицепить это:
{
OrderSend(.....);
}
Я же написал что дальше код будет выполняться при открытии нового бара.
Если сразу поле моего кода разместить OrderSend() то будет отправляться приказ при открытии нового бара.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (09.10.2013), Milord (09.10.2013)
Старый 10.10.2013, 06:31   #1794 (permalink)
Почётный гражданин
 
Аватар для kamilkz
 
Регистрация: 10.03.2010
Сообщений: 278
Репутация: 326
kamilkz kamilkz kamilkz kamilkz
Сказал(а) спасибо: 1,705
Поблагодарили 325 раз(а) в 124 сообщениях
Поинты: 18
Уважаемые программисты!
Объединил два советника (OM_2WAY_v3.6_INFO и MO 27,04,13_edu) в один (OM_2WAY_v3.6+Razrulivatel), скомпелировал, вроде все нормально без ошибок, но вот беда – полученный новый советник (OM_2WAY_v3.6+Razrulivatel) всегда открывает первый ордер размером 1 лот, независимо от того какое значение имеет StartLot или UseAutoLot (false или true), хотя (OM_2WAY_v3.6_INFO), без изменений работает нормально и ставит ордера в зависимости от переменных StartLot или UseAutoLot. Подскажите, в чем проблема?
Вложения:
Тип файла: mq4 MO 27,04,13_edu.mq4 (14.1 Кб, 26 просмотров)
Тип файла: mq4 OM_2WAY_v3.6_INFO.mq4 (34.2 Кб, 27 просмотров)
Тип файла: mq4 OM_2WAY_v3.6+Razrulivatel.mq4 (48.2 Кб, 31 просмотров)
kamilkz вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Viko2000 (12.05.2015)
Старый 10.10.2013, 11:49   #1795 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от kamilkz Посмотреть сообщение
Уважаемые программисты!
Объединил два советника (OM_2WAY_v3.6_INFO и MO 27,04,13_edu) в один (OM_2WAY_v3.6+Razrulivatel), скомпелировал, вроде все нормально без ошибок, но вот беда – полученный новый советник (OM_2WAY_v3.6+Razrulivatel) всегда открывает первый ордер размером 1 лот, независимо от того какое значение имеет StartLot или UseAutoLot (false или true), хотя (OM_2WAY_v3.6_INFO), без изменений работает нормально и ставит ордера в зависимости от переменных StartLot или UseAutoLot. Подскажите, в чем проблема?
А ты у автора МО спроси, у cmillion-a. Он тут на сайте тусуется. Заодно узнаешь про себя много нового.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 10.10.2013, 12:58   #1796 (permalink)
Почётный гражданин
 
Аватар для kamilkz
 
Регистрация: 10.03.2010
Сообщений: 278
Репутация: 326
kamilkz kamilkz kamilkz kamilkz
Сказал(а) спасибо: 1,705
Поблагодарили 325 раз(а) в 124 сообщениях
Поинты: 18
Сообщение от qqmber Посмотреть сообщение
А ты у автора МО спроси, у cmillion-a. Он тут на сайте тусуется. Заодно узнаешь про себя много нового.
Не чего страшного, не привыкать, а если с укором, то советники я скачал на нашем форуме в открытом коде.
kamilkz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 10.10.2013, 13:01   #1797 (permalink)
Активный участник
 
Аватар для evgen_82
 
Регистрация: 02.01.2013
Сообщений: 35
Репутация: 36
evgen_82
Сказал(а) спасибо: 63
Поблагодарили 35 раз(а) в 19 сообщениях
Поинты: 72
Уважаемые профи помогите реализовать идею. Хочу поймать сигнал от стоха при выходе из границ перекупленности (перепроданности) при условии пересечения его линий в этих зонах. Еще ввел условие - чтобы это пересечение было не дальше параметра определенного количества баров - параметр Finder. Но реализовать никак не могу. Гляньте кто-нить свежим взором где тут ошибки. Хотелось бы еще как-нибудь упростить эту функцию.

зы: Параметры:
Li_28 = TRUE; и Li_24 = TRUE;
сова считывает как добро на открытие ордеров
PHP код:
bool Stochastic () {
double Sig_Buy zoneBUY
double Sig_Sell zoneSELL;
bool Exit_UrBuy TRUE;
bool Exit_UrSell TRUE;
double sM0,sM1,sS0sS1;
bool Bar_BuyCross FALSE;
bool Bar_SellCross FALSE;
int bar_bbar_s;


   
sM0  iStochastic(NULL,timeframe,KPeriod,DPeriod,Slowing,MODE_SMA,0,MODE_MAIN,1);
   
sM1  iStochastic(NULL,timeframe,KPeriod,DPeriod,Slowing,MODE_SMA,0,MODE_MAIN,2);
   
sS0 iStochastic(NULL,timeframe,KPeriod,DPeriod,Slowing,MODE_SMA,0,MODE_SIGNAL,1);
   
sS0 iStochastic(NULL,timeframe,KPeriod,DPeriod,Slowing,MODE_SMA,0,MODE_SIGNAL,2);


bool CrossBuy = (sS0<Sig_Buy && sM0<Sig_Buy && sM1<sS1 && sM0>=sS0);
bool CrossSell = (sS0>Sig_Sell && sM0>Sig_Sell && sM1>sS1 && sM0<=sS0);

if (
UseExitUr) {
if (
sM0 >Sig_Buy && sM1 <= Sig_BuyExit_UrBuy TRUE;
else 
Exit_UrBuy FALSE;
if (
sM0 <Sig_Sell && sM1 >= Sig_SellExit_UrSell TRUE;
else 
Exit_UrSell FALSE;
}

if (
CrossBuy) { TimeCrossB =  iOpenNULL01); }

  for (
int cnt cnt Finder cnt++) {
bar_b iBarShift(NULL0TimeCrossBcnt); 
if (
bar_b 0Bar_BuyCross TRUE
}

if (
Bar_BuyCross && Exit_UrBuy) {
     
Li_24 TRUE;
     
TimeCrossB = -1;
 }

if (
CrossSell) {TimeCrossS iOpenNULL01);}

for (
int cnm cnm Finder cnm++) {
bar_s iBarShift(NULL0TimeCrossScnm); 
if (
bar_s 0Bar_SellCross TRUE
}


if (
Bar_SellCross && Exit_UrSell) {
    
TimeCrossS = -1;
    
Li_28 TRUE;
   }

   return(
false);

evgen_82 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 10.10.2013, 13:23   #1798 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от evgen_82 Посмотреть сообщение
Гляньте кто-нить свежим взором где тут ошибки.
На первый взгляд мне не нравится TimeCrossB = iOpen(). Это не время.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (10.10.2013), evgen_82 (10.10.2013)
Старый 10.10.2013, 14:18   #1799 (permalink)
Активный участник
 
Аватар для evgen_82
 
Регистрация: 02.01.2013
Сообщений: 35
Репутация: 36
evgen_82
Сказал(а) спасибо: 63
Поблагодарили 35 раз(а) в 19 сообщениях
Поинты: 72
Сообщение от qqmber Посмотреть сообщение
На первый взгляд мне не нравится TimeCrossB = iOpen(). Это не время.
Точно. Спасибо. Ночью код ваял, не заметил элементарного.
Можно ли как-нить упростить сию функцию, дабы избежать лишних исчислений?
evgen_82 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 10.10.2013, 16:07   #1800 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547

По умолчанию Автомат на 4 и 5 знаков???


Цитата:
int K;

//+--Блок иницилиазации советника------------------------------------+
int init()
{
K=1;
if ((Digits==3) || (Digits==5)) {K=10;}
TrailingStop=TrailingStop*K;
SL=SL*K;
prevtime = Time[0];
return(0);
}
//+--Конец Блока иницилиазации советника-----------------------------+
вот нашел кусок кода на автомат 4 или 5 знаков котир,все вроде бы ясно и понятно, кроме строки prevtime = Time[0];
неясно что она делает, и надо ли переменную prevtime объявлять в начале кода?
дайте свои коменты и советы плиз, кто имеет опыт в коде MQL4, заранее СПАСИБО!

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

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


Опции темы

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

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



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


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