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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Советники на заказ! admin@expforex.com
Говорим Спасибо
expforex вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (22.11.2012)
22.11.2012, 16:39
Аватар для eevviill
eevviill Заблокирован
За второе место в конкурсе 

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

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Советники на заказ! admin@expforex.com
Говорим Спасибо

Последний раз редактировалось expforex; 22.11.2012 в 17:06.
expforex вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (22.11.2012)
22.11.2012, 17:57
Аватар для hoz
hoz Активный участник
Регистрация: 01.04.2011 / Сообщений: 530
Поблагодарили 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.
hoz вне форума Ответить с цитированиемОтветить с цитированием  
22.11.2012, 21:07
Аватар для Hurghadahome
Hurghadahome Почётный гражданин
Регистрация: 07.03.2010 / Адрес: Египет - Хургада / Сообщений: 723
Поблагодарили 463 раз(а) / Репутация: 464
ПАРНИ ПОМОГИТЕ .
НУЖЕН БОТ КОТОРЫЙ БУДЕТ ЗАКРЫВАТЬ ВСЕ ОТКРЫТЫЕ СДЕЛКИ ЕСЛИ ОНИ НЕ ПОДПАДАЮТ ПОД УСЛОВИЕ: РАБОТА РАЗРЕШЕНА ТОЛЬКО ПЕРВЫЕ ПОЛ ЧАСА ПОСЛЕ ЗАКРЫТИЯ ЧЕТЫРЕХ ЧАСОВОЙ СВЕЧИ(ЗАПРЕТ ДЛЯ ВСЕХ ОРДЕРОВ В ТОМ ЧИСЛЕ И ОТЛОЖЕННЫХ).
И ВСЕ
С УВАЖЕНИЕМ ИЛЬЯ.

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

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,027 раз(а) / Репутация: 9027
  • Отправить сообщение для eevviill с помощью Skype™
Сообщение от hoz Посмотреть сообщение
У меня следующая ситуация. Совок ставит в определённое время, а точнее, по закрытия свечи на 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()


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

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

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

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

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

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

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

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

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

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

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

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

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

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

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,027 раз(а) / Репутация: 9027
  • Отправить сообщение для 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.
eevviill вне форума Ответить с цитированиемОтветить с цитированием  
Ответ

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


Опции темы

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

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



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


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