[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 157

 

Друзья, подскажите, что нужно сделать, чтобы выводило 5-ти-значную цену? Например, я пишу такое дело:

int Quant_Bars=15;

int Ind_max =ArrayMaximum(High,Quant_Bars,1);

double Maximum=High[Ind_max];

Alert("Максимум = ",Maximum);

И мне выбивает цену с четырьмя знаками после запятой.

Заранее, спасибо))

 
rid >>:

А вы эту функцию в какое место кода вставляете?

У меня код на начальной стадии написания.. Поэтому вставлять толком некуда....

Можете мне по-детски обьяснить как посчитать количество и ордеров с магическим номером?)) 


 
Alex5757000 писал(а) >>

Друзья, подскажите, что нужно сделать, чтобы выводило 5-ти-значную цену? Например, я пишу такое дело:

int Quant_Bars=15;

int Ind_max =ArrayMaximum(High,Quant_Bars,1);

double Maximum=High[Ind_max];

Alert("Максимум = ",Maximum);

И мне выбивает цену с четырьмя знаками после запятой.

Заранее, спасибо))

А DoubleToStr() не пробовали использовать?

 
ArtY0m писал(а) >>

У меня код на начальной стадии написания.. Поэтому вставлять толком некуда....

Можете мне по-детски обьяснить как посчитать количество и ордеров с магическим номером?))


Проще всего посмотреть тут https://book.mql4.com/ru/

 

Пожалйста помогите. Ни черта не пойму.

Если при визуальном тестировании советника 1.mq4(прилагается) натянуть на график индикатор 3-cci-h3(прилагается), то, какзалось бы, при абсолютно одинаковых параметрах расчитываемых cci сигналы индикатора и фактические cci(объектным текстом в правом верхнем углу) не совпадают.

ПОЧЕМУ?

И почему то не работают алерты в этом индюке.

Файлы:
pack_1.rar  2 kb
 
Ни как не могу найти, где-то была ссылочка на индикатор который прорисовывает свечи старшего таймфрейма на графике младшего (то бишь одновременно свечи обоих графиков). Кто подскажет?
 
ArtY0m >>:

У меня код на начальной стадии написания.. Поэтому вставлять толком некуда....

Можете мне по-детски обьяснить как посчитать количество и ордеров с магическим номером?)) 


Советник (в простейщем варианте) состоит из нескольких частей.

Сначала задаются внешние параметры и глоб. переменные.

Помом, обычно идут инициализ. и деинициализ. ф-и 

После чего идет функция СТАРТ, - в которой и задается основной рабочий алгоритм советника.

Далее, идут вспомогательные, пользовательские функции.

Эти пользовательские функции используются (вызываются) в функции СТАРТ по мере надобности.

Вот примерно так:

//+------------------------------------------------------------------+
//|                                                    ZZ expert.mq4 |
//|                                        Copyright © 2008, Rid     |
//|                                            Rid                   |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Rid ."
#property link      "Rid "

extern string     _  = "---- ОБЩИЕ ПАРАМЕТРЫ -----"; 
extern int       MAGIC = 777;
extern double    lots=0.1;

extern string     __  = "---- ПАРАМЕТРЫ BUY -----"; 
extern int       StopLossBuy=110;
extern int       TakeProfitBuy=55;

extern string     ___  = "---- ПАРАМЕТРЫ SELL -----"; 
extern int       StopLossSell=110;
extern int       TakeProfitSell=55;

extern string    _____= "Параметры функции ТРЕЙЛИНГ СТОП";
extern bool   UseTrailing = true;//Выключатель трейлинг стопа
extern int    MinProfit = 25;    //порог включения трейлин стопа
extern int    TrailingStop = 25;// величина трейлинг стопа
extern int    TrailingStep = 5; // шаг трейлинг стопа


int ticket;
bool  gbDisabled  = False;             // Флаг блокировки советника
bool  gbNoInit    = False;             // Флаг неудачной инициализации
//-- Подключаемые модули --
#include <stderror.mqh>
#include <stdlib.mqh>

//+------------------------------------------------------------------+
//| initialization function                                          |
//+------------------------------------------------------------------+
int init()
  {
gbNoInit=False;  
if (!IsTradeAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");
    gbNoInit=True; return;
  }
  if (!IsLibrariesAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних экспертов");
    gbNoInit=True; return;
  }
  }

//жжжжжжжжжжжжж ФУНКЦИЯ СТАРТ жжжжжжжжжжжжжжжжжж+

int start()
  {
//Отображаем на графике число открытых позиций
// с задааным магиком "MAGIC"
Comment("Число бай позиций = ",NumberOfPositions(NULL,OP_BUY, MAGIC), "\n",
"Число селл позиций = ",NumberOfPositions(NULL,OP_SELL, MAGIC),"\n",
"Хи-Хи, тра-ля-ля");

if (UseTrailing) TrailPositions(); // выключатель трейлинг стопа 
  
//-------- открываем позиции 
if (NumberOfPositions(NULL, OP_BUY,MAGIC)< 1){//если нет открытыз бай-поз
//открываем позицию бай:
ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,3,Ask-Point*StopLossBuy,
Ask+Point*TakeProfitBuy,"Хи-Хи, тра-ля-ля",MAGIC,0,Blue);
                                             } 
//--------------------------------------------------------------
    return(0);//конец функции int start()
  }
//жжжжжжжжжжж КОНЕЦ ФУНКЦИИ СТАРТ жжжжжжжжжжжжжжжж+


//жжжжжжж ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ жжжжжжжжжжжжжжж+
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++)                                    {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))      {
      if (OrderSymbol()==sy || sy=="")                   {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op)                   {
            if (mn<0 || OrderMagicNumber()==mn) kp++;
          }}}}}  return(kp);}

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
void TrailPositions() // функция трейлинг стоп
{
  int Orders = OrdersTotal();
  for (int i=0; i<Orders; i++) {
    if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol() != Symbol()) continue;    
     if (OrderType() == OP_BUY && OrderMagicNumber()==MAGIC)  {
      if (Bid-OrderOpenPrice() > MinProfit*Point) {
        if (OrderStopLoss() < Bid-(TrailingStop+TrailingStep-1)*Point) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Bid-TrailingStop*Point,
                                                     OrderTakeProfit(), 0, Blue);
        } } }
    if (OrderType() == OP_SELL && OrderMagicNumber()==MAGIC)  {
      if (OrderOpenPrice()-Ask > MinProfit*Point) {
        if (OrderStopLoss() > Ask+(TrailingStop+TrailingStep-1)*Point 
                                                       || OrderStopLoss() == 0) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Ask+TrailingStop*Point,
                                                      OrderTakeProfit(), 0, Blue);
        } } }      } }

//+----------------------------------------------------------------------------+
//|  Вывод сообщения в коммент и в журнал                                      |
//+----------------------------------------------------------------------------+
void Message(string m) {
  Comment(m);
  if (StringLen(m)>0) Print(m);
}        

Надеюсь теперь у вас не возникнет вопросов подобного рода!

 

Ещё один вопросик: возможно ли выставлять отложенник не от текущей цены а от открытой позиции?

Заранее спасибо)

 

Можно конечно. Только нужно предусмотреть, чтобы эта отложка встала на таком расстоянии от текущей цены, - чтобы были соблюдены стопуровни по правилам ДЦ.

Например, если отложка будет выставляться  на расстоянии 100 пунктов от цены открытия последней позиции, но при этом попадет слишком близко к текущей цене, то журнал возвратит ошибку 130 открытия ордера.

 
rid >>:

Можно конечно. Только нужно предусмотреть, чтобы эта отложка встала на таком расстоянии от текущей цены, - чтобы были соблюдены стопуровни по правилам ДЦ.

Например, если отложка будет выставляться  на расстоянии 100 пунктов от цены открытия последней позиции, но при этом попадет слишком близко к текущей цене, то журнал возвратит ошибку 130 открытия ордера.

Как, если не секрет?

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