Ema Cross! - página 66

 
codersguru:
Estou escrevendo a versão 3 da Cruz EMA!

Alguma idéia nova?

Algum comentário?

AGRADECIMENTOS A TODOS OS PONTOS QUE PARTILHARAM ESTA LINHA !

Talvez você possa escrever uma versão que funcione da mesma maneira, mas eu posso definir um cenário para dizer-lhe para não comprar e não vender. Eu não quero comprar mais quando a venda está desativada, apenas não fazer nada

O comércio é longo o suficiente para ajudar a ter isso, pois sempre poderia negociar com o interesse

 
witchazel:
Talvez você possa escrever uma versão que funcione da mesma maneira, mas eu posso definir um cenário para dizer-lhe que não compre e não venda. Não quero comprar mais quando a venda está desativada, só não fazer nada As negociações são longas o suficiente para que isso seja possível, pois sempre poderia negociar com o interesse

Olá,

primeiro, obrigado por todo o seu esforço

Seria possível codificar uma função para enviar um e-mail uma vez por dia com "o resultado dos dias" (lucro/perda do dia), ou seja, às 21h?

Mais uma vez obrigado pelo trabalho duro

 
Originalmente publicado por codersguru

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

Alguma idéia nova?

Algum comentário?

OBRIGADO POR TODOS OS POETAS QUE ME COMPARTILHARAM ESTE FIO CONDUTOR!

Eu passei algum tempo estudando este EA. Ela depende muito do retracement. Para realmente fazer este trabalho, é preciso haver um método para detectar quando é improvável que haja retracement suficiente e não entrar em posições na direção que precisará ser retracement para TP. Se você puder fazer isso, você realmente terá algo aqui. Também tenho trabalhado com uma EA semelhante que só abre uma posição de cada vez na direção do sinal. Ela tem o mesmo problema, pois não detecta os limites dos padrões de canalização e termina em posições que se tornam abandonadas como esta EA faz. A modificação é simples em teoria, não permite posições longas quando perto de níveis fortes de resistência do canal e não permite posições curtas perto de níveis fortes de suporte do canal. Evite que o programa entre nestas. Mantenha-o olhando para o interior do canal e não para o exterior para obter seus lucros. É quando ele olha para fora do canal que ele cria posições abandonadas que o prejudicam.

como detectar canais? Ainda não sei o que funciona para isso...

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

 

Shi Chanel

Prezado Aaragon Este é um Indicador

Arquivos anexados:
 
expertlive:
Prezado Aaragon Este é o Indicador

Obrigado por esse especialista ao vivo!

Tenho uma pergunta sobre quais linhas de canal de tempo para prestar mais atenção. O que eu realmente preciso saber é como incluir este indicador na lógica de execução da ea com a qual estou trabalhando. Ainda não estou tão longe com meu aprendizado de programação. Gostaria de usar estas linhas de canal para limitar o EA de entrar em posições que teriam que fechar fora do canal. Estou trabalhando em um gráfico de 5m, mas o canal naquela TF é muito pequeno.

O gráfico de 15m mostra um tamanho de canal de 65 e inclinação de 0,53 enquanto o gráfico de 30m mostra um tamanho de canal de 246 e inclinação de -1,62. Isso é bastante divergente. A única maneira que eu sei como administrar este tipo de dilema é colocar os parafusos de retrocesso e ser capaz de mudar as configurações do indicador quanto ao TF que é usado e ver qual funciona melhor.

Também encontrei este indicador de quebra...

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

//| 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);

}

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

Eu não sei o que funcionaria melhor. Sei que há uma maneira de descobrir construir ambos e testá-los!

 
#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);}

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

ok, esta não me dá diferentes declives em cada período de tempo. Depende de quão longe eu tracei as linhas quanto ao declive.

hum, são três maneiras de fazer isso agora...

uma que usa as mais altas altas e as mais baixas, uma que inclina caminhos divergentes e esta....I é tímida na que dá declives divergentes em cada TF. Se eu estou fazendo um filtro a partir dele, não consigo me enrolar na mudança volitiva de declive.

 

shi shanel-v.2 novo

querido Aaragorn ... esta é uma nova versão e um quadro para você saber como utilizá-la

Arquivos anexados:
 
expertlive:
querido Aaragorn ... esta é uma nova versão e um gráfico de imagem para você saber como usá-lo

obrigado por seu trabalho de especialista ao vivo. Estou tendo problemas para conseguir que seja carregado com sucesso na plataforma.

Eu o descompactei na pasta indicadora, mas não aparece quando reinicio a plataforma. Não tenho certeza do motivo.

Você poderia, por favor, anexá-lo ou colocar o código aqui diretamente sem zíper e talvez isso possa funcionar?

Isto deve ir para a pasta de especialistas ou para a pasta de indicadores? Isto realmente executa ordens de compra/venda ou isto é apenas o indicador?

Está claro pela imagem que você postou que você entende o que estou tentando fazer aqui. Mantenha o programa dentro do canal. Você sabe como programá-lo para fazer isto?

 

shi shanel v.2 novo

Aaragorn:
obrigado por seu trabalho de especialista ao vivo. Estou tendo problemas para conseguir que seja carregado com sucesso na plataforma.

Eu o descompactarei na pasta indicadora, mas não aparece quando reinicio a plataforma. Não tenho certeza do motivo.

Você poderia, por favor, anexá-lo ou colocar o código aqui diretamente sem zipar e talvez isso possa funcionar?

Isto deve ir para a pasta de especialistas ou para a pasta de indicadores? Isto realmente executa ordens de compra/venda ou isto é apenas o indicador?

Está claro pela imagem que você postou que você entende o que estou tentando fazer aqui. Mantenha o programa dentro do canal. Você sabe como programá-lo para fazer isso?

use isto se não funcionar, diga-me para enviar novamente

Arquivos anexados:
 

que funciona muito bem ao vivo, obrigado! Você poderia modificar este indicador da mesma maneira? Acho que gosto mais deste indicador do que dos shi apesar de serem tão parecidos, este me parece mais estável. Você pode me instruir como fazer o indicador modificado parte de um EA para que eu possa fazer um backtest? ou você poderia fazê-lo? Gostaria de acrescentar isto como um filtro para estes dois EA's (ver anexo)

#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);}

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

a imagem .gif mostra a diferença entre os dois em um gráfico. O número de barras que isto analisa muda também a forma como se move no gráfico. que linguagem shi está mostrando no gráfico? Poderia mostrar o inglês?

No EMA CROSS eu não quero apenas o stop loss definido no nível do filtro Eu não quero que o EMA CROSS abra uma posição que teria que fechar fora do canal. Isso dependeria do objetivo TP, mas é assim que eu gostaria que o filtro funcionasse no EMA CROSS e no EA "qualquer coisa".

Admiro sua capacidade de programar, gostaria de saber mais como fazer isso.

Arquivos anexados:
Razão: