Como codificar? - página 97

 
matrixebiz:
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.

Obrigado

Seja 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

matrixebiz:
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

Arquivos anexados: