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

 
E_mc2 >>:

Если боитесь проспать то измените вот эту строку

\ if ( WarningMode>0 ) PlaySound(soundfile); \

индикатора на вот эту

\ if ( WarningMode>0 && shift==0) GlobalVariableSet("Будильник",1); \

и создай вот такой индикатор

int start()
{if(GlobalVariableGet("Будильник"))PlaySound("news.wav");
return(0);
}

И засыпая запускай кроме основного индикатора ещё и будильник.

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

 
Urain >>:

А вам это зачем? Раскажите подробней может решение рядом, а вы не знаете как правильно спросить чтоб люди поняли.

По тому что вы написали у меня есть два решения, вам какое, два сразу слишком долго писать :)

..

кстати такие длинные коды лучше прикреплять файлом.

Да и для кода есть специальная кнопочка SRC

Да мне это нужно что б не пропустить сигнал)) Один раз только раздаёца  алерт, легко пропустьть особенно ночью((( А что значит - будильник?? Что будет происходить?? 

Строку поменял..создал новый индюк Будильник.....но не понял ...он у меня работает постояно беспрерывно не зависимо от того выдаёт индюк сигнал или нет...Даже если сигнала и близко нет от индюка,  то Будильник пищит беспрерывно)))Есть сигнал нет сигнала, а будильник работает..

 
E_mc2 >>:

Да мне это нужно что б не пропустить сигнал)) Один раз только раздаёца алерт, легко пропустьть особенно ночью((( А что значит - будильник?? Что будет происходить??

Измените строку в своём индикаторе как описано выше.

Скомпилируйте и запустите прикреплённый индикатор.

Звенеть будет на каждом тике, пока не отключите индикатор или не обнулите глобал. переменную "Будильник"

Файлы:
wxinptvxq.mq4  1 kb
 

Советник Moving Average.

Вставил функции KimIV на открытие ордера (GetSizeLot()  OpenPosition   CorrectTF(int TimeFrame=0)  GetNameOP(int op)  ModifyOrder()  ExistPositions()  Message()). До закрытия еще недошел. Создал свою функцию  данных с индикатора void Indicat_Var() чтоб в одном месте были индикаторные данные и ими можно была пользоватся в любом месте програмы.

При обращений с функции CheckForOpen() к Indicat_Var() все нормально а при приобраюений с  CheckForClose()  к Indicat_Var() незакрывается ордера  Не как не пойму почему

И еще  по моему функции CalculateCurrentOrders(string symbol) и ExistPositions() дублируют друг друга Если я прав то как этого избежать

ПОмогите разобратся

Файлы:
magkimiv.mq4  15 kb
 

Функция расчета лота уже изначально предусмотрена была в советнике. Если вы добавили ещё одну(GetSizeLot()), то (хотя бы) уберите первоначальную,  - LotsOptimized()

//------------------------------------------------

Действительно. Функции определения наличия открытых позиций дублируют друг-друга.

Одну из них можно убрать. (Разберитесь, чем они отличаются и какая из них вам нужнее!)

//--------------------------------------------

Посмотрите статью https://www.mql5.com/ru/articles/1385

Там, как раз, приводится модификация этого советника с русско-яз. комментариями в коде.

Модификация, - Именно, по закрытию.

 

Отмечаем на графике ТОЧКИ ОТКРЫТИЯ И ЗАКРЫТИЯ ОРДЕРА?

Вопрос к профи - а может есть такой индикатор или скрипт,

который рисует на графике точку открытия и закрытия

ордера? Соединяет их линией, зеленая - профит,

красная - лосс. Полезен для анализа ошибок на истории!

 

Помнится,  вам уже отвечали на этот вопрос. 

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

И получите искомое.

Скрипт тоже где-то видел. Вроде бы, у И.Кима был такой скрипт.

http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=32

 

Прошу помощи у знатоков по адресу Курсор с ценой

Спасибо!

 

Помогите, кто может, понять, почему у меня не закрываются отрытые ордера при смене тренда (условия открытия). И как мне исправить эту ошибку!

Код вот какой у меня:

extern int TP=40;            //уровень Take Profit
extern int SL=0;              //уровень Stop Loss
extern double Lots1=0.2;      //лот основной сделки
extern double Lots2=0.1;      //лот вспомогательных сделок 
extern int slippage=2;        //проскальзование
int MagicNumber1=5345; //магическое число сделки BUY
int MagicNumber2=1612; //магическое число сделки SELL
// переменная для пятизнаков
int BrokerDecimal = 1;
// и просто нужные переменные (типа флажки)
double ticketbuy;
double ticketsell;



int init()
  {
  // Если брокер дает котировки по валюте с точностью в пять или три знака - пипс будет меньше стандартного в 10 раз - вводим множитель   
  if(Digits==3 || Digits==5) BrokerDecimal=10; 
  // Перемножить все уровни в пипсах на множитель
  SL           = SL * BrokerDecimal; 
  TP           = TP * BrokerDecimal;
  return(0);
  }

int start()
  {
  // Рассчеты и анализ индикаторов
  double jaw=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORJAW,1); //синяя линия (челюсть)
  double teen=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORTEETH,1);//красная линия (зубы)
  double lips=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORLIPS,1);//зеленая линия (губы)
  
  double lastClose=iClose(NULL,0,1);
  
  
  // Собственно тело программы  
  if((OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == false || OrderCloseTime() > 0 )
    && lips>jaw && lastClose>lips) // условие выставления ордеров БАЙ
    SEND_BUY(); // вынесем "модуль" выставления ордера бай - добавить внизу
  
  if((OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == false || OrderCloseTime() > 0 )
    && jaw>lips && lastClose<jaw) // условие выставления ордеров СЕЛЛ
    SEND_SELL(); // вынесем "модуль" выставления ордера сэлл - добавить внизу
  
  if (OrdersTotal()>=1)
      {
        if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
          {
            if(OrderType()==OP_BUY)
              {
                if((lips==jaw || lips==teen) && lastClose==lips) // условия закрытия сделки БАЙ
                  while(OrdersTotal()>0)
                    {
                      CloseDirect(0,"Принудительное закрытие сделки при обратном движении рынка, ticket=");
                    }
              }
            if(OrderType()==OP_SELL)
              {
                if((jaw==lips || jaw==teen) && lastClose==jaw) // условия закрытия сделки СЕЛЛ
                  while(OrdersTotal()>0)
                    {
                      CloseDirect(0,"Принудительное закрытие сделки при обратном движении рынка, ticket=");
                    }
              }
          }
        else
          {
            Print("ОШИБКА в Start()(блок закрытия при обратном движении) :OrderSelect() - ",GetLastError());
            return(-1);
          }
      }
         
  return(0);
  }

// "модуль" выставления ордера бай
void SEND_BUY()
  {
  double sl_buy;
  if(!SL)
  { 
  sl_buy=0;
  }
    else
    {
    sl_buy=Ask-SL*Point;
    }
    ticketbuy=OrderSend(Symbol(),OP_BUY, Lots1,Ask,slippage,sl_buy,Ask+TP*Point,"take_trend",MagicNumber1,0,Blue);
          if(ticketbuy == -1)
          {
          Alert(Symbol(),"ошибка:бай", GetLastError());
          return(-1);
          }
            if(ticketbuy > 1)
            Alert (Symbol(),"бай - ок !");
  }

// "модуль" выставления ордера сэлл
void SEND_SELL()
  {
  double sl_sell;
  if(!SL)
  { 
  sl_sell=0;
  }
   else
   {
   sl_sell=Bid+SL*Point;
   }
   ticketsell=OrderSend(Symbol(),OP_SELL, Lots1,Bid,slippage,sl_sell,Bid-TP*Point,"take_trend",MagicNumber2,0,Red);
         if(ticketsell == -1)
         {
         Alert(Symbol(),"ошибка:сэлл", GetLastError());
         return(-1);
         }
           if(ticketsell > 1)
           Alert (Symbol(),"сэлл - ок !");
   }

// МОДУЛЬ ЗАКРЫТИЯ СДЕЛОК ПРИ СМЕНЕ ТРЕНДА 
void CloseDirect(int cntr, string comm)
  {
    double closeprice;
    if(OrderSelect(cntr,SELECT_BY_POS,MODE_TRADES))
      {
        RefreshRates();
        if (OrderType()==OP_BUY)
          closeprice=Bid;
        else
          closeprice=Ask;
        if (OrderClose(OrderTicket(),OrderLots(),closeprice,10,Green))
        {
          Print(comm, OrderTicket());
        }
        else
          {
            Print("ОШИБКА в CloseDirect():OrderClose() - ",GetLastError());
          }
      }
    else
      {
        Print("ОШИБКА в CloseDirect():OrderSelect() - ",GetLastError());
      }
  }
 

Скажите пожалуйста, как получить сигнал от сглаженного rsi? (МА => RSI).

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