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
Alguém pode ajudar a codificar esta EA?
Olá,
Atualmente estou negociando com um martingale EA que abrirá no máximo 4 níveis de ordens. Apenas penso em uma estratégia de hedging que pode reduzir o risco de usar essa EA. Abaixo está uma descrição da minha estratégia:
1. O EA de hedging irá monitorar o saque das ordens de abertura. Se as perdas flutuantes totais forem maiores que uma quantia pré-determinada, isso acionará a EA a abrir uma ordem de hedged em oposição às ordens de abertura.
2. O tamanho do lote da ordem coberta é calculado com base em um múltiplo (o usuário pode definir o múltiplo) do tamanho do lote da última ordem de abertura (por exemplo, se o tamanho do lote da última ordem de nível for 1,6 e o múltiplo for definido em 2, então a ordem coberta será aberta com o tamanho do lote em 3,2.
3. Quando a ordem coberta retornar ao seu nível de abertura, a ordem coberta será fechada automaticamente.
4. Quando a cesta geral (as ordens de abertura + a ordem coberta) atingir um montante de lucro líquido pré-determinado, todas as ordens serão fechadas.
Será que algum bom programador pode codificar esta EA de hedging para mim? Acho que será muito útil também para outros martingale EA. Muito obrigado!
Com os melhores cumprimentos,
Wallace
whoa...
obrigado, pessoal...
que tal comprar parada e vender parada?
basta mudar "COMPRAR" ali?
só quero 2 posições apenas para 1 par, não mais do que isso...
desculpe, ainda novato...
Como codificar esta indis na EA ?
Olá, sou um novo aprendiz e interessado em aprender mql, alguém pode me dizer como codificar isto na EA ?
Externo int Fast.MA.Período = 5;
extern int Slow.MA.Período = 34;
Int.externa Sinal.período = 5;
//---- buffers
duplo tampão1[],
Buffer2[],
b2[],
b3[];
//+------------------------------------------------------------------+
//| Função de inicialização do indicador personalizado |
//+------------------------------------------------------------------+
int init()
{
//---- indicadores
// dois amortecedores adicionais utilizados para a contagem
IndicatorBuffers(4);
IndicatorShortName("MA_5_34");
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(0,242); // down 226 234 242
SetIndexBuffer(0,b2);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(1,241); //UP 225 233 241
SetIndexBuffer(1,b3);
// Estes amortecedores não são traçados, apenas usados para determinar setas
SetIndexBuffer (2,Buffer1);
SetIndexBuffer (3,Buffer2);
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| Função de desinicialização do indicador do cliente |
//+------------------------------------------------------------------+
int deinit()
{
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| Função de iteração de indicador personalizada |
//+------------------------------------------------------------------+
int start()
{
int i, counted_bars=IndicatorCounted();
duplo MA5,MA34;
int limit=Barras_contadas_combars;
Imprimir(" limite de impressão = ", limite);
if(counted_bars>0) limit++; <----pode alguém me explicar o que isso significa?
// Linha principal
para(i=0; i<limite; i++) <----pode alguém me explicar o que isso significa?
{
MA5=iMA(NULL,0,Fast.MA.Período,0,MODE_SMA,PRICE_MEDIAN,i);
MA34=iMA(NULL,0,Slow.MA.Período,0,MODE_SMA,PRICE_MEDIAN,i);
Buffer1=MA5-MA34;
}
// Linha de sinal
para(i=0; i<limite; i++) <----pode alguém me explicar o que significa ?
{
Buffer2=iMAOnArray(Buffer1,Barras,Sinal.período,0,MODE_LWMA,i);
} <----pode alguém me explicar o que isso significa?
// Setas
para(i=0; i<limite; i++)
{
if(Buffer1 > Buffer2 && Buffer1 < Buffer2)
b2 = Alto+10*Ponto;
if(Buffer1 Buffer2)
b3 = Ponto Baixo-10*; <----pode alguém me explicar o que isso significa?
}
//----
retorno(0);
}
Obrigado, pessoal =^_^=
if(counted_bars>0) limit++; <----podem alguém me explicar o que significa ?
// Linha principal
para(i=0; i<limite; i++) <----pode alguém me explicar o que isso significa?
// Linha de sinal
para(i=0; i<limite; i++) <----pode alguém me explicar o que significa?
{
Buffer2=iMAOnArray(Buffer1,Barras,Sinal.período,0,MODE_LWMA,i);
} <----pode alguém me explicar o que isso significa?
// Setas
para(i=0; i<limite; i++)
{
if(Buffer1 > Buffer2 && Buffer1 < Buffer2)
b2 = Alto+10*Ponto;
if(Buffer1 Buffer2)
b3 = Ponto Baixo-10*; <----pode alguém me explicar o que isso significa?
Obrigado, pessoal =^_^=É fácil.
Quando você inicia seu índico, Bars=1000 (por exemplo) e counted_bars=0. Então limit=1000 e seu índico calcula todas as 1000 barras. Depois disso, counted_bars=1000, e cada novo tick indi calcula apenas a última (zero) barra. Quando chegar a próxima barra, limit=1 e indi recalcula duas últimas barras.
b3 = Low-10*Point; - é apenas uma linha 10 pontos mais baixa do que o mínimo da barra.
Olá, sou um novo aprendiz e interessado em aprender mql, alguém pode me dizer como codificar isto em EA ?
Fast.MA.Período = 5;
Int.Ext. Lento.MA.Período = 34;
Int.Externo Sinal.período = 5;
//---- buffers
duplo tampão1[],
Buffer2[],
b2[],
b3[];
//+------------------------------------------------------------------+
//| Função de inicialização do indicador personalizado |
//+------------------------------------------------------------------+
int init()
{
//---- indicadores
// dois amortecedores adicionais utilizados para a contagem
IndicatorBuffers(4);
IndicatorShortName("MA_5_34");
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(0,242); // down 226 234 242
SetIndexBuffer(0,b2);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(1,241); //UP 225 233 241
SetIndexBuffer(1,b3);
// Estes amortecedores não são traçados, apenas usados para determinar setas
SetIndexBuffer (2,Buffer1);
SetIndexBuffer (3,Buffer2);
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| Função de desinicialização do indicador do cliente |
//+------------------------------------------------------------------+
int deinit()
{
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| Função de iteração de indicador personalizada |
//+------------------------------------------------------------------+
int start()
{
int i, counted_bars=IndicatorCounted();
duplo MA5,MA34;
int limit=Barras_contadas_combars;
Imprimir(" limite de impressão = ", limite);
if(counted_bars>0) limit++; <----pode alguém me explicar o que isso significa?
// Linha principal
para(i=0; i<limite; i++) <----pode alguém me explicar o que isso significa?
{
MA5=iMA(NULL,0,Fast.MA.Período,0,MODE_SMA,PRICE_MEDIAN,i);
MA34=iMA(NULL,0,Slow.MA.Período,0,MODE_SMA,PRICE_MEDIAN,i);
Buffer1=MA5-MA34;
}
// Linha de sinal
para(i=0; i<limite; i++) <----pode alguém me explicar o que significa ?
{
Buffer2=iMAOnArray(Buffer1,Barras,Sinal.período,0,MODE_LWMA,i);
} <----pode alguém me explicar o que isso significa?
// Setas
para(i=0; i<limite; i++)
{
if(Buffer1 > Buffer2 && Buffer1 < Buffer2)
b2 = Alto+10*Ponto;
if(Buffer1 Buffer2)
b3 = Ponto Baixo-10*; <----pode alguém me explicar o que isso significa?
}
//----
retorno(0);
}
Obrigado, pessoal =^_^=Se você quiser usar este indicador em uma ea você pode usar a função icustom() para acessá-lo. você não precisa realmente entender nenhum código do indicador, apenas os dados que ele cospe. Pelo menos essa é a maneira mais fácil de fazer isso.
Se você quiser usar este indicador em uma ea você pode usar a função icustom() para acessá-lo. você não precisa realmente entender nenhum código do indicador, apenas os dados que ele cospe. Pelo menos essa é a maneira mais fácil de fazer isso.
Ou seja, use a função icustom() na EA para lembrar o indis ? como a codificação a ser escrita na EA ? pode me dar alguma orientação ?
Muito Obrigado
whoa...
obrigado, pessoal...
que tal comprar parada e vender parada?
basta mudar "COMPRAR" ali?
só quero 2 posições apenas para 1 par, não mais do que isso...
desculpe, ainda novato...
Leia isto
Tutorial MQL4
Esta codificação é correta?
Duplo TakeProfit externo=100;
duplo externo Lots=1;
duplo Exterior TrailingStop=35;
externo int ShortEma = 5;
Exterior int LongEma = 34;
//+------------------------------------------------------------------+
//| 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 total;
duplo curtoEma, longoEma;
shortEma = iCustom(NULL,0, "Test_Demo",13,0,0);
longEma = iCustom(NULL,0, "Test_Demo",54,0,0);
Print("shortEma = " + shortEma + " : longEma = " + longEma);
int isCrossed = 0;
isCrossed = Crossed (LongEma,ShortEma);
total = OrdensTotal();
if(total < 1)
{
if(isCrossed == 1)
{
1=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "My EA",12345,0,Green);
if(1>0)
{
if(OrderSelect(1,SELECT_BY_TICKET,MODE_TRADES)) Imprimir("Pedido aberto : ",OrderOpenPrice());
}
else Print("Erro na abertura do pedido de compra : ",GetLastError());
retornar(0);
}
if(isCrossed == 2)
{
2=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "My EA",12345,0,Red);
if(2>0)
{
if(OrderSelect(2,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);
}
}
eu tenho um erro dizendo 1 & 2 inesperado, o que isso significa? pode me guiar?
Obrigado
Acho que você apagou algo e esqueceu:
é um disparate.
duplo externo TakeProfit=100;
Lotes duplos externos=1;
duplo externo TrailingStop=35;
eu tenho um erro dizendo 1 & 2 inesperado, o que isso significa? pode me guiar?
ObrigadoDelete 1=, and 2= before OrderSend(....