[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 431

 
r772ra:
double iClose( string symbol, int timeframe, int shift)

Как-то так.

Большое спасибо!



 
extern double lot = 1;
extern double ts = 50; 
extern double sl = 50; 
extern double tp = 40;
extern double periodrsi = 30;
extern double hirsi = 80;
extern double lowrsi = 30;

int K=0;
int L=0;
 


int init()
  {
   return(0);
  }

 
int start()
  { 
    double r1 = iRSI(NULL,0,periodrsi,PRICE_CLOSE,1);


  

    static bool first = true;
    static int pre_OrdersTotal = 0;
    int _OrdersTotal = OrdersTotal();
    if ( first )
    {
        pre_OrdersTotal = _OrdersTotal;
        first = false;
        return(0);
    }
 
   
   
   
    if ( _OrdersTotal > pre_OrdersTotal ) 
{K=0;
L=0;}
    if ( _OrdersTotal < pre_OrdersTotal )
{K=0;
L=0;}
    pre_OrdersTotal = _OrdersTotal; 

if (r1>hirsi) K=1;
 {
 if ((K==1) && (r1<hirsi))

 { 
  L=(L+1);                        // набираем проходы вниз под hirsi

K=0;
 }
 }



 if(OrdersTotal()<1)

 {
 if((r1<hirsi) && (L==2))   //есть два прохода

 OrderSend(Symbol(),OP_SELL,lot,Bid,0,Ask+sl*Point,Bid-tp*Point,"Easiest ever",0,0);
Здравствуйте друзья! подскажите такую функцию, которая бы добавила следующее условие в сей код. Сделка открывается только если rsi набрала два прохода вниз за n-ное колличество баров. то есть если за 30 баров rsi два раза прошла вниз - открываем ордер, не могу сообразить) начинающий совсем) 
 
TemirKhan:
Здравствуйте друзья! подскажите такую функцию, которая бы добавила следующее условие в сей код. Сделка открывается только если rsi набрала два прохода вниз за n-ное колличество баров. то есть если за 30 баров rsi два раза прошла вниз - открываем ордер, не могу сообразить) начинающий совсем) 


Заводишь счётчик. Потом при прогоне по истории считает по условию: " Если пересечение вниз, то к счётчику добавляешь еденичку... " и т.д.

 Учись и не торопись и всё получится! 

 
hoz:


Заводишь счётчик. Потом при прогоне по истории считает по условию: " Если пересечение вниз, то к счётчику добавляешь еденичку... " и т.д.

 Учись и не торопись и всё получится! 


Так ведь счетчик пересечений есть, вот он:
if (r1>hirsi) K=1;
 {
 if ((K==1) && (r1<hirsi))

 { 
  L=(L+1);                        // набираем проходы вниз под hirsi

K=0;
 }
 }
теперь надо счетчик баров, а как?)) да так, что бы  L могла набрать значение "2" только если пересечеия состоялись в пределах 30 баров
 

Я тут призадумался. Дабы развеять свои сомнения полез в функции Кима.. и.. мои доводы подтвердились. Почему-то проверка на "Свободность торгового потока" происходит только при открытии и закрытии ордеров. А при модификации (первоначальной установке SL и TP), при траале, а так же при переводе позиции в безубыток данной проверки нет. Почему? Ведь и там и там происходит обращение к серверу!

Ведь если торговый потом занять, то по логике эксперт не установит стопы, например, и, вообще, ничего с позицией не сделает. Что-то я этого не понял совсем... 

 
hoz:

Я тут призадумался. Дабы развеять свои сомнения полез в функции Кима.. и.. мои доводы подтвердились. Почему-то проверка на "Свободность торгового потока" происходит только при открытии и закрытии ордеров. А при модификации (первоначальной установке SL и TP), при траале, а так же при переводе позиции в безубыток данной проверки нет. Почему? Ведь и там и там происходит обращение к серверу!

Ведь если торговый потом занять, то по логике эксперт не установит стопы, например, и, вообще, ничего с позицией не сделает. Что-то я этого не понял совсем... 


Ничего страшного. Установит на следующем тике
 
Vinin:

Ничего страшного. Установит на следующем тике

Так в таком случае зачем при открытии или закрытии проверять? Тоже на следующем тике установит :) Ведь для скальпера это может сыграть огромную роль..
 
hoz:

Так в таком случае зачем при открытии или закрытии проверять? Тоже на следующем тике установит :) Ведь для скальпера это может сыграть огромную роль..

Так все в Ваших руках. Как сделаете так и будет. Кто-то так и поступает
 

Снова я заглянул в справку и снова прочёл строки тут:

https://docs.mql4.com/ru/basis/preprosessor/import

Для импорта функций во время выполнения mql4-программы используется так называемое позднее связывание. Это значит, что пока не вызвана импортируемая функция, соответствующий модуль (ex4 или dll) не загружается.

Имеется ввиду, что,  для того, чтобы загрузилась библиотека следует её вызвать в коде после строк импорта, так?

Например, я сделал у себя так:

#import "hoz_Base@Library.ex4"
   double ND(double A);
   double Get_TradePrice(int fi_priceId,       // Цена: 0 - Ask; 1 - Bid
                      string fs_symbol);

1. Получается, мы объявляем функции, которые будем использовать в эксперте в самом начале кода эксперта?

2. И чтоб  не объявлять их много в коде самого эксперта и используют заголовочные файлы? Т.е. только для объявлений?

Вопрос  такой возник потому, что попадались мне такие эксперты, которые написаны довольно-таки серьёзными программистами, НО у них в заголовочных файлах все основные и не основные функции вообще. Меня это удивило... Ведь скорость работы скомпилированных библиотек на порядок шустрее, к тому же, код библиотечных функций " изолирован ", что тоже весьма удобно.

 
Доброе утро, я тут у вас в первые, так что извиняйте, это тему не увидел и создал новую, очень нужно услышать профессионалов !

https://www.mql5.com/ru/forum/145453
Причина обращения: