Вопрос к знатокам MQL - страница 10

 
Rita:

О, я еще думал :)

Если

if (NumberOfPositions(NULL, OP_BUY,Magic)>=2 && NumberOfPositions(NULL,OP_SELL,Magic)>=2) {
 for{
// а сюда счетчик, по которому 2 раза пройдет
                    ClosePosFirstProfit(NULL,OP_BUY, Magic);
                    ClosePosFirstProfit(NULL,OP_SELL, Magic);
}
}
Не?

 
Благодарю, Abzasc, попробую.
 
Здравствуйте! Я только недавно начал учиться писать в MQL4 и не понимаю, как (какой командой) в работу советника можно подключить не встроенный индикатор, а взятый из Code Base? Подскажите кто может!
 
savage_pinguin:
Здравствуйте! Я только недавно начал учиться писать в MQL4 и не понимаю, как (какой командой) в работу советника можно подключить не встроенный индикатор, а взятый из Code Base? Подскажите кто может!

iCustom() в помощь
 

Добрый день.

 if  ( Accumulation2MA_1<=MA_1  &&    Accumulation2MA_0>MA_0 )   {
// если линии пересеклись - открываем позицию
   ticket=OrderSend(Symbol(),0,Lot,Ask,Slippage,Bid-SL*Point,Ask+TP*Point,
                                             "Хи-Хи",MagicNum,0,CLR_NONE);
     if(ticket < 0) { Print("Ошибка открытия ордера BUY #", GetLastError()); 
               Sleep(10000);   return (0); }
   }

В советнике используется пользовательский индикатор Accumulation2MA, на который в режиме iMAOnArray вешается индикатор МА.

Сигналы входа/выхода - пересечение линий!

Не пойму, в чем дело. Но половина сигналов на открытие/зарытие "внаглую" ингорируется! Без причин!

Тоже самое и при закрытии:

 for (int v=0; v<OrdersTotal(); v++)                             {//сортируем       
      if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES))               {//перебираем           
        if (OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNum)   {//выбираем 
//-----------------------------------------------------                  
if (OrderType() == OP_SELL) {//если линии пересеклись, то закрываем: 
      if( Accumulation2MA_1<=MA_1  &&    Accumulation2MA_0>MA_0 )   {
                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
                 return(0); // выходим
                }   
......

Таким образом почти половина сделок  пропускается. Подскажите, в чем дело?

Условия-то - самые простейшие!  Линии песесекаются со всей очевидностью! Но позиции не всегда откр/закр!  Журнал "молчит".

Показала их стрелками. 

 

 

//------заполняем массив значениями Accumulation2MA -----------------
double Accumulation2MA[50];
int    i=0;  while (i<50)  {
Accumulation2MA[i]= iCustom(NULL, 0,"Accumulation2MA_v03",SMA,FMA,0, i);
                  i++;     }
//------Вешаем на Accumulation2MA - линию МА ---------------
ArraySetAsSeries(Accumulation2MA,true);
double MA_0 = iMAOnArray(Accumulation2MA,0,MA_Period,0,MODE_SMA,0);
double MA_1 = iMAOnArray(Accumulation2MA,0,MA_Period,0,MODE_SMA,1);
double Accumulation2MA_0=iCustom(NULL, 0,"Accumulation2MA_v03",SMA,FMA,0,0);
double Accumulation2MA_1=iCustom(NULL, 0,"Accumulation2MA_v03",SMA,FMA,0,1);
 
Rita:

Добрый день.

В советнике используется пользовательский индикатор Accumulation2MA, на который в режиме iMAOnArray вешается индикатор МА.

Сигналы входа/выхода - пересечение линий!

Не пойму, в чем дело. Но половина сигналов на открытие/зарытие "внаглую" ингорируется! Без причин!

Тоже самое и при закрытии:

Таким образом почти половина сделок пропускается. Подскажите, в чем дело?

Условия-то - самые простейшие! Линии песесекаются со всей очевидностью! Но позиции не всегда откр/закр! Журнал "молчит".

Показала их стрелками.

Наверное такое может случаться при пропуске тиков. Т.е. во время работы Start() приходит новый тик (в котором условия были бы выполнены), но он игнорируется, пока функция Start() в работе.

В следующем тике условия уже не выполняются - проехали.

Вапче пересечение линий индикаторов - сигнал очень неудобный, я давно не пользуюсь. Лучше вычесть один индикатор из другого и отслеживать пересечение нуля. Впочем - дело вкуса.

 
Rita:

Добрый день.

В советнике используется пользовательский индикатор Accumulation2MA, на который в режиме iMAOnArray вешается индикатор МА.

Сигналы входа/выхода - пересечение линий!

Не пойму, в чем дело. Но половина сигналов на открытие/зарытие "внаглую" ингорируется! Без причин!

Тоже самое и при закрытии:

Таким образом почти половина сделок пропускается. Подскажите, в чем дело?

Условия-то - самые простейшие! Линии песесекаются со всей очевидностью! Но позиции не всегда откр/закр! Журнал "молчит".

Возможно проще сделать расчет второй линии в индикаторе. Тогда проблемы должны исчезнуть

 
MetaDriver:

Наверное такое может случаться при пропуске тиков. Т.е. во время работы Start() приходит новый тик (в котором условия были бы выполнены), но он игнорируется, пока функция Start() в работе.

В следующем тике условия уже не выполняются - проехали.

Вапче пересечение линий индикаторов - сигнал очень неудобный, я давно не пользуюсь. Лучше вычесть один индикатор из другого и отслеживать пересечение нуля. Впочем - дело вкуса.

А разве вычитание и отслеживание пересечения нуля, - практически, не то же самое, что и 

//если линии пересеклись, то закрываем: 
      if( Accumulation2MA_1<=MA_1  &&    Accumulation2MA_0>MA_0 )   {

 На первый взляд тут - "что в лоб, что по лбу"!

Почему вы думаете, что "пересечение нуля" будет работать лучше?

 
VINAR:

Возможно проще сделать расчет второй линии в индикаторе. Тогда проблемы должны исчезнуть

Я не совсем поняла, что значит - "сделать расчет второй линии в индикаторе"? Поясните, пож.?

============================

Вот сейчас опять тестирую советник (по ценам открытия, кстати, он работает) и с удивлением вижу, что в текущий момент он работает идеально! Пропуски сигналов почти исчезли!

А вчера пропукал половину сигналов в этой же мт4! Чудеса какие-то.... 

 

 
Rita:

А разве вычитание и отслеживание пересечения нуля, - практически, не то же самое, что и

На первый взляд тут - "что в лоб, что по лбу"!

Почему вы думаете, что "пересечение нуля" будет работать лучше?

Теоретически пофиг. На практике:

1) появляется возможность очень просто отслеживать разницу между рекомендуемой индикатором рыночной позицией, и реальной выставленной в ордерах. То бишь итоговый индикатор показывает готовую кривульку которую можно интерпретировать как "положительный/отрицательный"=="стоим вверх/стоим вниз". Для переворотных систем очень удобно.

2) Появляется возможность удобной доработки сигнала (умножение на коэффициенты, пересечения с другими критериальными линиями и т.п.).

Так что, как я и сказал - дело вкуса. :)

Причина обращения: