Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 976

 
AlexeyVik:
А документацию почитать мама не разрешает??? Например SendMail

Да эту функцию естественно я знаю, я имею ввиду – закладку в окне терминала, (торговля, активы, история счёта, новости, алерты, ПОЧТА итд) при приходе туда почты( во внутреннею почту терминала) отсылалась смс или е-маил (например для получения сообщения о перезагрузки сервера итд)?

 
optionany:

Да эту функцию естественно я знаю, я имею ввиду – закладку в окне терминала, (торговля, активы, история счёта, новости, алерты, ПОЧТА итд) при приходе туда почты( во внутреннею почту терминала) отсылалась смс или е-маил (например для получения сообщения о перезагрузки сервера итд)?

Ну так сформулируй вопрос в соответствии с мыслями.

Кто ясно мыслит, тот ясно излагает...

 

Здравствуйте. Не могу понять  в чём моя ошибка или вернее недоработка этого блока в моей программе:

//---Раздельный учёт открытых ордеров

    for(int i=OrdersTotal()-1;i>=0;i--)                               // Цикл перебора ордеров
     {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);                       // Если найден ордер,то:
       {
        if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic) continue;
       }

       {
        if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
        if(OrderType()==OP_BUY)
            Total++;
       }
   return;
     }
//---

    for(int i=OrdersTotal()-1;i>=0;i--)
     {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
       {
        if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic) continue;
       }

       {
        if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
        if(OrderType()==OP_SELL)
            Total++;
       }
   return;
     }
//---

Советник стабильно работает и на тестере, и на демо-счёте, но при компиляции выдаёт 2 предупреждения: return value of 'OrderSelect' shuld be checked, которые я никак не могу преодолеть. Если это возможно, подскажите, пожалуйста, что я неправильно или не полностью написал.

 
YuryVL:

Здравствуйте. Не могу понять  в чём моя ошибка или вернее недоработка этого блока в моей программе:

//---Раздельный учёт открытых ордеров

    for(int i=OrdersTotal()-1;i>=0;i--)                               // Цикл перебора ордеров
     {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);                       // Если найден ордер,то:
       {
        if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic) continue;
       }

       {
        if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
        if(OrderType()==OP_BUY)
            Total++;
       }
   return;
     }
//---

    for(int i=OrdersTotal()-1;i>=0;i--)
     {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
       {
        if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic) continue;
       }

       {
        if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
        if(OrderType()==OP_SELL)
            Total++;
       }
   return;
     }
//---

Советник стабильно работает и на тестере, и на демо-счёте, но при компиляции выдаёт предупреждение: return value of 'OrderSelect' shuld be checked, которые я никак не могу преодолеть. Если это возможно, подскажите, пожалуйста, что я неправильно или не полностью написал.


SRС для вставки кода! А зачем 2 цикла, после проверки если нет проверять если да и Тоtal должен считать оба типа и держать в памяти для каждого отдельно? Это никто не поймёт! Вы должны выстроить логику, чтобы всем было понятно, что Вы хотите, тогда и компилятор поймёт!
 
YuryVL:

Здравствуйте. Не могу понять  в чём моя ошибка или вернее недоработка этого блока в моей программе:

...

1) Чтобы тут правильно вставить код, нажмите на SRC, а потом в окошке копируйте ваш код (рис ниже).


2) Попробуйте такой вот код:

int Total_BUY=0, Total_SELL=0; // новые переменные как счетчики ордеров

//---Раздельный учёт открытых ордеров
for(int i=OrdersTotal()-1; i>=0; i--) // Цикл перебора ордеров
  {
   // OrderSelect() надо выбирать с помощью if
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)); // Если найден ордер, то:
     {
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
      else
        {
         if(OrderType()==OP_BUY)  Total_BUY++;  // считает открытые позиции на покупку
         if(OrderType()==OP_SELL) Total_SELL++; // считает открытые позиции на продажу
        }
     }
  }
 

 Как бы заставить алерт

Alert(OrderOpenPrice());

выводить  цену открытия ордера с 5 числами после запятой? NormalizeDouble(OrderOpenPrice(),Digits) не помогает. (Ордер предварительно выбран).

 
JoinDoe:

 Как бы заставить алерт

выводить  цену открытия ордера с 5 числами после запятой? NormalizeDouble(OrderOpenPrice(),Digits) не помогает. (Ордер предварительно выбран).

Alert(DoubleToString(OrderOpenPrice(),Digits));
 
Leo59:
Здравствуйте уважаемые!

Помогите пожалуйста перевести алгоритм нахождения координаты точки пересечения двух отрезков

Из статьи:

Все очень просто!
х1, у1 и х2,у2 - координаты вершин первого отрезка;
х3, у3 и х4,у4 - координаты вершин второго отрезка;

для нахождения пересечения составляем уравнения прямых:
первое уравнение:
(x-x1)/(x2-x1)=(y-y1)/(y2-y1);
второе уравнение
(x-x3)/(x4-x3)=(y-y3)/(y4-y3);
эти уравнения определяют прямую проходящую через две точки, то, что нам и надо.
Из этих уравнений находим х и у по следующим формулам:
x:=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
y:=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
так как наши прямые пересекаются, то у них есть общая точка пересечения с координатами (х,у), которую нам и надо найти.
для того, чтоб пересечение принадлежало нашим отрезкам, нужно его ограничить, т. е проверить условие:
если
(((x1<=x)and(x2>=x)and(x3<=x)and(x4 >=x))or((y1<=y)and(y2>=y)and(y3<=y) and(y4>=y)))
то существует точка пересечения данных отрезков, а нет – то нет и точки пересечения.
Еще следует проверить параллельность этих отрезков при помощи угловых коэффициентов:
k1:=(x2-x1)/(y2-y1);
k2:=(x4-x3)/(y4-y3);
где k1 и k2 – тангенсы угла наклона отрезков к положительномунаправлению оси ОХ, если k1=k2, то отрезки параллельны, а значит, неимеют точек пересечения.

А, может быть, у кого-нибудь в архивах есть уже готовый?


может быть
 

Существует ли возможность или функция в MT4 перенаправить сообщения пришедшие на внутреннюю почту терминала (о изменении плеча, перезагрузки сервера, итд) по смс или е-маил

P.s закладка в окне терминала, (торговля, активы, история счёта, новости, алерты, ПОЧТА итд.)?

 
Здравствуйте уважаемые форумчане!

Начал изучать язык MQL4 и при написании простого индикатора столкнулся с проблемой, которую никак не могу решить. Суть проблемы:

1_как найти High оставшейся части дня, есть простой цикл Close[i]-Open[i+1], необходимо найти High[i - до конца дня]. Например, от[i],[1],[2] и до конца дня (PERIOD_H1) . Ума не приложу как это сделать. Есть функция      'iHigh' , но это немного не то.

2_ это еще не все, простите за наглость, есть функция 'iBars'( Возвращает количество баров в истории по соответствующему символу и периоду). Подскажите пожалуйста, какой комбинацией функций можно подсчитать не только по соответствующему  символу и периоду, но и сколько баров со временем скажем так,"12:00" или допустим "15:00" в истории(PERIOD_H1). 

Перелистал весь справочник, может что проглядел, но ничего подходящего не нашел. Поисковиком пользовался, результат тот же.  Может кто знает где обсуждались подобные темы, скиньте плиз ссылку.

Заранее благодарю! 

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