Como codificar? - página 276

 

Boa tarde.

Estou começando a escrever e a entender o código. Até agora, estou sobrecarregado.

Gostaria de começar a escrever uma ea usando o histograma MACD e quando a linha do triger cruzar acima e abaixo do histograma.

alguém tem uma simples sugestão de programa para começar a entender o código e deixá-lo correr para ver como ele funciona?

Obrigado - você

daniel

 

Trendline-Import from Excel/CSV=?

Olá, tenho escrito alguns scripts simples nos últimos dias, especialmente ObjectCreate (OBJ_TREND com Ray=1), é muito legal como isto funciona, mas como posso desenhar Objetos a partir de um arquivo csv pronto, onde tenho algum histórico Close-Data para minhas Close-Lines, porque quero ser capaz de apagar meu Template e importar os dados toda vez que precisar deles com um script,

alguém tem alguma idéia de como isso poderia funcionar?

O CSV tem uma data (sem tempo) & Valor de fechamento (eu não precisaria de mais dados para as Linhas)

e o Roteiro deve traçar uma linha a partir desta data com Ray=1 e personalizar a cor

talvez o script também possa verificar o gráfico aberto (símbolo) e pegar o arquivo csv correto, se um tiver mais de um ;-)

Por favor, qualquer um pode me ajudar

 

Erro para OrderDelete(OrderTicket())

Olá a todos!

Sou novo na programação MQL4, mas do outro lado conheço o C++.

Mas eu tenho alguns problemas com funções comerciais.

Este é o meu problema:

Eu crio uma ordem pendente com :

ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-5*Point,slippage,0,0,"",0,0,Green);

e em outro ponto do programa eu quero deletá-lo:

se (OrderSelect(ticket,SELECT_BY_TICKET)) OrderDelete(OrderTicket());

ERROR 4108! Por que ? O número do bilhete está correto, eu o imprimo.

Mas se eu usar :

se (OrderSelect(position, SELECT_BY_POS))OrderDelete(OrderTicket());

está OK!

Por que ?

Obrigado por seu apoio e pelo fórum.

 

Código para Encerrar EA ???

Olá a todos,

Estou à procura de um código que Terminará uma EA. Eu postei um pequeno martingale que escrevi. Tenho-o onde fechará todas as Ordens Pendentes e Abertas quando chegar a um Porcentagem de Saque de Conta. Eu também consegui fazer com que ele pare de negociar quando um Objetivo de Lucro Diário for alcançado. Ele começa a negociar novamente no dia seguinte. (Graças a quem escreveu a grade SWB, já que usei seu código).

Entretanto, eu gostaria que a EA terminasse quando ela atingisse uma determinada condição. Digamos, ele atinge o Deságio Percentual Máximo e fecha todas as ordens pendentes e posições abertas. Nesse ponto, eu quero que a EA termine por si mesma para não começar a negociar novamente até que eu retire a EA do gráfico e a coloque de volta.

Aqui está o EA. Qualquer sugestão ou ajuda é muito apreciada!!

Obrigado,

Joe

Arquivos anexados:
 

Precisa de ajuda no "'fim_do_programa' - parênteses desequilibrados à esquerda".

Olá, tenho trabalhado em um EA e continuo recebendo uma mensagem de erro ao compilar: "'fim_do_programa' - parêntese esquerda desequilibrada". Normalmente esta mensagem de erro está relacionada a um número desigual de parênteses esquerdo e direito. Entretanto, eu verifiquei meus códigos alto e baixo e descobri que tenho igual número de parênteses esquerdo e direito. Por isso, realmente me deixa louco que não consiga descobrir onde deu errado. Alguém pode verificar meus códigos e me dizer como corrigi-los? Obrigado, um milhão. Meus códigos estão afixados abaixo:

//+------------------------------------------------------------------+

//| Breakout.mq4 |

//| Pooh |

//| |

//+------------------------------------------------------------------+

#propriedade copyright "Pooh

#ligação de propriedade ""

//--- parâmetros de entrada

Exterior int LengthI=23;// para entrar no mercado

comprimento externo int LengthO=7;// para saída

Lotes duplos externos=0,1; // para tamanho do pedido

int exterior N1=14; //período para ATR

externo int NLots=1; //número de lotes de pedidos aumentados

//+------------------------------------------------------------------+

//| função de iniciação de especialista |

//+------------------------------------------------------------------+

int init()

{

//----

//----

retorno(0);

}

//+------------------------------------------------------------------+

//| função de desinicialização especializada |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

retorno(0);

}

//+------------------------------------------------------------------+

//| função de início especializado |

//+------------------------------------------------------------------+

int start()

{

//----

duplo HLong,LLong,HShort,LShort;

HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2));

LLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2)); HLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2));

LShort=iLow(NULL,0,iLowest(NULL,0,1,ComprimentoI,2)); LLong=iLow(NULL,0,iLowest(NULL,0,1,ComprimentoI,2))

HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2)); HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2));

int cnt, berço, bilhete, total;

total=OrdensTotal();

se (total<1)

{

se (iClose(NULL,0,1)>HLong)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000, "EA Long",123,0,Green);

se (bilhete>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Imprimir("Pedido longo aberto : ",OrderOpenPrice()));

}

senão

Imprimir ("Erro de abertura de ordem longa : ",GetLastError());

devolução(0);

}

se (iClose(NULL,0,1)<LShort)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red);

se (bilhete>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Imprimir("Encomenda abreviada:",OrderOpenPrice());

}

else Print("Error opening SHORT order:",GetLastError()));

retornar(0);

}

retorno(0);

}

for(cnt=0;cnt<total;cnt++)

{ //10

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // posição longa é aberta

{

// deve ser fechado?

if(Bid<=Long)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);// posição de fechamento

retorno(0);

}

//modificar a parada de trilha

OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Green);

retornar(0);

}

senão

{

if(Ask>==HShort)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);// posição de fechamento

retorno(0);

}

//modificar a parada de trilha

OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red);

return(0);

}

}

}

//agrupar lotes de pedidos longos e curtos total

duplo LOrderLots=0;

duplo SOrderLots=0;

for(cnt=0,cnt<=total,cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)

LOrderLots=LOrderLots+OrderLots();

if(OrderSymbol()==Symbol()&&OrderType()==OP_SELLL)

SOrderLots=LOrderLots+OrderLots();

}

/aumento da ordem aberta

for(cot=0,cot<=total,cot++)

{ //1

//add posição para ordem longa

if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==verdadeiro) //se houver pedidos em aberto

{ if(OrderMagicNumber===123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- se a ordem aberta foi aberta pelo tipo pooh abd da EA é Longo

{ //3

for(int i=1;i<=15;i++)

{ if(Bid>=OrderOpenPrice()+i*0,5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0,5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1)) //4

{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000, "EA Long",123,0,Green); //5

se (bilhete>0)

{ //6

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Imprimir("Pedido longo aberto : ",OrderOpenPrice()));

} //6

senão

Imprimir ("Erro de abertura de ordem longa : ",GetLastError());

intervalo;

} //5

} //4

retorno(0);

//add posição para ordem curta

if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELLL)

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0,5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8

{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red); //9

se (bilhete>0)

{ // 10

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Imprimir("Pedido abreviado : ",OrderOpenPrice());

} // 10

senão

Imprimir ("Erro na abertura de ordem curta : ",GetLastError());

intervalo;

} //9

} //8

retorno(0);

} //7

} //3

} //2

} //1

retorno(0)

}

 

Necessita de um codificador para codificar um indicador simples

Eu preciso de alguém que codifique um indicador que faça isso:

Em um Fibonacci simples, usando apenas as linhas 0,50.100. Quando uma barra fecha acima de 50% ou abaixo de 50%, mas tendo a opção de escolher se estou procurando um fechamento acima ou abaixo, não os dois. Portanto, se eu estou procurando um fechamento abaixo de 50%, não quero que toda vez que ele fecha acima de 50 o alerta dispare. Quero que ele me alerte por um som e me envie um e-mail e/ou texto. Isto é possível? Obrigado!!

IMAGEM: http://tinypic.com/r/dhbu6v/5

 

Tentando codificar a lógica simples, incapaz!

Olá Fórum,

Creio que isto é muito simples de codificar para você que é bom o suficiente na MQL4, mas sou iniciante e tenho problemas, li todas as lições aqui, mas ainda não consegui entender

então eu quero fazer comércio automatizado

tamanho do lote 0,1

stoploss = 30 pips

meta de lucro 50 pips

par AUDUSD

Se (preço alto - preço baixo) < 60 pips entre 02:00 GMT e 10:00 GMT então vender AUDUSD a preço baixo - 5pips ou comprar AUDUSD a preço alto + 5pips, caso contrário não há comércio

 
Avasys:
Olá Fórum,

Creio que isto é muito simples de codificar para você que é bom o suficiente na MQL4, mas sou iniciante e tenho problemas, li todas as lições aqui, mas ainda não consegui entender

então eu quero fazer comércio automatizado

tamanho do lote 0,1

stoploss = 30 pips

meta de lucro 50 pips

par AUDUSD

Se (preço alto - preço baixo) < 60 pips entre 02:00 GMT e 10:00 GMT então vender AUDUSD a preço baixo - 5pips ou comprar AUDUSD a preço alto + 5pips, caso contrário não há comércio

[lang=pl]Oi, acho que não é problema codificar esta EA, mas tenho dúvidas.

Quando você quer comprar/vender ? Você precisa de pedidos pendentes nos níveis baixo-5 alto+5?

cumprimentos,

Grzesiek[/lang]

 
g.pociejewski:
[lang=pl]Oi, acho que não é problema codificar esta EA, mas tenho dúvidas.

Quando você quer comprar/vender ? Você precisa de pedidos pendentes nos níveis baixo-5 alto+5?

cumprimentos,

Grzesiek[/lang]

Olá,

obrigado por ajudar

Sim, portanto, mais precisamente a faixa comercial AUDUSD (diferença entre preço alto e preço baixo) entre as 02:00 GMT e as 10:00 GMT (isto é muito importante em código) é inferior a 60 pips, portanto este é um sinal comercializável. Então você vende se os preços alcançarem o preço baixo (entre 02:00 e 10:00) - 5 pips e você compra se os preços alcançarem o preço alto + 5 pips.

exemplo

entre 02:00 e 10:00 GBPUSD o preço baixo era 1,6000, a alta era 1,6050, então se os preços alcançarem 1,5995 venda automaticamente e se o preço alcançar 1,6055 compra automaticamente colocando 30 pips stop loss order automaticamente e 50 pips take profit.

se você não tem tempo apenas me dê uma indicação de como começar, eu leio a lição, mas não tenho prática para fazer o trabalho

obrigado

 
pooh123:
Olá, tenho trabalhado em um EA e continuo recebendo uma mensagem de erro ao compilar: "'fim_do_programa' - parêntese esquerda desequilibrada". Normalmente esta mensagem de erro está relacionada a um número desigual de parênteses esquerdo e direito. Entretanto, eu verifiquei meus códigos alto e baixo e descobri que tenho igual número de parênteses esquerdo e direito. Por isso, realmente me deixa louco que não consiga descobrir onde deu errado. Alguém pode verificar meus códigos e me dizer como corrigi-los? Obrigado, um milhão. Meus códigos estão afixados abaixo:

//+------------------------------------------------------------------+

//| Breakout.mq4 |

//| Pooh |

//| |

//+------------------------------------------------------------------+

#propriedade copyright "Pooh

#ligação de propriedade ""

//--- parâmetros de entrada

Exterior int LengthI=23;// para entrar no mercado

comprimento externo int LengthO=7;// para saída

Lotes duplos externos=0,1; // para tamanho do pedido

int exterior N1=14; //período para ATR

externo int NLots=1; //número de lotes de pedidos aumentados

//+------------------------------------------------------------------+

//| função de iniciação de especialista |

//+------------------------------------------------------------------+

int init()

{

//----

//----

retorno(0);

}

//+------------------------------------------------------------------+

//| função de desinicialização especializada |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

retorno(0);

}

//+------------------------------------------------------------------+

//| função de início especializado |

//+------------------------------------------------------------------+

int start()

{

//----

duplo HLong,LLong,HShort,LShort;

HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2));

LLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2)); HLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2));

LShort=iLow(NULL,0,iLowest(NULL,0,1,ComprimentoI,2)); LLong=iLow(NULL,0,iLowest(NULL,0,1,ComprimentoI,2))

HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2)); HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2));

int cnt, berço, bilhete, total;

total=OrdensTotal();

se (total<1)

{

se (iClose(NULL,0,1)>HLong)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000, "EA Long",123,0,Green);

se (bilhete>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Imprimir("Pedido longo aberto : ",OrderOpenPrice()));

}

senão

Imprimir ("Erro de abertura de ordem longa : ",GetLastError());

devolução(0);

}

se (iClose(NULL,0,1)<LShort)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red);

se (bilhete>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Imprimir("Encomenda abreviada:",OrderOpenPrice());

}

else Print("Error opening SHORT order:",GetLastError()));

retornar(0);

}

retorno(0);

}

for(cnt=0;cnt<total;cnt++)

{ //10

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // posição longa é aberta

{

// deve ser fechado?

if(Bid<=Long)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);// posição de fechamento

retorno(0);

}

//modificar a parada de trilha

OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Green);

retornar(0);

}

senão

{

if(Ask>==HShort)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);// posição de fechamento

retorno(0);

}

//modificar a parada de trilha

OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red);

return(0);

}

}

}

//agrupar lotes de pedidos longos e curtos total

duplo LOrderLots=0;

duplo SOrderLots=0;

for(cnt=0,cnt<=total,cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)

LOrderLots=LOrderLots+OrderLots();

if(OrderSymbol()==Symbol()&&OrderType()==OP_SELLL)

SOrderLots=LOrderLots+OrderLots();

}

/aumento da ordem aberta

for(cot=0,cot<=total,cot++)

{ //1

//add posição para ordem longa

if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==verdadeiro) //se houver pedidos em aberto

{ if(OrderMagicNumber===123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- se a ordem aberta foi aberta pelo tipo pooh abd da EA é Longo

{ //3

for(int i=1;i<=15;i++)

{ if(Bid>=OrderOpenPrice()+i*0,5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0,5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1)) //4

{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000, "EA Long",123,0,Green); //5

se (bilhete>0)

{ //6

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Imprimir("Pedido longo aberto : ",OrderOpenPrice()));

} //6

senão

Imprimir ("Erro de abertura de ordem longa : ",GetLastError());

intervalo;

} //5

} //4

retorno(0);

//add posição para ordem curta

if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELLL)

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0,5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8

{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red); //9

se (bilhete>0)

{ // 10

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Imprimir("Pedido abreviado : ",OrderOpenPrice());

} // 10

senão

Imprimir ("Erro na abertura de ordem curta : ",GetLastError());

intervalo;

} //9

} //8

retorno(0);

} //7

} //3

} //2

} //1

retorno(0)

}

[lang=pl]Olá, houve poucos erros, dois ") desequilibrados" na função OrderMagicNumer que você deve usar () no final. Na função for loop você deve usar ";" ao invés de ",".

Se você precisar encontrar parênteses desequilibrados, recomendo o Notepad ++ [/lang].

Arquivos anexados:
eamod.mq4  5 kb
Razão: