Ответ
 
Опции темы
Старый 09.07.2016, 18:18   #4901 (permalink)
Новичок форума
 
Аватар для Cathylva
 
Регистрация: 18.01.2011
Сообщений: 10
Репутация: 5
Cathylva
Сказал(а) спасибо: 7
Поблагодарили 4 раз(а) в 3 сообщениях
Поинты: 12
Сообщение от _SERG_ Посмотреть сообщение
Справа внизу, в окошке пишешь имя переменной, или ячейки массива, или индексов перебора, Нажимаешь f11, и смотришь, соответствует результат ожидаемому, или надо подправить код.
и
Сообщение от _SERG_ Посмотреть сообщение
Например: ExtLowerBuffer[i] ...
Вот это мне и было нужно, чтобы въехать в отладчик. Благодарю!

Сегодня полдня ковырял свой код таким образом, но понял пока только то, что dpo считается правильно, но сходит с ума именно Боллинджер:

Вверху (точнее в посередине) - осциллятор, с наложенным на него стандартным индикатором Bollinger Bands Мета Трейдера, а внизу мое творение. Параметры у индюков идентичные.
Короче, для меня загадка почему при прочих равных условиях от цены ленты считаются нормально, а от dpo - какая-то ерунда получается.
Миниатюры:
Нажмите на изображение для увеличения
Название: crazy-bands.gif
Просмотров: 238
Размер:	25.8 Кб
ID:	247505  
Cathylva вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 09.07.2016, 18:26   #4902 (permalink)
 
Аватар для mobidik
 
Регистрация: 09.08.2012
Адрес: Ua_Khm
Сообщений: 1,647
Репутация: 8540
mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik
Сказал(а) спасибо: 633
Поблагодарили 8,536 раз(а) в 1,561 сообщениях
Поинты: 800
Сообщение от Cathylva Посмотреть сообщение
Сегодня полдня ковырял свой код таким образом, но понял пока только то, что dpo считается правильно, но сходит с ума именно Боллинджер.
Вверху (точнее в посередине) - осциллятор, с наложенным на него стандартным индикатором Bollinger Bands Мета Трейдера, а внизу мое творение. Параметры у индюков идентичные.
Короче, для меня загадка почему при прочих равных условиях от цены ленты считаются нормально, а от dpo - какая-то ерунда получается.
Загляни сюда: http://forexsystemsru.com/1135257-post7427.html
mobidik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Cathylva (09.07.2016)
Старый 09.07.2016, 19:04   #4903 (permalink)
Новичок форума
 
Аватар для Cathylva
 
Регистрация: 18.01.2011
Сообщений: 10
Репутация: 5
Cathylva
Сказал(а) спасибо: 7
Поблагодарили 4 раз(а) в 3 сообщениях
Поинты: 12
Сообщение от mobidik Посмотреть сообщение
Загляни сюда: http://forexsystemsru.com/1135257-post7427.html
Едрен, батон! Друг, ты меня прямо выручил. А то я прям зациклился на этом индюке. Первый раз пишу что-то с Боллинджером, о функции iBandsOnArray() даже и не знал. Короче, спасибо!
Cathylva вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
mobidik (09.07.2016)
Старый 10.07.2016, 13:57   #4904 (permalink)
Интересующийся
 
Аватар для alex_almaty
 
Регистрация: 27.02.2014
Сообщений: 9
Репутация: 1
alex_almaty
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 10
Всем доброго времени суток помогите с такой инфой. В советнике используется RSI теперь мне нужно прописать MA от этой RSI. Никак не могу понять как в mql прописать МА от RSI. Наверняка уже кто то это делал.
alex_almaty вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 10.07.2016, 15:05   #4905 (permalink)
Местный житель
 
Аватар для Cemen4yk1
 
Регистрация: 18.09.2014
Сообщений: 222
Репутация: 245
Cemen4yk1 - Cemen4yk1 - Cemen4yk1 -
Сказал(а) спасибо: 35
Поблагодарили 244 раз(а) в 101 сообщениях
Поинты: 205
Сообщение от alex_almaty Посмотреть сообщение
Всем доброго времени суток помогите с такой инфой. В советнике используется RSI теперь мне нужно прописать MA от этой RSI. Никак не могу понять как в mql прописать МА от RSI. Наверняка уже кто то это делал.
iMAOnArray вам в помощь, но проще найти индикатор сглаженного рси

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

https://www.mql5.com/ru/market/product/17748
Cemen4yk1 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 14.07.2016, 03:15   #4906 (permalink)
Интересующийся
 
Аватар для AleksandM
 
Регистрация: 14.07.2016
Сообщений: 3
Репутация: 1
AleksandM
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 2
Всем здрасти) кто нибудь сможет мне помочь разобраться с советником. Написал советник на внешнем индикаторе по видео уроку. Все получилось но не так как хотелось бы) сделки открывает но как то не опираясь на данные индикатора(
AleksandM на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 14.07.2016, 19:05   #4907 (permalink)
Новичок форума
 
Аватар для ivansss
 
Регистрация: 11.12.2015
Сообщений: 34
Репутация: 16
ivansss
Сказал(а) спасибо: 21
Поблагодарили 15 раз(а) в 6 сообщениях
Поинты: 40
Ребят хочу мартин реализовать для бинарных:

У меня есть код ,который я попытался допилить ,но не уверен в его правильности,
суть в том что у меня возврашаеться единица ,если по паре был последний ордер убыточный и далее ордер множиться,проверьте пожалуста


int FindLastOrederType()
{

for ( int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol()&& OrderTakeProfit() < -1 && OrderMagicNumber()==Magic)
{
Martin = 1;
}
return( Martin );
}

}
return(-1);
ivansss на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 15.07.2016, 13:13   #4908 (permalink)
Элитный участник
 
Аватар для officialboob
 
Регистрация: 13.07.2013
Адрес: Moscow
Сообщений: 2,270
Репутация: 1260
officialboob officialboob officialboob officialboob officialboob officialboob officialboob officialboob officialboob
Сказал(а) спасибо: 63
Поблагодарили 1,301 раз(а) в 826 сообщениях
Поинты: 1468
Сообщение от ivansss Посмотреть сообщение
Ребят хочу мартин реализовать для бинарных:

У меня есть код ,который я попытался допилить ,но не уверен в его правильности,
суть в том что у меня возврашаеться единица ,если по паре был последний ордер убыточный и далее ордер множиться,проверьте пожалуста

PHP код:
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает флаг убыточности последней позиции. *               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isLossLastPos(string sy=""int op=-1int mn=-1) {
  
datetime t=0;
  
int      ij=-1k=OrdersHistoryTotal();

  if (
sy=="0"sy=Symbol();
  for (
i=0i<ki++) {
    if (
OrderSelect(iSELECT_BY_POSMODE_HISTORY)) {
      if (
OrderSymbol()==sy || sy=="") {
        if (
OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (
op<|| OrderType()==op) {
            if (
mn<|| OrderMagicNumber()==mn) {
              if (
t<OrderCloseTime()) {
                
t=OrderCloseTime();
                
j=i;
              }
            }
          }
        }
      }
    }
  }
  if (
OrderSelect(jSELECT_BY_POSMODE_HISTORY)) {
    if (
OrderProfit()<0) return(True);
  }
  return(
False);


_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Всем бобра!
Алексея Бонифациевича Фіерсова (Пылесоса) на портянку!
officialboob вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
ivansss (15.07.2016), RoboMaks (17.07.2016)
Старый 17.07.2016, 06:17   #4909 (permalink)
Элитный участник
 
Аватар для RoboMaks
 
Регистрация: 19.08.2012
Адрес: Баку, Азербайджан
Сообщений: 651
Репутация: 1128
RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks
Сказал(а) спасибо: 322
Поблагодарили 1,118 раз(а) в 442 сообщениях
Поинты: 623
Отправить сообщение для RoboMaks с помощью Skype™
Огромнейшее человеческое СПАСИБО И. Киму за его неоценимую помощь !!!
Очень много ответов на вопросы можно с лёгкостью найти здесь:
_https://forum.mql4.com/ru/11287
Вложения:
Тип файла: docx KimIV.docx (92.9 Кб, 5 просмотров)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Программирование советников, индикаторов и скриптов для МТ4
контакты для платных работ:
e-mail: maksshukurov@mail.ru
skype: maksshukurov1
RoboMaks вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
DomovenokBrest (17.07.2016)
Старый 18.07.2016, 19:49   #4910 (permalink)
Прохожий
 
Аватар для alhoya
 
Регистрация: 26.10.2014
Сообщений: 1
Репутация: 1
alhoya
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 2
Всем привет кто-нибудь может помочь поправить код?

Есть трейлинг стоп, вот код:

void TrailingPositions() {
double pBid, pAsk, pp;

pp = MarketInfo(OrderSymbol(), MODE_POINT);
if (OrderType()==OP_BUY)
{
if (OrderMagicNumber()==Magic || OrderMagicNumber()==Magic2)
{
pBid = MarketInfo(OrderSymbol(), MODE_BID);
if (!ProfitTrailing || (Bid-OrderOpenPrice())>TrailingStop*pp) {
if (OrderStopLoss()<Bid-(TrailingStop+TrailingStep-1)*pp) {
ModifyStopLoss(Bid-TrailingStop*pp);
return;
}
}
}
}


if (OrderType()==OP_SELL)
{
if (OrderMagicNumber()==Magic || OrderMagicNumber()==Magic2)
{
pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
if (!ProfitTrailing || OrderOpenPrice()-Ask>TrailingStop*pp) {
if (OrderStopLoss()>Ask+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
ModifyStopLoss(Ask+TrailingStop*pp);
return;
}
}
}
}
}

На 5 знаке всё отлично работает а на 4 знаке сделки не открываются по тем же ценам я не знаю что изменить в коде,сломал почти голову,
кто поможет отблагодарю 10$
alhoya вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 18.07.2016, 20:36   #4911 (permalink)
Местный житель
 
Аватар для Cemen4yk1
 
Регистрация: 18.09.2014
Сообщений: 222
Репутация: 245
Cemen4yk1 - Cemen4yk1 - Cemen4yk1 -
Сказал(а) спасибо: 35
Поблагодарили 244 раз(а) в 101 сообщениях
Поинты: 205
Сообщение от alhoya Посмотреть сообщение
Всем привет кто-нибудь может помочь поправить код?

Есть трейлинг стоп, вот код:

void TrailingPositions() {
double pBid, pAsk, pp;

pp = MarketInfo(OrderSymbol(), MODE_POINT);
if (OrderType()==OP_BUY)
{
if (OrderMagicNumber()==Magic || OrderMagicNumber()==Magic2)
{
pBid = MarketInfo(OrderSymbol(), MODE_BID);
if (!ProfitTrailing || (Bid-OrderOpenPrice())>TrailingStop*pp) {
if (OrderStopLoss()<Bid-(TrailingStop+TrailingStep-1)*pp) {
ModifyStopLoss(Bid-TrailingStop*pp);
return;
}
}
}
}


if (OrderType()==OP_SELL)
{
if (OrderMagicNumber()==Magic || OrderMagicNumber()==Magic2)
{
pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
if (!ProfitTrailing || OrderOpenPrice()-Ask>TrailingStop*pp) {
if (OrderStopLoss()>Ask+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
ModifyStopLoss(Ask+TrailingStop*pp);
return;
}
}
}
}
}

На 5 знаке всё отлично работает а на 4 знаке сделки не открываются по тем же ценам я не знаю что изменить в коде,сломал почти голову,
кто поможет отблагодарю 10$
корявенький код, кажись вы не используете автоопределение 4-5 знака в корне кода - не надо пихать его в каждую функцию, скорее всего попутали что такое Point и куда его пихать а также не вижу использование функции Digits есть такие полезные предопределённые функции _Point и _Digits так либо так Point() и Digits() - почитайте в справке по кнопке ф1 зачем и куда они нужны

пысы а пример "правильного" кода "трала" посмотрите в кодбазе на мкл-маркете -примеров предостаточно и все бесплатные https://www.mql5.com/ru/code

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

https://www.mql5.com/ru/market/product/17748

Последний раз редактировалось Cemen4yk1; 18.07.2016 в 20:41.
Cemen4yk1 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.07.2016, 21:29   #4912 (permalink)
Элитный участник
 
Аватар для officialboob
 
Регистрация: 13.07.2013
Адрес: Moscow
Сообщений: 2,270
Репутация: 1260
officialboob officialboob officialboob officialboob officialboob officialboob officialboob officialboob officialboob
Сказал(а) спасибо: 63
Поблагодарили 1,301 раз(а) в 826 сообщениях
Поинты: 1468
Сообщение от alhoya Посмотреть сообщение
Всем привет кто-нибудь может помочь поправить код?

Замените функции трала на Кимовские (из советника ниже) и все будет ОК.

А если хотите исправлять существующие, разбирайтесь с корректным использованием в коде Point и Digits...


Ну еще может не работать если от TrailingStop, TrailingStep не отнимается лишний нолик.
Вложения:
Тип файла: mq4 e-Trailing2.mq4 (12.7 Кб, 6 просмотров)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Всем бобра!
Алексея Бонифациевича Фіерсова (Пылесоса) на портянку!

Последний раз редактировалось officialboob; 18.07.2016 в 21:34.
officialboob вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.07.2016, 16:14   #4913 (permalink)
Новичок форума
 
Аватар для ivansss
 
Регистрация: 11.12.2015
Сообщений: 34
Репутация: 16
ivansss
Сказал(а) спасибо: 21
Поблагодарили 15 раз(а) в 6 сообщениях
Поинты: 40
Помогите пожалуйста , нужно чтобы возглашалась цена открытия последнего ордера независимо закрыт он или открыт,в моем коде возврашаеться цена открытого ордера.

double lastOrderPrice()

{ int oldtickets;
ticket = 0;
double oldopenprices=0;
for (int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(cnts,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gic)
{
oldtickets =OrderTicket();
if(oldtickets>ticket)
{
ticket = oldtickets;
oldopenprices = OrderOpenPrice();
}
}
}
}
return(oldopenprices);
}
ivansss на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 30.07.2016, 17:09   #4914 (permalink)
Активный участник
 
Аватар для vladradon
 
Регистрация: 12.02.2015
Сообщений: 104
Репутация: 37
vladradon
Сказал(а) спасибо: 23
Поблагодарили 37 раз(а) в 25 сообщениях
Поинты: 168
Сообщение от alhoya Посмотреть сообщение
Всем привет кто-нибудь может помочь поправить код?

Есть трейлинг стоп, вот код:

void TrailingPositions() {
double pBid, pAsk, pp;

pp = MarketInfo(OrderSymbol(), MODE_POINT);
if (OrderType()==OP_BUY)
{
if (OrderMagicNumber()==Magic || OrderMagicNumber()==Magic2)
{
pBid = MarketInfo(OrderSymbol(), MODE_BID);
if (!ProfitTrailing || (Bid-OrderOpenPrice())>TrailingStop*pp) {
if (OrderStopLoss()<Bid-(TrailingStop+TrailingStep-1)*pp) {
ModifyStopLoss(Bid-TrailingStop*pp);
return;
}
}
}
}


if (OrderType()==OP_SELL)
{
if (OrderMagicNumber()==Magic || OrderMagicNumber()==Magic2)
{
pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
if (!ProfitTrailing || OrderOpenPrice()-Ask>TrailingStop*pp) {
if (OrderStopLoss()>Ask+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
ModifyStopLoss(Ask+TrailingStop*pp);
return;
}
}
}
}
}

На 5 знаке всё отлично работает а на 4 знаке сделки не открываются по тем же ценам я не знаю что изменить в коде,сломал почти голову,
кто поможет отблагодарю 10$
Возможно нужно внести проверку на стоп уровень:

void TrailingPositions() {
if (MarketInfo(_Symbol,MODE_STOPLEVEL)>=TrailingStop)
{
Alert ("Стоп уровень ",MarketInfo(_Symbol,MODE_STOPLEVEL),
" больше дистанции трейлинга ", TrailingStop);
return;
}
.......

Если дистанция трала меньше или равна стоп уровню, который на разных брокерах и разных парах разный может быть, то трал работать не будет.

Последний раз редактировалось vladradon; 30.07.2016 в 17:14.
vladradon вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.07.2016, 17:36   #4915 (permalink)
Местный житель
 
Аватар для Cemen4yk1
 
Регистрация: 18.09.2014
Сообщений: 222
Репутация: 245
Cemen4yk1 - Cemen4yk1 - Cemen4yk1 -
Сказал(а) спасибо: 35
Поблагодарили 244 раз(а) в 101 сообщениях
Поинты: 205
Сообщение от ivansss Посмотреть сообщение
Помогите пожалуйста , нужно чтобы возглашалась цена открытия последнего ордера независимо закрыт он или открыт,в моем коде возврашаеться цена открытого ордера.

double lastOrderPrice()

{ int oldtickets;
ticket = 0;
double oldopenprices=0;
for (int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(cnts,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gic)
{
oldtickets =OrderTicket();
if(oldtickets>ticket)
{
ticket = oldtickets;
oldopenprices = OrderOpenPrice();
}
}
}
}
return(oldopenprices);
}
ну у вас же стоит MODE_TRADES, сделайте такуюже переборку ордеров, но в истории используюя OrdersHistoryTotal() и MODE_HISTORY, а потом сравните тикеты там и там и выберите наибольший

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

https://www.mql5.com/ru/market/product/17748
Cemen4yk1 на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
ivansss (30.07.2016)
Старый 30.07.2016, 17:57   #4916 (permalink)
Новичок форума
 
Аватар для ivansss
 
Регистрация: 11.12.2015
Сообщений: 34
Репутация: 16
ivansss
Сказал(а) спасибо: 21
Поблагодарили 15 раз(а) в 6 сообщениях
Поинты: 40
Сообщение от Cemen4yk1 Посмотреть сообщение
ну у вас же стоит MODE_TRADES, сделайте такуюже переборку ордеров, но в истории используюя OrdersHistoryTotal() и MODE_HISTORY, а потом сравните тикеты там и там и выберите наибольший
double lastOrderPrice()

{ int oldtickets,ocntickets;
ticket = 0;
double oldopenprices=0;
double openprices=0;
double openpricess =0;

for (int i=OrdersHistoryTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gic)
{
oldtickets =OrderTicket();
{if(oldtickets>ticket)
{ticket = oldtickets;
openprices = OrderOpenPrice();

}
}
}
}
}

for (int x=OrdersTotal()-1;x>=0;x--)
{
if(OrderSelect(x,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gic)
{
ocntickets =OrderTicket();
{if(ocntickets>ticket)
{ticket = ocntickets;
openpricess = OrderOpenPrice();
}
}
}
}
}


if(oldtickets>ocntickets)
{oldopenprices = openprices;}

if(oldtickets<ocntickets)
{oldopenprices=openpricess;
}



return(oldopenprices);
}


получилось подобное,спасибо)
ivansss на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 01.08.2016, 11:36   #4917 (permalink)
Новичок форума
 
Аватар для ValPra
 
Регистрация: 12.11.2012
Сообщений: 9
Репутация: 5
ValPra
Сказал(а) спасибо: 8
Поблагодарили 4 раз(а) в 2 сообщениях
Поинты: 8
Уважаемые специалисты!
Прошу вас подсказать в чём проблема и разгадать загадку.
Элементарный исходный файл SB-experiments.mq4 откомпилирован в разных версиях:
Для компилятора MetaEditor 4.00 Build 509 (файл SB-experiments-OLD.ex4) SB-experiments работает правильно.
Для компилятора MetaEditor 5.00 Build 1351 (файл SB-experiments-NEW.ex4) в SB-experiments не работает подпрограмма "start".
Прошу подсказать причину не работы "start" для нового компилятора.

В виде текста:

#property copyright "Copyright 2016 by ValPra"
#property show_inputs
//#property strict
#include <stdlib.mqh>
#include <stderror.mqh>

extern string OrderCmt = "SB-experiments";
extern int QuantityOfTicks = 30;

string Currpair;
int loopcount=0;
int array_time[30];
double array_ask[30];
double array_bid[30];

void init()
{
ArrayResize(array_ask, QuantityOfTicks);
ArrayResize(array_bid, QuantityOfTicks);
ArrayResize(array_time, QuantityOfTicks);
Currpair = Symbol();
Print ("========== Initialization complete! ===========\n");
return;
}

void start()
{
int sub_loopcount = 0;

if (loopcount < QuantityOfTicks)
{

array_ask[loopcount] = MarketInfo(Currpair, MODE_ASK);
array_bid[loopcount] = MarketInfo(Currpair, MODE_BID);
array_time[loopcount] = TimeCurrent();

Print ("Please wait until enough of ticks data has been gathered! Tick number ",loopcount," ASK=",array_ask[loopcount]," BID=",array_bid[loopcount]," Time=",array_time[loopcount]);
sub_loopcount = loopcount + 1;

if (sub_loopcount == QuantityOfTicks)
Print ("Trade started!");
}

if (loopcount >= QuantityOfTicks)
{
ArrayCopy(array_ask, array_ask, 0, 1, QuantityOfTicks - 1);
ArrayCopy(array_bid, array_bid, 0, 1, QuantityOfTicks - 1);
ArrayCopy(array_time, array_time, 0, 1, QuantityOfTicks - 1);
array_ask[QuantityOfTicks - 1] = MarketInfo(Currpair, MODE_ASK);
array_bid[QuantityOfTicks - 1] = MarketInfo(Currpair, MODE_BID);
array_time[QuantityOfTicks - 1] = TimeCurrent();
}
else
loopcount = loopcount + 1;

return;
}

