Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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 é:
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!
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.
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 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 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.
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
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_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...