Como codificar? - página 233

 
CoeyCoey:
Olá a todos,

Estou trabalhando na modificação de um medidor de força da moeda para mostrar a força da moeda com base no tempo a partir do gráfico. No momento, o código utilizado é:

aHigh = MarketInfo(mySymbol,MODE_HIGH); // set a high today

aLow = MarketInfo(mySymbol,MODE_LOW); // set a low today

aBid = MarketInfo(mySymbol,MODE_BID); // set a last bid

aAsk = MarketInfo(mySymbol,MODE_ASK);

Eu entendo MODE_HIGH e MODE_LOW obtêm os dias atuais altos e baixos. Como eu poderia obter o máximo e o mínimo dos gráficos no período de tempo atual?

Obrigado!

P.S. Eu não sou um programador, então use palavras pequenas, por favor:)

Você não tem que usar MarketInfo(). Se você quiser obter a corrente alta, use High[0] e Low[n], Close[n], Open[n]. 'n' significa o offset da barra de tempo atual. Por exemplo, para obter o Alto da barra antes da corrente, você pode usar Alto[1] já que a corrente é 0 e a barra antes dela tem um offset de 1 da corrente.

Para verificar se há Altas, Baixas, Abre, Fecha de outros intervalos de tempo além do que você está vendo no gráfico, você pode usar as funções iHigh(), iLow(), iClose(), e iOpen().

Exemplo de uso abaixo.

double high_of_gbpusd_4hours_current = iHigh("gbpusd", período_h4, 0);

 

Obrigado! Vocês são o máximo!

 
mfurlend:

Acho que tenho praticamente tudo funcionando (não tenho certeza???), mas por alguma razão a matriz é preenchida com muitos valores '0' juntamente com os valores legítimos.

É assim que eu o faria:

#define TICKET 0

#define PRICES 1

double ResumeArray[0,2];

int CheckForResume()

{

ResumeCheck = TimeLocal()+(PERIOD_M1*60)*5;

bool success = false;

int k;

for (int i = 0; i<OrdersTotal();i++)

{

if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;

if (OrderType() > OP_SELL || OrderProfit()> Cutoff)continue;

int arraycount=ArrayRange(ResumeArray,TICKET);

bool found = false;

for (k=arraycount-1; k>=0; k--)

{

if (ResumeArray[k,TICKET] == OrderTicket())

{

found = true;

if (ResumeArray[k,PRICES] + Cutoff < OrderProfit())break;

else

{

success=true;

Print ("ELSE");

ResumeArray[k,PRICES] = OrderProfit();

break;

}

}

}

if (found == false)

{

arraycount = ArrayResize(ResumeArray,arraycount+1)/2;

ResumeArray[arraycount-1,TICKET] = OrderTicket();

ResumeArray[arraycount-1,PRICES] = OrderProfit();

success=true;

}

}

if(success)return (1);

else return(0);

}

Você não precisa usar a definição de TICKET e PREÇOS, eu apenas os incluí para mostrar como funciona um array de 2 dimensões. Basta substituir todas as ocorrências de TICKET e PRECES por 0 e 1, respectivamente.

Eu substituí os comandos de 'retorno' no loop 'for' por 'break', assim todas as ordens abertas serão processadas.

Uma coisa a se notar é que as ordens fechadas nunca são removidas da matriz, então ela continuará a crescer em tamanho, e diminuirá a velocidade de sua plataforma.

d4v3

 

Limite do histórico das barras

Eu ficaria muito grato se alguém pudesse adicionar a opção de limite de barras a este script RenkoLiveChart_v3.2.

É preciso muito dinheiro do computador.

Arquivos anexados:
 

Alerta Básico EA

................[resolvido] ....................

 

redução do ruído

olá a todos - tenho procurado uma maneira de limitar o ruído em um comércio e fazer um corte mais rápido

A idéia é na verdade bastante simples

o ruído é mostrado nesta foto seu significado dinâmico, ele continua mudando para se adequar à condição do mercado

aqui está algum código que fiz para o fechamento, se alguém quiser usá-lo, sinta-se livre, basta colocar alguns multiplicadores nele.

int profit = OrderProfit() + OrderSwap() + OrderCommission();

int Trades = ScanTrades(0,0);

if (Trades == 0) TS1 = 0;

if ((ScanTrades(2,0) > 0) && (lucro < 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) + ruído + Slippage);

if ((ScanTrades(2,0) > 0) && (lucro > 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) + ruído );

if ((ScanTrades(1,0) > 0) && (lucro < 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) - ruído - Slippage);

if ((ScanTrades(1,0) > 0) && (lucro > 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) - ruído );

//curto

se ((ScanTrades(2,0) > 0)&& (TS1 ==0 )) TS1 = TS;

if ((ScanTrades(2,0) > 0)&& (TS < TS1)) TS1 = TS;

if ((ScanTrades(2,0) > 0) && (MarketInfo(Symbol(),MODE_BID) > TS1)) CloseOrder(2);

//longo

se ((ScanTrades(1,0) > 0)&& (TS1 ==0 )) TS1 = TS;

if ((ScanTrades(1,0) > 0)&& (TS > TS1)) TS1 = TS;

if ((ScanTrades(1,0) > 0) && (MarketInfo(Symbol(),MODE_BID) < TS1)) CloseOrder(1);

qual seria a melhor maneira de tirar o atual e o anterior alto e baixo de um gráfico de barras. Preciso criar a variável "ruído".

Eu tentei isso, mas seu acerto e sua falta t1 e l1 são, em algum momento, 0 seu mais deprimente como tudo o que está entre toda a ea sendo "acabado", se é que existe tal coisa.

duplo hh2=Alto;

duplo ll2=Baixo;

duplo hh3=Alto;

duplo ll3=Baixo;

duplo t1,l1,ruído;

//ruído = sobreposição de barras anteriores

se ((hh2 - hh3) > 0 ) t1 =(hh3); // basicamente escolhendo a barra "alta" mais baixa entre as duas -bullish

se ((hh3- hh2) > 0 ) t1=(hh2); //baixa

se ((ll2 - ll3) > 0 ) l1 =(ll2); //picking the highest low bar bullish

se ((ll3-ll2) > 0 ) l1=(ll3); //baixa

ruído =(t1-l1);

Imprimir("t1 = ",t1,"; l1 = ",l1);

os resultados típicos da impressão são t1=0 l1=94,3 seu mais irritante porque hh2 e hh3 são == eu simplesmente não sei o que fazer eu simplesmente não consigo ver um problema com meu código.

Arquivos anexados:
cutoff.jpg  5 kb
 

quem pode me ajudar?

alguém pode me mostrar como fazer um novo indicador que é baseado em 3 indicadores familiares? Eu faço uma estratégia baseada em 3 indicadores que mostram sinais muito fortes de compra/venda, mas quero criar 1 indicador...

 

ea emenda por favor

Por favor, ajude-me a implementar as seguintes mudanças nesta e

1)Adicionar em uma hora

A) indicador fisher_ 11 com ajustes 33,0.5,0.5

B) indicador tcf com ajustes 17, 8, 0,7

c) Também quero que o indicador dinap _basic não permita negociações quando ele tiver puxado contra a direção do sinal, ou seja, se ele puxar, entrar sinais de compra NÃO são permitidos, se ele puxar, entrar sinais de venda NÃO são permitidos.

2)Adicionar em 15 minutos

A) indicador de supertendência

B)Indicador de tendência

Gestão do dinheiro de

1)Abrir 2 negócios a 3 % do total da conta de perdas ( 1,5% ) cada um

2)Um a 80 pips tem lucro ou 2,2 % e o segundo a 3,8% tem lucro

3)Duplo tamanho de lote para o quinto comércio após 4 perdas consecutivas e depois incremento de lotes lineares para os comerciais subseqüentes até duas vitórias consecutivas e retorno ao tamanho de lote padrão.

4)Trailing stop de 12pips (acima para venda e abaixo para compra de velas antigas atrstops_v1 indicador para todas as negociações.

Isso é tudo, por favor, ajude

Arquivos anexados:
 

Você poderia ter conseguido exatamente a mesma coisa com uma linha de código.

GlobalVariableSet("TRENDSET_"+Symbol());

Você também poderia ter acrescentado o prazo para torná-lo ainda mais único.

Não sei bem qual era o objetivo de seu posto para ser honesto.

Cumprimentos

Lux

 

Como chamar o valor de H1 usando iCustom ?

Olá,

Estou tentando codificar um indicador muito simples, mas não consigo chamar o valor Laguerre de H1.

o que eu quero fazer :

Usando 1M TF

comprar sinal : Laguerre passando de nível 0,15 para cima e Laguerre H1 > 0,75

vender sinal : passagem de nível Laguerre 0,75 de cabeça para baixo e Laguerre H1 < 0,15

fiz o indicador para a simples travessia e funciona, o problema é quando tento verificar o valor da Laguerre H1: é uma bagunça!

Eu tentei de duas maneiras:

A primeira:

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 SeaGreen

#property indicator_color2 Red

#property indicator_width1 3

#property indicator_width2 3

double CrossUp[];

double CrossDown[];

extern bool SoundON=true;

double alertTag;

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

SetIndexStyle(0, DRAW_ARROW, EMPTY,3);

SetIndexArrow(0, 233);

SetIndexBuffer(0, CrossUp);

SetIndexStyle(1, DRAW_ARROW, EMPTY,3);

SetIndexArrow(1, 234);

SetIndexBuffer(1, CrossDown);

//----

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start() {

int limit, i;

int counted_bars=IndicatorCounted();

//---- check for possible errors

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

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

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

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

if ( (iCustom(NULL,0,"Laguerre",0.66,9500,0,i) > 0.15) && (iCustom(NULL,0,"Laguerre",0.66,9500,0,i+1) < 0.15)

&&(iCustom(Symbol(),PERIOD_H1,"Laguerre",0.66,9500,0,i) > 0.75)) //check for buy signal

{

CrossUp = Close;

}

else if ( (iCustom(NULL,0,"Laguerre",0.66,9500,0,i) 0.75)

&& (iCustom(Symbol(),PERIOD_H1,"Laguerre",0.66,9500,0,i) < 0.15)) //check for sell signal

{

CrossDown = Close;

}

if (SoundON==true && i==1 && CrossUp > CrossDown && alertTag!=Time[0]){

Alert("SHORT signal on ",Symbol()," ",Period());

alertTag = Time[0];

}

if (SoundON==true && i==1 && CrossUp < CrossDown && alertTag!=Time[0]){

Alert("Long Signal on ",Symbol()," ",Period());

alertTag = Time[0];

}

}

return(0);

}[/CODE]

second one:

[CODE]//+------------------------------------------------------------------+

//| Shift.mq4 |

//| me |

//|

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

#property copyright "me"

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Lime

#property indicator_color2 Red

#property indicator_width1 4

#property indicator_width2 4

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

bool Fact_Up = true; // Fact of report that market..

bool Fact_Dn = true; //..is bullish or bearish

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,241);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexEmptyValue(0,0.0);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,242);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexEmptyValue(1,0.0);

//----

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

//int limit;

int counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

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

//limit=Bars-counted_bars;

//----

double MA; // MA value on 0 bar

double MA2;

double MA3;

double MA4;

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

double value1, value2, value3;

for (int i=Bars-1;i>=0;i--)

//---- main loop

//for(int i=0; i<limit; i++)

{value1=0.0;

value2=0.0;

value3=0.0;

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

// Checking if bullish

if( (iCustom(Symbol(),NULL,"Laguerre",0,i) > 0.15) && (iCustom(Symbol(),NULL,"Laguerre",0,i+1) < 0.15) && Fact_Up == true

&&(iCustom(Symbol(),PERIOD_H1,"Laguerre",0,i) > 0.75))

{

Fact_Dn = true; // Report about bullish market

Fact_Up = false; // Don't report bullish market

// Alert("BUY SIGNAL.");

value1=Open;

}

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

// Checking if bearish

if( (iCustom(Symbol(),NULL,"Laguerre",0,i) 0.75) && Fact_Dn == true

&&(iCustom(Symbol(),PERIOD_H1,"Laguerre",0,i) < 0.15))

{

Fact_Up = true; // Report about bearish market

Fact_Dn = false; // Don't report bearish market

// Alert("SELL SIGNAL.");

value2=Open;

}

ExtMapBuffer1=value1;

ExtMapBuffer2=value2;

}

//----

return(0);

}

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

ambas não funcionam, a linha VERMELHA é o problema, sem a linha VERMELHA ela funciona perfeitamente.

tentei (iCustom(Símbolo(),PERÍODO_H1, "Laguerre",0,i) < .....)

(iCustom(Symbol(),PERÍODO_H1, "Laguerre",0,0) < ....)

(iCustom(Symbol(),60, "Laguerre",0,i) < ....)

(iCustom(Símbolo(),60, "Laguerre",0,0) < .....)

Tentei também com variáveis: (iCustom(Symbol(),PERÍODO_H1, "Laguer re",0.66,9500,0,i)

iF i colocou:

Print(iCustom(Símbolo(),60, "Laguerre ",0,i)); antes do "se" ele retorna um número aleatório...

mas com: Imprimir(iCustom(Símbolo(),60, "Laguerre ",0,0)); retorna o bom valor de H1

agora o problema permanece o mesmo se eu usar iCustom(Symbol(),60, "Laguerre",0, 0); dentro do "se" não funciona...

o problema está no valor "para" e "i" e no valor "shift" do iCustom, mas eu não consigo descobrir.

sua ajuda seria muito bem-vinda!

eu anexei o indicador Laguerre que uso se você quiser tentar.

se alguém estiver pronto para recodificá-lo do zero, por favor não hesite

está me deixando louco...

Arquivos anexados:
laguerre.mq4  3 kb
Razão: