Saturday 5 January 2019

Arrow indicator forex that draws


DRAWARROW O estilo DRAWARROW desenha setas da cor especificada (símbolos do conjunto Wingdings) com base no valor do buffer do indicador. A largura e a cor dos símbolos podem ser especificadas como para o estilo DRAWLINE - usando diretrizes do compilador ou usando dinamicamente a função PlotIndexSetInteger (). Mudanças dinâmicas das propriedades de traçado permitem mudar a aparência de um indicador com base na situação atual. O código de símbolo é definido usando a propriedade PLOTARROW. --- Defina o código de símbolo da fonte Wingdings para desenhar PLOTARROW PlotIndexSetInteger (0, PLOTARROW, código) O valor padrão de PLOTARROW159 (um círculo). Cada seta é realmente um símbolo que tem a altura e o ponto de ancoragem, e pode cobrir algumas informações importantes em um gráfico (por exemplo, o preço de fechamento na barra). Portanto, podemos também especificar a mudança vertical em pixels, que não depende da escala do gráfico. As setas serão deslocadas para baixo pelo número especificado de pixels, embora os valores do indicador permaneçam os mesmos: --- Defina o deslocamento vertical das setas em pixels PlotIndexSetInteger (0, PLOTARROWSHIFT, shift) Um valor negativo de PLOTARROWSHIFT significa o Deslocamento das setas para cima, um valor positivo desloca a flecha para baixo. O estilo DRAWARROW pode ser usado em uma sub-janela separada de um gráfico e na sua janela principal. Os valores vazios não são desenhados e não aparecem no quotData Windowquot, todos os valores nos buffers indicadores devem ser definidos explicitamente. Os buffers não são inicializados com um valor zero. --- Defina um valor vazio PlotIndexSetDouble (indexofplotDRAWARROW, PLOTEMPTYVALUE, 0) O número de buffers necessários para traçar DRAWARROW é 1. Um exemplo do indicador, que desenha setas em cada barra com o preço de fechamento superior ao preço de fechamento do anterior Barra. A cor, a largura, o deslocamento e o código de símbolo de todas as setas são alterados aleatoriamente a cada N carrapatos. No exemplo, para plot1 com o estilo DRAWARROW, as propriedades, a cor e o tamanho são especificados usando a propriedade de diretiva do compilador. E então, na função OnCalculate (), as propriedades são definidas aleatoriamente. O parâmetro N é configurado em parâmetros externos do indicador para a possibilidade de configuração manual (a guia Parâmetros na janela Propriedades do indicador). Descrição da propriedade quotUn indicador para demonstrar a descrição de propriedade DRAWARROWot QuotDraws setas definidas por caracteres Unicode, em uma descrição da descrição da descrição do gráfico. A cor, o tamanho, o deslocamento e o código do símbolo da seta são alterados em uma descrição de propriedade do wayquot aleatório. Após cada descrição de propriedade do N ticksquot, o parâmetro do código Define o valor base: code159 (um círculo) quot property indicatorchartwindow property indicatorbuffers 1 plotters de propriedades 1 --- plot Arrows property indicatorlabel1 quotArrowsquot property indicatortype1 DRAWARROW propriedade indicatorcolor1 clrGreen property indicatorwidth1 1 --- entrada entrada de parâmetros int N 5 Número de carrapatos a mudar Código de entrada ush 159 Código de símbolo para desenhar em DRAWARROW --- Um buffer de indicador para o gráfico duplo ArrowsBuffer --- Uma matriz para armazenar cores cores cores ------------------- ----------------------------------------------- Inicialização personalizada do indicador Função -------------------------------------------- ---------------------- int OnInit () --- mapeamento de buffers indicadores SetIndexBuffer (0, ArrowsBuffer, INDICATORDATA) --- Defina o código de símbolo para desenho PLotARROW PlotIndexSetInteger (0, PLOTARROW, código) --- Defina o deslocamento vertical das setas em pixels PlotIndexSetInteger (0, PLOTARROWSHIFT, 5) --- Defina como um valor vazio 0 PlotIndexSetDouble (0, PLOTEMPTYVALUE, 0) --- return ( INITSUCCEEDED) ------------------------------------------------ ------------------ Função de iteração do indicador personalizado ---------------------------- -------------------------------------- int OnCalculate (const int ratestotal, const int prevcalculated, const Datatime amptime, const double ampopen, const double amphigh, const double amplow, const double ampclose, const long amptickvolume, const long ampvolume, const int ampspread) static int ticks0 --- Calcule marcadores para alterar a cor, o tamanho, o deslocamento eo código de As tiques de seta --- Se um número crítico de tiques tiver sido acumulado se (ticksgt N) --- Alterar th E propriedades de linha ChangeLineAppearance () --- Repor o contador de tiques para zero ticks0 --- Bloquear para calcular valores de indicador int start1 se (prevcalculatedgt0) startprevcalculated-1 --- Ciclo de cálculo para (int i1iltratestotali) --- Se a corrente O preço de fechamento é maior do que o anterior, desenhe uma seta se (closeigtclosei-1) ArrowsBuffericlosei --- Caso contrário, especifique o valor zero além de ArrowsBufferi0 --- valor de retorno de prevcalculated para retorno de chamada seguinte (ratestotal) ------- -------------------------------------------------- --------- Muda a aparência dos símbolos no indicador --------------------------------- --------------------------------- void ChangeLineAppearance () --- Uma string para a formação de informações sobre o indicador Propriedades string comm quotquot --- Um bloco para alterar o tamanho da seta int number MathRand () Obter um número aleatório --- O divisor é igual ao tamanho das cores array tamanho int ArraySize (cores) --- Obter o índice para Selecione um novo Cor como o restante da divisão inteira int colorindexnumbersize --- Defina a cor como a propriedade PLOTLINECOLOR PlotIndexSetInteger (0, PLOTLINECOLOR, colorscolorindex) --- Escreva a cor de linha comcomm quotrnquot (string) colorscolorindex --- Um bloco para alterar as setas de tamanho Número MathRand () --- Obtém a largura do restante da inteira divisão int widthnumber5 O tamanho está definido de 0 a 4 --- Defina a cor como a propriedade PLOTLINEWIDTH PlotIndexSetInteger (0, PLOTLINEWIDTH, width) --- Escreva a seta Comando de tamanho com Núcleo InteiroToString (largura) --- Um bloco para alterar o número do código de seta (PLOTARROW) MathRand () --- Obter o restante da divisão inteira para calcular um novo código da seta (de 0 a 19) int codeaddnnumber20 - - Defina o novo código de símbolo como resultado do codecodeadd PlotIndexSetInteger (0, PLOTARROW. Código códigoadd) --- Escreva o código de símbolo PLOTARROW com quotrnquot quotPLOTARROWquot IntegerToString (code codeadd) comm --- Um bloco para alterar o deslocamento vertical das setas em pixels número MathRand () --- Obter o turno como o restante do inteiro Divisão int shift20-number41 --- Defina a nova mudança de -20 para 20 PlotIndexSetInteger (0, PLOTARROWSHIFT, shift) --- Escreva a mudança PLOTARROWSHIFT com quotrnquot quotPLOTARROWSHIFTquot IntegerToString (shift) comm --- Mostra as informações no gráfico usando Um comentário Comentário (comm) Códigos de seta Os códigos de seta especiais não podem ser usados ​​em indicadores personalizados para linhas com estilo de desenho DRAWARROW. Indicador de propriedades Indicador de janela Indicadores de indicadores 1 Indicador de Indicador1 Limão ---- Parâmetros de entrada Externo Duplo Etapa0.02 Externo Duplo Máximo0.2 ---- buffers duplo SarBuffer ---- int savelastreverso bool guardado scrong duplo savestart duplo savelasthigh duplo savelastlow duplo saveep double savesar - -------------------------------------------------- --------------- Função de inicialização do indicador personalizado ------------------------------- ----------------------------------- int init () ---- indicadores SetIndexStyle (0, DRAWARROW) SetIndexArrow (0,159) SetIndexBuffer (0, SarBuffer) ---- retorno (INITSUCCEEDED) -------------------------------- ---------------------------------- SaveLastReverse --------------- -------------------------------------------------- - void SaveLastReverse (int last, int dir, double startindex, double low, double high, double ep, double sar) savelastreverselast savedirlongdir savestartstartindex savelastlowlow savelasthighhigh saveepep savesarsar -------------------------------------------------- ---------------- Sistema Parabólico de Venda e Reversão ----------------------------- ------------------------------------- int start () static bool primeiro verdadeiro bool dirlong double startindex, () Lt3 (cont.) Lt 0) retornar (-1) se (contadobars lt 0) retornar (-1) se (comtedbars lt 0) retornar (-1) se ( Contadobarsgt0) barras contadas-- limite Barras - barras remotas se (contadobars0) limite-2 ---- configurações iniciais ilimit if (conttedbars0 primeiro) primeiro false dirlong true startindexStep lasthigh-10000000.0 lastlow10000000.0 enquanto (igt0) savelastreversei pricelow Low i if (lastlowgt Pricelow) lastlow pricelow pricehigh High i if (asthighlt pricehigh) lasthigh pricehigh se (pricehigh gt High i1 ampamp pricelow gt Low i1) break if (pricehigh lt High i1 ampamp pricelow lt Low i1) i ---- zero inicial int ki Enquanto (klt Bars) SarBufferk0.0 k ---- verificar mais se (dirlong) else Eu ... Mais uma vez, é o melhor do que o outro. Mais uma vez, (igt0) pricelow Low i pricehigh High i --- verifique se há inversão se (dirlong ampamp pricelow ltSarBufferi1) SaveLastReverse (i, true, startindex, pricelow, lasthigh, Ep, sar) startindexStep dirlong falso ep pricelow lastlow pricelow SarBufferilasthigh i-- continue se (dirlong ampamp pricehigh gtSarBufferi1) SaveLastReverse (i, false, startindex, lastlow, pricehigh, ep, sar) startindexStep dirlong true ep pricehigh lasthigh pricehigh SarBufferilastlow i-- Continuar --- priceSarBufferi1 sarpricestartindex (ep-price) if (dirlong) if (eplt pricehigh ampamp (startindexStep) ltMaximum) startindexStep if (pricehigh lt High i1 ampamp i Bares -2) sarSarBufferi1 preço Baixo i1 se (preço sargtprice) preço baixo Low i2 Se (sargtprice) sarprice se (sargt pricelow) SaveLastReverse (i, true, startindex, pricelow, lasthigh, ep, sar) startindexStep dirlong falso ep pricelo W lastlow pricelow SarBufferilasthigh i - continue se (eplt pricehigh) else if (epgt pricelow ampamp (startindexStep) ltMaximum) startindexStep if (pricelow lt Low i1 ampamp i Bars -2) sarSarBufferi1 preço Alto i1 if (sarltprice) preço de venda High i2 if (Sarltprice) sarprice if (sarlt pricehigh) SaveLastReverse (i, false, startindex, lastlow, pricehigh, ep, sar) startindexStep dirlong true ep pricehigh lasthigh pricehigh SarBufferilastlow i - continue se (epgt pricelow) SarBufferisar i-- --- for (Cblimitcbgt0cb--) se (GreaterDoubles (SarBuffercb, 0, Digits)) string objectname quotpricequot string (Time cb) --- primeiro encontre o objeto pelo nome se (ObjectFind (nome do objeto) lt0) --- se não for encontrado, crie se (ObjectCreate (nome do objeto, OBJARROW, 0, Time cb, SarBuffercb)) --- definir propriedades do objeto --- código da seta ObjectSet (nome do objeto, OBJPROPARROWCODE, SYMBOLLEFTPRICE) --- color ObjectSet (nome do objeto, OBJPROPCOLOR, DodgerBlue) --- preço ObjectSet (nome do objeto, OBJPROPPRICE1, SarBufferc B) --- time ObjectSet (nome do objeto, OBJPROPTIME1, Time cb) else --- se o objeto existe, basta modificar seu objeto de coordenadas de preço (objectname, OBJPROPPRICE1, SarBuffercb) ---- return (0) ----- -------------------------------------------------- ----------- GreaterDoubles -------------------------------------- ---------------------------- bool GreaterDoubles (número duplo1, número duplo2, int dig) se (NormalizeDouble (número1-número2, escavação) Gt0) return (true) else return (false) --------------------------------------- ---------------------------

No comments:

Post a Comment