Ответ
 
Опции темы
18.11.2012, 09:00
Аватар для eevviill
eevviill Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,027 раз(а) / Репутация: 9027
  • Отправить сообщение для eevviill с помощью Skype™
Сообщение от Алекc1234 Посмотреть сообщение
Спасибо большое. А не подскажете, как можно сделать, чтобы при Close[i] учитывалось бы несколько свечей. То есть скажем i равнялось бы от первой свечи до седьмой.
Точно не понял что вы хотите, но думаю так.
PHP код:
double prof[];

for(
int i=1;i<8;i++)
{
prof[i]= (Close[i]-OrderOpenPrice())/Point;



Последний раз редактировалось eevviill; 18.11.2012 в 09:01. Причина: php
eevviill вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Алекc1234 (18.11.2012)
18.11.2012, 12:47
Аватар для Алекc1234
Алекc1234 Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Ещё один вопрос, если можно. Как написать - определённая свеча(скажем четвёртая) от открытия ордера? То есть ордер открылся и мы находим четвёртую свечу от этого открытия...
Алекc1234 вне форума Ответить с цитированиемОтветить с цитированием  
18.11.2012, 13:51
Аватар для eevviill
eevviill Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,027 раз(а) / Репутация: 9027
  • Отправить сообщение для eevviill с помощью Skype™
Сообщение от Алекc1234 Посмотреть сообщение
Ещё один вопрос, если можно. Как написать - определённая свеча(скажем четвёртая) от открытия ордера? То есть ордер открылся и мы находим четвёртую свечу от этого открытия...
Думаю надо использовать OrderOpenTime().
eevviill вне форума Ответить с цитированиемОтветить с цитированием  
18.11.2012, 13:56
Аватар для Алекc1234
Алекc1234 Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Сообщение от eevviill Посмотреть сообщение
Думаю надо использовать OrderOpenTime().
Я так и думал, но как от OrderOpenTime() осчитывать свечи - не знаю
Алекc1234 вне форума Ответить с цитированиемОтветить с цитированием  
18.11.2012, 14:13
Аватар для eevviill
eevviill Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,027 раз(а) / Репутация: 9027
  • Отправить сообщение для eevviill с помощью Skype™
Сообщение от Алекc1234 Посмотреть сообщение
Я так и думал, но как от OrderOpenTime() осчитывать свечи - не знаю
PHP код:
iBarShift(NULL,0,OrderOpenTime()); 

Последний раз редактировалось eevviill; 18.11.2012 в 14:22. Причина: php
eevviill вне форума Ответить с цитированиемОтветить с цитированием  
18.11.2012, 14:22
Аватар для eevviill
eevviill Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,027 раз(а) / Репутация: 9027
  • Отправить сообщение для eevviill с помощью Skype™
Можна так ещё узнавать время открытия.

PHP код:
TimeHour(OrderOpenTime())
TimeMinute(OrderOpenTime()) 
eevviill вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Алекc1234 (18.11.2012)
18.11.2012, 18:07
Аватар для Алекc1234
Алекc1234 Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Сообщение от eevviill Посмотреть сообщение
Можна так ещё узнавать время открытия.

PHP код:
TimeHour(OrderOpenTime())
TimeMinute(OrderOpenTime()) 
Время открытия узнали. Теперь как узнать какая свеча, допустим, четвёртая после времени открытия?
Алекc1234 вне форума Ответить с цитированиемОтветить с цитированием  
18.11.2012, 18:10
Регистрация: 13.03.2009 / Сообщений: 2,320
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от Алекc1234 Посмотреть сообщение
Время открытия узнали. Теперь как узнать какая свеча, допустим, четвёртая после времени открытия?
Так ответил же уже
Сообщение от eevviill Посмотреть сообщение
PHP код:
iBarShift(NULL,0,OrderOpenTime()); 

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (18.11.2012)
18.11.2012, 18:16
Аватар для Алекc1234
Алекc1234 Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Сообщение от Ugar Посмотреть сообщение
Так ответил же уже
Я полный новичок в программировании. Ещё многого не знаю. И мне кажется, что это мы определили свечу, на которой открылся ордер. А как определить четвёртую свечу после открытия?
Алекc1234 вне форума Ответить с цитированиемОтветить с цитированием  
18.11.2012, 18:24
Регистрация: 13.03.2009 / Сообщений: 2,320
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от Алекc1234 Посмотреть сообщение
Я полный новичок в программировании. Ещё многого не знаю. И мне кажется, что это мы определили свечу, на которой открылся ордер. А как определить четвёртую свечу после открытия?
Вычти 4
Код:
iBarShift(NULL,0,OrderOpenTime())-4;

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar вне форума Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (18.11.2012), Алекc1234 (18.11.2012)
18.11.2012, 18:30
Аватар для Алекc1234
Алекc1234 Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Сообщение от Ugar Посмотреть сообщение
Вычти 4
Код:
iBarShift(NULL,0,OrderOpenTime())-4;
А, спасибо большое, понятно
Алекc1234 вне форума Ответить с цитированиемОтветить с цитированием  
19.11.2012, 15:25
Аватар для Алекc1234
Алекc1234 Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Здравствуйте. Подскажите, если открыто несколько рыночных ордеров, то как в коде написать цену первого открытого ордера? То есть OderOpenPrice() первого по времени открытого ордера.
Алекc1234 вне форума Ответить с цитированиемОтветить с цитированием  
19.11.2012, 15:39
Аватар для eevviill
eevviill Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,027 раз(а) / Репутация: 9027
  • Отправить сообщение для eevviill с помощью Skype™
Сообщение от Алекc1234 Посмотреть сообщение
Здравствуйте. Подскажите, если открыто несколько рыночных ордеров, то как в коде написать цену первого открытого ордера? То есть OderOpenPrice() первого по времени открытого ордера.
PHP код:
 OrderSelect(OrdersTotal()-1,SELECT_BY_POS);
   
double fir_or_pr=OrderOpenPrice(); 
eevviill вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Алекc1234 (19.11.2012)
19.11.2012, 15:47
Аватар для Алекc1234
Алекc1234 Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Сообщение от eevviill Посмотреть сообщение
PHP код:
 OrderSelect(OrdersTotal()-1,SELECT_BY_POS);
   
double fir_or_pr=OrderOpenPrice(); 
eevviill - Вам огромное спасибо - всегда мне помогаете, жаль, что я ещё ничего не смог заработать, иначе отблагодарил бы Вас и материально. Вообщем, большой Вам респект! Я и на других форумах участвую, но только здесь Вы всегда отвечаете и выручаете!!!
Алекc1234 вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (19.11.2012)
19.11.2012, 19:50
Аватар для greatiger
greatiger Активный участник
Регистрация: 06.02.2010 / Сообщений: 490
Поблагодарили 67 раз(а) / Репутация: 68
Научите приделывать ММ к советникам как-нибудь попроще...есть может какие стандартные функции,которые можно в код подставлять?

И макс.лот бы еще
greatiger вне форума Ответить с цитированиемОтветить с цитированием  
19.11.2012, 19:59
Аватар для Алекc1234
Алекc1234 Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Сообщение от greatiger Посмотреть сообщение
Научите приделывать ММ к советникам как-нибудь попроще...есть может какие стандартные функции,которые можно в код подставлять?

И макс.лот бы еще
Я вставляю ММ в сову так:
extern bool Use_MM = true;
extern double K = 0.02;
Lot = 0.1;
if (Use_MM)
{
Lots = K*AccountBalance()/100;
double lotstep = MarketInfo(Symbol(),MODE_LOTSTEP);
Lots = MathRound(Lots/lotstep)*lotstep;
}
else Lots=Lot;
Предпоследние две строчки - это округление лота в большую сторону

Последний раз редактировалось Алекc1234; 19.11.2012 в 20:44.
Алекc1234 вне форума Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (19.11.2012), greatiger (21.11.2012)
19.11.2012, 21:14
Аватар для eevviill
eevviill Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,027 раз(а) / Репутация: 9027
  • Отправить сообщение для eevviill с помощью Skype™
Сообщение от greatiger Посмотреть сообщение
Научите приделывать ММ к советникам как-нибудь попроще...есть может какие стандартные функции,которые можно в код подставлять?
...
В глобальные переменные
PHP код:
extern double Lot 0.1;
extern bool use_percent_of_deposit false;
extern double Risk 1
В Старт
PHP код:
 //расчёт лота от % депозита
 
if(use_percent_of_depositLot=GetLot(); 
Функция
PHP код:
///////////////////////////////////////////////////////////////////////////////////////
double GetLot()
{
 
double Free    =AccountFreeMargin();
 
double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
 
double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT);
 
double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
 
double Step    =MarketInfo(Symbol(),MODE_LOTSTEP);
 
double Lot     =MathFloor(Free*Risk/100/One_Lot/Step)*Step;
 if(
Lot<Min_LotLot=Min_Lot;
 if(
Lot>Max_LotLot=Max_Lot;
 if(
Lot*One_Lot>Free) return(0.0);
 
return(
Lot);


Последний раз редактировалось eevviill; 19.11.2012 в 21:48.
eevviill вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
greatiger (21.11.2012)
19.11.2012, 21:47
Аватар для eevviill
eevviill Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,027 раз(а) / Репутация: 9027
  • Отправить сообщение для eevviill с помощью Skype™
Сообщение от greatiger Посмотреть сообщение
...
И макс.лот бы еще
1) Ищешь ОрдерСенд.
2) Смотришь что там стоит в третем значении. Пример. OrderSend(Symbol,1,g_lots_142,...)
3)Ставишь перед OrderSend
PHP код:
if(g_lots_142<=Max_lots)
{
OrderSend(Symbol,1,g_lots_142,...)

eevviill вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
greatiger (21.11.2012)
21.11.2012, 16:00
Аватар для greatiger
greatiger Активный участник
Регистрация: 06.02.2010 / Сообщений: 490
Поблагодарили 67 раз(а) / Репутация: 68
Есть первый самостоятельный ММ хоть и не без небольшой самодеятельности и труда рыбка потащилась )
greatiger вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (21.11.2012)
21.11.2012, 17:55
Аватар для greatiger
greatiger Активный участник
Регистрация: 06.02.2010 / Сообщений: 490
Поблагодарили 67 раз(а) / Репутация: 68
Цитата:
Ставишь перед OrderSend
PHP код:
if(g_lots_142<=Max_lots)
{
OrderSend(Symbol,1,g_lots_142,...)
}
eevviill, а Max_lots не надо как вводимую переменную в начале прописывать?
greatiger вне форума Ответить с цитированиемОтветить с цитированием  
Ответ

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


Опции темы

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

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



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


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