![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Ok, vou tentar quando chegar em casa, mas então por que ainda funciona com pedidos de compra já? Obrigado
Você poderia estar em uma ordem de Venda, mas o preço atende a condição para o código de parada de compra, então ele é alterado, e não atende mais as condições para a seção de Venda, então ele não é alterado lá.
Grande Seja
Obrigado Big Be por sua ajuda, mas acabei de perceber que meu antigo código funciona , mas tenho que permitir o uso de um StopLoss para pedidos de VENDA para ser modificado.
Wierd, que eu não preciso habilitar um TakeProfit para MoveStopOnce para trabalhar com um pedido de compra, mas tenho que habilitar um StopLoss para MoveStopOnce para modificar o pedido de venda.
Oh, bem, eu terei que olhar o código um pouco mais profundamente para descobrir isso, a menos que você saiba o porquê.
EDITAR: se você mudar para;
if(0 < OrderOpenPrice() - Point * MoveStopTo) {
[/code]
instead of;
[code]
if(OrderStopLoss() < OrderOpenPrice() - Point * MoveStopTo) {
Parece funcionar bem.
Obrigado
Precisa de ajuda com a calculadora de tamanho de posição
OK,
então estou construindo uma calculadora de tamanho de posição como uma função baseada na "Fórmula Kelly".
(Taxa de ganho-((1-Win Rate)/(Avg Win/Avg Loss)
Tenho o código e cálculos acima de tudo trabalhando com entradas manuais (externas) para as variáveis necessárias e agora estou tentando fazer a função funcionar dinamicamente chamando certas informações da conta (isto é, quero calcular a taxa de consistência vencedora (%), o avg # pips por operação vencedora, e o avg # pips por operação perdedora)
Eu poderia usar toda e qualquer ajuda para colocar as três funções (WinRate AvgWin & AvgLoss) em funcionamento. Há meses venho usando a variação de entrada manual e funciona muito bem. Aqui está o código completo para esta versão (automatizada) até este ponto... ao testar não estou obtendo nenhuma saída dinâmica, tudo volta à configuração padrão (50, 40, 20). Uma vez anexado a qualquer gráfico, a saída é impressa na aba log/expert. o uso de fractais é intencional para que o crescimento máximo da conta (ou perda mínima) seja explorado. como nota, a maioria dos Corretores que oferecem a plataforma MT trader permite negociação fractal para lotes mini ou std. Isto provará que no futuro será usado integralmente com gerenciamento de dinheiro que pode tirar posições de lotes parciais (ou seja: remover 25% de 1 lote)... de qualquer forma...
a fim de coletar as informações da conta em tempo real que eu preciso estou tentando...
1. contar todas as negociações
2. Contar os negócios que são lucrativos
etc., etc.
Eu posso ou não estar fazendo isso da maneira correta.
Obrigado antecipadamente por toda a ajuda...
SeaWolf
//+------------------------------------------------------------------+
//| KellyFormula.mq4 |
//+------------------------------------------------------------------+
#propriedade copyright "seawolf"
#ligação de propriedade "seawolf"
//+------------------------------------------------------------------+
//| ENTRADA DE INFORMAÇÕES EXTERNAS |
//+------------------------------------------------------------------+
externo int MyAccount = 1001; //------>>>> ID da conta
externo int ExpertID = 500001; //------>>>> Número mágico para este EA
valor PipValue duplo externo= 1,00; //------>>>> uso para TODOS os calc's
custo duplo externo LotCost= 50.0; //------>>>> uso para TODOS os calc's
por centoMax= 24,0; //------>>>> max % conta alavancada @ one time
comércio externo internoMax= 3; ///------>>>> max simultaniouse trades (exemplo: 24%/3 comércios = 8% por comércio)
bool externo UseKelly= true; //------>>>> Manual overide toggle
ManualLots = 1.0; //------>>>> # lotes se "UseKelly" for falso
duplo mWinRate externo= 50,00; //------>>>> consistência vencedora em % (manual overide)
int mAvgWin= 40; ///------>>>> avg # pips per winning trade (manual overide)
mAvgLoss= 20; //------>>>> avg # pips per lossing trade (manual overide)
//+------------------------------------------------------------------+
//| função de iniciação de especialista |
//+------------------------------------------------------------------+
int init()
{
//----
//----
retorno(0);
}
int deinit()
{
//----
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int start()
{
//----
PositionSize();
{
Print("Lots=",PositionSize()," WinRate=",WinRate()," AvgWin=",AvgWin()," AvgLoss=",AvgLoss());
}
Comment("Current Time is ",TimeToStr(TimeCurrent(),TIME_MINUTES)," GMT ",TimeToStr(TimeCurrent(),TIME_DATE)," ... Win Rate= ",WinRate()"," Avg Win= ",AvgWin()," Avg Loss= ",AvgLoss());
//----
retorno(0);
}
//----
//+------------------------------------------------------------------+
//| CALCULAR O TAMANHO DA POSIÇÃO PARA TODOS OS NOVOS NEGÓCIOS |
//+------------------------------------------------------------------+
//------------------------>>>>
tamanho de posição dupla()
{
//------------------------>>>> NÃO USE A FÓRMULA KELLY, USE A TAXA FIXA
if(UseKelly == verdadeiro)
{
duplo KelyForm = WinRate()-((1-WinRate())/(AvgWin()/AvgLoss()))
duplo PerTrade;
duplo Lots;
if(KelyForm > PercentMax)
{
PerTrade = (PercentMax/10)/TradesMax;
}
senão se (KelyForm < PercentMax)
{
PerTrade = (KelyForm/10)/TradesMax;
}
senão se(KelyForm == PorcentagemMáx)
{
PerTrade = (KelyForm/10)/TradesMax;
}
Lots = (PerTrade * AccountBalance()/LotCost);
return(MathRound(Lots)/10);
}
}
//+------------------------------------------------------------------+
//| RECOLHER INFORMAÇÕES SOBRE CONTAS EM TEMPO REAL |
//+------------------------------------------------------------------+
//------------------------>>>>
duplo WinRate()
{
bilhete duplo;
duplo CountWins = 0;
for(Ticket=0;Ticket<OrdersTotal();Ticket++)
{
OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);
if(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)
{
//------>>>>
if(OrderType()==OP_BUY)
{
if(OrderClosePrice() >= OrderOpenPrice())
CountWins++;
}
senão se(OrderType()==OP_SELL)
{
if(OrderClosePrice() <= OrderOpenPrice())
CountWins++;
}
}
}
if(CountWins > 0)
return(MathRound(CountWins/OrdersHistoryTotal())*10);
mais
Imprimir("Real Time WinRate not Available");
retorno(mWinRate);
}
//------>>>>
//------------------------>>>>
duplo AvgWin()
{
bilhete duplo;
duplo CountTrades = 0;
duplo CountPips = 0;
for(Ticket=0;Ticket<OrdersTotal();Ticket++)
{
OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);
if(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)
{
//------>>>>
if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice())
CountTrades++;
{
if(OrderProfit() >= 0)
CountPips++;
}
if(OrderType()==OP_SELLL && OrderClosePrice()<=OrderOpenPrice())
CountTrades++;
{
if(OrderProfit() >= 0)
CountPips++;
}
}
}
if(CountPips > 0)
retorno(MathRound(CountPips/CountTrades)*10);
mais
Imprimir ("AvgWin em Tempo Real não Disponível");
return(mAvgWin);
}
//------>>>>
//------------------------>>>>
dupla AvgLoss()
{
bilhete duplo;
duplo CountTrades = 0;
duplo CountPips = 0;
for(Ticket=0;Ticket<OrdersTotal();Ticket++)
{
OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);
if(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)
{
//------>>>>
if(OrderType()==OP_BUY && OrderClosePrice()<OrderOpenPrice())
CountTrades++;
{
if(OrderProfit() < 0)
CountPips++;
}
if(OrderType()==OP_SELLL && OrderClosePrice()>OrderOpenPrice())
CountTrades++;
{
if(OrderProfit() < 0)
CountPips++;
}
}
}
if(CountPips > 0)
retorno(MathRound(CountPips/CountTrades)*10);
mais
Impressão ("AvgLoss em tempo real não disponível");
retorno(mAvgLoss);
}
//---------------------------------------------------------------------+
Para: Matrixebiz
EDIT: if you change to;
if(0 < OrderOpenPrice() - Point * MoveStopTo) {
[/code]
instead of;
[code]
if(OrderStopLoss() < OrderOpenPrice() - Point * MoveStopTo) {
Parece funcionar bem.
ObrigadoSeja bem-vindo.
Grande Seja
Fxpro,pergunte
olá a todos... quero perguntar como configurar lotes EA na FxPro...
eu confuso porque tem 6 dígitos (1 dígito a mais) eu fixei o S/L e T/P mas não posso mudar o lote...
sempre 0,4 por comércio... até mesmo eu mudo para 0,1 ou 0,3
eu usei 10 pontos 3 EA...
Por favor, me ajude... envie-me um e-mail para hansen_hardrocker@yahoo.co.id
ou pode o PM por favor...
torcer por todos...
Ask_change Lot (fxpro)
Fxpro,pergunte
olá a todos... quero perguntar como configurar lotes EA na FxPro...
eu confuso porque tem 6 dígitos (1 dígito a mais) eu fixei o S/L e T/P mas não posso mudar o lote...
sempre 0,4 por comércio... até mesmo eu mudo para 0,1 ou 0,3
eu usei 10 pontos 3 EA...
Por favor, me ajude... envie-me um e-mail para hansen_hardrocker@yahoo.co.id
ou pode o PM por favor...
torcer por todos...
Eu também quero isso. Por favor, envie-me para omidchart@yahoo.com
Provavelmente porque você tem o Money Management habilitado na EA.
Thx
Provavelmente porque você tem o Money Management habilitado na EA.
Thx bro...
im newbie...
Você pode mudar esta EA?
Olá programadores,
Tenho este EA que coloca pedidos de parada acima e abaixo do preço atual. O que eu preciso é de um EA que faça pedidos com limites em vez de pedidos com limites acima e abaixo do preço atual. Você pode mudar este EA para fazer exatamente isso, mantendo todos os parâmetros iguais?
Agradecemos antecipadamente,
Paul