Ответ
 
Опции темы
Старый 22.01.2015, 07:25   #3461 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,527
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,118
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от strannik-ps Посмотреть сообщение
Пазл начал складываться.
Без #property strict ошибки нет, значит надо просто очистить массив.
Теперь у меня тупик, как это сделать.
Может есть у кого варианты?
Без #property strict ошибка никуда не делась, только лишь игнорируется. Типа, получили хрень какую-то, ну и хрен с ней... пойдём дальше...
Очищать массив нет никакого смысла. Проблема не в том, что массив заполнен, а в том что индекс массива при заполнении или чтении превышает максимальное значение.
Пример получения ошибки array out of range

Код:
#property strict

int arr[5]; // индекс такого массива может принимать значения 0, 1, 2, 3, 4

void OnTick()
{
  for(int i = 0; i <= 10; i++)
   {
     arr[i] = i; // как только i станет равным 5 мы получим ошибку array out of range
   }
}
Если убрать #property strict то цикл продолжится до i = 10. Не получилось записать в массив, ну и хрен с ним... Как программист написал так и получит результат...
Директива #property strict выполняет роль помошника, при таких ошибках предупреждает о получении, возможно не такого результата какой ожидается и требует привести код в надлежащий вид исключив неоднозначные варианты. Это и есть одно из отличий нового mql4.

Сообщение от strannik-ps Посмотреть сообщение
Все просто - получение даты на новом баре, использовать можно в индикаторах для определения аккумуляции, в советниках как импульсную функцию, да и много куда можно засунуть.
Получить дату на новом баре можно и без структуры. Да и со структурой не сложно.

Код:
MqlDateTime dt1;

// Заполнение структуры
TimeToStruct(Time[0], dt1); // Можно любое другое время и дату.

int CurrentDay = dt1.day;
А вот что ты имеешь ввиду под аккумуляцией и импульсной функцией? Увы...

Последний раз редактировалось AlexeyVik; 22.01.2015 в 07:36.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
DomovenokBrest (23.01.2015), strannik-ps (22.01.2015)
Старый 23.01.2015, 11:15   #3462 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547

По умолчанию Профи MQL4 - Как правильно написать код???


у меня возник вопрос как разделить по магику число открытых ордеров, если в советнике использовано две ТС, то есть на каждую ТС свой магик, то как сделать так, чтобы во внешних настройках задавать максимальное число открытых ордеров независимо в каждой ТС, ниже кусок кода как я его вижу, добавьте что и как нужно в него,я не хочу сложное решение, а как можно проще и короче в коде...да, я написал начало, и просил добавить что нету в моем коде... пишу в старом билде МЕ, извиняйте новый еще не освоил...
ЗАРАНЕЕ СПАСИБО!

PHP код:
extern int MaxTrades1 10;
extern int MaxTrades2 10;
extern int magic1 111;
extern int magic2 333;


int start() 
{
//---------TC1------------------
if(A>B)
 {
 
OrderSend(...);
 }

//----------TC2-----------------
if(C>D)
 {
 
OrderSend(...);
 }
//-----
}
//-----------end------------- 

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.01.2015, 16:20   #3463 (permalink)
Местный знаток
 
Аватар для gince
 
Регистрация: 09.09.2008
Адрес: Литва
Сообщений: 396
Репутация: 733
gince - gince - gince - gince - gince - gince - gince -
Сказал(а) спасибо: 180
Поблагодарили 733 раз(а) в 189 сообщениях
Поинты: 192
Отправить сообщение для gince с помощью Skype™
Привет .

Нажав на маленкую кнопочку "Move" можно перетащить все кнопки и "Label" в нам удобное место для дальнейшей работы. Но так неполучаеться.

Хочу сделать, чтобы "Label" при перетаскувании кнопок тоже паралельно перетаскивался, но он перетаскивается в противоположную сторонуи по высоте и по ширине. На сколько я понимаю, так тут проблема в параметрх

OBJPROP_XDISTANCE
OBJPROP_YDISTANCE
OBJPROP_CORNER
и еще, проблема в том, что перетаскивание и смена текста происходит с разных функций.Смена текста происходит при нажатий кнопки "change".

И еще вопрос, как изменит на кнопке "change" текст при ее нащатие ?



Будте добры, помогите разобратся.
Вложения:
Тип файла: mq4 but.mq4 (11.3 Кб, 7 просмотров)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Гинтарас
gince на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 24.01.2015, 18:00   #3464 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547
"у меня возник вопрос как разделить по магику число открытых ордеров, если в советнике использовано две ТС, то есть на каждую ТС свой магик, то как сделать так, чтобы во внешних настройках задавать максимальное число открытых ордеров независимо в каждой ТС, ниже кусок кода как я его вижу, добавьте что и как нужно в него,я не хочу сложное решение, а как можно проще и короче в коде...да, я написал начало, и просил добавить что нету в моем коде... пишу в старом билде МЕ, извиняйте новый еще не освоил...
ЗАРАНЕЕ СПАСИБО!"


Снимаю свой вопрос - он уже решен!
как говорится - получи ответ, и реши проблему еще лучше...

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

Последний раз редактировалось Milord; 24.01.2015 в 18:05.
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
_SERG_ (24.01.2015)
Старый 25.01.2015, 15:34   #3465 (permalink)
Прохожий
 
Аватар для Baburek
 
Регистрация: 26.11.2014
Сообщений: 1
Репутация: 1
Baburek
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 4

Вопрос Помогите написать советника


Добрый день!

Уважаемые господа программисты. Столкнулся с проблемой при написании советника. я в это деле новичок, по этому ума не хватает)). Кто чем может помогите).
Моей целью является написание советника, что бы он подсчитывал объем лотов отрытых ордеров другого советника (с имеющимся магиком) и при превышении этого объема лотов он открывал локовый ордер в обратную сторону, что бы защитить депозит от слива. Что бы при возвращении с работы домой можно было все это дело руками разрулить).
Начал писать. Наткнулся на команду "GetAmountLotFromOpenPos".
Начал с ней магические действия делать, но она все равно не заработала.
Помогите плиз. Может кто то, что то подобное делал уже.
Baburek вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 25.01.2015, 21:13   #3466 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Код:
int i, k = OrdersTotal();
double r = 0.0;

for(i = 0; i < k; i++)
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      if(OrderSymbol() == _Symbol)
         if(OrderType() == OP_BUY || OrderType() == OP_SELL)
            if(OrderMagicNumber() == mn)
               r += OrderLots();
Это код для посчета лотов по MagicNumber
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 27.01.2015, 07:40   #3467 (permalink)
Почётный гражданин
 
Аватар для kamilkz
 
Регистрация: 10.03.2010
Сообщений: 278
Репутация: 326
kamilkz kamilkz kamilkz kamilkz
Сказал(а) спасибо: 1,709
Поблагодарили 325 раз(а) в 124 сообщениях
Поинты: 18
Код HTML:
int lia_unused_20[][];
Подскажите, в новом билде при компиляции выдает ошибку:
'[' - invalid index value
Как исправить?
kamilkz на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 27.01.2015, 08:15   #3468 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,527
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,118
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от kamilkz Посмотреть сообщение
Код HTML:
int lia_unused_20[][];
Подскажите, в новом билде при компиляции выдает ошибку:
'[' - invalid index value
Как исправить?
Ну если попытаться потелепатить, то получается что этот массив передаётся в функцию, а в новом билде массивы должны передаваться ссылкой на массив.
Но это всего лишь проверка моих телепатических способностей.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
kamilkz (27.01.2015)
Старый 27.01.2015, 08:47   #3469 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Вроде как нельзя объявить двумерный массив динамическим.
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
AlexeyVik (27.01.2015), kamilkz (27.01.2015)
Старый 27.01.2015, 09:01   #3470 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,527
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,118
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от matro3 Посмотреть сообщение
Вроде как нельзя объявить двумерный массив динамическим.
Да. Ты прав. Плохой из меня телепат.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 27.01.2015, 10:18   #3471 (permalink)
Интересующийся
 
Аватар для djasper
 
Регистрация: 26.03.2013
Сообщений: 13
Репутация: 1
djasper
Сказал(а) спасибо: 6
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 16
Доброе время суток Уважаемые. Подскажите пожалуйста как прописать следующее условие: Если N-е количество баров назад находятся в определённом диапозоне пунктов тогда...
Например: если от 3 до 7 баров находятся в диапазоне 20 пипсов тогда...
Миниатюры:
Нажмите на изображение для увеличения
Название: eurusd-h1-fibo-group-ltd-2.jpg
Просмотров: 1
Размер:	7.3 Кб
ID:	194075  
djasper на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 27.01.2015, 11:20   #3472 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Сообщение от djasper Посмотреть сообщение
Доброе время суток Уважаемые. Подскажите пожалуйста как прописать следующее условие: Если N-е количество баров назад находятся в определённом диапозоне пунктов тогда...
Например: если от 3 до 7 баров находятся в диапазоне 20 пипсов тогда...
Код:
ushort backBars = 7;
ushort pointDistance = 200;
double highBar = 0, lowBar = 0;
for(int i = 0; i <= backBars; i++)
{
   if(High[i] > highBar)
      highBar = High[i];
   if(Low[i] < lowBar || lowBar == 0)
      lowBar = Low[i];
   if((highBar - lowBar) / _Point > pointDistance)
      return(true);
}
return(false);
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
djasper (27.01.2015)
Старый 28.01.2015, 13:48   #3473 (permalink)
Местный знаток
 
Аватар для vetallic
 
Регистрация: 31.08.2010
Сообщений: 352
Репутация: 511
vetallic - vetallic - vetallic - vetallic - vetallic - vetallic -
Сказал(а) спасибо: 87
Поблагодарили 509 раз(а) в 104 сообщениях
Поинты: 96
всем привет!
помогите дописать плиз,
- нужен размер открытых ордеров разных пар

напр:
EURUSD - лот 0,02
ПИЗUSD - лот 0,01

