Ajuda na codificação - página 197

 
mladen:
Você pode adicioná-lo para desenhar essas linhas adicionais mais uma vez - como esta:
if (add>0) { drawLine(totalLevels,current+diff+add,addLinesColor,addLinesStyle); drawLine(totalLevels,current+diff-add ,addLinesColor,addLinesStyle); }
e ele desenhará essas linhas adicionais em torno de todas as linhas "básicas".

Mais uma vez obrigado mladen

 

Precisa de ajuda na programação de um Alerta

Olá, sou novo em toda a programação do mql4.

Eu quero criar um novo alarme "tudo em um".

Tenho Fx MNT, Super Sinal e Gráfico de Valores CHT com sinais de alarme.

Agora quero ter apenas um alarme, quando MNT,Super Sinal,Gráfico de Valor & RSI estiver no lugar certo.

Como codificar isto ? Posso usar as partes do alarme existente e colocá-las todas em um único grande código ?

gentilmente, considere o Slow

 
Slow Moe:
Olá, sou novo em toda a programação do mql4.

Eu quero criar um novo alarme "tudo em um".

Tenho o Fx MNT, o Super Sinal e a Tabela de Valores CHT com sinais de alarme.

Agora quero ter apenas um alarme, quando MNT,Super Sinal,Gráfico de Valor & RSI estiver no lugar certo.

Como codificar isto ? Posso usar as partes do alarme existente e colocá-las todas em um único grande código ?

gentilmente considera Slow

Lento

Você pode fazer isso, mas o código que seria "responsável" por obter dados de todos esses indicadores não seria simples (especialmente a parte com parâmetros onde você precisaria declarar parâmetros externos a todos os indicadores que seriam chamados a fim de descobrir se o alerta deveria ser acionado ou não)

 

fechamentos consecutivos mais alto/mais baixo

O arquivo anexo tem uma série de condições que podem ser incluídas, selecionando verdadeiro/falso.

Eu gostaria de incorporar outra condição como verdadeiro/falso: existem

2 fechamentos consecutivos mais altos por muito tempo?

Se houver, então se as outras condições habilitadas por true estiverem presentes, então seta para cima produzida.

2 fechamentos inferiores consecutivos para os calções?

Se houver, então se as outras condições habilitadas por true estiverem presentes, então seta para baixo produzida.

O número de fechos poderia ser uma variável?

Alguém poderia codificar esta condição extra no indicador Stoch_Indy? Obrigado.

Arquivos anexados:
 
person77:
O arquivo anexo tem uma série de condições que podem ser incluídas, selecionando verdadeiro/falso.

Eu gostaria de incorporar outra condição como verdadeiro/falso: estão lá

2 fechamentos consecutivos mais altos por muito tempo?

Se houver, então se as outras condições habilitadas por true estiverem presentes, então seta para cima produzida.

2 fechamentos inferiores consecutivos para os calções?

Se houver, então se as outras condições habilitadas por true estiverem presentes, então seta para baixo produzida.

O número de fechos poderia ser uma variável?

Alguém poderia codificar esta condição extra no indicador Stoch_Indy? Obrigado.

pessoa77

Experimente este aqui

Opção UsoBrasrasrascos FechadosConsecutivos adicionados para esse fim. Não apenas uma identificação fechada testada, mas um fechamento deve ser maior do que aberto em tais barras a fim de fazer uma subida consecutiva, ou deve ser menor do que aberto em tais barras a fim de fazer uma descida consecutiva

Arquivos anexados:
 
mladen:
pessoa77

Experimente este aqui

Opção UsoBrasrasrascos FechadosConsecutivos adicionados para esse fim. Não apenas uma identificação fechada testada, mas um fechamento deve ser maior do que aberto em tais barras a fim de fazer uma subida consecutiva, ou deve ser menor do que aberto em tais barras a fim de fazer uma descida consecutiva

Muito bom mladen - funciona muito bem. Obrigado!

Nos poucos casos em que me deparei, ter C = O permitido é, em geral, favorável.

Você poderia alterá-lo para permitir isto, ou, melhor ainda, ter uma opção se C = O é permitido ou não?

Arquivos anexados:
 
person77:

Muito bom mladen - funciona muito bem. Obrigado!

Nos poucos casos em que me deparei, ter C = O permitido é, em geral, favorável.

Você poderia alterá-lo para permitir isso ou, melhor ainda, ter uma opção se C = O é permitido ou não?

