Como codificar? - página 308

 

Olá, Mladen,

Encontrei um código feito por você em estocástico. No entanto, quando eu o coloco em meus sistemas, nada acontece. Posso verificar com vocês o que ele faz?

http://www.forexmt4.com/mt_yahoo/Color%20Stochastic%20v1[ 1].04.mq4

Cumprimentos

Terrance

 

...

Experimente alguns destes postados aqui : https://www.mql5.com/en/forum/175297/page3

Ou aqui : https://www.mql5.com/en/forum/177239/page2

Testados e funcionam

tkuan77:
Olá, Mladen,

Encontrei um código feito por você em estocástico. No entanto, quando eu o coloco em meus sistemas, nada acontece. Posso verificar com vocês o que ele faz?

http://www.forexmt4.com/mt_yahoo/Color%20Stochastic%20v1[ 1].04.mq4

Cumprimentos

Terrance
 

Isto é estranho.

Analisei a questão do cadeado com um pouco mais de detalhe. Aparentemente tem a ver com minhas configurações de UAC ( Controle de Conta de Usuário), então entrei em meu painel de controle do Windows7 e desliguei o UAC com toda a facilidade. Uma vez reiniciado, notei que o cadeado havia desaparecido do arquivo. Eu o abri e é o mesmo que o arquivo que coloquei neste fórum. Completamente diferente do código que venho escrevendo nas últimas semanas, embora na verdade seja o mesmo arquivo. Pensei que tinha perdido todo o meu trabalho de codificação. Voltei a ligar a UAC e reiniciei, o cadeado havia retornado e o código que eu havia escrito estava de volta ao normal novamente.

Mas então eu tentei compilar o código e ele pegou uma carga de erros. Mas os erros que ele coleta não são deste código, mas o código completamente diferente quando eu desligo o UAC - eu sei disso porque suas variáveis de coleta que estão apenas no outro código.

Acho que precisarei abrir uma nova marca EA e digitar manualmente todo este código e salvá-lo.

 

...

É um problema usual com as janelas 7 (com sua proteção)

A maneira mais simples de evitar isso sob as janelas 7 é instalar o metatrader em uma divisória diferente da C e você não terá problemas desse tipo

crsnape@btinternet.com:
Isto é estranho.

Analisei a questão do cadeado com um pouco mais de detalhe. Aparentemente tem a ver com minhas configurações de UAC (Controle de Conta de Usuário), então eu entrei em meu painel de controle do Windows7 e desliguei o UAC com toda a facilidade. Uma vez reiniciado, notei que o cadeado havia desaparecido do arquivo. Eu o abri e é o mesmo que o arquivo que coloquei neste fórum. Completamente diferente do código que venho escrevendo nas últimas semanas, embora na verdade seja o mesmo arquivo. Pensei que tinha perdido todo o meu trabalho de codificação. Voltei a ligar a UAC e reiniciei, o cadeado havia retornado e o código que eu havia escrito estava de volta ao normal novamente.

Mas então eu tentei compilar o código e ele pegou uma carga de erros. Mas os erros que ele coleta não são deste código, mas o código completamente diferente quando eu desligo o UAC - eu sei disso porque suas variáveis de coleta que estão apenas no outro código.

Acho que precisarei abrir uma nova marca EA e digitar manualmente todo este código e salvá-lo.
 

Finalmente consegui um EA de trabalho adequado. Funciona exatamente como deveria - acabei copiando meu código para o bloco de notas, transformando o UAC, depois colando-o em um novo arquivo EA. E eu sussurrei por que minhas funções estavam funcionando - eu tinha colocado uma variável int dentro de uma variável normalizada. Não sabia que não podia fazer isso, mas agora eu faço - só levei uma semana para descobrir! :/

De qualquer forma, escrevi isto:

if (VariableRisk == verdadeiro) Risk = GetRiskShort (LastOpenTicket, RiskShort);

if (VariableRisk == falso) Risco = StaticRisk;

E estava se perguntando se ele pode ser abreviado assim?

se (VariableRisk == verdadeiro)

{

Risco = GetRiskShort (LastOpenTicket, RiskShort);

else Risk = StaticRisk;

}

E também escrevi isto:

//--- Função para calcular a posição de lucro quando longo

duplo GetTPPriceLong (duplo SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)

{

duplo TPPriceLong = 0;

se (AutoCalcTakeProfit == verdadeiro)

{

RefreshRates();

TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);

Print("Take profit position calculated successfully");

retorno (TPPriceLong);

}

se (AutoCalcTakeProfit == falso)

{

RefreshRates();

TPPriceLong = OrderOpenPrice() + (StaticTP * 0,0001);

Print("Static take profit position calculated successfully");

retorno (TPPriceLong);

}

}

E estava se perguntando se pode ser abreviado desta forma?

//--- Função para calcular a posição de lucro quando longo

duplo GetTPPriceLong (duplo SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)

{

duplo TPPriceLong = 0;

RefreshRates();

se (AutoCalcTakeProfit == verdadeiro)

{

TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);

Print("Take profit position calculated successfully");

caso contrário TPPriceLong = OrderOpenPrice() + (StaticTP * 0,0001);

Imprimir("Static take profit position calculated successfully");

retorno (TPPriceLong);

}

E uma última pergunta, para dar mais flexibilidade à minha EA, quero definir meus prazos como variáveis externas. Meu gráfico de sinal deve ser D1, digamos, e meu gráfico de disparo deve ser H4. Portanto, sob variáveis externas, eu poderia fazer isso:

gráfico de sinal int externo = PERÍODO_D1;

gráfico de disparo externo int = PERÍODO_H4;

E depois referenciá-lo fazendo isto, por exemplo:

SlowMACurrent = iMA(Symbol(), SignalChart, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

 

Sobre esta parte :

E depois faça referência fazendo isto por exemplo: SlowMACurrent = iMA(Symbol(), SignalChart, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

Sim, essa é uma forma 100% correta de usá-la (mesmo ao ponto de você estar usando uma barra fechada (o deslocamento nesse exemplo é definido como 1) e que, usando uma barra fechada no teste, você vai evitar a armadilha usual de usar a barra aberta em um quadro de tempo múltiplo)

crsnape@btinternet.com:
Finalmente consegui um EA de trabalho adequado. Funciona exatamente como deveria - acabei copiando meu código para o bloco de notas, transformando o UAC, depois colando-o em um novo arquivo EA. E eu sussurrei porque minhas funções estavam funcionando - eu tinha colocado uma variável int dentro de uma variável normalizada. Não sabia que não podia fazer isso, mas agora eu faço - só levei uma semana para descobrir! :/

De qualquer forma, escrevi isto:

se (VariableRisk == verdadeiro) Risco = GetRiskShort (LastOpenTicket, RiskShort);

if (VariableRisk == falso) Risco = StaticRisk;

E estava se perguntando se ele pode ser abreviado assim?

se (VariableRisk == verdadeiro)

{

Risco = GetRiskShort (LastOpenTicket, RiskShort);

else Risk = StaticRisk;

}

E também escrevi isto:

//--- Função para calcular a posição de lucro quando longo

duplo GetTPPriceLong (duplo SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)

{

duplo TPPriceLong = 0;

se (AutoCalcTakeProfit == verdadeiro)

{

RefreshRates();

TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);

Print("Take profit position calculated successfully");

retorno (TPPriceLong);

}

se (AutoCalcTakeProfit == falso)

{

RefreshRates();

TPPriceLong = OrderOpenPrice() + (StaticTP * 0,0001);

Print("Static take profit position calculated successfully");

retorno (TPPriceLong);

}

}

E estava se perguntando se pode ser abreviado desta forma?

//--- Função para calcular a posição de lucro quando longo

duplo GetTPPriceLong (duplo SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)

{

duplo TPPriceLong = 0;

RefreshRates();

se (AutoCalcTakeProfit == verdadeiro)

{

TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);

Print("Take profit position calculated successfully");

caso contrário TPPriceLong = OrderOpenPrice() + (StaticTP * 0,0001);

Imprimir("Static take profit position calculated successfully");

retorno (TPPriceLong);

}

E uma última pergunta, para dar mais flexibilidade à minha EA, quero definir meus prazos como variáveis externas. Meu gráfico de sinal deve ser D1, digamos, e meu gráfico de disparo deve ser H4. Portanto, sob variáveis externas, eu poderia fazer isso:

gráfico de sinal int externo = PERÍODO_D1;

gráfico de disparo externo int = PERÍODO_H4;

E depois referenciá-lo fazendo isto, por exemplo:

SlowMACurrent = iMA(Symbol(), SignalChart, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
 

Olá, estou recebendo o código de erro 4059:

[TD]Função não é permitida no modo de teste.

ERR_FUNC_NOT_ALLOWED_IN_TESTING[/TD]

4059

Fiz uma pesquisa mas não consigo encontrar mais informações sobre o que isso significa?

 

Você pode ajudar a adicionar os seguintes códigos a este indicador de sarabolizantes parabólicos?

Pip:
Obrigado Mladen,

Vou reler seu post para entender, honestamente fiquei um pouco perdido lendo-o, mas o mais provável é que seja minha ignorância a tomar jogo. Colocarei perguntas se eu tiver alguma.

Obrigado, amigo.

Obrigado, amigo,

Pip

Prezado amigo,

VOCÊ PODE AJUDAR A ADICIONAR OS SEGUINTES CÓDIGOS A ESTE SAR PARABÓLICO alerta parabólico_alert_mod.mq4INDICATOR?

Eu não estou procurando por um EA. Se possível, pelo menos adicione a opção SHIFT ao indicador.

Duplo TakeProfit externo = 50;

duplo externo Lots = 0,1;

Duplo Exterior TrailingStop = 30;

duplo SAR_Step externo = 0,02;

duplo SAR_Máximo SAR_Máximo = 0,2;

duplo Shift externo=1;

Arquivos anexados:
 

...

... joelnelson

TakeProfit, Lots and TrailingStop nada têm a ver com a forma como os sar s parabólicos são calculados (esses parâmetros são obviamente tirados de uma EA usando sar em seu trabalho). Portanto, se você não está procurando um EA, não é possível adicionar esses parâmetros de forma significativa

Além disso, a mudança dos parâmetros está se referindo à barra que é testada (o SAR parabólico não é deslocado, pois a média móvel pode ser deslocada normalmente).

duplo iSAR([/TD][TD] símbolo decorda, int timeframe, duplo passo, duplo máximo, int shift)

Shift 1 nesse caso para testar o valor da primeira barra fechada de sarabolizantes parabólicos

joelnelson:
Prezado Amigo,

VOCÊ PODE AJUDAR A ADICIONAR OS SEGUINTES CÓDIGOS A ESTE SAR PARABÓLICO alerta parabólico_alert_mod.mq4INDICATOR?

Eu não estou procurando por um EA. Se possível, pelo menos adicione a opção SHIFT ao indicador.

Duplo TakeProfit externo = 50;

duplo externo Lots = 0,1;

Duplo Exterior TrailingStop = 30;

duplo SAR_Step externo = 0,02;

duplo SAR_Máximo SAR_Máximo = 0,2;

turno duplo externo=1;
 

...

Esse erro pode ser devolvido por algumas funções.

As funções que podem causar esse erro nos testes são as seguintes :

MarketInfo

MessageBox

SendFTP

EnvieMail

WindowIsVisible

WindowFind

WindowHandle

Então, uma chamada para algumas das funções acima causou esse erro

crsnape@btinternet.com:
Olá, estou recebendo o código de erro 4059:[TD]A função não é permitida no modo de teste.
ERR_FUNC_NOT_ALLOWED_IN_TESTING[/TD]4059
Fiz uma pesquisa mas não consigo encontrar mais informações sobre o que significa?