Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 742

 
psyman:


Спасибо большое, завтра буду думать чем заменить iTime и iClose, тк сижу на XP.

//+------------------------------------------------------------------+ 
//| Get Time for specified bar index                                 | 
//+------------------------------------------------------------------+ 
datetime iTime(const int index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT)
  {
   if(symbol==NULL)
      symbol=m_symbol.Name();
   if(timeframe==0)
      timeframe=Period();
   datetime Time[1];
   datetime time=0;
   int copied=CopyTime(symbol,timeframe,index,1,Time);
   if(copied>0) time=Time[0];
   return(time);
  }
//+------------------------------------------------------------------+
 

Как скомпилировать отдельно функцию, например трала, чтобы можно было её вызывать - импортировать из советников?

наподобие как  .mqh или dll

 
demonRDV:

Здравствуйте всем!

Подскажите, пожалуйста, почему при работающем советнике я не могу войти в его свойства ? Раньше заходил, сейчас свойства не открываются. Один раз помогла перезагрузка терминала, но проблема через минуту появилась опять. Советник свежий, терминал тоже работает недавно. В чем проблема со свойствами советника ?

Спасибо!

скорее всего он зациклен без проверки на прерывание. 
исходники есть? ранее с этим советником проблема была?

 
Ghabo:

Как скомпилировать отдельно функцию, например трала, чтобы можно было её вызывать - импортировать из советников?

наподобие как вызывается .mqh

как то так.

в советнике
#include <trall.mqh>

и непосредственно в коде вызывайте функцию trall, например

int trall_size = 20;
int trall_start = 30;
int trall_step = 5;


trall("",0,-1, trall_size, trall_start, trall_step); // тралл всех ордеров по счету с заданными параметрами

int magic = 345;
trall(_Symbol,magic, OP_BUY, trall_size, trall_start, trall_step); // тралл только БАЙ ордеров по текущему инструменту с заданными меджиком с заданными параметрами

Файлы:
trall.mqh  27 kb
 
Maxim Kuznetsov:

Нажмите хот-кей F7 :-)

мышкой по значку советника не всегда получается - и значок может быть перекрыт другими объектами и советник очередь сообщений грузит и ещё 100500 причин

да это я догадался. Не помогает )
 
Nikolay Khrushchev:

как то так.

в советнике
#include <trall.mqh>

Дык имел ввиду что файл трала должен быть скомпилирован отдельно, иметь расширение ex4.

#include <trall.ex4>

или

#import "trall.ex4"
    ...
    ...
    ...
#import
Внутрь самой функции трала что нужно вставить?
 
Ghabo:

Дык имел ввиду что файл трала должен быть скомпилирован.

или

Внутрь самой функции трала что нужно вставить?

А зачем такие извращения? Разве не проще вписать функцию в советник или как было предложено с файлом .mqh

Или есть советник с тралом, но нет исходника? Но если после названия функции нет модификатора export, то импортировать её в другой советник будет невозможно.

Ещё один недостаток таких библиотек в том, что её надо вместе с советником перетаскивать в новый терминал вместе с советником. А если использовать включаемый файл .mqh то в другой терминал можно скопировать только откомпилированный советник.

Экспортирование функций - Функции - Основы языка - Справочник MQL4
Экспортирование функций - Функции - Основы языка - Справочник MQL4
  • docs.mql4.com
Экспортирование функций - Функции - Основы языка - Справочник MQL4
 
Alexey Viktorov:

А зачем такие извращения?

Фетиш такой)

Вот так, должно работать

#property strict
void trall(string tr_symbol, int tr_magic, int tr_type, double tr_trall_size, double tr_trall_start, double tr_trall_step=1) export {
   if(tr_type>1) return;
   int ti;
   for(ti=OrdersTotal()-1;ti>=0;ti--) if(OrderSelect(ti,SELECT_BY_POS,MODE_TRADES)) {
      if(OrderSymbol()!=tr_symbol && tr_symbol!="") continue;
      if(OrderMagicNumber()!=tr_magic && tr_magic>0) continue;
      if(tr_type>=0 && OrderType()!=tr_type) continue;
      double work_price;
      double work_pp = SymbolInfoDouble(_Symbol,SYMBOL_POINT);
      int    work_dig = SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);
      if(tr_trall_size>0) {
         if(OrderType()==0) {
            work_price = SymbolInfoDouble(_Symbol,SYMBOL_BID);
            if(NormalizeDouble(work_price-(tr_trall_size+tr_trall_step)*work_pp, work_dig)>NormalizeDouble(OrderStopLoss(), work_dig) && 
               NormalizeDouble(work_price-tr_trall_start*work_pp, work_dig)>=NormalizeDouble(OrderOpenPrice(), work_dig)) 
                  OrderModify(OrderTicket(),-1,0,NormalizeDouble( work_price-tr_trall_size*work_pp, work_dig),-1,-1);
            }
         if(OrderType()==1) {
            work_price = SymbolInfoDouble(_Symbol,SYMBOL_BID);
            if((NormalizeDouble(work_price+(tr_trall_size+tr_trall_step)*work_pp,work_dig)<NormalizeDouble(OrderStopLoss(),work_dig) || OrderStopLoss()==0) && 
               NormalizeDouble(work_price+tr_trall_start*work_pp,work_dig)<=NormalizeDouble(OrderOpenPrice(),work_dig)) 
                  OrderModify(OrderTicket(),-1,0,NormalizeDouble(work_price+tr_trall_size*work_pp, work_dig),-1,-1);
         }
      }
   }
}

или я export не туда ставлю?

 
Ghabo:

Фетиш такой)

Вот так, должно работать

или я export не туда ставлю?

Вроде-бы туда. Надо ещё разобраться как прописать импорт в кавычках или угловых скобках. Зависит от размещения этого файла в папке Libraries или там-же где и эксперт импортирующий функции этой библиотеки. Я это экспериментировал очень давно и не помню, а сейчас искать как сделать, мне извини лениво.
 
psyman:


Спасибо большое, завтра буду думать чем заменить iTime и iClose, тк сижу на XP.

Вот, чисто код для метки. Бегает за ценой Bid хоть так, хоть при прокрутке графика, хоть после переключения графиков. Бегает за перекрестием и запоминает заданное таким образом смещение, продолжая потом ориентироваться на Bid.

PS хп даже я уже сменил недавно т.к. всё уже начинает идти в отказ, часть сайтов требует обновления браузера, а он уже не может быть обновлён на хп,

ограничение озу до 3.7gb мне терпеть тоже надоело

для хп нет поддержки тестирования сов на всех ядрах проца

Файлы:
Причина обращения: