Como codificar? - página 266

 
ixbone:
Olá a todos,

quero recolher todas as encomendas (compra e venda) de um par por magia e se elas atingirem um ponto de equilíbrio, todas as encomendas devem ser fechadas.

qualquer orientação muito bem-vinda, obrigado

Par Par Par ParBreakeven=verdadeiro;// Breakeven por par todas as ordens do mesmo par/mágico

ganho de pares duplos externos=6;// ganho em pips necessários para permitir o break even

Pareirbreak duplo externo=3;// break even, ordem fechada, 3 pip profit/slippage

duplo Parirmovebreakeven;

if(PairBreakeven==verdadeiro){

if(Parirbreakevengain>0)Pairmovebreakeven(Parirbreakevengain,Pairbreakeven);

CloseBuyOrders(Magic);

CloseSellOrders(Magic);

}

Vazio Parirmovebreakeven(duplo Parirbreakeven,duplo Parirbreakeven){

RefreshRates();

if(OrdersTotal()>0){

for(int i=OrdensTotal();i>=0;i++){

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic ){

retornar;

}

}

}

}

int CloseBuyOrders(int Magic){ //op_sell é similar

int total=OrdensTotal();

for(int cnt=total-1;cnt>=0;cnt--){

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderMagicNumber()==Magic && OrderSymbol()==Symbol()){

if(OrderType()==OP_BUY){

OrderClose(OrderTicket(),OrderLots(),Bid,3*mt);

}

}

}

retorno(0);

}

O principal problema com este código está na função BE, ele nunca realmente parou ou tomou qualquer ação. Se você não declarar sua intenção em palavras, não consigo realmente detectar o que você está tentando fazer aqui a partir do código.

Você quer que o código detecte todas as ordens em sua conta que tem um stop loss= preço aberto de ordem e feche todas elas? Então, a ação de realmente quebrar o equilíbrio é feita por outros EA? Gostaria de ajudar, mas não consegue descobrir o que você quer fazer.

 
christinaLi:
O principal problema com este código está na função BE, ele nunca realmente parou ou tomou qualquer ação. Se você não declara sua intenção em palavras, não consigo realmente detectar o que você está tentando fazer aqui a partir do código. Você quer que o código detecte todas as ordens em sua conta que tem um stop loss= preço aberto de ordem e feche todas elas? Então, a ação de realmente quebrar o equilíbrio é feita por outros EA? Gostaria de ajudar, mas não consegue descobrir o que você quer fazer.

christinaLi,

Desculpe, pelo meu engano.

-quero recolher todas as ordens de um par por magia e resumir os lucros de todas as ordens, independentemente de comprar, vender, tp, sl, exemplo: temos 8 ordens de compra e venda, o lucro resumido é de 6 pips // ganho duplo de pares externos=6;// ganho em pips necessários para permitir o break even

-se o lucro for +6 pips para todos os pedidos de um par (compra e venda), todos os pedidos (compra e venda) sl devem ser ajustados para o preço atual -3 //externo duplo parbreakeven=3;// break even, pedido fechado, 3 pip profit/slippage

-se o parbreakevengain cai do lucro de todas as ordens de um exemplo de par: 8 ordens mistas de compra/venda lucro é soma 6 de volta para 3, todas as ordens são fechadas

tenho um módulo de trabalho correto para um único pedido e tentei modificá-lo sozinho, faltam-me habilidades em código mt4, muitos anos atrás aprendi assembler...

Devo postar a função de ordem de ponto de equilíbrio único?

obrigado pela ajuda

IX

 

Olá, IX,

Eu sei o que você está tentando fazer agora. Isso pode ser feito.

As coisas são um pouco complicadas pelo fato de que você poderia ter comprado e vendido ao mesmo tempo. Porque quando você fala de "preço atual", para comprar significa licitar, para vender significa pedir, porque só esses são preços realistas para fechar pedidos. Portanto, você pode ver em qualquer momento quando você ajusta o stop loss para seus pedidos, as compras e vendas recebem um preço diferente. Se seu spread não for constante, há muitas chances de suas ordens não serem fechadas ao mesmo tempo, às vezes é possível que metade de suas ordens não sejam fechadas.

Eu acho que a boa maneira de fazer isso não é realmente mover o stop loss, em vez disso, o EA ativará uma memória uma vez que o lucro total de 6 pips for alcançado, então simplesmente feche todas as ordens no mercado enquanto o lucro total cai para 3 pips. Neste caso, a EA força a fechar as ordens, elas não são interrompidas pelo MT4.

 
christinaLi:
Olá, IX,

Eu sei o que você está tentando fazer agora. Isso pode ser feito.

As coisas são um pouco complicadas pelo fato de que você poderia ter comprado e vendido ao mesmo tempo. Porque quando você fala de "preço atual", para comprar significa licitar, para vender significa pedir, porque só esses são preços realistas para fechar pedidos. Portanto, você pode ver em qualquer momento quando você ajusta o stop loss para seus pedidos, as compras e vendas recebem um preço diferente. Se seu spread não for constante, há muitas chances de suas ordens não serem fechadas ao mesmo tempo, às vezes é possível que metade de suas ordens não sejam fechadas.

Acho que a boa maneira de fazer isso não é realmente mover o stop loss, em vez disso, o EA ativará uma memória quando o lucro total de 6 pips for alcançado, então simplesmente feche todas as ordens no mercado enquanto o lucro total cai para 3 pips. Neste caso, a EA força a fechar as ordens, elas não são interrompidas pelo MT4.

Olá, ChristinaLi,

eu concordo com 100%, é complicado, entendo o que você quer dizer, talvez um cálculo de par (cesta) sem mover uma perda de carga seja a solução, como

- selecionar todos os pedidos por par e mágico

- resumir o lucro de todos os pedidos

- se a soma de lucros for = 6pips

- fechar todos os pedidos, se não houver deslizamento, o breakeven será de 6pips "lucro", se o resultado de 3pips para o breakeven for 3pips "lucro".

1) a vantagem é: não há nenhum problema

2) desvantagem: não há espaço (3pips) para todos os pedidos, se eu tiver 7 compras e 6 vendas de ordens hedged, se uma ordem de compra aumentar 6 pips, todas as ordens fechadas, existe a opção de marcar todas as ordens na memória para serem fechadas se 6 pips alcançados (breakeven=verdadeiro) por uma diminuição de 3pips (6-3= 3pips lucro) (breakevencloseorders=verdadeiro)?

As ordens de 7 compras e 6 vendas hedged não podem subir mais de 6 pips com o número 1, elas são sempre fechadas.

Com #2, 6 pips são apenas um marcador de ativação, se diminuir para 3 pips, feche todas as ordens, se aumentar mais de 6 pips, exemplo para 15 pips, há espaço de +3pips até 15pips o que resulta em lucro de 12 pips

spread não é calculado neste momento! porque 7 compras e 6 vendas resumem-se com 2pips spread a 26pips para quebrar o "0" deve ter para uma ordem de compra e para ter 32 pips com # 1 e 29 pips deve ter com # 2 para uma ordem de compra - estou certo?

obrigado por suas sugestões

IX

 
ixbone:
Oi ChristinaLi,

eu concordo com 100%, é complicado, entendo o que você quer dizer, talvez um cálculo de par (cesta) sem mover uma perda de carga seja a solução, como

- selecionar todos os pedidos por par e mágico

- resumir o lucro de todos os pedidos

- se a soma de lucros for = 6pips

- fechar todos os pedidos, se não houver deslizamento, o breakeven será de 6pips "lucro", se o resultado de 3pips para o breakeven for 3pips "lucro".

1) a vantagem é: não há nenhum problema

2) desvantagem: não há espaço (3pips) para todos os pedidos, se eu tiver 7 compras e 6 vendas de ordens hedged, se uma ordem de compra aumentar 6 pips, todas as ordens fechadas, existe a opção de marcar todas as ordens na memória para serem fechadas se 6 pips alcançados (breakeven=verdadeiro) por uma diminuição de 3pips (6-3= 3pips lucro) (breakevencloseorders=verdadeiro)?

As ordens de 7 compras e 6 vendas hedged não podem subir mais de 6 pips com o número 1, elas são sempre fechadas.

Com #2, 6 pips são apenas um marcador de ativação, se diminuir para 3 pips, feche todas as ordens, se aumentar mais de 6 pips, exemplo para 15 pips, há espaço de +3pips até 15pips o que resulta em lucro de 12 pips

spread não é calculado neste momento! porque 7 compras e 6 vendas resumem-se com 2pips spread a 26pips para quebrar o "0" deve ter para uma ordem de compra e para ter 32 pips com # 1 e 29 pips deve ter com # 2 para uma ordem de compra - estou certo?

obrigado por suas sugestões

IX

Acho que você me entendeu mal, o que você quer pode ser realizado com precisão, apenas nenhuma modificação real de stop loss. Vou encontrar algum tempo para fazer o código hoje e demonstrar para você. Christina

 
ixbone:
Oi, ChristinaLi,

eu concordo com 100%, é complicado, entendo o que você quer dizer, talvez um cálculo de par (cesta) sem mover uma perda de carga seja a solução, como

- selecionar todos os pedidos por par e mágico

- resumir o lucro de todos os pedidos

- se a soma de lucros for = 6pips

- fechar todos os pedidos, se não houver deslizamento, o breakeven será de 6pips "lucro", se o resultado de 3pips para o breakeven for 3pips "lucro".

1) a vantagem é: não há nenhum problema

2) desvantagem: não há espaço (3pips) para todos os pedidos, se eu tiver 7 compras e 6 vendas de ordens hedged, se uma ordem de compra aumentar 6 pips, todas as ordens fechadas, existe a opção de marcar todas as ordens na memória para serem fechadas se 6 pips alcançados (breakeven=verdadeiro) por uma diminuição de 3pips (6-3=3pips lucro) (breakevencloseorders=verdadeiro)?

As ordens de 7 compras e 6 vendas hedged não podem subir mais de 6 pips com o número 1, elas são sempre fechadas.

Com #2, 6 pips são apenas um marcador de ativação, se diminuir para 3 pips, feche todas as ordens, se aumentar mais de 6 pips, exemplo para 15 pips, há espaço de +3pips até 15pips o que resulta em lucro de 12 pips

spread não é calculado neste momento! porque 7 compras e 6 vendas resumem-se com 2pips spread a 26pips para quebrar o "0" deve ter para uma ordem de compra e para ter 32 pips com #1 e 29 pips deve ter com #2 para uma ordem de compra - estou certo?

obrigado por suas sugestões

IX

Na verdade, agora que pensei um pouco mais sobre o assunto, o que você pediu não pode ser feito.

Isto é bastante interessante, já codifiquei muitas funções similares, você pode calcular BE interno de quantidade de dólares ou pips, mas são todos do mesmo tipo de ordem. Não pode ser feito tanto com compras quanto com vendas. Por exemplo, se você tem x compras (podem ser de lotes diferentes), em algum momento, todo o lucro em dólar somado é 0, então agora você está na BE. Então, se eles forem comprados, se você quiser 3 pips de lucro, então simplesmente adicione 3 pips ao Bid atual, então você tem um preço-alvo. se todos venderem, você subtrai 3 pips do Ask atual, o preço-alvo é o que você tem. Mas se você tem tanto compra como venda, o que você faz? adicionar ou subtrair?

Como você define que você tem 3 pips de lucro na seguinte situação? 1 lote compra a 1.4100, 2 lotes vendem a 1.4150?

A única coisa que se pode fazer é usar o lucro em dólares, não o lucro em pip, penso eu.

 
christinaLi:
Acho que você me entendeu mal, o que você quer pode ser realizado com precisão, apenas nenhuma modificação real de stop loss. Vou encontrar algum tempo para fazer o código hoje e demonstrar para você. Christina

Obrigado, Christina,

eu aprecio muito seu conhecimento!

Michael

 
christinaLi:
Na verdade, agora que pensei um pouco mais, o que você pediu não pode ser feito.

Isto é bastante interessante, já codifiquei muitas funções similares, você pode calcular BE interno de quantidade de dólares ou pips, mas são todos do mesmo tipo de ordem. Não pode ser feito tanto com compras como com vendas. Por exemplo, se você tem x compras (podem ser de lotes diferentes), em algum momento, todo o lucro em dólar somado é 0, então agora você está na BE. Então, se eles forem comprados, se você quiser 3 pips de lucro, então simplesmente adicione 3 pips ao Bid atual, então você tem um preço-alvo. se todos venderem, você subtrai 3 pips do Ask atual, o preço-alvo é o que você tem. Mas se você tem tanto compra como venda, o que você faz? adicionar ou subtrair?

Como você define que você tem 3 pips de lucro na seguinte situação? 1 lote compra a 1.4100, 2 lotes vendem a 1.4150?

A única coisa que se pode fazer é usar o lucro em dólares, não o lucro em pip, penso eu.

Christina,

Adicionar ou subtrair não importa, porque a soma do lote de 7 ordens de compra versus 6 ordens de venda são suficientes para atingir lucros normais, BE para todas as ordens de um par deve funcionar como um recurso de segurança:

Com este recurso de hedge, você economiza muita margem, com passos entre 50 pips, sua conta não pode ser apagada, se os lucros normais não forem alcançados, BE deve fechar todas as ordens e começar com um novo sinal e primeira ordem.

Para comprar/vender sinal eu uso ação de preço.

Arquivos anexados:
unbenannt.png  7 kb
 
ixbone:
Christina,

Adicionar ou subtrair não importa, porque a soma do lote de 7 ordens de compra versus 6 ordens de venda são suficientes para atingir lucros normais, BE para todas as ordens de um par deve funcionar como um recurso de segurança:

Com este recurso de hedge, você economiza muita margem, com passos entre 50 pips, sua conta não pode ser apagada, se os lucros normais não forem alcançados, BE deve fechar todas as ordens e começar com um novo sinal e primeira ordem.

Para comprar/vender sinal eu uso ação de preço.

Informações adicionais:

- i negocia 8-10 majors ao mesmo tempo para diversificação (correlação parcial), portanto é melhor negociar 10 pares com 0,01 como um par com 0,1

- duplico meus passos entre os pedidos em 25,50,100,200,400,

exemplo:

1ª encomenda 1.5000

2ª ordem 1.5025

3ª......... 1.050

4ª......... 1.100

e assim por diante

 

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 comprado a 1.4110 e 2 lotes vendidos a 1.4200. A que preço você acha que tem 6 pips de ganho?