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
Adicionar posição neste EA
Olá,
primeiro devo pedir desculpas porque o inglês não é minha língua nativa.
Como posso modificar este EA para dizer-lhe para adicionar uma posição (comprar 0,1 lotes) no fechamento do bar sempre que o RSI tiver mais de 67, e para vender sempre que o RSI tiver menos de 33?
Por exemplo:
tempo de fechamento do RSI
17:31 1.3855 69,3 ---> comprar 0,1
17:32 1.3858 70,5 ---> comprar 0,1
17:33 1.3849 66,8 ---> nenhuma ação
17:34 1,3856 68,4 ---> comprar 0,1
Posição total +0,03
O mesmo para vender a descoberto.
//+------------------------------------------------------------------+
//| Este MQL é gerado pelo Expert Advisor Builder |
//| Expert Advisor Builder for MetaTrader 4 |
//| |
//| Em nenhum caso o autor será responsável por qualquer dano de qualquer natureza. |
////- Use por sua própria conta e risco. |
//| |
//+------------------- NÃO REMOVA ESTE CABEÇALHO --------------------+
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
#propriedade copyright "Expert Advisor Builder"
#link da propriedade "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"
número interno externo MagicNumber = 0;
sinal externo boolMail = Falso;
bool externo EachTickMode = Falso;
double Lots externo = 0,1;
Exterior int Slippage = 3;
bool externo UseStopLoss = Falso;
StopLoss int externo = 30;
bool UseTakeProfit externo = Falso;
extern int TakeProfit = 60;
bool UseTrailingStop = Falso;
Exterior int TrailingStop = 30;
int BarCount;
int Current;
bool TickCheck = Falso;
//+------------------------------------------------------------------+
//| função de iniciação de especialista |
//+------------------------------------------------------------------+
int init() {
BarCount = Barras;
se (CadaTickMode) Corrente = 0; caso contrário Corrente = 1;
retorno(0);
}
//+------------------------------------------------------------------+
//| função de desinicialização especializada |
//+------------------------------------------------------------------+
int deinit() {
retorno(0);
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int start() {
int Ordem = SIGNAL_NONE;
int Total, Bilhete;
nível duplo StopLossLevel, TakeProfitLevel;
if (CadaTickMode && Bars != BarCount) TickCheck = False;
Total = EncomendasTotal();
Order = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| Início variável |
//+------------------------------------------------------------------+
duplo Buy1_1 = iRSI(NULL, 0, 10, PRICE_CLOSE, Atual + 0);
duplo Buy1_2 = 67;
duplo Venda1_1 = iRSI(NULL, 0, 10, PREÇO_CLOSE, Atual + 0);
duplo VENDA1_2 = 33;
//+------------------------------------------------------------------+
//| Fim variável |
//+------------------------------------------------------------------+
//Cheque posição
bool IsTrade = Falso;
para (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = Verdadeiro;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Início do Sinal (Compra de Saída) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Fim do sinal (Compra de Saída) |
//+------------------------------------------------------------------+
if (Order === SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
se (!EachTickMode) BarCount = Bars;
IsTrade = Falso;
continuar;
}
// Parada de trilha
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Ponto * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
se (!EachTickMode) BarCount = Bars;
continuar;
}
}
}
{} else {
//Close
//+------------------------------------------------------------------+
//| Início do Sinal (Sair de Venda) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Fim do sinal (Sair de Venda) |
//+------------------------------------------------------------------+
if (Order === SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
se (!EachTickMode) BarCount = Bars;
IsTrade = Falso;
continuar;
}
// Parada de trilha
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Ponto * TrailingStop)) {
if((OrderStopLoss() > (Pergunte + Ponto * TrailingStop)) ||| (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
se (!EachTickMode) BarCount = Bars;
continuar;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Início do sinal (Entrada) |
//+------------------------------------------------------------------+
if (Buy1_1 > Buy1_2) Order = SIGNAL_BUY;
se (Vender1_1 < Vender1_2) Encomendar = SINAL_SELL;
//+------------------------------------------------------------------+
//| Fim do sinal |
//+------------------------------------------------------------------+
//Compra
if (Order === SIGNAL_BUY && ((EachTickMode && !TickCheck) ||| (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Cheque margem livre
if (AccountFreeMargin() < (1000 * Lotes)) {
Imprimir("Nós não temos dinheiro. Margem Livre = ", AccountFreeMargin());
devolução(0);
}
se (UseStopLoss) StopLossLevel = Perguntar - StopLoss * Ponto; caso contrário, StopLossLevel = 0,0;
if (UseTakeProfitLevel) TakeProfitLevel = Ask + TakeProfitLevel * Ponto; caso contrário TakeProfitLevel = 0,0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Imprimir("Pedido de compra aberto : ", Preço Aberto());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Imprimir("Erro na abertura do pedido de compra : ", GetLastError());
}
}
se (EachTickMode) TickCheck = Verdadeiro;
se (!EachTickMode) BarCount = Bars;
return(0);
}
}
//vender
if (Order === SIGNAL_SELL && ((EachTickMode && !TickCheck) ||| (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Cheque margem livre
if (AccountFreeMargin() < (1000 * Lotes)) {
Imprimir("Nós não temos dinheiro. Margem Livre = ", AccountFreeMargin());
devolução(0);
}
se (UseStopLoss) StopLossLevel = Bid + StopLoss * Ponto; caso contrário, StopLossLevel = 0,0;
if (UseTakeProfitLevel) TakeProfitLevel = Bid - TakeProfit * Ponto; caso contrário TakeProfitLevel = 0,0;
Ticket = OrderSend(Symbol(), OP_SELLL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Imprimir("ordem de venda aberta : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Imprimir("Erro na abertura do pedido de VENDA : ", GetLastError());
}
}
se (EachTickMode) TickCheck = Verdadeiro;
se (!EachTickMode) BarCount = Bars;
return(0);
}
}
se (!EachTickMode) BarCount = Bars;
retorno(0);
}
//+------------------------------------------------------------------+
Muito obrigado por sua ajuda
Panurgo
Como parar de negociar após o lucro obtido para o dia atual?
Hi.
Eu tenho um problema. Vou codificar um EA.
Quando um lucro de 20 PIP do dia for obtido, o EA não deverá abrir nenhuma ordem até o dia seguinte.
Por favor, me ajude.
Obrigado
fxbeginner
Hi.
Eu tenho um problema. Eu vou codificar um EA.
Quando um Lucro de 20 PIP do dia for tomado, então a EA não deverá abrir nenhuma ordem até o dia seguinte.
Por favor, me ajude.Uma idéia seria não permitir a negociação após a primeira ordem do dia. Após a função fim da ordem(), colocar uma "negociação = falso;".
Em seguida, reinicialize a permissão de negociação a cada novo dia:
if(timeprev!=iTime(Symbol(),PERIOD_D1,0)) { //---- Este é um novo dia
timeprev = iTime(Symbol(),PERIOD_D1,0);
comércio = verdadeiro; }
Depois, quando você verifica seu sinal:
if(trade) { sua condição comercial aqui }
Apenas um exemplo ...
FerruFx
Ordens ocultas
Como faço para codificar um EA para esconder todas as ordens de parada de compra ou venda dos olhos curiosos dos Corretores. O EA atual tem Ordens de Parada de Compra e Parada de Venda pendentes.
Obrigado
LF
Como faço para codificar uma EA para esconder todas as ordens de compra ou de venda dos olhos curiosos dos corretores. O EA atual tem Ordens de Compra e de Venda pendentes.
Obrigado
LFRegistre o valor de compra e venda dentro da EA, uma vez que o preço cruza o nível de compra, envie um pedido de compra, e vice-versa para o nível de venda.
Registre o valor de compra e venda dentro da EA, uma vez que o preço cruza o nível de compra, envie um pedido de compra, e vice-versa para o nível de venda.
Obrigado. Enviei-lhe um PM
Diga à EA para parar de trabalhar
Olá a todos,
Quase terminei minha primeira EA após quase 7 dias de tentativa e erro e corte e colagem e horas de pesquisa....
Alguém pode me dizer como emitir uma saída ou parar uma função para uma EA?
Quero que a EA apague todas as negociações atuais e pendentes e saia depois de atingir 10.000 no patrimônio líquido. Abaixo está a parte do código até o momento:
int total = OrdersTotal(), cnt = 0, ExitAtEquity=10000;
for (cnt = total ; cnt >=0 ; cnt-- )
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if (AccountEquity ()== ExitAtEquity)//(TimeCurrent()- OrderOpenTime() >= ActiveMinutes*60 )
{if(OrderType()==OP_BUY)
OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
if(OrderType()==OP_SELL)
OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
if(OrderType()>OP_SELL)
OrderDelete(OrderTicket());
StopTrade=true;}
}
if (dclose==dopen && OrdersTotal() < ConcurrentTrades && StopTrade != true)Como você pode ver, a EA olha para o patrimônio líquido e então define o valor de bool da variável StopTrade como verdadeiro. O EA então reconhece o comando e não processa nada sob o StopTrade != verdadeiro para um ciclo, mas então o valor do bool do StopTrade é reinicializado, acho eu, e as negociações continuam.
Em primeiro lugar, existe alguma forma de eu conseguir que isto faça o que eu preciso para fazer da maneira que estou fazendo?
Segundo, existe alguma função que eu possa usar para simplesmente dizer à EA para desistir?
Toda a assistência é muito apreciada.
O que há de errado com este código?
Alguém pode me dizer por que estou gerando um erro com este comando no meu EA?
buyOrder=OrderType();
else
Print("OrderSelect returned the error of ",GetLastError());
bTicket is assigned in this prior line:
if(bTicket<=0) Print("Error = ",GetLastError());
else Print("ticket = ",bTicket);A mudança do meu posto não ajudou.
Não posso usar o número mágico porque estou executando o mesmo EA em 8 pares diferentes. Onde está meu posto original para que eu possa segui-lo?
O que há de errado com este código?
Alguém pode me dizer por que estou gerando um erro com este comando em minha EA?
buyOrder=OrderType();
else
Print("OrderSelect returned the error of ",GetLastError());
bTicket is assigned in this prior line:
bTicket=OrderSend(Symbol(),OP_BUYSTOP,Lots,buyPoint,0,sl,buy_tp,"Script entry",0);
if(bTicket<=0) Print("Error = ",GetLastError());
else Print("ticket = ",bTicket);Meu pedido pendente é colocado e devolve o número do bilhete como atribuído a bTicket, mas então bTicket não funciona em meu OrderSelect(). Eu recebo um erro 0 devolvido. Tentei referenciar por SELECT_BY_POS e atribuir o número do ticket devolvido ao bTicket e funcionou bem, mas não há como saber qual será o número de posição de todos os meus pedidos, apenas executando o script. Qualquer ajuda é muito apreciada.