Перейти к содержанию
Форекс Форум трейдеров Академии «MasterForex-V»

Создание индикаторов


Рекомендуемые сообщения

Здравствуйте коллеги.Приходится сидеть с ребенком и процесс контроля за ценой бывает затруднителен.Не могли бы .если не трудно. скрипт сделать для такого отображения цены как на рисунке.

Спасибо.Буду очень признателен.

http://s61.radikal.ru/i173/1007/34/2eaf2cf0c259.jpg

Приветы.Сразу скажу,что не программист.Вот что получилось.

Код:

//+------------------------------------------------------------------+

//| price1.mq4 |

//| Copyright © 2010, MetaQuotes Software Corp. |

//| http://www.metaquotes.net |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2010, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

 

#property indicator_chart_window

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

//---- indicators

 

 

// новый объект TextLabel

ObjectSetText("label_object", "Oleg", 72, "Times New Roman", Black);

if(!ObjectCreate("label_object", OBJ_LABEL, 0, 0, 0))

{

Print("error: can't create label_object! code #",GetLastError());

return(0);

}

ObjectSet("label_object", OBJPROP_XDISTANCE, 100);

ObjectSet("label_object", OBJPROP_YDISTANCE, 100);

 

//----

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

 

//----

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted();

//----

 

//----

return(0);

}

//+------------------------------------------------------------------+

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

http://i064.radikal.ru/1008/5b/33938cfe6e5f.jpg

 

 

 

 

 

Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...
  • Ответов 159
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Здравствуйте, пытаюсь прописать индикатор, но не получается - маловато опыта, только пытаюсь программирование осваивать.

Смысл в том, что мне нужно обработать от текущего бара предыдущие 21 бар по формуле и нарисовать по этим результатам линию, но как раз эта линия и не получается.

Посмотрите в чем моя ошибка, а то по учебнику Ковалева в инете до меня не доходит без наставника

 

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

// cena.mq4

// Предназначен для использования в качестве примера.

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

#property indicator_chart_window // Индик. рисуется в основном окне

#property indicator_buffers 1 // Количество буферов

#property indicator_color1 Red // Цвет первой линии

 

extern int History =500; // Колич.баров в расчётной истории

extern int Aver_Bars=22; // Количество баров для расчёта

 

double Line_0[]; // Открытие массивов данных

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

int init() // Специальная функция init()

{

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

SetIndexBuffer(0,Line_0); // Назначение массива буферу 0

SetIndexStyle (0,DRAW_LINE,STYLE_DOT,1);// Стиль линии

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

return; // Выход из спец. ф-ии init()

}

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

int start() // Специальная функция start()

{

int i, // Индекс бара

n, // Формальный параметр (индекс)

Counted_bars; // Количество просчитанных баров

double

A; // Объявление моей функции

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

Counted_bars=IndicatorCounted(); // Количество просчитанных баров

i=Bars-Counted_bars-1; // Индекс первого непосчитанного

if (i>History-1) // Если много баров то ..

i=History-1; // ..рассчитывать заданное колич.

 

while(i>=0) // Цикл по непосчитанным барам

{

A=0.0; // Обнуление в начале цикла

A=A + Close[n-1]+21*(Close[n-1]-Close[n-20])+210*(Close[n-19]-Close[n-2])+1330*(Close[n-3]-Close[n-18])+5985*(Close[n- 17]-Close[n-4])+20349*(Close[n-5]-Close[n-16])+54264*(Close[n-15]-Close[n-6])+116280*(Close[n-7]-Close[n- 14])+203490*(Close[n-13]-Close[n-8])+293930*(Close[n-9]-Close[n-12])+352716*(Close[n-11]-Close[n-10]); // Обработка предыдущих значений

Line_0= A; // Значение 0 буфера на i-ом баре

 

i--; // Расчёт индекса следующего бара

}

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

return; // Выход из спец. ф-ии start()

}

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

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Добавь в код

Print("A= ",A);

и в журнале увидишь

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

Это потому, что твой параметр n не чего не значит. Если в формуле его заменить на i

Close[i-1]+21*(Close[i-1]-Close[i-20])... то есть берем конкретную цену

и видим, что она считает

10:55:26 Cena EURUSD,M5: A= 80.3523

10:55:26 Cena EURUSD,M5: A= -92.8802

10:55:26 Cena EURUSD,M5: A= 111.4259

10:55:26 Cena EURUSD,M5: A= -126.4143

10:55:26 Cena EURUSD,M5: A= 137.6713

10:55:26 Cena EURUSD,M5: A= -122.8221

10:55:26 Cena EURUSD,M5: A= 96.6669

10:55:26 Cena EURUSD,M5: A= -69.8827

10:55:26 Cena EURUSD,M5: A= 72.9852

10:55:26 Cena EURUSD,M5: A= -95.7422

10:55:26 Cena EURUSD,M5: A= 128.7801

Естественно с такими расчетами ничего выводиться не будет! А где ты взял эту формулу?

Что ты хотел получить?

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте коллеги.Приходится сидеть с ребенком и процесс контроля за ценой бывает затруднителен.Не могли бы .если не трудно. скрипт сделать для такого отображения цены как на рисунке.

Спасибо.Буду очень признателен.

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

Судя по дельте в датах постов, может еще и пригодится ответ :biggrin:

Close - Документация на MQL4

Ask - Документация на MQL4

Ссылка на комментарий
Поделиться на другие сайты

Добавь в код

Print("A= ",A);

и в журнале увидишь

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

10:20:12 Cena EURUSD,M5: A= 0

Это потому, что твой параметр n не чего не значит. Если в формуле его заменить на i

Close[i-1]+21*(Close[i-1]-Close[i-20])... то есть берем конкретную цену

и видим, что она считает

10:55:26 Cena EURUSD,M5: A= 80.3523

10:55:26 Cena EURUSD,M5: A= -92.8802

10:55:26 Cena EURUSD,M5: A= 111.4259

10:55:26 Cena EURUSD,M5: A= -126.4143

10:55:26 Cena EURUSD,M5: A= 137.6713

10:55:26 Cena EURUSD,M5: A= -122.8221

10:55:26 Cena EURUSD,M5: A= 96.6669

10:55:26 Cena EURUSD,M5: A= -69.8827

10:55:26 Cena EURUSD,M5: A= 72.9852

10:55:26 Cena EURUSD,M5: A= -95.7422

10:55:26 Cena EURUSD,M5: A= 128.7801

Естественно с такими расчетами ничего выводиться не будет! А где ты взял эту формулу?

Что ты хотел получить?

 

Я хочу сделать индикатор изменения ускорений цены, есть определенные мысли по этому поводу. Параметр n - это количество баров от текущего или расчет произвожу по предыдущим 21 барам. Можно в принципе сразу разницу в скобках поставить. Это я сделал, что бы количество исследуемых баров менять можно было. За совет спасибо. Можем насчет идеи пообщаться в личке, если хотите)))

Ссылка на комментарий
Поделиться на другие сайты

 

Естественно с такими расчетами ничего выводиться не будет! А где ты взял эту формулу?

Что ты хотел получить?

 

Я хочу сделать индикатор изменения ускорений цены, есть определенные мысли по этому поводу. Параметр n - это количество баров от текущего или расчет произвожу по предыдущим 21 барам. Можно в принципе сразу разницу в скобках поставить. Это я сделал, что бы количество исследуемых баров менять можно было. За совет спасибо. Можем насчет идеи пообщаться в личке, если хотите)))

 

В формуле Close[n-1] и т.д про n сказал выше, а 1 - это индекс бара, т.е. 1-й после нулевого. Такой общий смысл

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Привет всем!! Вот нашел прау скриптов но т.к в программировании полный ноль то прошу что бы вы смогли довести д оума этот индикатор.

Вот код, проблема в том что когда вставляю в мт4, выдает ошибку , я пытался ее исправить но как писал, в программировании 0

 

скаченно с сайта http://wiki.fxprogrammers.com/index.php/Nonlinear_Ehlers_Filter

 

function Init()

indicator:name("Nonlinear Ehlers Filter");

indicator:description("Nonlinear Ehlers Filter");

indicator:requiredSource(core.Bar);

indicator:type(core.Indicator);

indicator.parameters:addInteger("Length", "No name", "No description", 15);

indicator.parameters:addColor("Color of Ehlers", "Color of Ehlers", core.rgb(255, 0, 0));

end

-- Indicator instance initialization routine

-- Processes indicator parameters and creates output streams

-- TODO: Refine the first period calculation for each of the output streams.

-- TODO: Calculate all constants, create instances all subsequent indicators and load all required libraries

-- Parameters block

local Length;

local priceSource = nil;

local first;

local source = nil;

-- Streams block

local Ehlers = nil;

-- Routine

function Prepare()

Length = instance.parameters.Length;

source = instance.source;

first = source:first() + Length + 5;

priceSource = instance:addInternalStream(source:first());

local name = profile:id() .. "(" .. source:name() .. ", " .. Length .. ")";

instance:name(name);

Ehlers = instance:addStream("Ehlers", core.Line, name, "Ehlers", instance.parameters.Ehlers_color, first)

end

-- Indicator calculation routine

-- TODO: Add your code for calculation output values

function Update(period)

priceSource[period] = (source.high[period] + source.low[period]) / 2;

if period >= first and source:hasData(period) then

local i = 0;

local Num = 0;

local SumCoef = 0;

for i = 0, Length - 1 do

local Coef = math.abs(priceSource[period - i] - priceSource[period - i - 5]);

Num = Num + Coef * priceSource[period - i];

SumCoef = SumCoef + Coef;

end

Ehlers[period] = Num / SumCoef;

end

end

 

 

 

это 1 код а вот еще:

 

сайт http://forum.esignal.com/showthread.php?threadid=29610

 

 

/*********************************

 

Provided By:

 

eSignal (Copyright c eSignal), a division of Interactive Data

 

Corporation. 2008. All rights reserved. This sample eSignal

 

Formula Script (EFS) is for educational purposes only and may be

 

modified and saved under a new file name. eSignal is not responsible

 

for the functionality once modified. eSignal reserves the right

 

to modify and overwrite this EFS file with each new release.

 

 

 

Description:

 

Ehlers Filter

 

 

 

Version: 1.0 01/16/2009

 

 

 

Formula Parameters: Default:

 

Length 15

 

Thickness line 2

 

Line Color Green

 

Display Cursor Labels True

 

 

 

Notes:

 

The related article is copyrighted material. If you are not

 

a subscriber of Stocks & Commodities, please visit <a href="http://www.traders.com." target="_blank">www.traders.com.</a>

 

 

 

**********************************/

 

 

 

var fpArray = new Array();

 

var bInit = false;

 

 

 

function preMain() {

 

 

 

setPriceStudy(false);

 

setShowCursorLabel(false);

 

setShowTitleParameters( false );

 

 

 

setStudyTitle("Ehlers Filter");

 

setCursorLabelName("Ehlers", 0);

 

 

 

setDefaultBarFgColor(Color.green, 0);

 

setPlotType(PLOTTYPE_LINE, 0);

 

setDefaultBarThickness(2, 0);

 

 

 

 

 

askForInput();

 

var x=0;

 

fpArray[x] = new FunctionParameter("LineColor", FunctionParameter.COLOR);

 

with(fpArray[x++]){

 

setName("Line Color");

 

setDefault(Color.green);

 

}

 

 

 

fpArray[x] = new FunctionParameter("ViewValue", FunctionParameter.BOOLEAN);

 

with(fpArray[x++]){

 

setName("Display Cursor Labels");

 

setDefault(true);

 

}

 

 

 

fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER);

 

with(fpArray[x++]){

 

setLowerLimit(1);

 

setDefault(15);

 

}

 

 

 

fpArray[x] = new FunctionParameter("Thickness", FunctionParameter.NUMBER);

 

with(fpArray[x++]){

 

setName("Line Thickness");

 

setLowerLimit(1);

 

setDefault(2);

 

}

 

 

 

}

 

 

 

var xCoef = null;

 

var xPrice = null;

 

 

 

function main(Length, Thickness, LineColor, ViewValue) {

 

var nNum = 0;

 

var nSumCoef = 0;

 

var nCount = 0;

 

var nFilt = 0;

 

 

 

if ( bInit == false ) {

 

setDefaultBarFgColor(LineColor, 0);

 

setDefaultBarThickness(Thickness, 0);

 

setShowCursorLabel(ViewValue);

 

xPrice = hl2();

 

xCoef = efsInternal("Calc_Coef", xPrice)

 

bInit = true;

 

}

 

 

 

for (nCount = 0; nCount < Length; nCount++) {

 

nNum += xCoef.getValue(-nCount) * xPrice.getValue(-nCount);

 

nSumCoef += xCoef.getValue(-nCount);

 

}

 

 

 

if (nSumCoef != 0) {

 

nFilt = nNum / nSumCoef;

 

}

 

 

 

return nFilt;

 

}

 

 

 

function Calc_Coef(xPrice) {

 

var nRes = 0;

 

nPrice = 0;

 

 

 

nPrice = xPrice.getValue(-5);

 

 

 

if (nPrice == null) nPrice = 0;

 

 

 

nRes = Math.abs(xPrice.getValue(0) - nPrice);

 

 

 

return nRes;

 

}

 

 

 

т.е как уже поняли , это код который надо довести до ума , что бы он стал индикатором в мт4.

Изменено пользователем Ravenloff
Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...
  • 1 месяц спустя...

люди, а кто в курсе за 392 версию МТ4.

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

проблема поднималась Zhunko на http://forum.mql4.com/ru/39603

дак как с этим бороться?

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...
Прощу прощения если не сюда пишу! Меня интересует индикатор MACD с двумя линиями как на рисунке, в мт4 другой с одной линией, подскажите пожалуйста где взять такой как на рисунке?

post-124003-0-40859000-1305288922_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Прощу прощения если не сюда пишу! Меня интересует индикатор MACD с двумя линиями как на рисунке, в мт4 другой с одной линией, подскажите пожалуйста где взять такой как на рисунке?

 

Держи

Ссылка на комментарий
Поделиться на другие сайты

Прощу прощения если не сюда пишу! Меня интересует индикатор MACD с двумя линиями как на рисунке, в мт4 другой с одной линией, подскажите пожалуйста где взять такой как на рисунке?

 

Извиняюсь

GA ELDER COLOR BAR.rar

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

ulanrd скажи пожалуйста а можешь сделать индикатор для мт4 есть код вот он

по ссылке?

 

http://forum.esignal.com/showthread.php?threadid=30545 индикатор очень хороший и пригодиться для торговли

Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...
подскажите, как можно изменить тестер в МТ4, что бы его можно было зациклить на последнем баре (т.е. когда он отработает последний бар его не пришлось бы перезапускать и ждать когда он дойдет до последнего бара с новыми котировками, а сам автоматически перезагружался и снова отрабатывал последний бар с новыми котировками) Или подскажите возможно создание индикатора с такими условиями?
Ссылка на комментарий
Поделиться на другие сайты

  • 4 месяца спустя...

roboPROF – это команда единомышленников, торгующих на фьючерсных площадках различных бирж и программирующих для различных торговых платформ, таких как Quik, Amibroker, Wealth-Lab и на языке С#.

Подчеркнем, что мы Любители, а не «Профессионалы». Биржевая Торговля и Программирование – это наше хобби.

Сайт roboprof.ru посвящен программным разработкам для авто/алго-торговли и Биржевой торговле на финансовых рынках. Cайт также познакомит Вас с основами и теорией опционной и фьючерсной торговли, интересным видео. Так же, здесь Вы найдете наши возможные открытия и многое другое.

На данном сайте мы будем выкладывать как наши собственные разработки (частично бесплатно и, ХОТЯ, в большинстве случаев – БЕСПЛАТНО) так и бесплатные разработки сторонних разработчиков раскиданных на просторах Интернет, а также будем указывать ссылки на сайты платных разработок.

 

Нами разработан по НОВОМУ индикатор Опционные уровни (OPTION LEVELS) без ежемесячных денежных трат и иные индикаторы для успешной торговли.

 

http://roboprof.ru

sale@roboprof.ru

Skype: robo.prof

Ссылка на комментарий
Поделиться на другие сайты


×
×
  • Создать...