АвторСообщение



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 06.12.13 20:40. Заголовок: Стратегия AG_UseLinesIndicator


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

Спасибо: 0 
Цитата Ответить
Ответов - 7 [только новые]





Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 06.12.13 20:55. Заголовок: дополнение



стратегия программы блиска к задуменной. при пересечении линий выставляем два одинаковых ордера с параметрами sl и tp и дальше не торгуем до закрытия.
прикрепляю код. самому не сообразить как реализовать эту стратегию.



//+------------------------------------------------------------------+
//| ElderRaySystem.mq4 |
//| Copyright © 2010, LeMan. |
//| b-market@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, LeMan."
#property link "b-market@mail.ru"

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_width1 3
#property indicator_width2 3
//---- input parameters
extern bool ShowSeason = true;
extern int season = 21; вторий индюк с числом 3
extern int ray = 0;
//---- buffers
double UpBuffer[];
double DnBuffer[];
double Buffer[];
int p;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorDigits(Digits);
SetIndexStyle(0, DRAW_ARROW);
SetIndexArrow(0,159);
SetIndexBuffer(0, UpBuffer);
SetIndexStyle(1, DRAW_ARROW);
SetIndexArrow(1,159);
SetIndexBuffer(1, DnBuffer);
SetIndexStyle(2, DRAW_LINE);
SetIndexBuffer(2, Buffer);
switch(Period()) {
case 1: p = 5; break;
case 5: p = 30; break;
case 15: p = 60; break;
case 30: p = 240; break;
case 60: p = 240; break;
case 240: p = 1440; break;
case 1440: p = 10080; break;
case 10080: p = 43200; break;
case 43200: p = 43200; break;
}

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() {
int i, limit, counted_bars = IndicatorCounted();
if(counted_bars > 0) counted_bars--;
limit = iBars(NULL,0)-counted_bars;
for (i = 0; i < limit; i++) {
UpBuffer = 0;
DnBuffer = 0;
int shift = iBarShift(NULL,p,iTime(NULL,0,i));
double ma1 = iMA(NULL, 0, ray, 0, MODE_EMA, PRICE_CLOSE, i+1);
double ma2 = iMA(NULL, 0, ray, 0, MODE_EMA, PRICE_CLOSE, i+2);
double ma3 = iMA(NULL, p, season, 0, MODE_EMA, PRICE_CLOSE, shift+1);
double ma4 = iMA(NULL, p, season, 0, MODE_EMA, PRICE_CLOSE, shift+2);
if (ma3 > ma4 && Low[i+2] < ma2 && Low[i+1] > ma1) {
UpBuffer = High[i+1]+10*Point;
}
if (ma3 < ma4 && High[i+2] > ma2 && High[i+1] < ma1) {
DnBuffer = Low[i+1]-10*Point;
}
if (ShowSeason == True) Buffer = ma3;
}
return(0);
}
//+------------------------------------------------------------------+

Спасибо: 0 
Цитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 07.12.13 20:39. Заголовок: разобрался


подобрал ставим индикатор из программы (AG Custom Lines) с параметрами первое 1 второе 125. получается очень похоже.
осталось соединить со стратегией AG_UseLinesIndicator и опробовать.
отпишитесь у кого чего получится.

Спасибо: 0 
Цитата Ответить
постоянный участник


Пост N: 601
Зарегистрирован: 03.09.09
ссылка на сообщение  Отправлено: 09.12.13 14:11. Заголовок: Даже не знаю, что ту..


Даже не знаю, что тут ответить... :)
Вопрос то уже решен. У Вас лишь небольшая неувязка - индикатор использует стрелки (стиль DRAW_ARROW), а используется стратегия ULI (стратегия работает с линейными индикаторами). Для решения нужно либо изменить в коде исходного индикатора тип буферов на DRAW_LINE, либо с ним же использовать стратегию UAI.

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 18.12.13 18:09. Заголовок: извиняюсь за свое непонимание по данному вопросу


извиняюсь за свою неграматность в данном вопросе, но если есть время отпишитесь пожалуйста.
на примере 7 достаточно подробно расписано как на основе линейного индикатора можно создать свою стратегию по пересечению линий индикатора.
пробую на демо ничего не получается- сделки не открывает. индикатор называю AG_Custom_Lines.mq4 -код или 2 пост или ниже, стратегию ставлю ULI.
подскажите что надо сделать что бы при пересечении одной линии (быстрой) более медленной открывалась позиция бай(пересекает снизу вверх) или шел (пересекает сверху вниз) , ордер выставляется при открытии следующей свечи на м15
буду очень признателен за ответ- бьюсь уже месяц ничего не получается.
код второго варианта индикатора прикрепляю он уже с двумя нужными линиями.
№ 2 главная линия ,№0 сигнальная линия
//+------------------------------------------------------------------+
//| AO+EMA_zotik indicator |
//| Copyright © 2008 |
//| Zot@pisem.net|
//+------------------------------------------------------------------+

//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 LightSeaGreen
#property indicator_color2 DimGray
#property indicator_color3 Red
#property indicator_width1 2
#property indicator_width2 1
#property indicator_width3 1
//---- indicator parameters
extern int FastSMA=3;
extern int SlowSMA=34;
extern int EMA=21;
extern int SlowEMA=55;
extern int V=34;
//---- indicator buffers
double AOBuffer[];
double EMABuffer[];
double VBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- drawing settings
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
SetIndexDrawBegin(1,EMA);
IndicatorDigits(Digits+1);
//---- indicator buffers mapping
SetIndexBuffer(0,AOBuffer);
SetIndexBuffer(1,EMABuffer);
SetIndexBuffer(2,VBuffer);
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("AO_Line("+FastSMA+","+SlowSMA+")+AO_MF("+EMA+","+SlowEMA+")+V("+V+")");
SetIndexLabel(0,"AO");
SetIndexLabel(1,"EMA");
SetIndexLabel(2,"V");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
for(int i=0; i<limit; i++)
AOBuffer=iMA(NULL,0,FastSMA,0,MODE_SMA,PRICE_MEDIAN,i)-iMA(NULL,0,SlowSMA,0,MODE_SMA,PRICE_MEDIAN,i);
//---- signal line counted in the 2-nd buffer
for(i=0; i<limit; i++)
EMABuffer=iMA(NULL,0,EMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- V line counted in the 3-d buffer
for(i=0; i<limit; i++)
VBuffer=iMA(NULL,0,V,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,V,0,MODE_SMA,PRICE_MEDIAN,i);
//---- done
return(0);
}
//+------------------------------------------------------------------+

Спасибо: 0 
Цитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.12.13 10:07. Заголовок: Хвала СОЗДАТЕЛЮ прог..


Хвала СОЗДАТЕЛЮ программы, получилось запустить последний индюк на тестере. все работает как часы. где то в параметрах быпа не стыковка.
пока тестирую- беспорно сливает в таком виде как есть.
вообще замысел был такой что бы открывалось два ордере в одну сторону одновременно, оба тянулись в безубыток. первый закрывался например на 10п профита, а второй тянулся до 150п. в программе AG4 вроде все есть для этого. потому что есть движения большие а приходится фиксировать по заданным маленьким параметрам. хотя бы тралить открытые ордера в +1 профита. Подскажите как это реализовать. можт надо открыть две вкладки с одним инструментом и функции разные наложить?!? тогда на тестере не проверить. подскажите не проходите мимо.

Спасибо: 0 
Цитата Ответить
Автор




Пост N: 1077
Зарегистрирован: 21.05.06
Откуда: Украина, Днепропетровск
ссылка на сообщение  Отправлено: 19.12.13 11:44. Заголовок: Не очень понятно зач..


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

Параметры, подобные 10 и 150, не являются торговыми критериями, а скорее это пожелание. На это не стоит ориентироваться. Вся работа при создании стратегии должна сводиться к поиску работающих торговых критериев.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1
Зарегистрирован: 03.10.16
ссылка на сообщение  Отправлено: 03.10.16 17:26. Заголовок: Спасибо за дельные с..


Спасибо за дельные советы

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет