Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 741

 
psyman:

Для следующего кода история в  картинках:


Отключил сеть, добавляю индикатор

Переключаюсь на соседний график


y2 поменял значение, возвращаюсь обратно


y2 вернул свое значение, но метка посчитана по "уехавшему" значению! Кручу колесо мыши

Метка вернулась на свое место!

В момент переключения на соседний график все неактивные окна не развёрнуты во весь экран. То-есть имеют размеры меньше чем в активном состоянии. Поэтому объекты получают меньшие координаты от левого верхнего угла графика. Потом после активации окна надо дождаться обновления графика или принудительно его обновить. Что и происходит по прокрутке колёсика.

 
psyman:

Для следующего кода история в картинках:


Отключил сеть, добавляю индикатор

Переключаюсь на соседний график


y2 поменял значение, возвращаюсь обратно


y2 вернул свое значение, но метка посчитана по "уехавшему" значению! Кручу колесо мыши

Метка вернулась на свое место!

можно выбросить ChartTimePriceToXY
и печатать обычный текст (OBJ_TEXT) + 1-3 бара в будущее, будет всегда там где нужно)

 
Taras Slobodyanik:

можно выбросить ChartTimePriceToXY
и печатать обычный текст (OBJ_TEXT) + 1-3 бара в будущее, будет всегда там где нужно)

Только если отключить сдвиг баров вправо, то текст будет за пределами окна.

Задумка правильная, но видимо, опыта очень не хватает.

 
Alexey Viktorov:

Только если отключить сдвиг баров вправо, то текст будет за пределами окна.

Задумка правильная, но видимо, опыта очень не хватает.

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

 

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

Вызывают данные переменной через :

bool  GlobalVariableGet( string  "name", double "var"  ); // К примеру

Где потом "var" можно вставлять в операции.

А создаются функцией :

datetime  GlobalVariableSet( 
   string  name,      // имя 
   double  value      // устанавлимое значение 
   );

Просто я пытаюсь осознать всЁ . Примеров нету, а при этом мне не совсем понятно как будут работать данные если одно занчение datetime  , а второе bool  ? Ошибок не будет ?

 
psyman:

Для следующего кода история в картинках:

Отключил сеть, добавляю индикатор

Переключаюсь на соседний график

y2 поменял значение, возвращаюсь обратно

y2 вернул свое значение, но метка посчитана по "уехавшему" значению! Кручу колесо мыши

Метка вернулась на свое место!

//+------------------------------------------------------------------+
//|                                              !_clr_indicator.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_plots 0

string objname="Bid";
input color Bid_color = clrCrimson;

//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason) 
   { 
   ObjectDelete(0,objname);
   } 
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   SetTXT();
   return(rates_total);
}

//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) 
{ 
   if(id==CHARTEVENT_CHART_CHANGE) 
      SetTXT();
}

//+------------------------------------------------------------------+
void SetTXT() 
{
int      first_bar=(int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
int      width_bar=(int)ChartGetInteger(0,CHART_WIDTH_IN_BARS,0);
double   label_price=iClose(_Symbol,_Period,0);
datetime label_time=0;

   if(width_bar>first_bar)
      label_time=iTime(_Symbol,_Period,1)+(width_bar-first_bar)*PeriodSeconds();
   else
      label_time=iTime(_Symbol,_Period,first_bar-width_bar+1);

   if(ObjectFind(0,objname)<0)
      {
      ObjectCreate(0, objname, OBJ_TEXT,0,0,0);
      ObjectSetInteger(0, objname, OBJPROP_FONTSIZE, 12);
      ObjectSetInteger(0, objname, OBJPROP_COLOR, Bid_color);
      ObjectSetString(0, objname, OBJPROP_FONT, "Verdana");
      ObjectSetInteger(0,objname,OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER);
      ObjectSetInteger(0,objname,OBJPROP_BACK,false);
      ObjectSetInteger(0,objname,OBJPROP_SELECTABLE,false);
      }
   
   ObjectSetString(0,objname,OBJPROP_TEXT,DoubleToString(label_price, _Digits-1)); 
   ObjectMove(0,objname,0,label_time,label_price);
   
   ChartRedraw();
}
 
Taras Slobodyanik:


Спасибо большое, завтра буду думать чем заменить iTime и iClose, тк сижу на XP.

 
Всем Доброго времени суток!
Вопрос к программистам .
Подскажите пожалуйста!
У некоторых брокеров невозможно открыть ордер по рынку с ценой тейкпрофита и ценой стоплосса

всего лишь одной функцией OrderSend().

Вернее OrderSend() откроет ордер но цена стопа и профита будет отсутствовать в этом ордере.

Этот ордер в последующих строках кода необходимо модифицироватьс помощью OrderModify() и добавить в ордер стоп и профит.


Так вот вопрос в том, кто и как обрабатывает или страхует  в функции покупки или продажи случай 
когда например OrderSend() отработала а OrderModify() по каким то причинам не сработала и в рынке
оказался открытый ордер без стопа и профита ?

Как страховаться от такого случая и/или как его обработать?
Подскажите пожалуйста.
Можно на словах,можно ткнуть где читать или лежит код ибо потратил достаточно 

времени но никак не могу найти информацию об этом.

Вроде бы  определённую страховку может сделать функция безубытка и то в случае если цена пошла в прибыль

а если цена пошла в убыток а стопа просто нет?

Заранее благодарен за ответ!
 

Здравствуйте всем!

Подскажите, пожалуйста, почему при работающем советнике я не могу войти в его свойства ? Раньше заходил, сейчас свойства не открываются. Один раз помогла перезагрузка терминала, но проблема через минуту появилась опять. Советник свежий, терминал тоже работает недавно. В чем проблема со свойствами советника ?

Спасибо!

 
demonRDV:

Здравствуйте всем!

Подскажите, пожалуйста, почему при работающем советнике я не могу войти в его свойства ? Раньше заходил, сейчас свойства не открываются. Один раз помогла перезагрузка терминала, но проблема через минуту появилась опять. Советник свежий, терминал тоже работает недавно. В чем проблема со свойствами советника ?

Спасибо!

Нажмите хот-кей F7 :-)

мышкой по значку советника не всегда получается - и значок может быть перекрыт другими объектами и советник очередь сообщений грузит и ещё 100500 причин

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