Ответить
21.11.2012, 18:08
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
eevviill, а Max_lots не надо как вводимую переменную в начале прописывать?
Надо.
22.11.2012, 02:16
Аватар для greatiger
greatiger greatiger вне форума Активный участник
Регистрация: 06.02.2010 / Сообщений: 490
Поблагодарили 67 раз(а) / Репутация: 68
Надо.
а как именно описать переменную? double? каким типом вводные переменные описываются если не секрет) а то в синтаксисе этого языка ноль из нулей)

ПС..после пивного застолья( если что не так написал прошу понять(

Последний раз редактировалось greatiger; 22.11.2012 в 02:18.
22.11.2012, 08:42
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
а как именно описать переменную? double? каким типом вводные переменные описываются если не секрет) а то в синтаксисе этого языка ноль из нулей)

ПС..после пивного застолья( если что не так написал прошу понять(
PHP код:
extern double Max_lot 122.6
http://forexsystemsru.com/yazyk-programmirovaniya-mql4/67073-mql4-uroki-ot-eevviill.html#post410681
22.11.2012, 11:48
Аватар для aufx
aufx aufx вне форума Интересующийся
Регистрация: 16.11.2012 / Сообщений: 26
Поблагодарили 2 раз(а) / Репутация: 3
Коллеги! Подскажите плисс..
Вот пример из учебника

while(!IsStopped()) // До тех пор, пока пользователь..
{ // ..не прекратит исполнение программы RefreshRates(); // Обновление данных
//......................Здесь указывается основной код ограммы
Sleep(5); // Небольшая пауза
}

При выполнении этой проги терминал тупо виснет и не хочет больше ни с кем общаться. Только Ctrl+Alt+Del заставляет (после удаления этой функции и компиляции проги) оживить его.
Ни кто не подскажет как "общаться" с этой прогой?
22.11.2012, 14:04
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
Коллеги! Подскажите плисс..
Вот пример из учебника

while(!IsStopped()) // До тех пор, пока пользователь..
{ // ..не прекратит исполнение программы RefreshRates(); // Обновление данных
//......................Здесь указывается основной код ограммы
Sleep(5); // Небольшая пауза
}

При выполнении этой проги терминал тупо виснет и не хочет больше ни с кем общаться. Только Ctrl+Alt+Del заставляет (после удаления этой функции и компиляции проги) оживить его.
Ни кто не подскажет как "общаться" с этой прогой?
Думаю потому что перегружается процесор. Ведь то что в коде выполняется даже не на каждом тике, а постоянно.
22.11.2012, 16:05
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

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

По умолчанию Такое может быть??

У меня проблема.

Объявил буфер
PHP код:
double Mins[]; 
Пишу.
PHP код:
Mins[1]=EMPTY_VALUE;
Alert(Mins[1]); 
Выдаёт 0. Почему так?
22.11.2012, 16:12
Аватар для expforex
expforex expforex вне форума Программиров
Регистрация: 11.01.2009 / Сообщений: 2,134
Поблагодарили 2,094 раз(а) / Репутация: 2152
Вы не задали размерность массива
в Вашем случае:
double Mins[2];
Mins[1]=EMPTY_VALUE;
Alert(Mins[1]);
Советники на заказ! admin@expforex.com
Говорим Спасибо
22.11.2012, 16:39
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
Вы не задали размерность массива
в Вашем случае:
double Mins[2];
Mins[1]=EMPTY_VALUE;
Alert(Mins[1]);
Спасибо но не понимаю.
Это я пытаюсь вшить индикатор в советник.
Почему тогда в индикаторах не надо размерность указывать?
22.11.2012, 16:46
Аватар для expforex
expforex expforex вне форума Программиров
Регистрация: 11.01.2009 / Сообщений: 2,134
Поблагодарили 2,094 раз(а) / Репутация: 2152
В индикаторе размер массива генерируется автоматически
я бы даже сказал там не массивы а буферы.
Советники на заказ! admin@expforex.com
Говорим Спасибо

Последний раз редактировалось expforex; 22.11.2012 в 17:06.
22.11.2012, 17:57
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 531
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
У меня следующая ситуация. Совок ставит в определённое время, а точнее, по закрытия свечи на D1 отложенный ордер - лимитник по канкретной цене. Если лимитник не сработал к закрытию следующей свечи на, то его нужно просто удалить.

Если вариантов несколько как я понимаю:

1. Можно дать параметру expiration функции OrderSend() значение, т.е. просчитать его и задать ровно 24 часа в секундах, итого получиться (60 * 60) *24 часа = 86400 секунд.
Т.е. ордер будет иметь такой вид(если байлимит):

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

PHP код:
OrderSend(string symbolOP_BUYLIMITdouble volumedouble priceint slippagedouble stoplossdouble takeprofitstring comment=NULLint magic=0datetime 86400color arrow_color=CLR_NONE
[свернуть]



2. Другой вариант, будет таким, что можно создать условие типа:

PHP код:
if( (time[0] == ВРЕМЯГДЕ ОРДЕР НУЖНО ЗАКРЫТЬ ) && ( Ordertype >= ))
  {
     
Orderclose();
  } 

Т.е. если время, в которое истекает срок его закрытия пришло и тип ордера - отложенник.. ЗАКРЫВАЕМ ЕГО.

Прошу подсказать как более грамотно реализовать данный момент.
А может есть ещё какие варианты?

Последний раз редактировалось NSerega; 22.11.2012 в 19:02.
22.11.2012, 21:07
Аватар для Hurghadahome
Hurghadahome Hurghadahome вне форума Почётный гражданин
Регистрация: 07.03.2010 / Адрес: Египет - Хургада / Сообщений: 723
Поблагодарили 463 раз(а) / Репутация: 464
ПАРНИ ПОМОГИТЕ .
НУЖЕН БОТ КОТОРЫЙ БУДЕТ ЗАКРЫВАТЬ ВСЕ ОТКРЫТЫЕ СДЕЛКИ ЕСЛИ ОНИ НЕ ПОДПАДАЮТ ПОД УСЛОВИЕ: РАБОТА РАЗРЕШЕНА ТОЛЬКО ПЕРВЫЕ ПОЛ ЧАСА ПОСЛЕ ЗАКРЫТИЯ ЧЕТЫРЕХ ЧАСОВОЙ СВЕЧИ(ЗАПРЕТ ДЛЯ ВСЕХ ОРДЕРОВ В ТОМ ЧИСЛЕ И ОТЛОЖЕННЫХ).
И ВСЕ
С УВАЖЕНИЕМ ИЛЬЯ.

Последний раз редактировалось Hurghadahome; 22.11.2012 в 21:10.
22.11.2012, 22:04
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

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

Если вариантов несколько как я понимаю:

1. Можно дать параметру expiration функции OrderSend() значение, т.е. просчитать его и задать ровно 24 часа в секундах, итого получиться (60 * 60) *24 часа = 86400 секунд.
Т.е. ордер будет иметь такой вид(если байлимит):

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

PHP код:
OrderSend(string symbolOP_BUYLIMITdouble volumedouble priceint slippagedouble stoplossdouble takeprofitstring comment=NULLint magic=0datetime 86400color arrow_color=CLR_NONE
[свернуть]



2. Другой вариант, будет таким, что можно создать условие типа:

PHP код:
if( (time[0] == ВРЕМЯГДЕ ОРДЕР НУЖНО ЗАКРЫТЬ ) && ( Ordertype >= ))
  {
     
Orderclose();
  } 

Т.е. если время, в которое истекает срок его закрытия пришло и тип ордера - отложенник.. ЗАКРЫВАЕМ ЕГО.

Прошу подсказать как более грамотно реализовать данный момент.
А может есть ещё какие варианты?
PHP код:
static int prevtime 0
это в глобальные переменные(с самого начала програмы)

PHP код:
prevtime iTime(Symbol(),0,0); 
это в int init()

PHP код:
if (iTime(Symbol(), 00) == prevtime) {Sleep(50);return(0);}
   
prevtime iTime(Symbol(),0,0); 
это в int start()


Думаю так будет лучше(если я правильно понял). Сразу после открытия новой свечи будет проверка.
22.11.2012, 22:44
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 531
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Сообщение от: Hurghadahome
ПАРНИ ПОМОГИТЕ .
НУЖЕН БОТ КОТОРЫЙ БУДЕТ ЗАКРЫВАТЬ ВСЕ ОТКРЫТЫЕ СДЕЛКИ ЕСЛИ ОНИ НЕ ПОДПАДАЮТ ПОД УСЛОВИЕ: РАБОТА РАЗРЕШЕНА ТОЛЬКО ПЕРВЫЕ ПОЛ ЧАСА ПОСЛЕ ЗАКРЫТИЯ ЧЕТЫРЕХ ЧАСОВОЙ СВЕЧИ(ЗАПРЕТ ДЛЯ ВСЕХ ОРДЕРОВ В ТОМ ЧИСЛЕ И ОТЛОЖЕННЫХ).
И ВСЕ
С УВАЖЕНИЕМ ИЛЬЯ.

Это тебе нужен не бот, а сову дописать. Ты хочешь, что бы закрывались только сделки, которые не подпадают под условие только? Т.е. они открылись по условию, а к закрытию свечи H4 условия уже не те, верно?
А ордера, которые не противоречат условиям должны остаться открыты?
22.11.2012, 23:20
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 531
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
eevviill, то что ты написал, это, можно так выразиться, ф-ция определения нового бара.. Мне же нужно, не какое-то время текущее, полученное через:

PHP код:
iTime(Symbol(),0,0

В данном случае, нужно чтоб проверка происходила каждые сутки, т.е. каждые 24 часа

Ещё я думаю, в какую ф-цию эту проверку включить. Может быть оптимальным вариантом будет внедрить её в пользовательскую ф-цию Close()
Например,

PHP код:
CloseOrders(ВРЕМЯ ЗАКРЫТИЯ)
 if 
time[0] == ВРЕМЯ ЗАКРЫТИЯ,
   {
      
orderсlose();
   } 

Надеюсь, я понятно объяснил ситуацию. Написать абы написать я смогу и сам, но хочу услышать мнение опытных программистов, так сказать, чтобы код был в хорошем тоне..
23.11.2012, 05:47
Аватар для Hurghadahome
Hurghadahome Hurghadahome вне форума Почётный гражданин
Регистрация: 07.03.2010 / Адрес: Египет - Хургада / Сообщений: 723
Поблагодарили 463 раз(а) / Репутация: 464
Это тебе нужен не бот, а сову дописать. Ты хочешь, что бы закрывались только сделки, которые не подпадают под условие только? Т.е. они открылись по условию, а к закрытию свечи H4 условия уже не те, верно?
А ордера, которые не противоречат условиям должны остаться открыты?
Нет они не должны открыться вообще то есть конечно бот не может запретить но он может сразу закрыть. И не закрывать сделки которые происходят в разрешенный временной период(первые пол часа после закрытия 4х часовой свечи).

Это эксперт который будет разрешать работать трейдеру только после закрытия очередной четырехчасовой свечи. Эксперт часть системы манименеджмента. И на счет отложенников, можно было бы чтобы они смогли работать (открывать сделки)но при одном условии: эксперт удаляет все только что установленные отложенные ордера если они ближе к цене на N пунктов(расстояние вычисляется по волатильности инструмента).
Все это как помощник трейдеру в борьбе с самим собой не лезть в рынок, а работать только по4х часовым графикам и отложенными ордерами.
Уверен что в таком эксперте нуждается большинство трейдеров.
С уважением Илья.

Последний раз редактировалось Hurghadahome; 23.11.2012 в 05:52.
23.11.2012, 07:59
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 531
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Сообщение от: Hurghadahome
НУЖЕН БОТ КОТОРЫЙ БУДЕТ ЗАКРЫВАТЬ ВСЕ ОТКРЫТЫЕ СДЕЛКИ ЕСЛИ ОНИ НЕ ПОДПАДАЮТ ПОД УСЛОВИЕ

Сообщение от: Hurghadahome
Нет они не должны открыться вообще то есть конечно бот не может запретить но он может сразу закрыть.

Я типо всё понял...
23.11.2012, 08:55
Аватар для Hurghadahome
Hurghadahome Hurghadahome вне форума Почётный гражданин
Регистрация: 07.03.2010 / Адрес: Египет - Хургада / Сообщений: 723
Поблагодарили 463 раз(а) / Репутация: 464
Поможешь?
Думаю это не супер как сложно.
Если что копеечку скину на кошелек.
С уважением Илья.
23.11.2012, 09:00
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
eevviill, то что ты написал, это, можно так выразиться, ф-ция определения нового бара.
Ну так всё правильно. Советник будет на открытии свечи проверять условия. Или тебе надо открыто в 15, проверка на следующий день в 15?

Всё. Понял. Но Time[0], я думаю нельзя использовать. Ровно через 24 часа именно такого времени может не быть. особенно если флэт.

Последний раз редактировалось eevviill; 23.11.2012 в 09:05.
23.11.2012, 11:16
Аватар для greatiger
greatiger greatiger вне форума Активный участник
Регистрация: 06.02.2010 / Сообщений: 490
Поблагодарили 67 раз(а) / Репутация: 68
eevviill, привет, а есть какая-нибудь функция,чтобы MAX_Trades стандартно приделывать? (максимальное ограничение колен в мартинах ограничивать не через Макс.лот или просто число сделок в одну сторону (или даже обе))
23.11.2012, 11:28
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
Вшил ЗигЗаг в советник. Но новые пики не искались. Сделал обнуление буферов. Теперь пару десятков свечей работает и останавливается.

Всё. Проблему решил.
Добавил.

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

PHP код:
int counted_bars 0;
bool downloadhistory=false;

if (
counted_bars==&& downloadhistory// history was downloaded
     
{
      
ArrayInitialize(ZigzagBuffer,0.0);
      
ArrayInitialize(HighMapBuffer,0.0);
      
ArrayInitialize(LowMapBuffer,0.0);
     }
   if (
counted_bars==0
     {
      
limit=Bars-ExtDepth;
      
downloadhistory=true;
     }
   if (
counted_bars>0
     { 
[свернуть]

Последний раз редактировалось eevviill; 23.11.2012 в 11:56.
Ответить

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


Опции темы

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

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



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


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