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);
olvus: 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);
// 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
// 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
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
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)?
mladen: 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.
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
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
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 !!!!
Muito obrigado!!!!
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