...
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if (OrderType() == OP_BUY && OrderSymbol() == "USDCAD" && OrderMagicNumber() == MN)
...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
vetallic вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 28.01.2015, 14:15   #3474 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Цитата:
всем привет!
помогите дописать плиз,
- нужен размер открытых ордеров разных пар
Ваши вопросы по языку MQL4
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 28.01.2015, 14:43   #3475 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1966
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,895 раз(а) в 1,071 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от vetallic Посмотреть сообщение
всем привет!
помогите дописать плиз,
- нужен размер открытых ордеров разных пар

напр:
EURUSD - лот 0,02
ПИЗUSD - лот 0,01

...
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if (OrderType() == OP_BUY && OrderSymbol() == "USDCAD" && OrderMagicNumber() == MN)
...
Сколько пар и какие известно, или это нужно вычислять?

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 28.01.2015, 14:46   #3476 (permalink)
Местный знаток
 
Аватар для vetallic
 
Регистрация: 31.08.2010
Сообщений: 352
Репутация: 511
vetallic - vetallic - vetallic - vetallic - vetallic - vetallic -
Сказал(а) спасибо: 87
Поблагодарили 509 раз(а) в 104 сообщениях
Поинты: 96
Сообщение от Ugar Посмотреть сообщение
Сколько пар и какие известно, или это нужно вычислять?
желательно вычислить открытую

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
vetallic вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 28.01.2015, 15:02   #3477 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1966
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,895 раз(а) в 1,071 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от vetallic Посмотреть сообщение
желательно вычислить открытую
Кого открытую?
По скольким парам считать известно? Строго 2 пары, строго 5 пар, или количество пар может меняться и его надо вычислить?
Названия пар по которым надо считать известно? Торговля ведётся по определённым парам или набор пар может меняться в процессе торговли?

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 28.01.2015, 15:13   #3478 (permalink)
Местный знаток
 
Аватар для vetallic
 
Регистрация: 31.08.2010
Сообщений: 352
Репутация: 511
vetallic - vetallic - vetallic - vetallic - vetallic - vetallic -
Сказал(а) спасибо: 87
Поблагодарили 509 раз(а) в 104 сообщениях
Поинты: 96
Сообщение от Ugar Посмотреть сообщение
Кого открытую?
По скольким парам считать известно? Строго 2 пары, строго 5 пар, или количество пар может меняться и его надо вычислить?
Названия пар по которым надо считать известно? Торговля ведётся по определённым парам или набор пар может меняться в процессе торговли?
- пара может быть любая (в зависимости от сигнала на открытие по любой паре)
- пар может быть много (так же - в зависимости от сигнала на открытие по любой паре)
- набор пар может меняться в процессе
- на каждой паре может быть только 1 ордер (либо бай либо селл)
- нужно суто снять лоты с открытых позиций всех открытых пар, чтоб потом работать с данными дальше...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
vetallic вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 28.01.2015, 17:00   #3479 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1966
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,895 раз(а) в 1,071 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от vetallic Посмотреть сообщение
- пара может быть любая (в зависимости от сигнала на открытие по любой паре)
- пар может быть много (так же - в зависимости от сигнала на открытие по любой паре)
- набор пар может меняться в процессе
- на каждой паре может быть только 1 ордер (либо бай либо селл)
- нужно суто снять лоты с открытых позиций всех открытых пар, чтоб потом работать с данными дальше...
Тогда так:
Код:
uint StructLen=0;
   //Структура массив для символов и лотов
   struct Lots{string symbol; double lots;};
   Lots lots[];
   ArrayResize(lots,1);
   lots[0].symbol="";
   //Цикл перебора ордеров
   for(int i=OrdersTotal()-1; i>=0; i--)
      {
      ResetLastError();
      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {
         Print("Ордер не выбран, ошибка ", _LastError);
         continue;
         }
      //Пропустить ордера чужих маджиков
      if(OrderMagicNumber()!=Magic)continue;
      StructLen++;
      //Если длина массива не =1, увеличить длину
      if(StructLen>1)ArrayResize(lots,StructLen);
      //Записать данные в структуру
      lots[StructLen-1].symbol=OrderSymbol();
      lots[StructLen-1].lots=OrderLots();
      }
В итоге, в структуре будут символы и лоты. Длина структуры соответствует количеству ордеров и символов. Если нет ордеров длина структуры будет =1, а в ячейке с названием символа будет пусто.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
mobidik (28.01.2015), vetallic (28.01.2015)
Старый 29.01.2015, 08:38   #3480 (permalink)
Интересующийся
 
Аватар для Palesandr
 
Регистрация: 19.03.2014
Сообщений: 9
Репутация: 4
Palesandr
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
Поинты: 5
всем привет
помогите с кодом

ТП фиксированный, без СЛ, лот фиксированный

открывается сразу два ордера, бай и селл. если, к примеру, бай закрылся по тейку, то открывается новый бай-ордер. если снова закрылся бай по тейку, то снова открываем бай-ордер.

вот такая простая логика.

как реализовать в коде? как смотреть какой ордер закрылся (баевский или селловский)?

спасибо
Palesandr вне форума   Ответить с цитированиемОтветить с цитированием  
Ответ

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


Опции темы

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

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



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


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