void deinit()
{
Print (OrderCmt, " has been deinitialized!");
return;
}
Вложения:
Тип файла: mq4 SB-experiments.mq4 (1.6 Кб, 4 просмотров)
Тип файла: ex4 SB-experiments-OLD.ex4 (4.6 Кб, 0 просмотров)
Тип файла: ex4 SB-experiments-NEW.ex4 (8.8 Кб, 1 просмотров)
ValPra вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 01.08.2016, 13:27   #4918 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 241
Репутация: 74
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 74 раз(а) в 60 сообщениях
Поинты: 282
Сообщение от ValPra Посмотреть сообщение
Уважаемые специалисты!
Прошу вас подсказать в чём проблема и разгадать загадку.
Элементарный исходный файл SB-experiments.mq4 откомпилирован в разных версиях:
Для компилятора MetaEditor 4.00 Build 509 (файл SB-experiments-OLD.ex4) SB-experiments работает правильно.
Для компилятора MetaEditor 5.00 Build 1351 (файл SB-experiments-NEW.ex4) в SB-experiments не работает подпрограмма "start".
Прошу подсказать причину не работы "start" для нового компилятора.

В виде текста:

#property copyright "Copyright 2016 by ValPra"
#property show_inputs
//#property strict
#include <stdlib.mqh>
#include <stderror.mqh>

extern string OrderCmt = "SB-experiments";
extern int QuantityOfTicks = 30;

string Currpair;
int loopcount=0;
int array_time[30];
double array_ask[30];
double array_bid[30];

void init()
{
ArrayResize(array_ask, QuantityOfTicks);
ArrayResize(array_bid, QuantityOfTicks);
ArrayResize(array_time, QuantityOfTicks);
Currpair = Symbol();
Print ("========== Initialization complete! ===========\n");
return;
}

void start()
{
int sub_loopcount = 0;

if (loopcount < QuantityOfTicks)
{

array_ask[loopcount] = MarketInfo(Currpair, MODE_ASK);
array_bid[loopcount] = MarketInfo(Currpair, MODE_BID);
array_time[loopcount] = TimeCurrent();

Print ("Please wait until enough of ticks data has been gathered! Tick number ",loopcount," ASK=",array_ask[loopcount]," BID=",array_bid[loopcount]," Time=",array_time[loopcount]);
sub_loopcount = loopcount + 1;

if (sub_loopcount == QuantityOfTicks)
Print ("Trade started!");
}

if (loopcount >= QuantityOfTicks)
{
ArrayCopy(array_ask, array_ask, 0, 1, QuantityOfTicks - 1);
ArrayCopy(array_bid, array_bid, 0, 1, QuantityOfTicks - 1);
ArrayCopy(array_time, array_time, 0, 1, QuantityOfTicks - 1);
array_ask[QuantityOfTicks - 1] = MarketInfo(Currpair, MODE_ASK);
array_bid[QuantityOfTicks - 1] = MarketInfo(Currpair, MODE_BID);
array_time[QuantityOfTicks - 1] = TimeCurrent();
}
else
loopcount = loopcount + 1;

return;
}

void deinit()
{
Print (OrderCmt, " has been deinitialized!");
return;
}
Подсказываю:
MQL4 и MQL5, сАвсЭЭЭм нЭ много отличаются друг от друга.
С деталями отличий можно ознакомиться сравнив документацию.

Суть вопроса на самом деле, несколько друга, например:"Чёт не работает, а чЁ не пойму?!!"
Доку внимательно посмотри, по коду пройдись, с озвучиванием, для себя каждого оператора, для понимания, что происходит,
Ну отладчик в помощь.
Правда в 509 терминале его нет, но это не суть важно.
Для этого и был комментарий с озвучиванием операторов в слух.

Последний раз редактировалось _SERG_; 01.08.2016 в 13:34.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
ValPra (01.08.2016)
Старый 01.08.2016, 15:26   #4919 (permalink)
Новичок форума
 
Аватар для ValPra
 
Регистрация: 12.11.2012
Сообщений: 9
Репутация: 5
ValPra
Сказал(а) спасибо: 8
Поблагодарили 4 раз(а) в 2 сообщениях
Поинты: 8
Благодарю Вас. Однако моя проблема сложнее. У меня MetaTrader 4.0 Build 988 и при нём MetaEditor 5.0 Build 1351, но это не mql5. Бывает ли такое, чтобы при MetaTrader 4.0 был MetaEditor для mql5?
ValPra вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 01.08.2016, 15:32   #4920 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 828
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 842 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от ValPra Посмотреть сообщение
Благодарю Вас. Однако моя проблема сложнее. У меня MetaTrader 4.0 Build 988 и при нём MetaEditor 5.0 Build 1351, но это не mql5. Бывает ли такое, чтобы при MetaTrader 4.0 был MetaEditor для mql5?
Да всё верно, это версия от 4 июля, MQL4, только от это у вас индикатор или сова?
Все равно лучше использовать не start(), а OnTick(), а в индюке OnCalcalate()
Хрен их знает эту обратную совместимость, хотя должно вроде работать и так.
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
ValPra (01.08.2016)
Ответ

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


Опции темы

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

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



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


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