Индикатор дистанций на линиях |
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool TextCreate(const long chart_ID=0,
const string name="Text",
const int sub_window=0,
datetime time=0,
double price=0,
const string text="Text",
const string font="Arial",
const int font_size=15,
const color clr=clrRed,
const double angle=0.0,
const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER,
const bool back=false,
const bool selection=true,
const bool hidden=true,
const long z_order=0)
{
ResetLastError();
if(ObjectFind(0,name)==-1)
{
ObjectCreate(chart_ID,name,OBJ_TEXT,sub_window,time,price);
}
ObjectMove(chart_ID,name, 0, time, price);
ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
return(true);
}
//+----------------------------------------------------------------------------+
//| Возвращает цвет по знаку числа |
//+----------------------------------------------------------------------------+
color ColorOnSign(double nu)
{
color lcColor = colortext;
if (nu > 0) lcColor = ecProfit;
if (nu < 0) lcColor = ecLoss;
return(lcColor);
}
//+------------------------------------------------------------------+
double GetProfitOpenPos(int mn = -1)
{
int i, k = OrdersTotal();
double pr = 0.0;
for (i = 0; i < k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol()) {
if (mn < 0 || OrderMagicNumber() == mn) {
pr += OrderProfit() + OrderCommission() + OrderSwap();
}
}
}
}
return (pr);
}
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 01.08.2008 |
//| Описание : Возвращает суммарный профит открытых позиций в пунктах |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" - любой символ, |
//| NULL - текущий символ) |
//| op - операция (-1 - любая позиция) |
//| mn - MagicNumber (-1 - любой магик) |
//+----------------------------------------------------------------------------+
double GetProfitOpenPosInPoint(int op=-1, int mn=-1)
{
double pr = 0.0;
//Comment(MarketInfo(Symbol(),MODE_TICKVALUE) / MarketInfo(Symbol(),MODE_TICKSIZE) / MarketInfo(Symbol(),MODE_POINT));
for (int i = 0; i < OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol() == Symbol()) && (op < 0 || OrderType() == op)) {
if (mn < 0 || OrderMagicNumber() == mn) {
if (OrderType() == OP_BUY) {
pr += (OrderProfit() / OrderLots() / MarketInfo( OrderSymbol(), MODE_TICKVALUE )) / n;
}
if (OrderType() == OP_SELL) {
pr += (OrderProfit() / OrderLots() / MarketInfo( OrderSymbol(), MODE_TICKVALUE )) / n;
}
}
}
}
}
return (pr);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Параметры: |
//| nm - наименование объекта |
//| tx - текст |
//| cl - цвет метки |
//| xd - координата X в пикселах |
//| yd - координата Y в пикселах |
//| cr - номер угла привязки (0 - левый верхний) |
//| fs - размер шрифта (8 - по умолчанию) |
//+------------------------------------------------------------------+
bool SetText(string nm, string tx, color cl, datetime time, double price, int fs)
{
time += otstup*Period()*60;
//--- сбросим значение ошибки
ResetLastError();
//--- создадим объект "Текст"
if (ObjectFind(nm) < 0)
{
ObjectCreate(0, nm, OBJ_TEXT, 0, time, price);
}
ObjectMove(0, nm, 0, time, price);
//--- установим текст
ObjectSetString(0, nm, OBJPROP_TEXT, tx);
//--- установим шрифт
ObjectSetString(0, nm, OBJPROP_FONT, 8);
//--- установим размер шрифта
ObjectSetInteger(0, nm, OBJPROP_FONTSIZE, fs);
//--- установим угол наклона текста
ObjectSetDouble(0, nm, OBJPROP_ANGLE, 0.0);
//--- установим способ привязки
ObjectSetInteger(0, nm, OBJPROP_ANCHOR, ANCHOR_LEFT_LOWER);
//--- установим цвет
ObjectSetInteger(0, nm, OBJPROP_COLOR, cl);
//--- отобразим на переднем (false) или заднем (true) плане
ObjectSetInteger(0, nm, OBJPROP_BACK, false);
//--- включим (true) или отключим (false) режим перемещения объекта мышью
ObjectSetInteger(0, nm, OBJPROP_SELECTABLE, false);
ObjectSetInteger(0 ,nm, OBJPROP_SELECTED, false);
return (true);
}
17 июня 2022
|
18 июня 2022
|
Комментарии (13)
34 AM2 Сообщений: 15876 - Андрей
11 preasto Автор Сообщений: 445
34 AM2 Сообщений: 15876 - Андрей
34 AM2 Сообщений: 15876 - Андрей
Тогда это становиться безполезным.
Вся суть задачи именно в том, чтобы после их переноса, они оставались на том месте, куда перенесены. И не возвращались на отступы по умолч. из параметров.
В т.ч. при смене ТФ.
Подстраиваться под новые фракталы должны только крайние линии по buy и sell — над и под ценой.
Другие 2 линии всегда должны оставаться там, куда перенесены.
В этом вся суть и задача, как основное. В т.ч. отмечено в ТЗ.
Вопрос восстановления/обновления линий, как возможное, предлагаю решить таким способом:
— при удалении какой-то из 1й(первой) линии идущей по фракталу — удаляются и восстанавливаются все другие линии.
Просьба сделать так. Как и в ТЗ изначально. Чтобы 2 крайние группы линий фиксировались там, куда перенесены, без возврата на отступы по умолчанию. Редактирован: 25 июня 2022, 12:24
11 preasto Автор Сообщений: 445
34 AM2 Сообщений: 15876 - Андрей
1. Индикатор выводит за ближайшими фракталами над и под ценой по 3 линии.
1я линия — сразу за фракталом, ещё по 2 — с отступами для каждой.
2. 1я линия по каждому направлению автоматически индикатором смещается за новый фрактал.
Но 2 другие линии — НЕ СМЕЩАЮТСЯ. Остаются там, где вывелись 1й раз, или куда были перенесены мышкой.
В т.ч. при смене и возврате ТФ в окне. Эти 2 линии остаются ВСЕГДА на тех ценах, куда выставлены или перенесены.
Смещаются под новые фракталы только ближние к фракталам (1-е) линии.
3. Чтобы перезапускать индикатор для выведения всех линий с настройками по умолч. из параметров,
предлагается (как вариант) сделать функцию: если удалена какая-то из 1х (ближних к фракталам) линий — то индикатор удаляет все остальные и тут же выводит их с отступами по умолчанию. При этом перенос 1х линий допускается без перезапуска инд., и они будут там находиться до появления нового фрактала.
Суть в том, чтобы 1я линия всегда следовала за ближним фракталам.
А по 2 другие можно было перенести на нужные уровни на постоянно,
и по ним отслеживать дистанцию и прибыль/убыток от цены в моменте. Перенося их руками когда и куда надо по ходу.
Например, чтобы оперативно видеть, какая прибыль/просадка в п. и $ будет, если на этих линиях поставить отложку, СЛ, ТП. Когда там будут выводиться данные по примеру из ТЗ.
=====
Как сделать скрин о том, что линии переносятся назад — и не знаю.
Ну, это 3 скрина:
1. — линии выведены по умолч.
2. — 2 и 3 линии перенесены на новое место.
3. 5 сек, или смена-возврат ТФ и… 2 и 3 линии снова на месте с дистанцией по умолч. Т.е. — линии возвращаются всё время на начальное место с отступами по умолч., а не фиксируются на том, куда перенесены (что только и надо — ради этого весь индикатор).
(проверялось на демо счёте) Редактирован: 25 июня 2022, 13:51
11 preasto Автор Сообщений: 445
34 AM2 Сообщений: 15876 - Андрей
34 AM2 Сообщений: 15876 - Андрей
Но при смене ТФ — смещаются, всё же, и 2, 3 линии. Требуется, чтобы 2,3 линии всегда фиксировались на фикс.цене, куда перенесены, или изначально поставлены, и при смене ТФ, и при появлении новых фракталов — по к-м перемещаются только 1е линии.
Редактирован: 28 июня 2022, 10:23
11 preasto Автор Сообщений: 445
11 preasto Автор Сообщений: 445
34 AM2 Сообщений: 15876 - Андрей
11 preasto Автор Сообщений: 445
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий