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
Muito bem, sobre a pergunta original:
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Magenta
extern int MAPeriod=200;
extern double iController = 1.386;
//---- buffers
//double Memory[200];
double ExtMapBuffer1[];
int limit = 200;
//---- variables
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(1);
//---- drawing settings
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
IndicatorShortName( "Antaria_Rising");
//---- initialization done
return(0);
}
int start()
{
int limit;
//ExtMapBuffer1[1] = ExtMapBuffer1[0];
//ExtMapBuffer1[0] = iController;
for(int i=(0); i<=(limit-1); i++)
{
ExtMapBuffer1 = ExtMapBuffer1;
}
ExtMapBuffer1[0] = iController;
return(0);
}[/CODE]
Above is the code for the indicator. Simply, it draws a line that should be updatable via the EA using the intiially mentioned code:
[CODE]temp = iCustom(NULL, 0, "AntariaRising", 200, 1.2, 0, 0); //temp not used. Function returns a doubleAcho que quero substituir a última parte do código que realmente me permite atualizar no objeto incicador a variável que está sendo rastreada, para que eu possa usá-la mais tarde como uma linha de parada. O código restante, porém, é irrelevante. Quando eu executo a função acima, espero que a antaria se mova de 1,39 ou o que quer que ela comece, para 1,2. Não consigo me lembrar se uso a variável 200. Acho que cortei meus comentários de cabeçalho e rodapé, mas todo o indicador de escravo está lá em cima, o que é AntariaRising significando imediatamente acima do código
esta foi a única função que pude encontrar que falava com objetos indicadores, e a utilizo para ler valores em outras áreas.
Sobre seu código indicador. Está errado.
Limite Var. igual a zero sempre.
Tire a corda:
limite de int;
desde o início().
Ajude-me com este código pls
eu quero que alguém me ajude com este código ele abre o comércio quando eu quero, mas fecha-o automaticamente, então eu quero que ele negocie com stop loss não fechando quando não cruzar novamente este é o código
//+------------------------------------------------------------------+
//| JR300.mq4 |
//| onelove |
//| Forex Forum | Forex Tsd | Metatrader Forum |
//+------------------------------------------------------------------+
#propriedade copyright "oneLove
#link da propriedade "https://www.forex-tsd.com"
//---- parâmetros de entrada
duplo TakeProfit externo=250,0;
duplo externo Lots=0,1;
duplo Exterior TrailingStop=35.0;
//+------------------------------------------------------------------+
//| função de iniciação de especialista |
//+------------------------------------------------------------------+
int init()
{
//----
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de desinicialização especializada |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
retorno(0);
}
int Crossed (linha dupla1 , linha dupla2)
{
estática int última_direção = 0;
int estática corrente_direção estática = 0;
if(line1>line2)current_direction = 1; //up
if(line1<line2)current_direction = 2; //down
if(current_direction != last_direction) //change
{
última_direção = direção_corrente;
retorno (última_direção);
}
senão
{
retorno (0);
}
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt, bilhete, total;
duplo curtoEma, longoEma;
if(Bars<100)
{
Impressão ("barras com menos de 100");
retornar(0);
}
if(TakeProfit<10)
{
Imprimir ("TakeProfit menos de 10");
retornar(0); // verificar TakeProfit
}
shortEma = iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,0);
longEma = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0);
int isCrossed = Crossed (shortEma,longEma);
total = OrdensTotal();
if(total < 1)
{
if(isCrossed == 1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,
"Minha EA",12345,0,Verde);
if(bilhete>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Imprimir("Pedido aberto : ",OrderOpenPrice());
}
else Print("Erro na abertura do pedido de compra : ",GetLastError());
retornar(0);
}
if(isCrossed == 2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,
Bid-TakeProfit*Point, "My EA",12345,0,Red);
if(bilhete>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Imprimir("Pedido de venda aberto : ",OrderOpenPrice());
}
else Print("Erro na abertura do pedido de VENDA : ",GetLastError());
retornar(0);
}
retorno(0);
}
for(cnt=0;cnt<total;cnt++)
{
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(isCrossed == 2)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
// posição fechada
retornar(0); // sair
}
// verificar a parada de trilha
if(TrailingStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-
Point*TrailingStop,OrderTakeProfit(),0,Green);
retorno(0);
}
}
}
}
senão // ir para a posição curta
{
// deve ser fechado?
if(isCrossed == 1)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
// posição fechada
retornar(0); // sair
}
// verificar a parada de trilha
if(TrailingStop>0){
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) ||
(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,
OrderTakeProfit(),0,Red);
retorno(0);
}
}
}
}
}
}
retorno(0);
}
//+------------------------------------------------------------------+
Tente isto:
//| JR300.mq4 |
//| onelove |
//| Forex Forum | Forex Tsd | Metatrader Forum |
//+------------------------------------------------------------------+
#property copyright "oneLove"
#property link "https://www.forex-tsd.com"
//---- input parameters
extern double TakeProfit=250.0;
extern double StopLoss=100.0;
extern double Lots=0.1;
extern double TrailingStop=35.0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Crossed (double line1 , double line2)
{
static int last_direction = 0;
static int current_direction = 0;
if(line1>line2)current_direction = 1; //up
if(line1<line2)current_direction = 2; //down
if(current_direction != last_direction) //changed
{
last_direction = current_direction;
return (last_direction);
}
else
{
return (0);
}
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt, ticket, total;
double shortEma, longEma;
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0); // check TakeProfit
}
shortEma = iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,0);
longEma = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0);
int isCrossed = Crossed (shortEma,longEma);
total = OrdersTotal();
if(total < 1)
{
if(isCrossed == 1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+ TakeProfit*Point,
"My EA",12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES ))
Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
if(isCrossed == 2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,
Bid-TakeProfit*Point,"My EA",12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES ))
Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
//if(isCrossed == 2)
//{
//OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ;
// close position
//return(0); // exit
//}
// check for trailing stop
if(TrailingStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-
Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // go to short position
{
// should it be closed?
//if(isCrossed == 1)
//{
//OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ;
// close position
//return(0); // exit
//}
// check for trailing stop
if(TrailingStop>0){
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) ||
(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,
OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
//+------------------------------------------------------------------+Obrigado
Tente isto:
//| JR300.mq4 |
//| onelove |
//| Forex Forum | Forex Tsd | Metatrader Forum |
//+------------------------------------------------------------------+
#property copyright "oneLove"
#property link "https://www.forex-tsd.com"
//---- input parameters
extern double TakeProfit=250.0;
extern double StopLoss=100.0;
extern double Lots=0.1;
extern double TrailingStop=35.0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Crossed (double line1 , double line2)
{
static int last_direction = 0;
static int current_direction = 0;
if(line1>line2)current_direction = 1; //up
if(line1<line2)current_direction = 2; //down
if(current_direction != last_direction) //changed
{
last_direction = current_direction;
return (last_direction);
}
else
{
return (0);
}
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt, ticket, total;
double shortEma, longEma;
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0); // check TakeProfit
}
shortEma = iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,0);
longEma = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0);
int isCrossed = Crossed (shortEma,longEma);
total = OrdersTotal();
if(total < 1)
{
if(isCrossed == 1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+ TakeProfit*Point,
"My EA",12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES ))
Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
if(isCrossed == 2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,
Bid-TakeProfit*Point,"My EA",12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES ))
Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
//if(isCrossed == 2)
//{
//OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ;
// close position
//return(0); // exit
//}
// check for trailing stop
if(TrailingStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-
Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // go to short position
{
// should it be closed?
//if(isCrossed == 1)
//{
//OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ;
// close position
//return(0); // exit
//}
// check for trailing stop
if(TrailingStop>0){
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) ||
(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,
OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
//+------------------------------------------------------------------+graças roger09 Deus te abençoe
Graças a Roger, removi essa segunda declaração de limite desde minha função inicial. Estou surpreso que o compilador tenha permitido essa declaração, mas ela não havia afetado meu programa de forma perceptível.
Ainda não tenho certeza de como alterar a instância de execução daquele indcator do meu EA. Um método seria muito apreciado, ou pelo menos a confirmação de que a API não me permite atualmente passar informações para os indicadores em execução.
Obrigado.
Estou aprendendo a codificar o indicador anexado, mas não funcionou. Alguém poderia ajudar? É um indicador muito confiável e se alguém pudesse fazer um EA para ele... é quase um santo graal.tia.
O preço básico é:
1.abrir Posição de venda quando a seta vermelha aparece,
2 abrir posição de compra quando a seta branca aparecer e fechar automaticamente todas as posições/ posições de venda.
3.aplicar para qualquer período de tempo .
4.sem perda de parada,
5.adicionar função de ordem.
Aguarde a resposta!
//+------------------------------------------------------------------+
//| IINWMARROWS.mq4 |
//| Baseado em EMA_CROSS.mq4 |
//| Copyright ?2006, MetaQuotes Software Corp. |
//| Software de Comércio Forex: Plataforma de negociação Forex MetaTrader 4 |
//| Última pequena modificação por Iin Zulkarnain |
//+------------------------------------------------------------------+
#Copyright ?2006, MetaQuotes Software Corp."
#link da propriedade "http://www.metaquotes.net"
//----
#janela_do_cartão_indicador de propriedade
#property indicator_buffers 2
#Indicador de propriedade_color1 Branco
#indicador de propriedade_color2 Vermelho
#largura_do_indicador de propriedade1 2
#largura_do_indicador de propriedade2 2
//----
duplo CrossUp[];
duplo CrossDown[];
externo int FasterMode=3; //0=sma, 1=ema, 2=smma, 3=lwma
externo int FasterMA= 3;
extern int SlowerMode=3; //0=sma, 1=ema, 2=smma, 3=lwma
externo int SlowerMA= 3;
//+------------------------------------------------------------------+
//| Função de inicialização do indicador personalizado |
//+------------------------------------------------------------------+
int init()
{
//---- indicadores
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 233);
SetIndexBuffer(0, CrossUp);
SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 234);
SetIndexBuffer(1, CrossDown);
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| Função de desinicialização de indicador personalizada |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| Função de iteração de indicador personalizada |
//+------------------------------------------------------------------+
int start()
{
int limit, i, counter;
duplo mais rápidoMAnovem, mais lentoMAnovem, mais rápidoMAnovem, mais lentoMAafter, mais lentoMAafter;
alcance duplo, AvgRange;
int counted_bars=IndicatorCounted();
//---- verificação de possíveis erros
if(counted_bars<0) return(-1);
//---- última barra contada será contada novamente
if(counted_bars>0) counted_bars--;
//----
limite=barras_contadas_combarras;
for(i=0; i<=limite; i++)
{
counter=i;
Faixa=0;
AvgRange=0;
for(counter=i ;counter<=i+9;counter+++)
{
AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
}
Alcance=AvgRange/10;
fasterMAnow=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i);
fasterMAprevious=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i+1);
fasterMAafter=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i-1);
//----
slowerMAnow=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i);
slowerMAprevious=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i+1);
slowerMAafter=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i-1);
if ((fasterMAnow > slowerMAnow) && (fasterMAprevious slowerMAafter))
{
CrossUp=Baixo - Alcance*0,5;
}
senão se ((fasterMAnow slowerMAprevious) && (fasterMAafter < slowerMAafter))
{
CrossDown=Alto + Alcance*0,5;
}
}
retorno(0);
}
//+------------------------------------------------------------------+ este tópico para aprender a codificar corretamente, estou aprendendo a codificar paraQualquer um poderia ajudar a codificar um alerta para este indicador, é realmente legal.
George's Oscar Calculator - Qualquer pessoa pode codificar um indicador para isso?
Olá, pessoal,
Não sei se alguém está familiarizado com o Forex Made-EZ de George Smith.
Estou atualmente revendo seu trabalho e me pergunto se alguém codificou um indicador para o oscilador Oscar que ele usa?
A fórmula é
let A = a maior altura das últimas oito barras (incluindo esta)
let B = a mais baixa das últimas oito barras (incluindo esta)
let C = preço atual de fechamento das barras
let X = a figura do oscilador anterior (Oscar)
O oscilador "bruto" de hoje é igual a (C-B) dividido por (A-B) vezes 100.
Em seguida, "suavizamos" nosso número aproximado (vamos chamá-lo de Y) assim:
Número final do oscilador = ((X dividido por 3) vezes 2), mais (Y dividido por 3).
Se alguém já codificou isto ou pode codificar isto, seria muito apreciado.
Cumprimentos a Steve
Parada de trilha invertida
Hi,
Quero alguma ajuda com uma idéia.
Estou usando as paradas de arraste em meus EAs (3 passos de arraste), mas quero fazer a coisa invertida para proteger as perdas.
Vou tentar explicar:
Eu abro uma ordem, com uma parada inicial de perda.
Se a troca for 15 pips na direção da perda e voltar 10 pips, feche a troca (primeiro passo).
Se a troca for 30 pips na direção da perda e voltar 15 pips, feche a troca (segundo passo).
Algo parecido com isto.
Obrigado pela ajuda.
Hi,
Quero alguma ajuda com uma idéia.
Estou usando as paradas de arraste em meus EAs (3 passos de arraste), mas quero fazer a coisa invertida para proteger as perdas.
Vou tentar explicar:
Eu abro uma ordem, com uma parada inicial de perda.
Se a troca for 15 pips na direção da perda e voltar 10 pips, feche a troca (primeiro passo).
Se a troca for 30 pips na direção da perda e voltar 15 pips, feche a troca (segundo passo).
Algo parecido com isto.
Obrigado pela ajudaIsto é algo novo para mim.
Então, o fechamento da troca perdedora sempre precisa esperar até que ela salte para trás, certo?
Que tal se não ressaltar?
Vamos fechar no SL incial?