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
Tentei várias vezes por conta da Alpari, sem erros. Apenas uma vez, quando coloquei script no diretório de especialistas e lancei como EA.
É porque eu lhe perguntei sobre os diretórios.
Desculpe.Acho que descobri o problema. Estou à vista da janela e normalmente faço "correr como administrador". tentei sem fazer isso e parecia funcionar bem agora
Passando um Array de MT4 .mq4 para C++ DLL
Qualquer ajuda, por favor.
Estou tendo problemas ao passar um único Array que contém 8 valores indicadores para uma DLL C++ . É muito simples, mas parece que eu recebo -1 quando chamo a
Função Forexindex() que na verdade chama a função importada de gepModel ( d [] ) a partir da DLL . A função ForexIndex deve retornar 0 ou 1 a partir da DLL
Eu suspeito que estou fazendo algo errado no arquivo .mq4 no Forexindex() . Qualquer ajuda será altamente apreciada. Abaixo está o código simples . O arquivo C++ DLL está bem, ele compila OK sem erros, então a questão é com o arquivo mq4 .
================================MQ4 file====================
#importar "JadeClass.dll"
int gepModel( double& d[] );
#importar
int start()
{
........
........
........
ForexIndex();
.......
......
......
.....
}
int ForexIndex()
{
int myindex;
double ind[] , MA_Close, MA_High, MA_Low, MA_Open, Macd, Rsi, Stoch, Vol;
int counted_bars=IndicatorCounted();
if (counted_bars<0) return(-1);
if (counted_bars>0) counted_bars--;
int pos=Barras_contadas_combars;
MA_Fechar = iMA(NULL,PERÍODO_M5,8,0,0,0,0) ;
MA_High = iMA(NULL,PERÍODO_M5,8,0,0,0,0,0) ;
MA_Low = iMA(NULL,PERÍODO_M5,8,0,0,0,0,0) ;
MA_Open = iMA(NULL,PERÍODO_M5,8,0,0,0,0,0) ;
Macd = iMACD(NULL,PERÍODO_M5,12,26,9,0,0,0,0) ; Macd = iMACD(NULL,PERÍODO_M5,12,26,9,0,0,0,0)
Rsi = iRSI(NULL,PERÍODO_M5,10,0,0,0);
Stoch = iStochastic(NULL,PERÍODO_M5,14,3,3,0,0,0,0,0);
Vol = iVolume(NULL,PERÍODO_M5,0);
while(pos>=0)
{
ind[0] = MA_Close;
ind[1] = MA_Alto;
ind[2] = MA_Baixo;
ind[3] = MA_Abrir;
ind[4] = Macd;
ind[5] = Rsi;
ind[6] = Stoch;
ind[7] = Vol;
myindex = gepModel(ind);
pos[4] = Macd; ind[5] = Macd;
}
Imprimir( " Myindex = " , myindex);
retornar (myindex);
}
=========================DLL Código fonte ===========================
#incluir "stdafx.h"
#incluir "JadeClass.h"
#incluir
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#define MT4_EXPFUNC __declspec(dllexport)
// O único e único objeto CJadeClassApp
CJadeClassApp aApp;
MT4_EXPFUNC int __stdcall gepModel(double d[]);
MT4_EXPFUNC int __stdcall gepModel(double d[])
{
.....
.....
.....
.....
}
============================ O arquivo Def para DLL Código fonte ===================
JadeClass.def : Declara os parâmetros do módulo para a DLL.
BIBLIOTECA "JadeClass".
EXPORTAÇÕES
Exportações explícitas podem ser feitas aqui.
gepModel
========================================
Precisa de ajuda para adicionar código para apenas um comércio por sinal
Estou apenas aprendendo código mq4 e passei muitas horas tentando descobrir como codificar apenas uma negociação por sinal. Tentei de algumas maneiras, mas não consegui fazer apenas uma troca. O exemplo seria se o TP fosse atingido, ele colocaria outra troca do mesmo lado por causa do sinal ainda ser bom. Eu gostaria que ele esperasse até o sinal inverso e depois o colocasse nesse comércio. Anexei a EA aqui sem nenhuma das minhas alterações. Obrigado antecipadamente pela ajuda. Marty
Estou apenas aprendendo código mq4 e passei muitas horas tentando descobrir como codificar apenas uma operação por sinal. Tentei algumas maneiras, mas não consigo entender como fazer apenas uma troca. O exemplo seria se o TP fosse atingido, ele colocaria outra troca do mesmo lado por causa do sinal ainda ser bom. Eu gostaria que ele esperasse até o sinal inverso e depois o colocasse nesse comércio. Anexei a EA aqui sem nenhuma das minhas alterações. Obrigado antecipadamente pela ajuda. Marty
Descobri como fazer isso recentemente em mql4.com depois de ter tido problemas com muitos negócios abertos em um único bar. Os artigos no mql4 me ajudaram muito no início, além disso, eles têm um banco de dados de códigos que lhe dá bons exemplos para trabalhar. Ainda assim este site tem um excelente histórico de posts e alguns codificadores realmente bons, basta usar o recurso de busca e clicar no botão exibir como posts, poupa você de procurar em páginas e páginas de um tópico apenas para a única resposta que você precisa. Quanto ao seu problema, basta usar este código:
if(Bars<BarsCount)
{
//Code to do once goes here
BarsCount=Bars;
}
[/CODE]
Personally I'm having problems with an array. I cant for the life of me figure out why the following code returns 0 all the time... Any help would be much appreciated. I'm trying to create an array of length STD_MA_Period+1 to later use with iMAOnArray but it doesnt work so its back to the drawing board I guess.
[CODE]for(i=0;i<=STD_MA_Period+1;i++)
{
STD_MA_Buffer=iStdDev(Symbol(),Period(),STD_Period,0,MODE_SMA,PRICE_CLOSE,i);
}
Print(STD_MA_Buffer[1]);PS duplo STD_MA_Buffer[]; é definido na seção de variáveis globais.
conserte minha EA, por favor
tenho uma idéia, mas posso escrevê-la em código mql4, você pode me ajudar????
este é meu problema
esta é a definição do meu sistema :
A. se pedidos=0 >> OP compra && OP venda
B. Fazer grelha por + ou - condição
ex. se OPbuy + grid = OPbuy
se OPbuy - grade = OPsell
o mesmo para OPsell
C. se lucro > 0 & & & lucro > lucro mínimo ( profit locking )
parar qualquer pedido ( OP compra || OP venda ) e movimentar o patrimônio líquido ou ponto de lucro
D. fechar por lucro pode por equidade ou por ponto
formato E. .mq4 porque quero saber onde está minha culpa
Tenho um problema no ponto B. Por favor, me ajude
Tenho uma idéia, mas posso escrevê-la no código mql4, você pode me ajudar????
este meu problema
esta é a definição do meu sistema :
A. se pedidos=0 >> OP compra && OP venda
B. Fazer grelha por + ou - condição
ex. se OPbuy + grid = OPbuy
se OPbuy - grade = OPsell
o mesmo para OPsell
C. se lucro > 0 & & & lucro > lucro mínimo ( profit locking )
parar qualquer pedido ( OP compra || OP venda ) e movimentar o patrimônio líquido ou ponto de lucro
D. fechar por lucro pode por equidade ou por ponto
formato E. .mq4 porque quero saber onde está minha culpa
Tenho um problema no ponto B. Por favor, me ajudeQue tal enviar o código fonte instigado do ex4 ?
Que tal enviar o código fonte instigado do ex4 ?
apenas me mostre como codificá-lo,
este meu último detalheDeclaração
consertar isto.rar
espero que consiga entender meu EA, o problema que o loop na OP vende por que ???
questão dalinha de tendência
Novo na codificação e apenas fazendo coisas para praticar, eu queria parar uma linha de tendência no bar atual. O que eu inventei foi simplesmente mudar a cor da mesma na barra atual para a cor de fundo. Em essência, apenas misturando a linha que passava pela barra ao fundo e fazendo-a desaparecer naquele ponto.
Então agora eu pergunto aos especialistas qual era a maneira correta de fazer isso. Sei que há muitas maneiras de realizar a mesma coisa, então estou apenas procurando ver algumas outras idéias sobre o que eu poderia ter feito, num esforço para aprender mais.
Obrigado
Comportamento Muito Estranho do Código MQL
Olá a todos,
Versão Metatrader: 4.00 Build 224 (15 de maio de 2009)
Versão Metaeditor: 4.00 Build 224 (14 de maio de 2009)
Encontrei um bug muito estranho no MQL que me deixou completamente perplexo, tanto que estou olhando para TODO meu antigo código para ter certeza de que ele está escrito para evitar este problema.
Espero que alguém possa lançar alguma luz sobre o que exatamente está acontecendo aqui.
Aqui está o código, um simples indicador que essencialmente não faz nada. Entretanto, na seção init() fiz uma chamada a 2 funções quando o período do gráfico é H1.
As duas funções são idênticas em todos os aspectos, menos em um. Uma tem uma matriz int estática definida e a outra tem uma matriz int não estática definida. Tudo o que as funções fazem é imprimir o tamanho de sua matriz definida localmente, atribuir alguns valores aos elementos da matriz e então imprimi-los.
#property indicator_chart_window
void afunc() {
int i;
int array[4];
array[0] = 100;
array[1] = 101;
array[2] = 102;
array[3] = 103;
Print("afunc array[4] size="+ArraySize(array));
for (i = 0; i < 4; i++) {
Print("afunc array["+i+"]="+array);
}
}
void afunc_static() {
int i;
static int array[4];
array[0] = 100;
array[1] = 101;
array[2] = 102;
array[3] = 103;
Print("afunc_static array[4] size="+ArraySize(array));
for (i = 0; i < 4; i++) {
Print("afunc_static array["+i+"]="+array);
}
}
int init() {
if (Period() == PERIOD_H1) {
afunc();
afunc_static();
}
return(0);
}
int deinit() {
return(0);
}
int start() {
return(0);
}
Se você olhar para o código, nunca deve haver nenhuma circunstância em que as duas funções se comportem de forma diferente uma da outra.
Entretanto, se eu anexar o indicador a um gráfico M5 e depois mudar para o período de tempo H1, obtenho a seguinte saída.
2009.05.23 18:12:47 afunc EURUSD,H1: initialized
2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static array[3]=103
2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static array[2]=102
2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static array[1]=101
2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static array[0]=100
2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static array[4] tamanho=4
2009.05.23 18:12:47 afunc EURUSD,H1: afunc array[3]=0
2009.05.23 18:12:47 afunc EURUSD,H1: afunc array[2]=0
2009.05.23 18:12:47 afunc EURUSD,H1: afunc array[1]=0
2009.05.23 18:12:47 afunc EURUSD,H1: afunc array[0]=0
2009.05.23 18:12:47 afunc EURUSD,H1: afunc array[4] tamanho=0
2009.05.23 18:12:47 afunc EURUSD,M5: razão uninit 3
2009.05.23 18:12:47 afunc EURUSD,M5: deinicializado
2009.05.23 18:12:45 afunc EURUSD,M5: inicializado
2009.05.23 18:12:43 afunc EURUSD,M5: carregado com sucesso
Observe que embora eu tenha definido 'int array[4]' em afunc(), o tamanho desse array é na verdade ZERO e eu não posso atribuir valores aos elementos do array. Esta função obviamente não funciona como esperado.
Observe que defini 'static int array[4]' em afunc_static() e o tamanho é corretamente mostrado como 4, assim como os valores que atribuo aos elementos do array. Esta função funciona bem.
Resumindo. Se você definir um array não estático em uma função e se essa função não for chamada por seu indicador, então você poderá ter um problema.
Se você posteriormente mudar o cronograma do gráfico e depois chamar a função o tamanho de qualquer matriz definida localmente na função será zero irreseptiva do que você definiu o tamanho das matrizes a serem.
A única maneira de contornar este problema, até onde posso ver, é certificar-se de que quaisquer matrizes definidas localmente em suas funções sejam definidas como sendo matrizes estáticas. Eu sei, mas não vejo nenhuma outra maneira de evitar o problema.
Eu realmente apreciaria qualquer feedback sobre esta questão.
Cumprimentos,
Laurence.