+1
Полезняшка. Просто и функционально. Благодарю.
avatar

Genri

  • 4 мая 2016, 00:18
0
Ключевая фраза — из текстового документа.
«Здравствуйте. Нужен индикатор уровней в который возможно вбить(скопировать из текстового документа) одно или несколько ценовых значений и они отобразятся во всех открытых окнах инструмента. Например GBP/USD открыты окна ТФ м5, ТФ м15, ТФ н1
значения 1,4610 1,4655 копирую их из текстового(мышью — выделить, скопировать, вставить) файла и вижу во всех открытых окнах данного инструмента.Настройка цвета и толщины линий необходима. Возможность удалить все отображенные уровни одной командой то же. Заранее благодарен.»
avatar

Genri

  • 17 февраля 2016, 21:36
0
Чет мой эдитор не желает с ним работать. Билды не совпадают?
avatar

Genri

  • 31 января 2016, 19:52
0
Не пользовался. Из общего — канал и принцип для всех канальных стратегий, вход на движении во внутрь канала. Моя цель найти оптимальный способ входа по машке, еще и подстраховаться и посмотреть выйдет ли из этого неваляшка. И это под фунт, евра тут вообще ни при чом.
Есть еще вариант для М5, он мне даже больше нравится, но это потом.
В принципе можно переделать и существующий.
avatar

Genri

  • 31 января 2016, 19:44
0
В бесплатном доступе, что либо готовое не встречал.
avatar

Genri

  • 30 января 2016, 15:23
0
Думаю вопрос в том — после какого события и на каком инструменте включить этот сов.
avatar

Genri

  • 15 января 2016, 11:17
0
Некоторые расчеты сложно произвести в МТ4, но не трудно обычными средствами. Лично у меня часто болят глаза высматривать цифирки на экране ноута особенно когда что то проверяешь и дурной работы надо выполнить не мало. Еще польза если есть данные от стороннего ПО и их надо проверить хотя бы на истории. Ну думаю достаточно.
Всех с наступающим по старому стилю.
avatar

Genri

  • 13 января 2016, 19:55
0
Нда, ну сегодня профигачило уровни по фунту на вылет. Хорошо что основной ориентир был по недельным, а так ничего — впечатляет.
avatar

Genri

  • 12 января 2016, 22:06
0
Тогда помучаю вас «ресаем» в более менее интересном сочетании.
avatar

Genri

  • 12 января 2016, 11:25
0
Брависсимо! Меня правда на работу выдернули, но вечером погоняю.
avatar

Genri

  • 12 января 2016, 11:23
0
«Набирайте уровень и я займусь» Мм, я так понимаю что мне в «стол заказов» вход «заказан». Хотя такой инди вероятно не мне одному интересен.
avatar

Genri

  • 11 января 2016, 13:08
0
--Добро не нуждается в вечной борьбе со злом.Миру необходимы технологии соласия, а не борьбы или спора, необходимы соблюдения баланса инь и янь, мужского и женского, приципа гармонии всех начал.
Откуда взято?
avatar

Genri

  • 27 декабря 2015, 23:34
0
Нет так нет. Другим разом как нибудь. С наступающим.
P.S Как удалить задание?
avatar

Genri

  • 27 декабря 2015, 23:08
0
Кроме того мысль была в том чтобы видеть это еа свечах, на графике, но не в доп. окошке панельки.
avatar

Genri

  • 26 декабря 2015, 23:11
0
В приведенной вами цитате я объяснил почему скрин был другой. Скрин я заменил на соответствующий. Дополнительно прилагаю еще скриншоты.
avatar

Genri

  • 26 декабря 2015, 23:07
0
Извините, другая илея под руку попала. Вот скрин
avatar

Genri

  • 26 декабря 2015, 17:16
0
Благодарю
avatar

Genri

  • 25 декабря 2015, 13:57
0
А не подскажете как в него загружать данные из отчетов?
avatar

Genri

  • 25 декабря 2015, 02:55
0
Предлагаю добавить инди #property copyright «mladen»
#property link «mladenfx@gmail.com»

#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 Black
#property indicator_color2 Red
#property indicator_color3 LimeGreen
#property indicator_color4 Purple
#property indicator_color5 Purple

extern string TimeFrame = «current time frame»;
extern int HalfLength = 50;
extern int Price = 6;
extern double BandsDeviations = 3.0;
extern bool Interpolate = TRUE;
extern bool alertsOn = TRUE;
extern bool alertsOnCurrent = FALSE;
extern bool alertsOnHighLow = FALSE;
extern bool alertsMessage = TRUE;
extern bool alertsSound = FALSE;
extern bool alertsEmail = FALSE;
double G_ibuf_128[];
double G_ibuf_132[];
double G_ibuf_136[];
double G_ibuf_140[];
double G_ibuf_144[];
double G_ibuf_148[];
double G_ibuf_152[];
string Gs_156;
bool Gi_164 = FALSE;
bool Gi_168 = FALSE;
int G_timeframe_172;
string Gs_176 = "";
datetime G_time_184;

int init() {
G_timeframe_172 = f0_0(TimeFrame);
HalfLength = MathMax(HalfLength, 1);
IndicatorBuffers(7);
SetIndexBuffer(0, G_ibuf_128);
SetIndexDrawBegin(0, HalfLength);
SetIndexBuffer(1, G_ibuf_132);
SetIndexDrawBegin(1, HalfLength);
SetIndexBuffer(2, G_ibuf_136);
SetIndexDrawBegin(2, HalfLength);
SetIndexBuffer(3, G_ibuf_152);
SetIndexStyle(3, DRAW_ARROW);
SetIndexArrow(5, SYMBOL_ARROWDOWN);
SetIndexBuffer(4, G_ibuf_148);
SetIndexStyle(4, DRAW_ARROW);
SetIndexArrow(6, SYMBOL_ARROWUP);
SetIndexBuffer(5, G_ibuf_140);
SetIndexBuffer(6, G_ibuf_144);
if (TimeFrame == «calculateTma») {
Gi_164 = TRUE;
return (0);
}
if (TimeFrame == «returnBars») {
Gi_168 = TRUE;
return (0);
}
Gs_156 = WindowExpertName();
return (0);
}

int deinit() {
return (0);
}

int start() {
int shift_12;
int datetime_16;
double Ld_24;
int Li_36;
int Li_0 = IndicatorCounted();
if (Li_0 < 0) return (-1);
if (Li_0 > 0) Li_0--;
int Li_8 = MathMin(Bars — 1, Bars — Li_0 + HalfLength);
if (Gi_168) {
G_ibuf_128[0] = Li_8;
return (0);
}
if (Gi_164) {
f0_2(Li_8);
return (0);
}
if (G_timeframe_172 > Period()) Li_8 = MathMax(Li_8, MathMin(Bars — 1, iCustom(NULL, G_timeframe_172, Gs_156, «returnBars», 0, 0) * G_timeframe_172 / Period()));
for (int Li_4 = Li_8; Li_4 >= 0; Li_4--) {
shift_12 = iBarShift(NULL, G_timeframe_172, Time[Li_4]);
datetime_16 = iTime(NULL, G_timeframe_172, shift_12);
G_ibuf_128[Li_4] = iCustom(NULL, G_timeframe_172, Gs_156, «calculateTma», HalfLength, Price, BandsDeviations, 0, shift_12);
G_ibuf_132[Li_4] = iCustom(NULL, G_timeframe_172, Gs_156, «calculateTma», HalfLength, Price, BandsDeviations, 1, shift_12);
G_ibuf_136[Li_4] = iCustom(NULL, G_timeframe_172, Gs_156, «calculateTma», HalfLength, Price, BandsDeviations, 2, shift_12);
G_ibuf_148[Li_4] = EMPTY_VALUE;
G_ibuf_152[Li_4] = EMPTY_VALUE;
if (High[Li_4 + 1] > G_ibuf_132[Li_4 + 1] && Close[Li_4 + 1] > Open[Li_4 + 1] && Close[Li_4] < Open[Li_4]) G_ibuf_148[Li_4] = High[Li_4] + iATR(NULL, 0, 20, Li_4);
if (Low[Li_4 + 1] < G_ibuf_136[Li_4 + 1] && Close[Li_4 + 1] < Open[Li_4 + 1] && Close[Li_4] > Open[Li_4]) G_ibuf_152[Li_4] = High[Li_4] — iATR(NULL, 0, 20, Li_4);
if (G_timeframe_172 <= Period() || shift_12 == iBarShift(NULL, G_timeframe_172, Time[Li_4 — 1])) continue;
if (Interpolate) {
for (int Li_20 = 1; Li_4 + Li_20 < Bars && Time[Li_4 + Li_20] >= datetime_16; Li_20++) {
}
Ld_24 = 1.0 / Li_20;
for (int Li_32 = 1; Li_32 < Li_20; Li_32++) {
G_ibuf_128[Li_4 + Li_32] = Li_32 * Ld_24 * (G_ibuf_128[Li_4 + Li_20]) + (1.0 — Li_32 * Ld_24) * G_ibuf_128[Li_4];
G_ibuf_132[Li_4 + Li_32] = Li_32 * Ld_24 * (G_ibuf_132[Li_4 + Li_20]) + (1.0 — Li_32 * Ld_24) * G_ibuf_132[Li_4];
G_ibuf_136[Li_4 + Li_32] = Li_32 * Ld_24 * (G_ibuf_136[Li_4 + Li_20]) + (1.0 — Li_32 * Ld_24) * G_ibuf_136[Li_4];
}
}
}
if (alertsOn) {
if (alertsOnCurrent) Li_36 = 0;
else Li_36 = 1;
if (alertsOnHighLow) {
if (High[Li_36] > G_ibuf_132[Li_36] && High[Li_36 + 1] < G_ibuf_132[Li_36 + 1]) f0_1(«high penetrated upper bar»);
if (Low[Li_36] < G_ibuf_136[Li_36] && Low[Li_36 + 1] > G_ibuf_136[Li_36 + 1]) f0_1(«low penetrated lower bar»);
} else {
if (Close[Li_36] > G_ibuf_132[Li_36] && Close[Li_36 + 1] < G_ibuf_132[Li_36 + 1]) f0_1(«Exit buy»);
if (Close[Li_36] < G_ibuf_136[Li_36] && Close[Li_36 + 1] > G_ibuf_136[Li_36 + 1]) f0_1(«Exit sell»);
}
}
return (0);
}

void f0_2(int Ai_0) {
int Li_8;
double Ld_24;
double Ld_32;
double Ld_40;
double Ld_16 = 2.0 * HalfLength + 1.0;
for (int Li_4 = Ai_0; Li_4 >= 0; Li_4--) {
Ld_24 = (HalfLength + 1) * iMA(NULL, 0, 1, 0, MODE_SMA, Price, Li_4);
Ld_32 = HalfLength + 1;
Li_8 = 1;
for (int Li_12 = HalfLength; Li_8 <= HalfLength; Li_12--) {
Ld_24 += Li_12 * iMA(NULL, 0, 1, 0, MODE_SMA, Price, Li_4 + Li_8);
Ld_32 += Li_12;
if (Li_8 <= Li_4) {
Ld_24 += Li_12 * iMA(NULL, 0, 1, 0, MODE_SMA, Price, Li_4 — Li_8);
Ld_32 += Li_12;
}
Li_8++;
}
G_ibuf_128[Li_4] = Ld_24 / Ld_32;
Ld_40 = iMA(NULL, 0, 1, 0, MODE_SMA, Price, Li_4) — G_ibuf_128[Li_4];
if (Li_4 <= Bars — HalfLength — 1) {
if (Li_4 == Bars — HalfLength — 1) {
G_ibuf_132[Li_4] = G_ibuf_128[Li_4];
G_ibuf_136[Li_4] = G_ibuf_128[Li_4];
if (Ld_40 >= 0.0) {
G_ibuf_140[Li_4] = MathPow(Ld_40, 2);
G_ibuf_144[Li_4] = 0;
continue;
}
G_ibuf_144[Li_4] = MathPow(Ld_40, 2);
G_ibuf_140[Li_4] = 0;
continue;
}
if (Ld_40 >= 0.0) {
G_ibuf_140[Li_4] = ((G_ibuf_140[Li_4 + 1]) * (Ld_16 — 1.0) + MathPow(Ld_40, 2)) / Ld_16;
G_ibuf_144[Li_4] = (G_ibuf_144[Li_4 + 1]) * (Ld_16 — 1.0) / Ld_16;
} else {
G_ibuf_144[Li_4] = ((G_ibuf_144[Li_4 + 1]) * (Ld_16 — 1.0) + MathPow(Ld_40, 2)) / Ld_16;
G_ibuf_140[Li_4] = (G_ibuf_140[Li_4 + 1]) * (Ld_16 — 1.0) / Ld_16;
}
G_ibuf_132[Li_4] = G_ibuf_128[Li_4] + BandsDeviations * MathSqrt(G_ibuf_140[Li_4]);
G_ibuf_136[Li_4] = G_ibuf_128[Li_4] — BandsDeviations * MathSqrt(G_ibuf_144[Li_4]);
}
}
}

void f0_1(string As_0) {
string str_concat_8;
if (Gs_176 != As_0 || G_time_184 != Time[0]) {
Gs_176 = As_0;
G_time_184 = Time[0];
str_concat_8 = StringConcatenate(Symbol(), " at ", TimeToStr(TimeLocal(), TIME_SECONDS), " PB: ", As_0);
if (alertsMessage) Alert(str_concat_8);
if (alertsEmail) SendMail(StringConcatenate(Symbol(), «TMA „), str_concat_8);
if (alertsSound) PlaySound(“alert2.wav»);
}
}

int f0_0(string As_0) {
int Li_12;
for (int Li_8 = StringLen(As_0) — 1; Li_8 >= 0; Li_8--) {
Li_12 = StringGetChar(As_0, Li_8);
if ((Li_12 > '`' && Li_12 < '{') || (Li_12 > 'Я' && Li_12 < 256)) As_0 = StringSetChar(As_0, 1, Li_12 — 32);
else
if (Li_12 > -33 && Li_12 < 0) As_0 = StringSetChar(As_0, 1, Li_12 + 224);
}
int timeframe_16 = 0;
if (As_0 == «M1» || As_0 == «1») timeframe_16 = 1;
if (As_0 == «M5» || As_0 == «5») timeframe_16 = 5;
if (As_0 == «M15» || As_0 == «15») timeframe_16 = 15;
if (As_0 == «M30» || As_0 == «30») timeframe_16 = 30;
if (As_0 == «H1» || As_0 == «60») timeframe_16 = 60;
if (As_0 == «H4» || As_0 == «240») timeframe_16 = 240;
if (As_0 == «D1» || As_0 == «1440») timeframe_16 = 1440;
if (As_0 == «W1» || As_0 == «10080») timeframe_16 = 10080;
if (As_0 == «MN» || As_0 == «43200») timeframe_16 = 43200;
if (timeframe_16 == 0 || timeframe_16 < Period()) timeframe_16 = Period();
return (timeframe_16);
}
И условие — открывать при возврате после пробития или касания границы канала. Открывать сразу два ордера, профит первого 20 старых пунктов после этого стоп второго переносится на размер профита, закрытие второго по обратному сигналу
avatar

Genri

  • 15 августа 2015, 01:00