pessoa77

Mais uma opção adicionada : AllowCloseEqualOpen. para que você possa controlá-lo com essa opção agora

Arquivos anexados:
 

Oi, pessoal,

Eu tenho uma pergunta sobre codificação

É possível traçar a média móvel no gráfico geral com estas preferências?

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

 
cain82:
Oi, pessoal,

Eu tenho uma pergunta sobre codificação

É possível traçar a média móvel no gráfico geral com estas preferências?

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

O que você escreveu (o dFactor e o mFactor) avalia para um valor constante independentemente do preço e do número de barras, assim você teria uma linha horizontal no gráfico

 
mladen:
O que você escreveu (o dFactor e o mFactor) é avaliado a um valor constante independentemente do preço e do número de barras, de modo que você teria uma linha horizontal no gráfico.

Obrigado pela resposta!

Mas como posso obter uma linha angular de MA no gráfico geral, como neste código de histograma indiano?

//---- indicator settings

#property indicator_separate_window

#property indicator_buffers 3

#property indicator_color1 LimeGreen

#property indicator_color2 FireBrick

#property indicator_color3 Yellow

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

//---- indicator parameters

extern int TimeFrame = 60;

extern int MAMode = 0;

extern int MAPeriod = 50;

extern int Price = 4;

extern double AngleTreshold = 0.25;

extern int StartMAShift = 2;

extern int EndMAShift = 0;

extern int MaxBars = 500;

string TF1;

//---- indicator buffers

double UpBuffer[];

double DownBuffer[];

double ZeroBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

//---- 2 additional buffers are used for counting.

IndicatorBuffers(3);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexStyle(2,DRAW_HISTOGRAM);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2 );

//---- 3 indicator buffers mapping

if(!SetIndexBuffer(0,UpBuffer) &&

!SetIndexBuffer(1,DownBuffer) &&

!SetIndexBuffer(2,ZeroBuffer))

Print("cannot set indicator buffers!");

SetIndexLabel(0,"");

SetIndexLabel(1,"");

SetIndexLabel(2,"");

switch(TimeFrame)

{

case 1: TF1="M1"; break;

case 5: TF1="M5"; break;

case 15: TF1="M15"; break;

case 30: TF1="M30"; break;

case 60: TF1="H1"; break;

case 240: TF1="H4"; break;

case 1440: TF1="D1"; break;

case 10080: TF1="W1"; break;

case 43200: TF1="MN1"; break;

default: {TimeFrame = Period(); init(); return(0);}

}

IndicatorShortName("MAAngle MTF * "+TF1+" *");

//---- initialization done

return(0);

}

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

//| The angle for EMA |

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

int start()

{

double fEndMA, fStartMA;

double fAngle, mFactor, dFactor;

int nLimit, i;

int nCountedBars;

double angle;

int ShiftDif;

string Sym;

if (MAMode >= 4) MAMode = 0;

if(EndMAShift >= StartMAShift)

{

Print("Error: EndMAShift >= StartMAShift");

StartMAShift = 6;

EndMAShift = 0;

}

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

Sym = StringSubstr(Symbol(),3,3);

if (Sym == "JPY") mFactor = 100.0;

ShiftDif = StartMAShift-EndMAShift;

mFactor /= ShiftDif;

//---- check for possible errors

if(nCountedBars<0) return(-1);

//---- last counted bar will be recounted

if(nCountedBars>0) nCountedBars--;

nLimit=Bars-nCountedBars;

nLimit=MathMax(nLimit,TimeFrame/Period());

nLimit=MathMin(nLimit,MaxBars );

//---- main loop

for(i=0; i<nLimit; i++)

{

int y = iBarShift(NULL,TimeFrame,Time);

if (TimeFrame<Period()) TimeFrame=Period();

fEndMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+EndMAShift);

fStartMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+StartMAShift);

// 10000.0 : Multiply by 10000 so that the fAngle is not too small

// for the indicator Window.

fAngle = mFactor * (fEndMA - fStartMA)/2.0;

//fAngle = MathArctan(fAngle)/dFactor;

DownBuffer = 0.0;

UpBuffer = 0.0;

ZeroBuffer = 0.0;

if(fAngle > AngleTreshold)

UpBuffer = fAngle;

else if (fAngle < -AngleTreshold)

DownBuffer = fAngle;

else ZeroBuffer = fAngle;

}

return(0);

}

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

Razão: