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
Eu gostaria de ajudar com esta função de que você está falando, mas parece que não consigo simplesmente entender sua lógica. Isto realmente não tem nada a ver com outra lógica da estratégia.
Eu gostaria simplesmente de saber isto.
Se você tem 1 lote compra a 1,4110 e 2 lotes venda a 1,4200. A que preço você acha que tem 6 pips de ganho?Oi, Christina,
na minha gestão de posição nunca, o 1 lote de compra fecha com lucro, antes que 2 lotes de venda sejam abertos (nunca vende porque o 1 lote de compra fechou com lucro, aguarde o próximo sinal)
de volta ao seu exemplo:
mas há uma linha a aproximadamente 1,4175, onde 2 lotes de venda (lucro acima, mercado abaixo) e 1 lote de compra (lucro abaixo, mercado abaixo) têm preço igual (breakeven 0), então a 1,4169 6 pips de lucro estão prontos - então eu fecharia todos os pedidos
IX
Olá Christina,
na minha gestão de posição nunca, o 1 lote de compra fecha com lucro, antes que 2 lotes de venda sejam abertos (nunca vende porque o 1 lote de compra fechou com lucro, aguarde o próximo sinal)
de volta ao seu exemplo:
mas há uma linha a aproximadamente 1,4175, onde 2 lotes de venda (lucro acima, mercado abaixo) e 1 lote de compra (lucro abaixo, mercado abaixo) têm preço igual (breakeven 0), então a 1,4169 6 pips de lucro estão prontos - então eu fecharia todos os pedidos
IXPorque meu exemplo é 1.4110 e 1.4200. Aqui está meu cálculo:
Primeiro de tudo, em 1.4170(não considerando os spreads) estamos empatados. Agora temos 2 lotes de venda com ganho a 30 pips cada e 1 lote de compra com perda de 60 pips, portanto, estamos no break even em termos de dólar.
Se exatamente com meu exemplo, você deveria ter 6 pips de ganho geral a 1,4164.
A 1,4164 (não considerando spreads) temos 2 lotes de venda com ganho a 36 pips cada e 1 lote de compra com perda de 54 pips, portanto ganho de 72 pips de venda e perda de 54 pips de compra. No total para o grupo de negócios, você tem 3 lotes com um ganho de 18 pips. Portanto, é mais razoável considerar agora que você tem 6 pips de ganho.
No entanto, as coisas serão complicadas novamente por causa dos spreads. Porque se a oferta for 1,4164, pergunte talvez 1,4166, então suas vendas têm apenas 34 pips de ganho cada uma. No total para o grupo de negociações, você tem 3 lotes com um ganho de 14 pips. Portanto, agora de fato, você tem 4,7 pips de ganho.
Se eu levar este exemplo um passo adiante, se nós tivermos 2 compras e 3 vendas. Então, a 1,4164, você fica quites.
Se não tivermos que considerar os spreads, então precisamos de 30 pips de ganho total para ter 5 pips de ganho em cada lote. Então, o ganho de 6 pips seria ao preço de 1,4134, isto é correto?
O seu sistema provavelmente não terá este tipo de situação, é o princípio que eu quero obter. Você concorda com o cálculo acima?
Porque meu exemplo é 1.4110 e 1.4200. Aqui está meu cálculo:
Antes de mais nada, com 1.4170(não considerando spreads) estamos no limiar de equilíbrio. Agora temos 2 lotes de venda com ganho a 30 pips cada e 1 lote de compra com perda de 60 pips, portanto, estamos no break even em termos de dólar.
Se exatamente com meu exemplo, você deveria ter 6 pips de ganho geral a 1,4164.
A 1,4164 (não considerando spreads) temos 2 lotes de venda com ganho a 36 pips cada e 1 lote de compra com perda de 54 pips, portanto ganho de 72 pips de venda e perda de 54 pips de compra. No total para o grupo de negócios, você tem 3 lotes com um ganho de 18 pips. Portanto, é mais razoável considerar agora que você tem 6 pips de ganho.
No entanto, as coisas serão complicadas novamente por causa dos spreads. Porque se a oferta for 1,4164, pergunte talvez 1,4166, então suas vendas têm apenas 34 pips de ganho cada uma. No total para o grupo de negociações, você tem 3 lotes com um ganho de 14 pips. Portanto, agora na verdade, você tem 4,7 pips de ganho.
Se eu levar este exemplo um passo adiante, se nós tivermos 2 compras e 3 vendas. Então, a 1,4164, você fica quites.
Se não tivermos que considerar os spreads, então precisamos de 30 pips de ganho total para ter 5 pips de ganho em cada lote. Então, o ganho de 6 pips seria ao preço de 1,4134, isto é correto?
O seu sistema provavelmente não terá este tipo de situação, é o princípio que eu quero obter. Você concorda com o cálculo acima?Christina,
concordo, você está 100% certo com ambos os cálculos!
Oi, Michael,
Estou muito ocupado nos últimos dois dias, já fiz isso, mas preciso de mais tempo para montar. Publicá-lo-ei aqui assim que eu encontrar algum tempo para fazê-lo nos próximos dias. Chrisitna
Oi, Michael, estou muito ocupado nos últimos dias, já fiz isso, mas preciso de mais tempo para montar. Publicarei aqui assim que eu encontrar algum tempo para fazê-lo nos próximos dias. Chrisitna
Oi Christina,
Não há problema, leve o tempo que precisar, eu sempre aprecio suas sugestões!
Michael
preciso de ajuda
Olá a todos!
Este é meu idea:i precisa de 2 buffers indicadores em janela_separada,1 é devupBuffer[];2 é devdwBuffer[]. Por exemplo, se tiver cinco digitais 1,2,3,4,5, a média é 3.Então os dados são maiores que a média de 3 4 e 5 devupBuffer={【(4-average)*(4-average)】+【(5-average)*(5-average)】}/Standard deviation(1,2,3,4,5)*Standard deviation(1,2,3,4,5).Os dados são menores que a média de 3 1 e 2 devdwBuffer={【(1-average)*(1-average)】+【(2-average)*(2-average)】}/desvio padrão(1,2,3,4,5)*Desvio padrão(1,2,3,4,5).
por que esta EA não pode comprar ou vender?
Olá, sou realmente novo nesta programação com Meta... Por favor, ajude...
Estou trabalhando com um sistema em Estocásticos com dois níveis, 25 e 75...
UM só comércio...
se o PRINCIPAL e o SIGNAL estiverem ambos abaixo de 25 e cruzamentos, COMPRAR.
se o PRINCIPAL e o SINAL forem ambos acima de 25, COMPRAR.
se o PRINCIPAL e SINAL estiverem ambos acima de 75 e cruzes, VENDA.
se as cruzes PRINCIPAL e SINAL (não é necessário estar abaixo de 75), VENDA FECHADO.
é isso...
//| StochCross.mq4 |
//| RobertEli |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "RobertEli"
#property link "http://www.metaquotes.net"
//--- input parameters
extern double TakeProfit=250.0;
extern double Lots=0.01;
extern double TrailingStop=35.0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Confirm (double line1, double line2, int level_buy, int level_sell)
{
static int confirmation = 0;
if ((line1 < level_buy) && (line2 < level_buy)) confirmation = 1; //confirm BUY, when two lines are below level_buy
if ((line1 > level_sell) && (line2 > level_sell)) confirmation = 2; //confirm SELL, when two lines are above level_sell
if ((line1 > level_buy) && (line2 > level_buy)) confirmation = 3; //confirm CLOSE BUY, when two lines are above level_buy
if ((line1 < level_sell) && (line2 < level_sell)) confirmation = 4; //confirm CLOSE SELL, when two lines are below level_sell
//if ((line1 > level_buy_close) && (line2 > level_buy_close)) confirmation = 3; //confirm CLOSE BUY
//if ((line1 < level_sell_close) && (line2 < level_sell_close)) confirmation = 4; //confirm CLOSE SELL
//else return (0);
return (confirmation);
}
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 direction
{
last_direction = current_direction;
return (last_direction);
}
else
{
return (0);
}
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt, ticket;
double Stoch_main, Stoch_sign;
if (Bars < 100)
{
Print("BARS less than 100");
return (0);
}
if (TakeProfit < 10)
{
Print("TakeProfit less than 10");
return (0);
}
/*
Stoch_main = iStochastic (NULL,15,21,8,13,MODE_SMA,1,MODE_MAIN,0);
Stoch_sign = iStochastic (NULL,15,21,8,13,MODE_SMA,1,MODE_SIGNAL,0);
*/
Stoch_main = iStochastic (NULL,0,30,20,12,MODE_SMA,1,MODE_MAIN,0);
Stoch_sign = iStochastic (NULL,0,30,20,12,MODE_SMA,1,MODE_SIGNAL,0);
/*
Stoch_main = iMA(NULL,0,8,0,MODE_EMA,PRICE_CLOSE,0);
Stoch_sign = iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);
*/
int isCrossed = Crossed(Stoch_main,Stoch_sign);
int isConfirmed = Confirm(Stoch_main,Stoch_sign,25,75);
int total = OrdersTotal();
if (total == 0)
{
if ((isCrossed == 1) && (isConfirmed == 1))
{
ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"Buy at " + Ask,24848,0,Green);
if (ticket > 0)
{
if (OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY Order opened: " +Ask ,OrderOpenPrice());
else Print ("Error Opening BUY Order: ", GetLastError());
return (0);
}
}
if ((isCrossed == 2) && (isConfirmed == 2))
{
ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"Sell at " + Bid,24848,0,Red);
if (ticket > 0)
{
if (OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL Order opened: " +Bid ,OrderOpenPrice());
else Print ("Error Opening SELL Order: ", GetLastError());
return (0);
}
}
return (0);
}
else
{
for (cnt = total; cnt < 0; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderType() <= OP_SELL && OrderSymbol() == Symbol())
{
if (OrderType() == OP_BUY) //the trade was a Buy position
{ //check for closing)
if ((isCrossed == 2) && (isConfirmed == 3))
//if (isCrossed == 2)
{ //change of direction
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //close Buy position
return (0);
}
}
else // the trade was a SELL position
{
//should it be closed?
//if ((isCrossed == 1) && (isConfirmed == 4))
if (isCrossed == 1) //Closing the SELL need not to be below the level_buy... it's very dangerous to wait for it...
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //Sell position is now closed
return (0);
}
}
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+A EA não pode fazer o que deve fazer, HELP!
Olá, sou realmente novo nesta programação mq4, mas li os tutoriais dos codersgurus (muito obrigado!), então acho que posso entender algo... No entanto, eu fiz esta EA que é baseada em MUDANÇAS MÓVEIS... MAS NÃO PODE SER TERRIBILIZADO!
as regras aqui são muito simples...
1. MA_04_1H (significa período médio móvel 4 por 1 hora) cruza acima de MA_14_1H,
confirme com MA_04_4H acima de MA_14_4H (a tendência é para cima) ------> COMPRAR!
2. MA_04_1H cruza abaixo de MA_14_1H,
confirme com MA_04_4H abaixo de MA_14_4H (a tendência é para baixo)------> SELL!
3. Quando MA_04_1H cruzar com MA_14_1H, feche essa ordem (pode iniciar uma nova ordem dadas as regras #1 e #2)
4. Uma única profissão... (se COMPRAR, feche essa COMPRA. depois disso, VENDA se necessário)
Eu fiz 2 funções: Cruzado, e Confirmado.
Cruzado é para o período de 1 hora.
Confirmado é para o período de 4 horas.
alguém pode me ajudar a depurar esta coisa?
//| MACross1TradeOnly.mq4 |
//| RobertEli |
//| |
//+------------------------------------------------------------------+
// this will work on MA_04, and MA__14
#property copyright "RobertEli"
#property link ""
extern double Lots = 0.01;
extern int stoploss_value = 10; // $10
bool up = 0, //UP direction, when MA_04 is above MA_14
down = 0, //DOWN direction, when MA_14 is above MA_04
change = 0, //when the MA_04 and MA_14 cross
firsttime = true; //first time for direction_prev
int direction_curr = 0; // 1 if UP, 2 if down...
int direction_prev = 0; // this will hold previous value of direction_curr
int direction_trend= 0; // trend direction for confirmation
int cross = 0; // if direction_curr and direction_prev changes course
//+------------------------------------------------------------------+
//| 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 > 0)//(line1 > line2)
{
current_direction = 1; //UP
if (firsttime == true)
{
current_direction = 0;
last_direction = 1;
firsttime = false;
return (0);
}
}
if (line1 - line2 < 0)//(line1 < line2)
{
current_direction = 2; //DOWN
if (firsttime == true)
{
current_direction = 0;
last_direction = 2;
firsttime = false;
return (0);
}
}
if ((current_direction != last_direction) && (firsttime == false)) //changed direction
{
last_direction = current_direction;
return (last_direction);
}
else
{
return (last_direction);
}
}
int Confirmed (double line1, double line2)
{
int trend;
if (line1 > line2) trend = 1; // trend direction is UP
if (line1 < line2) trend = 2; // trend direction is DOWN
return (trend);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt,ticket, total;
//double MA_04, MA_07 , MA_14 , MA_21 , MA_28; //MOVING AVERAGES with their corresponding period
if (Bars < 100) { Print ("Bars less than 100."); return (0); }
double MA_04_1H = iMA(NULL,60,04,0,MODE_EMA,PRICE_CLOSE,0);
double MA_14_1H = iMA(NULL,60,14,0,MODE_EMA,PRICE_CLOSE,0);
double MA_04_4H = iMA(NULL,240,04,0,MODE_EMA,PRICE_CLOSE,0);
double MA_14_4H = iMA(NULL,240,14,0,MODE_EMA,PRICE_CLOSE,0);
//double stoploss = stoploss_value / (Lots * 100000);
//new code from v_1
cross = Crossed (MA_04_1H,MA_14_1H); // =1 for UP, =2 for DOWN
direction_trend = Confirmed (MA_04_4H, MA_14_4H); // =1 for UP, =2 for DOWN
total = OrdersTotal();
if (total == 0)
{
if((cross == 1) && (direction_trend == 1))
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,/*Ask-stoploss*/0,0,"Buy at: "+ Ask,12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice(),",<<<<",OrderStopLoss());
}
else Print("Error opening BUY order : ",GetLastError());
cross = 0;
return(0);
}
if((cross == 2) && (direction_trend == 2))
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,/*Bid+stoploss*/0,0,"Sell at: "+ Bid,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());
cross = 0;
return(0);
}
}
if (total == 1)
{
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
// bool no_buy_sell = ((OrderTakeProfit() 0));
if ((OrderType()==OP_BUY) && (cross == 2) )// && (no_buy_sell))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
//OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+stoploss,0,"Sell at: "+ Bid,12345,0,Red);
return (0);
}
else if ((OrderType()==OP_SELL) && (cross == 1) )// && (no_buy_sell))
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
//OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-stoploss,0,"Buy at: "+ Ask,12345,0,Green);
return (0);
}
}
}
else return (0);
//----
return(0);
}
//+------------------------------------------------------------------+por favor, ignore aquele meu posto anterior... eu destruí essa idéia... estou trabalhando nisso agora... então por favor, ajude...