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
Converta este MT3 em MT4 para mim - muito fácil
Estou considerando mudar do MT4 para o MT3.
Acabo de editar meu primeiro assessor especializado.
Levei cerca de 4 semanas para aprender o suficiente sobre MT e MQL4 para finalmente ter minha estratégia programada, mas agora acho que posso apenas converter o programa para MQL2.
Pelo que li neste fórum, não vejo nenhuma vantagem para o MT4.
O que li, e aprendi através de um backtesting em minha EA, é que o MT4 Strategy Tester não funciona. Somente por esta razão, acho que só faz sentido passar mais alguns dias fazendo a troca para que eu possa obter um backtest preciso com o MT3.
Eu já baixei e instalei o MT3 e dei uma olhada no dicionário do editor. Posso ver que há menos recursos com o MT3 do que com o MT4, mas não acho que isso será um grande problema.
Uma característica do meu MQL4 EA com a qual eu contava muito, era o OrderMagicNumber para armazenar o preço do pedido original pendente, que pode mudar com o escorregamento quando o pedido é preenchido.
Os pedidos MQL2 não têm OrderMagicNumber, mas notei no dicionário MQL2 uma função chamada OrderValue que, em sua descrição, diz que a função pode recuperar um comentário do pedido (VAL_COMMENT).
Se eu puder usar o comentário para armazenar o preço preferido, acho que posso fazer a troca para o MT3. Entretanto, não consegui encontrar no dicionário, como definir o comentário do pedido. A descrição da função SetOrder não lista "comentário" como um de seus parâmetros.
Alguém familiarizado com esta característica da MQL2 pode me dizer como o comentário de ordem é definido?
Pelo que li neste fórum, não vejo nenhuma vantagem para o MT4.
O que eu li, e aprendi através de um backtesting em minha EA, é que o Testador de Estratégia MT4 não funciona. Somente por esta razão, acho que só faz sentido passar mais alguns dias fazendo a troca para que eu possa obter um backtest preciso com o MT3.
Então, onde você já leu que o testador MT3 é mais confiável do que o MT4???
Eu acho que você está muito mal informado sobre isso!
O backtest MT4 pode ser muito confiável, mas depende da qualidade dos dados históricos que você tem e da sua % de qualidade de modelagem.
Você não poderá adicionar "comentários" ou atribuir "MagicNumbers" aos pedidos enviados em MQL2 da forma como pode ser feito na programação MT4. A programação MT4 é mais avançada que a programação MQL2, por que retroceder?
Você pode querer ler sobre o MT4 de volta aqui: http://www.strategybuilderfx.com/forums/showthread.php?t=15309&page=1&pp=8
(se você não puder acessar a página você precisará se inscrever como membro - é gratuito)
Pelo que eu reuni aqui e ali, as pessoas que são um pouco sérias em relação aos testes de retaguarda usam softwares como WealthLab, Amibroker ou MetaStocks, NÃO mt3 ou mt4.
Talvez o backtesting do mt4 possa ser mais ou menos ok se você não usar nenhum dado intrabarramento. Por exemplo, se você trabalha com barras diárias, você deve usar apenas valores Abertos e Fechados de barras diárias (e nem mesmo Alto e Baixo se você definir StopLosses ou Take Profits). Nada mais.
A razão é que, apesar do que sua "qualidade de modelagem" poderia dizer, o único método de retrocesso mt4 que usa dados REAIS é"Somente preços Abertos".
Os métodos "Cada carrapato" e "Pontos de Controle" são belos contos de fadas. Pessoalmente, não vou trocar dinheiro com base em dados de contos de fadas de backtesting.
Ainda estou aprendendo o mt4, mas em minha experiência, eu não usaria o mt4 de nenhuma outra forma. Não estou nem 100% certo de que a maneira que sugeri seja 100% confiável. Se eu quiser fazer um bom backtesting, eu vou obter um software de backtesting.
Sobre o mt4 vs mt3 para negociação ao vivo: pelo que reuni aqui e ali ;-) o mt4 não pode ser confiável. Às vezes, as ordens que o mt4 diz que não foram executadas, na verdade são executadas!! Isto foi relatado por corretores. Se isto for verdade, então os corretores que oferecem o mt4 ao vivo não são sérios. Ou, eles se certificaram de que os bugs mt4 não aconteciam em sua plataforma, também é possível.
Por outro lado, "eu me reuni aqui e ali" rs que negociar ao vivo com o mt3 é possível.
Converta este MT3 em MT4 para mim - muito fácil
Oi pessoal, eu apreciaria se alguém pudesse converter isto para o MT4 para mim - nosso corretor acabou de se atualizar para o MT4.
Aqui está o código:
/*[[
Name := TTM Stoch
Author := Scott Black
Link := http://www.tradethemajors.com
Separate Window := yes
First Color := Cyan
First Draw Type := Line
Use Second Data := yes
second Color := Magenta
second Draw Type := Line
Minimum Chart Limits := 0.000000
Maximum Chart Limits := 100.000000
]]*/
Inputs : Slw(8),Pds(13),Slwsignal(9);
Variables : AA(0),bb(0),aa1(0),cnt1(0);
Variables : shift(0), cnt(0), loopbegin(0),loopbegin2(0),loopbegin3(0), first(True), prevbars(0);
Variables : sum(0), smconst(0),smconst1(0), prev(0),prev1(0),prev2(0),prev3(0), weight(0), linear(0);
Variables : MAValue(0),MAValue2(0),mavalue3(0), MAstring("");
Variables : MyHigh(0),MyLow(0),counter(0),Price(0),Price1(0);
SetLoopCount(0);
smconst = 2 / (1+SLW);
smconst1 = 2 / (1+slwsignal);
loopbegin = loopbegin+1;
For shift = 2000 Downto 0 Begin
prev = GetIndexValue2(shift+1);
AA =100* ((Close[shift] - Low[Lowest(MODE_LOW,shift+pds,Pds)]) / (High - low[Lowest(MODE_LOW,shift+pds,Pds)]));
MAValue2 = smconst * (aa-prev) + prev;
SetIndexValue2(shift,MAValue2);
loopbegin = loopbegin-1;
End;
loopbegin2 = loopbegin2+1;
For shift = 2000-pds downto 0 Begin
MyHigh = -999999;
MyLow = 99999999;
For counter = shift to pds + shift Begin
PRICE= GetIndexValue2(counter);
If Price > MyHigh Then
MyHigh = Price;
If pds <= 0 Then
MyHigh = Price;
If Price < MyLow Then
MyLow = Price;
If pds <= 0 Then
MyLow = Price;
end;
prev1 = GetIndexValue(shift+1);
aa1=GetIndexValue2(shift);
bb=100*(aa1-mylow)/(myhigh-mylow);
MAValue = smconst * (bb-prev1) + prev1;
SetIndexValue(shift,mavalue);
loopbegin2 = loopbegin2-1;
End;
loopbegin3 = loopbegin3+1;
For shift = 2000 downto 0 Begin
prev2=GetIndexValue2(shift+1);
prev3=GetIndexValue(shift);
MAValue3= smconst1 * (prev3-prev2) +Prev2;
SetIndexValue2(shift,mavalue3);
loopbegin3 = loopbegin3-1;
end;
/*[[
Muito obrigado!!
Olá pessoal, eu apreciaria se alguém pudesse converter isto para o MT4 para mim - nosso corretor acabou de fazer um upgrade para o MT4.
Aqui está o código:
/*[[
Name := TTM Stoch
Author := Scott Black
Link := http://www.tradethemajors.com
Separate Window := yes
First Color := Cyan
First Draw Type := Line
Use Second Data := yes
second Color := Magenta
second Draw Type := Line
Minimum Chart Limits := 0.000000
Maximum Chart Limits := 100.000000
]]*/
Inputs : Slw(8),Pds(13),Slwsignal(9);
Variables : AA(0),bb(0),aa1(0),cnt1(0);
Variables : shift(0), cnt(0), loopbegin(0),loopbegin2(0),loopbegin3(0), first(True), prevbars(0);
Variables : sum(0), smconst(0),smconst1(0), prev(0),prev1(0),prev2(0),prev3(0), weight(0), linear(0);
Variables : MAValue(0),MAValue2(0),mavalue3(0), MAstring("");
Variables : MyHigh(0),MyLow(0),counter(0),Price(0),Price1(0);
SetLoopCount(0);
smconst = 2 / (1+SLW);
smconst1 = 2 / (1+slwsignal);
loopbegin = loopbegin+1;
For shift = 2000 Downto 0 Begin
prev = GetIndexValue2(shift+1);
AA =100* ((Close[shift] - Low[Lowest(MODE_LOW,shift+pds,Pds)]) / (High - low[Lowest(MODE_LOW,shift+pds,Pds)]));
MAValue2 = smconst * (aa-prev) + prev;
SetIndexValue2(shift,MAValue2);
loopbegin = loopbegin-1;
End;
loopbegin2 = loopbegin2+1;
For shift = 2000-pds downto 0 Begin
MyHigh = -999999;
MyLow = 99999999;
For counter = shift to pds + shift Begin
PRICE= GetIndexValue2(counter);
If Price > MyHigh Then
MyHigh = Price;
If pds <= 0 Then
MyHigh = Price;
If Price < MyLow Then
MyLow = Price;
If pds <= 0 Then
MyLow = Price;
end;
prev1 = GetIndexValue(shift+1);
aa1=GetIndexValue2(shift);
bb=100*(aa1-mylow)/(myhigh-mylow);
MAValue = smconst * (bb-prev1) + prev1;
SetIndexValue(shift,mavalue);
loopbegin2 = loopbegin2-1;
End;
loopbegin3 = loopbegin3+1;
For shift = 2000 downto 0 Begin
prev2=GetIndexValue2(shift+1);
prev3=GetIndexValue(shift);
MAValue3= smconst1 * (prev3-prev2) +Prev2;
SetIndexValue2(shift,mavalue3);
loopbegin3 = loopbegin3-1;
end;
/*[[
Olá Scott...
Tente esta....
Hellkas,
Receio que isso não tenha funcionado muito bem. Vá para www.compoundfx.com/mt3stoch.jpg para ver como deve ficar no gráfico MT3 - tentei carregar isto, mas não funcionou.
Obrigado por seus esforços, talvez isto ajude?
Quando o traço no MT4, vejo apenas uma linha magenta e não um ciano - embora eu veja que a entrada está lá.
scott
Hi,
Primeiramente hellkas Eu vou agradecê-lo por manter meu cabeçalho de arquivo após converter o indicador mql com minha ferramenta Mql2Mq4 !!!
Então é normal que o convertido não funcione corretamente, se você olhar no Metatrade 4 na TabSheet (Painel) de Log de Mensagens Especializadas você verá "Exceção Zero Devide" como nesta foto. No roteiro do Indicador você usa o operador de divisão, com algumas vezes NULL:-( é por isso que este erro, e repito, no Metatrade 3, não houve exceções geradas para isso, no entanto no Metatrade 4.
Eu coloquei o convertido funcionando como no MT 3, e você pode ver que tipo de mudança eu fiz.
Tchau, tchau.
yousky,
Muito obrigado, parece perfeito! Fico-lhe grato.
-SB
yousky,
Ok, depois de mais revisões, ainda não está totalmente lá. Ainda me dá leituras falsas no MT4, ou seja, as linhas não estão cruzando onde deveriam estar. Eu usei o código que você colocou aqui. Alguma idéia?
SB