Эма Кросс! - страница 66

 
codersguru:
Я пишу версию 3 EMA Cross!

Есть новые идеи?

Какие-нибудь комментарии?

СПАСИБО ВСЕМ, КТО ПОДЕЛИЛСЯ СО МНОЙ ЭТОЙ ТЕМОЙ !

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

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

 
witchazel:
Могли бы вы написать версию, которая работает так же, но я могу установить настройки, чтобы сказать ему не покупать и не продавать. Я не хочу покупать больше, когда продажи закончились, просто ничего не делать Сделки достаточно длинные, это помогло бы иметь это, так как я всегда мог бы торговать с процентами.

Привет,

Во-первых, спасибо за все ваши усилия.

Можно ли сделать функцию для отправки письма раз в день с "результатом дня" (прибыль/убыток за день), т.е. в 9 вечера?

Еще раз спасибо за проделанную работу

 
Originally Posted by codersguru

I'm writing the version 3 of the EMA Cross!

Есть новые идеи?

Какие-нибудь комментарии?

СПАСИБО ВСЕМ, КТО ПОДЕЛИЛСЯ СО МНОЙ ЭТОЙ ТЕМОЙ!

Я потратил некоторое время на изучение этого советника. Он в значительной степени полагается на откат. Чтобы он действительно работал, должен быть метод обнаружения, когда достаточный откат маловероятен, и не входить в позиции в направлении, которое должно быть отработано до TP. Если вы сможете это сделать, у вас действительно что-то получится. Я также работал с похожим советником, который открывает только одну позицию за раз в направлении сигнала. У него та же проблема, поскольку он не определяет границы канальных паттернов и в итоге позиции оказываются брошенными, как и у этого советника. В теории модификация проста: не позволяйте длинные позиции вблизи сильных уровней сопротивления канала и не позволяйте короткие позиции вблизи сильных уровней поддержки канала. Не позволяйте программе входить в них. Пусть она смотрит внутрь канала, а не наружу, чтобы получить прибыль. Когда программа смотрит за пределы канала, она создает брошенные позиции, что вредит ей.

как обнаружить каналы? Я пока не знаю, что для этого подходит...

https://www.mql5.com/en/forum/general

 

Ши Шанель

Дорогой Аарагон Это индикатор

Файлы:
 
expertlive:
Dear Aaragon This Is Indicator

Спасибо за это expertlive!

У меня есть вопрос о том, на какие линии канала на таймфрейме следует обращать наибольшее внимание. Что мне действительно нужно знать, так это как включить этот индикатор в логику исполнения ea, с которой я работаю. Я еще не так далеко продвинулся в изучении программирования. Я хотел бы использовать эти линии канала, чтобы ограничить советника от попадания в позиции, которые должны закрываться за пределами канала. Я работаю на 5м графике, но канал на этом ТФ слишком мал.

15-метровый график показывает размер канала 65 и наклон .53, а 30-метровый график показывает размер канала 246 и наклон -1.62. Это довольно сильно расходится. Единственный способ, который я знаю, как справиться с подобной дилеммой, - это опустить винты бэктеста и иметь возможность менять настройки индикатора в зависимости от того, какой ТФ используется, и посмотреть, какой из них работает лучше.

Я также нашел этот индикатор прорыва...

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

//| 5dayBreakout.mq4 |

//| Bill Sica |

//| http://www.tetsuyama.com |

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

#property copyright "Bill Sica"

#property link "http://www.tetsuyama.com"

#property indicator_chart_window

//---- input parameters

extern int DAYS=5;

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

//---- indicators

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

double daily_high1[20];

double daily_low1[20];

double yesterday_close;

double phigh,plow;

int i=1;

//---- TODO: add your code here

ArrayResize(daily_high1,DAYS);

ArrayResize(daily_low1,DAYS);

ArrayInitialize(daily_high1,0);

ArrayInitialize(daily_low1,0);

ArrayCopySeries(daily_low1, MODE_LOW, Symbol(), PERIOD_D1);

ArrayCopySeries(daily_high1, MODE_HIGH, Symbol(), PERIOD_D1);

/* initialise */

plow=daily_low1[1];

phigh=daily_high1[1];

for(i=1;i<DAYS;i++)

{

if(plow>daily_low1)

{

plow =daily_low1;

}

}

for(i=1;i<DAYS;i++)

{

if(phigh<daily_high1)

{

phigh =daily_high1;

}

}

Comment("\n5dayH ",phigh,"\n5dayL ",plow);

ObjectDelete("5dayHigh1");

ObjectDelete("5dayLow1");

ObjectCreate("5dayHigh1", OBJ_HLINE,0, CurTime(),phigh);

ObjectSet("5dayHigh1",OBJPROP_COLOR,SpringGreen);

ObjectSet("5dayHigh1",OBJPROP_STYLE,STYLE_SOLID);

ObjectCreate("5dayLow1", OBJ_HLINE,0, CurTime(),plow);

ObjectSet("5dayLow1",OBJPROP_COLOR,Red);

ObjectSet("5dayLow1",OBJPROP_STYLE,STYLE_SOLID);

ObjectsRedraw();

return(0);

}

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

Я не знаю, что будет работать лучше. Я знаю, что есть способ выяснить это создайте их оба и протестируйте их!

 
#property copyright "ANG3110@latchess.com"

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

#property indicator_chart_window

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

extern int Hours=24;

extern color col=SkyBlue;

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

double lr,lr0,lrp;

double sx,sy,sxy,sx2,aa,bb;

int p,sName,fs;

int f,f0,f1;

double dh,dl,dh_1,dl_1,dh_2,dl_2;

int ai_1,ai_2,bi_1,bi_2;

double hai,lai,dhi,dli,dhm,dlm,ha0,hap,la0,lap;

double price_p1,price_p0,price_p2,price_01,price_00,price_02;

int p1,p0,p2,fp;

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

int init() {

p=Hours*60/Period();

if (fs==0) {sName=CurTime(); fs=1;}

return(0);}

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

int deinit() {

ObjectDelete("1"+sName);

ObjectDelete("0"+sName);

ObjectDelete("2"+sName); }

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

int start() {

int i,n;

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

if (f==1) {

p1=iBarShift(Symbol(),Period(),ObjectGet("1"+sName,OBJPROP_TIME1));

p0=iBarShift(Symbol(),Period(),ObjectGet("0"+sName,OBJPROP_TIME1));

p2=iBarShift(Symbol(),Period(),ObjectGet("2"+sName,OBJPROP_TIME1));

if (fp==0 && p!=p1) {p=p1; fp=1;}

if (fp==0 && p!=p0) {p=p0; fp=1;}

if (fp==0 && p!=p2) {p=p2; fp=1;}

}

//====================================================

sx=0; sy=0; sxy=0; sx2=0;

for (n=0; n<=p; n++) {sx+=n; sy+=Close[n]; sxy+=n*Close[n]; sx2+=MathPow(n,2);}

aa=(sx*sy-(p+1)*sxy)/(MathPow(sx,2)-(p+1)*sx2); bb=(sy-aa*sx)/(p+1);

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

for (i=0; i<=p; i++) {

lr=bb+aa*i;

dh=High-lr; dl=Low-lr;

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

if (i<p/2) {if (i==0) {dh_1=0.0; dl_1=0.0; ai_1=i; bi_1=i;}

if (dh>=dh_1) {dh_1=dh; ai_1=i;}

if (dl<=dl_1) {dl_1=dl; bi_1=i;}}

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

if (i>=p/2) {if (i==p/2) {dh_2=0.0; dl_2=0.0; ai_2=i; bi_2=i;}

if (dh>=dh_2) {dh_2=dh; ai_2=i;}

if (dl<=dl_2) {dl_2=dl; bi_2=i;}}}

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

lr0=bb; lrp=bb+aa*(i+p);

//===================================================

if (MathAbs(ai_1-ai_2)>MathAbs(bi_1-bi_2)) f=1;

if (MathAbs(ai_1-ai_2)<MathAbs(bi_1-bi_2)) f=2;

if (MathAbs(ai_1-ai_2)==MathAbs(bi_1-bi_2)) {if (MathAbs(dh_1-dh_2)=MathAbs(dl_1-dl_2)) f=2;}

//=================================================

if (f==1) {

for (n=0; n<=20; n++) { f1=0;

for (i=0; i<=p; i++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);

if (i==0 || i==p/2) dhm=0.0;

if (High-hai>dhm && i<p/2) {ai_1=i; f1=1;}

if (High-hai>dhm && i>=p/2) {ai_2=i; f1=1;} }

if (f==0) break;}

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

for (i=0; i<=p; i++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);

dli=Low-hai;

if (i==0) dlm=0.0; if (dli<dlm) dlm=dli;}

ha0=High[ai_1]*(0-ai_2)/(ai_1-ai_2)+High[ai_2]*(0-ai_1)/(ai_2-ai_1);

hap=High[ai_1]*(p-ai_2)/(ai_1-ai_2)+High[ai_2]*(p-ai_1)/(ai_2-ai_1);

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

price_p1=hap;

price_p0=hap+dlm/2;

price_p2=hap+dlm;

price_01=ha0;

price_00=ha0+dlm/2;

price_02=ha0+dlm;

}

//=================================================

if (f==2) {

for (n=0; n<=20; n++) { f1=0;

for (i=0; i<=p; i++) {lai=Low*(i-bi_2)/(bi_1-bi_2)+Low*(i-bi_1)/(bi_2-bi_1);

if (i==0 || i==p/2) dlm=0.0;

if (Low-lai<dlm && i<p/2) {bi_1=i; f1=1;}

if (Low-lai=p/2) {bi_2=i; f1=1;}}

if (f==0) break;}

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

for (i=0; i<=p; i++) {lai=Low*(i-bi_2)/(bi_1-bi_2)+Low*(i-bi_1)/(bi_2-bi_1);

dhi=High-lai;

if (i==0) dhm=0.0; if (dhi>dhm) dhm=dhi;}

la0=Low*(0-bi_2)/(bi_1-bi_2)+Low*(0-bi_1)/(bi_2-bi_1);

lap=Low*(p-bi_2)/(bi_1-bi_2)+Low*(p-bi_1)/(bi_2-bi_1);

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

price_p1=lap;

price_p0=lap+dhm/2;

price_p2=lap+dhm;

price_01=la0;

price_00=la0+dhm/2;

price_02=la0+dhm;

}

//===================================================================================

ObjectCreate("1"+sName,2, 0,Time[p],price_p1,Time[0],price_01);

ObjectCreate("0"+sName,2, 0,Time[p],price_p0,Time[0],price_00);

ObjectCreate("2"+sName,2, 0,Time[p],price_p2,Time[0],price_02);

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

ObjectSet("1"+sName,OBJPROP_COLOR,col);

ObjectSet("0"+sName,OBJPROP_COLOR,col);

ObjectSet("0"+sName,OBJPROP_STYLE,STYLE_DOT);

ObjectSet("2"+sName,OBJPROP_COLOR,col);

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

ObjectSet("1"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("1"+sName,OBJPROP_PRICE1,price_p1);

ObjectSet("1"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("1"+sName,OBJPROP_PRICE2,price_01);

ObjectSet("0"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("0"+sName,OBJPROP_PRICE1,price_p0);

ObjectSet("0"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("0"+sName,OBJPROP_PRICE2,price_00);

ObjectSet("2"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("2"+sName,OBJPROP_PRICE1,price_p2);

ObjectSet("2"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("2"+sName,OBJPROP_PRICE2,price_02);

//==================================================================

f=1; p1=p; p0=p; p2=p; fp=0;

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

return(0);}

//=====================================================================================

Ок, этот не дает мне разные наклоны на каждом временном интервале. Это зависит от того, как далеко назад я провожу линии, чтобы определить наклон...

Хм, теперь есть три способа сделать это...

один, который использует самые высокие максимумы и самые низкие минимумы, один, который дает расходящиеся наклоны и вот этот.... Я стесняюсь того, который дает расходящиеся наклоны на каждом ТФ. Если я буду делать фильтр на его основе, я не могу понять, как наклон меняется так волатильно.

 

ши шанель - версия 2 новая

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

Файлы:
 
expertlive:
дорогой Арагорн... это новая версия и график, чтобы вы знали, как его использовать.

спасибо за вашу работу expertlive. У меня проблемы с тем, чтобы он успешно загружался в платформу.

Я распаковываю его в папку индикатора, но он не появляется, когда я перезапускаю платформу. Я не уверен, почему.

Не могли бы вы просто прикрепить его или разместить код здесь напрямую, без распаковки, и, возможно, это сработает?

Это должно быть в папке experts или в папке indicators? Выполняет ли это на самом деле ордера на покупку/продажу или это просто индикатор?

Из изображения, которое вы разместили, ясно, что вы понимаете, что я пытаюсь сделать здесь. Держите программу в пределах канала. Вы знаете, как запрограммировать его для этого?

 

shi shanel v.2 new

Aaragorn:
Спасибо за вашу работу expertlive. У меня проблемы с тем, чтобы он успешно загружался в платформу.

Я распаковываю его в папку индикатора, но он не появляется, когда я перезапускаю платформу. Я не уверен, почему.

Не могли бы вы просто прикрепить его или разместить код здесь напрямую без распаковки, и, возможно, это сработает?

Это должно быть в папке experts или в папке indicators? Выполняет ли это на самом деле ордера на покупку/продажу или это просто индикатор?

Из изображения, которое вы разместили, ясно, что вы понимаете, что я пытаюсь сделать. Держите программу в пределах канала. Вы знаете, как запрограммировать его на это?

Используйте это, если это не работает, скажите мне прислать еще раз.

 

это отлично работает expertlive, спасибо! Не могли бы вы модифицировать этот индикатор таким же образом? Я думаю, что этот индикатор мне нравится больше, чем shi, хотя они так похожи, этот кажется мне более стабильным. Не могли бы вы подсказать мне, как сделать модифицированный индикатор частью советника, чтобы я мог его протестировать? Или вы могли бы это сделать? Я хотел бы добавить это в качестве фильтра для этих двух советников (см. вложение).

#property copyright "ANG3110@latchess.com"

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

#property indicator_chart_window

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

extern int Hours=24;

extern color col=SkyBlue;

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

double lr,lr0,lrp;

double sx,sy,sxy,sx2,aa,bb;

int p,sName,fs;

int f,f0,f1;

double dh,dl,dh_1,dl_1,dh_2,dl_2;

int ai_1,ai_2,bi_1,bi_2;

double hai,lai,dhi,dli,dhm,dlm,ha0,hap,la0,lap;

double price_p1,price_p0,price_p2,price_01,price_00,price_02;

int p1,p0,p2,fp;

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

int init() {

p=Hours*60/Period();

if (fs==0) {sName=CurTime(); fs=1;}

return(0);}

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

int deinit() {

ObjectDelete("1"+sName);

ObjectDelete("0"+sName);

ObjectDelete("2"+sName); }

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

int start() {

int i,n;

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

if (f==1) {

p1=iBarShift(Symbol(),Period(),ObjectGet("1"+sName,OBJPROP_TIME1));

p0=iBarShift(Symbol(),Period(),ObjectGet("0"+sName,OBJPROP_TIME1));

p2=iBarShift(Symbol(),Period(),ObjectGet("2"+sName,OBJPROP_TIME1));

if (fp==0 && p!=p1) {p=p1; fp=1;}

if (fp==0 && p!=p0) {p=p0; fp=1;}

if (fp==0 && p!=p2) {p=p2; fp=1;}

}

//====================================================

sx=0; sy=0; sxy=0; sx2=0;

for (n=0; n<=p; n++) {sx+=n; sy+=Close[n]; sxy+=n*Close[n]; sx2+=MathPow(n,2);}

aa=(sx*sy-(p+1)*sxy)/(MathPow(sx,2)-(p+1)*sx2); bb=(sy-aa*sx)/(p+1);

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

for (i=0; i<=p; i++) {

lr=bb+aa*i;

dh=High-lr; dl=Low-lr;

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

if (i<p/2) {if (i==0) {dh_1=0.0; dl_1=0.0; ai_1=i; bi_1=i;}

if (dh>=dh_1) {dh_1=dh; ai_1=i;}

if (dl<=dl_1) {dl_1=dl; bi_1=i;}}

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

if (i>=p/2) {if (i==p/2) {dh_2=0.0; dl_2=0.0; ai_2=i; bi_2=i;}

if (dh>=dh_2) {dh_2=dh; ai_2=i;}

if (dl<=dl_2) {dl_2=dl; bi_2=i;}}}

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

lr0=bb; lrp=bb+aa*(i+p);

//===================================================

if (MathAbs(ai_1-ai_2)>MathAbs(bi_1-bi_2)) f=1;

if (MathAbs(ai_1-ai_2)<MathAbs(bi_1-bi_2)) f=2;

if (MathAbs(ai_1-ai_2)==MathAbs(bi_1-bi_2)) {if (MathAbs(dh_1-dh_2)=MathAbs(dl_1-dl_2)) f=2;}

//=================================================

if (f==1) {

for (n=0; n<=20; n++) { f1=0;

for (i=0; i<=p; i++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);

if (i==0 || i==p/2) dhm=0.0;

if (High-hai>dhm && i<p/2) {ai_1=i; f1=1;}

if (High-hai>dhm && i>=p/2) {ai_2=i; f1=1;} }

if (f==0) break;}

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

for (i=0; i<=p; i++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);

dli=Low-hai;

if (i==0) dlm=0.0; if (dli<dlm) dlm=dli;}

ha0=High[ai_1]*(0-ai_2)/(ai_1-ai_2)+High[ai_2]*(0-ai_1)/(ai_2-ai_1);

hap=High[ai_1]*(p-ai_2)/(ai_1-ai_2)+High[ai_2]*(p-ai_1)/(ai_2-ai_1);

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

price_p1=hap;

price_p0=hap+dlm/2;

price_p2=hap+dlm;

price_01=ha0;

price_00=ha0+dlm/2;

price_02=ha0+dlm;

}

//=================================================

if (f==2) {

for (n=0; n<=20; n++) { f1=0;

for (i=0; i<=p; i++) {lai=Low*(i-bi_2)/(bi_1-bi_2)+Low*(i-bi_1)/(bi_2-bi_1);

if (i==0 || i==p/2) dlm=0.0;

if (Low-lai<dlm && i<p/2) {bi_1=i; f1=1;}

if (Low-lai=p/2) {bi_2=i; f1=1;}}

if (f==0) break;}

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

for (i=0; i<=p; i++) {lai=Low*(i-bi_2)/(bi_1-bi_2)+Low*(i-bi_1)/(bi_2-bi_1);

dhi=High-lai;

if (i==0) dhm=0.0; if (dhi>dhm) dhm=dhi;}

la0=Low*(0-bi_2)/(bi_1-bi_2)+Low*(0-bi_1)/(bi_2-bi_1);

lap=Low*(p-bi_2)/(bi_1-bi_2)+Low*(p-bi_1)/(bi_2-bi_1);

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

price_p1=lap;

price_p0=lap+dhm/2;

price_p2=lap+dhm;

price_01=la0;

price_00=la0+dhm/2;

price_02=la0+dhm;

}

//===================================================================================

ObjectCreate("1"+sName,2, 0,Time[p],price_p1,Time[0],price_01);

ObjectCreate("0"+sName,2, 0,Time[p],price_p0,Time[0],price_00);

ObjectCreate("2"+sName,2, 0,Time[p],price_p2,Time[0],price_02);

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

ObjectSet("1"+sName,OBJPROP_COLOR,col);

ObjectSet("0"+sName,OBJPROP_COLOR,col);

ObjectSet("0"+sName,OBJPROP_STYLE,STYLE_DOT);

ObjectSet("2"+sName,OBJPROP_COLOR,col);

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

ObjectSet("1"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("1"+sName,OBJPROP_PRICE1,price_p1);

ObjectSet("1"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("1"+sName,OBJPROP_PRICE2,price_01);

ObjectSet("0"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("0"+sName,OBJPROP_PRICE1,price_p0);

ObjectSet("0"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("0"+sName,OBJPROP_PRICE2,price_00);

ObjectSet("2"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("2"+sName,OBJPROP_PRICE1,price_p2);

ObjectSet("2"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("2"+sName,OBJPROP_PRICE2,price_02);

//==================================================================

f=1; p1=p; p0=p; p2=p; fp=0;

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

return(0);}

//=====================================================================================

Изображение .gif показывает разницу между ними на графике. Количество баров, на которые он смотрит, тоже меняет его движение на графике. на каком языке shi показывает на графике? Может ли он показывать английский?

На EMA CROSS я не просто хочу установить стоп-лосс на уровне фильтра, я не хочу, чтобы EMA CROSS вообще открывал позицию, которая должна закрыться за пределами канала. Это будет зависеть от цели TP, но именно так я бы хотел, чтобы фильтр работал на EMA CROSS и на "любом" советнике.

Я восхищаюсь вашей способностью программировать, я хотел бы знать, как это делать больше.

Файлы:
Причина обращения: