![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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á, amigos. É um ótimo indicador do Dynamic_Momentum_Index para Thinkorswim. É possível reescrevê-lo para o metatrader 4?. Ou talvez alguém tenha tal indicador para o MT4?
declare lower;input price = close;input stdevLength = 5;input avgOfStdevLength = 10;input DYMILength = 30;input DYMILengthLowerLimit = 3;input DYMILengthUpperLimit = 30;assert(DYMILengthLowerLimit > 0, "'dymi length lower limit' deve ser positivo: "DYMILengthLowerLimit);assert(DYMILength entre DYMILengthLowerLimit e DYMILengthUpperLimit, "'dymi length' deve estar entre o limite inferior e o limite superior: "(DYMILength);def std = stdev(preço, stdevLength);def ratio = std / Average(std, avgOfStdevLength);def dynamicLength = Floor(DYMILength / ratio);def limitedLength = if dynamicLength between DYMILengthLowerLimit and DYMILengthUpperLimit then dynamicLength else 0;def sf = 2 / (limitedLength + 1);def bn = Max(barNumber(), 0);# 10^-5 precisão para ema multiplicerdef expIndex = se limitadoComprimento == 0 então 1 max(1, bn - ceil(-5 / lg(1 - sf))); def fromIndex = se isNan(expIndex) então 1 outra expIndex;def chg = preço - preço[1];def absChg = AbsValue(chg);def netChgAvg = fold indexN = do Index para bn + 1 com accuN do sf * (se isan(getValue(chg, bn - indexN)) então 0 outro getValue(chg, bn - indexN)) + (1 - sf) * accuN;def totChgAvg = fold indexT = fromIndex to bn + 1 com accuT do sf * (se isan(getValue(absChg, bn - indexT)) então 0 outro getValue(absChg, bn - indexT) + (1 - sf) * accuT;def RSI = se totChgAvg != 0 e comprimento limitado != 0 e depois 50 * (netChgAvg / totChgAvg + 1) mais RSI[1];plot DYMI = RSI;plot OverBought = 90;plot OverSold = 10;DYMI.DefineColor("OverBought", GetColor(5));DYMI.DefineColor("Normal", GetColor(7));DYMI.DefineColor("SobreVendido", GetColor(1));DYMI.AssignValueColor(se RSI > SobreComprado então DYMI.Color("SobreComprado") mais se RSI =OverComprado, "SobreComprado", Alert.BAR, Sound.ring);Alert (DYMI=OverComprado então alto*72 mais duplo.nan;DotDn.setStyle(curve.POINTS);DotDn.setPaintingStrategy(paintingStrategy.arROW_DOWN);DotDn.setLineWeight(3);DotDn.setDefaultColor(color.wHITE);plot DotUp = se DYMI<=OverVendido então baixo*-2 mais duplo.nan;Dotup.setStyle(curve.POINTS);Dotup.setPaintingStrategy(paintingStrategy.arROW_UP);Dotup.setLineWeight(3);Dotup.setDefaultColor(color.wHITE);alert(Dotup, "Scalper Buy Signal", Alert.BAR, Sound.ring);alert(DotDn, "Scalper Buy Signal", Alert.BAR, Sound.ring);
Olá, amigos. É um ótimo indicador do Dynamic_Momentum_Index para Thinkorswim. É possível reescrevê-lo para o metatrader 4?. Ou talvez alguém tenha tal indicador para o MT4?
declarar menor;preço de entrada = fechamento;entrada stdevLength = 5;entrada avgOfStdevLength = 10;entrada DYMILength = 30;entrada DYMILengthLowerLimit = 3;entrada DYMILengthUpperLimit = 30;afirmar(DYMILengthLowerLimit > 0, "'dymi length lower limit' deve ser positivo: "DYMILengthLowerLimit);assert(DYMILength entre DYMILengthLowerLimit e DYMILengthUpperLimit, "'dymi length' deve estar entre o limite inferior e o limite superior: "(DYMILength);def std = stdev(preço, stdevLength);def ratio = std / Average(std, avgOfStdevLength);def dynamicLength = Floor(DYMILength / ratio);def limitedLength = if dynamicLength between DYMILengthLowerLimit and DYMILengthUpperLimit then dynamicLength else 0;def sf = 2 / (limitedLength + 1);def bn = Max(barNumber(), 0);# 10^-5 precisão para ema multiplicerdef expIndex = se limitadoComprimento == 0 então 1 max(1, bn - ceil(-5 / lg(1 - sf))); def fromIndex = se isNan(expIndex) então 1 outra expIndex;def chg = preço - preço[1];def absChg = AbsValue(chg);def netChgAvg = fold indexN = do Index para bn + 1 com accuN do sf * (se isan(getValue(chg, bn - indexN)) então 0 outro getValue(chg, bn - indexN)) + (1 - sf) * accuN;def totChgAvg = fold indexT = fromIndex to bn + 1 com accuT do sf * (se isan(getValue(absChg, bn - indexT)) então 0 outro getValue(absChg, bn - indexT) + (1 - sf) * accuT;def RSI = se totChgAvg != 0 e comprimento limitado != 0 e depois 50 * (netChgAvg / totChgAvg + 1) mais RSI[1];plot DYMI = RSI;plot OverBought = 90;plot OverSold = 10;DYMI.DefineColor("OverBought", GetColor(5));DYMI.DefineColor("Normal", GetColor(7));DYMI.DefineColor("SobreVendido", GetColor(1));DYMI.AssignValueColor(se RSI > SobreComprado então DYMI.Color("SobreComprado") mais se RSI =OverComprado, "SobreComprado", Alert.BAR, Sound.ring);Alert (DYMI=OverComprado então alto*72 mais duplo.nan;DotDn.setStyle(curve.POINTS);DotDn.setPaintingStrategy(paintingStrategy.arROW_DOWN);DotDn.setLineWeight(3);DotDn.setDefaultColor(color.wHITE);plot DotUp = se DYMI<=OverVendido então baixo*-2 mais duplo.nan;Dotup.setStyle(curve.POINTS);Dotup.setPaintingStrategy(paintingStrategy.arROW_UP);Dotup.setLineWeight(3);Dotup.setDefaultColor(color.wHITE);alert(Dotup, "Scalper Buy Signal", Alert.BAR, Sound.ring);alert(DotDn, "Scalper Buy Signal", Alert.BAR, Sound.ring);
olvus,
Veja este post : https://www.mql5.com/en/forum/172919/page4. Talvez isso ajude
Oi mladen, gostaria de lhe pedir este favor.... você tem a possibilidade de traduzir este programa para o MT4?
De qualquer forma, obrigado...
ESTE É O PROGRAMA EM OUTRAS LÍNGUAS:// var: domanda(0), offerta(0), var1(0), var2(0), indzona1;
// var1= ((H/C[1])-1)*V;
// var2= ((L/C[1]-1)*V*(-1);
// domanda= MOV(var1.450,S);
// offerta= MOV(var2.450,S);
// indzona1= CreateWiewport(100);
// PlotChart(domanda, indzona1, verde, sólido, 1);
// PlotChart(offerta, indzona1, vermelho, sólido, 1);ESTE É O MEU TRABALHO PARA A LÍNGUA MT4, MAS APÓS A ATUALIZAÇÃO MAIS TARDE, NÃO FUNCIONA MAIS NENHUM TERMO:
#janela_indicadora de propriedade_separarate_window
#property indicator_buffers 2
#indicador de propriedade_color1 Verde
#indicador de propriedade_color2 Vermelho
#largura_do_indicador de propriedade1 1
#largura_do_indicador de propriedade2 1
período int externo=128;
duplo DOMANDA[];
duplo OFFERTA[];
//+------------------------------------------------------------------+
//| Função de inicialização do indicador personalizado |
//+------------------------------------------------------------------+
int init()
{
IndicatorDigits(6);
IndicadorBuffers(2);
SetIndexBuffer(0,DOMANDA);
SetIndexBuffer(1,OFFERTA);
return(0);
}
//+------------------------------------------------------------------+
//| Função de desinicialização de indicador personalizada |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| Função de iteração de indicador personalizada |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int limit = Barras - Barras_contadas;
var_dom_duplo[10000];
duplo var_off[10000];
ArraySetAsSeries(var_dom,true);
ArraySetAsSeries(var_off,true);
for(int i=0; i<limit; i++)
{
var_dom = ((Alta/Fechar)-1)*Volume;
var_off = ((Baixo/Fechar)-1)*Volume * (-1);
DOMANDA = iMAOnArray(var_dom,0,periodo,0,MODE_SMA,i);
OFFERTA = iMAOnArray(var_off,0,periodo,0,MODE_SMA,i);
}
retorno(0);
}//+------------------------------------------------------------------+
Olá mladen, gostaria de lhe pedir este favor.... você tem a possibilidade de traduzir este programa para o MT4?
Obrigado de qualquer forma...
ESTE É O PROGRAMA EM OUTRAS LÍNGUAS:// var: domanda(0), offerta(0), var1(0), var2(0), indzona1;
// var1= ((H/C[1])-1)*V;
// var2= ((L/C[1]-1)*V*(-1);
// domanda= MOV(var1.450,S);
// offerta= MOV(var2.450,S);
// indzona1= CreateWiewport(100);
// PlotChart(domanda, indzona1, verde, sólido, 1);
// PlotChart(offerta, indzona1, vermelho, sólido, 1);ESTE É O MEU TRABALHO PARA A LÍNGUA MT4, MAS APÓS A ATUALIZAÇÃO MAIS TARDE, NÃO FUNCIONA MAIS NENHUM TERMO:
#janela_indicadora de propriedade_separarate_window
#property indicator_buffers 2
#indicador de propriedade_color1 Verde
#indicador de propriedade_color2 Vermelho
#largura_do_indicador de propriedade1 1
#largura_do_indicador de propriedade2 1
período int externo=128;
duplo DOMANDA[];
duplo OFFERTA[];
//+------------------------------------------------------------------+
//| Função de inicialização do indicador personalizado |
//+------------------------------------------------------------------+
int init()
{
IndicatorDigits(6);
IndicadorBuffers(2);
SetIndexBuffer(0,DOMANDA);
SetIndexBuffer(1,OFFERTA);
return(0);
}
//+------------------------------------------------------------------+
//| Função de desinicialização de indicador personalizada |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| Função de iteração de indicador personalizada |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int limit = Barras - Barras_contadas;
var_dom_duplo[10000];
duplo var_off[10000];
ArraySetAsSeries(var_dom,true);
ArraySetAsSeries(var_off,true);
for(int i=0; i<limit; i++)
{
var_dom = ((Alta/Fechar)-1)*Volume;
var_off = ((Baixo/Fechar)-1)*Volume * (-1);
DOMANDA = iMAOnArray(var_dom,0,periodo,0,MODE_SMA,i);
OFFERTA = iMAOnArray(var_off,0,periodo,0,MODE_SMA,i);
}
retorno(0);
}//+------------------------------------------------------------------+Stephan
Aqui você vai :
StephanAqui você vai :
Yeesss, perfeito !!!!![](https://c.mql5.com/forextsd/smiles/teeth_smile.png)
Muito obrigado!!!!![](https://c.mql5.com/forextsd/smiles/You_Rock_Emoticon.png)
mr. mladen, é possível reescrever o indicador thinkorswim para o indicador metatrader 4 (post 2474)?
Olá a todos ,
digamos que eu tenho uma função que percorre todas as ordens de mercado e seleciono a última usando lastTicket(). então eu uso ot = orderopentime() . como eu obtenho o valor de ot de tal forma que eu possa usar o valor de ot em qualquer outra função do programa. eu não quero chamar checko() de dentro do loop através de todas as funções, por exemplo
checko() vazio
{
se (ot>presetdatetime)
{
ordem de fechamento();
}
}
Olá a todos ,
digamos que eu tenho uma função que percorre todas as ordens de mercado e seleciono a última usando lastTicket(). então eu uso ot = orderopentime() . como eu obtenho o valor de ot de tal forma que eu possa usar o valor de ot em qualquer outra função do programa. eu não quero chamar checko() de dentro do loop através de todas as funções, por exemplo
checko() vazio
{
se (ot>presetdatetime)
{
ordem de fechamento();
}
}eremitas
Uma pergunta: por último bilhete de pedido você quer dizer o maior (que geralmente é o mais novo pedido) ou o menor (que geralmente é o pedido mais antigo)?
hermesUma pergunta: por último bilhete de pedido você quer dizer o maior (que geralmente é o mais novo pedido) ou o menor (que geralmente é o pedido mais antigo)?
Obrigado Mladen, quero dizer o maior, que é a mais nova ordem.
Obrigado Mladen, quero dizer o maior, que é a mais nova ordem.
então você pode usar uma função como esta :
{
int largestTicketNo = -1;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
largestTicketNo = MathMax(largestTicketNo,OrderTicket());
}
//
//
//
//
//
if (largestTicketNo>-1 )
{
if (OrderSelect(largestTicketNo,SELECT_BY_TICKET,MODE_TRADES))
if (OrderOpenTime()>timeLimit)
OrderDelete(largestTicketNo);
}
}PS: não faz diferença entre símbolos ou eventuais números mágicos. Se você precisar que estes também sejam bochechados, então algum código adicional precisa ser adicionado à função acima