Fechamento de meio lote. - página 15

 
Eu estou usando isto? Junte isso com "if(OpenOrdersThisPair(Symbol())>0)" acima, que deve manter os EA's separados de cada par? Mas vejo o que você está dizendo. Alguma sugestão sobre como posso distinguir um comércio que foi reduzido pela metade de um que não usou OrderOpenTime()? Um pequeno chute na direção certa...?

//+----------------------------------------------------------------------------------------------------------------------------------------+  
//| Check to see if any order open on this currency pair                                                                                   |
//+----------------------------------------------------------------------------------------------------------------------------------------+   

int OpenOrdersThisPair(string pair)
  {
   int total=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==pair) total++;
     }
   return(total);
  }
 
DomGilberto:
Eu estou usando isto? Junte isso com "if(OpenOrdersThisPair(Symbol())>0)" acima, que deve manter os EA's separados de cada par?

Não, suponha que você tenha 2 EAs em execução e cada um tenha uma Ordem aberta, você tem 50:50 chances de que a última OrdemSelecionada() pela função OpenOrdersThisPair() seja a função errada . . . a função retornará uma, mas você pode muito bem ter a Ordem errada selecionada.
 
Perdoe-me, mas eu não entendo como isso é verdade? Estou me certificando que o OrderSymbol()==par? Então o EA relevante que está anexado ao EURUSD, o pegaria é o OrderSymbol()==pair?
 
Será que isto iria resolver o problema? Na revista está me dizendo isso? Que tal "OrderSymbol()==OrderSymbol()" lol? se for este símbolo... não sei se é retardado ou não...

   if(OpenOrdersThisPair(Symbol())>0) //If there is a trade open = do below, which ever is applicable.
     {
     if(OrderSelect(OrderTicket(),SELECT_BY_TICKET, MODE_TRADES)==True)
         {   
         Print("The Symbol is: ", OrderSymbol());  
         }
         
         if(OrderType()==OP_BUY && OrderOpenPrice() > OrderStopLoss() && OrderSymbol()==OrderSymbol())
               {
               CloseHalfOrder(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
               }

         if(OrderType()==OP_SELL && OrderStopLoss() > OrderOpenPrice() && OrderSymbol()==OrderSymbol()) // lol? If this symbol is, this symbol...
               {
               CloseHalfOrder1(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
               }
            
2013.08.08 18:51:21	2010.02.08 01:00  Trend Fishing 3 Exits GBPJPY,H1: The Symbol is: GBPJPY

 

Ah! E se eu comparasse o OrderCloseTime() e o OrderOpenTime()!?

Certamente esta seria a MELHOR maneira de fazer o que eu quero? Dessa forma eu posso acrescentar quantas funções OrderCloseClose eu quiser? Depois de tudo, eu poderia simplesmente selecionar a profissão na história que tinha o mesmo OrderOpenTime() que o atual "OP_BUY", mas se o OrderCloseTime() > OrderOpenTime(), então isto pararia o OrderClose(), fechando pela metade continuamente!?!

Alguém por favor me diga que eu tenho algo com que trabalhar aqui :( haha.

 
DomGilberto:
Perdoe-me, mas eu não entendo como isso é verdade... Estou me certificando de que o símbolo OrderSymbol()==par? Então o EA relevante que está anexado ao EURUSD, o pegaria é o OrderSymbol()==pair?

Você encomendaSelect() primeiro . . . depois você verifica . .

if(OrderSymbol()==pair) total++;

. e isso é bom para essa função, se os símbolos não corresponderem, você não aumenta a contagem . . mas ainda assim significa que a última Ordem que você selecionou não foi para o símbolo em que você está trabalhando.

Você precisa de um laço adicional e encontrar uma ordem válida e depois sair do laço . . então você tem a ordem correta selecionada.

 
Estou confuso, testei minha EA em 16 pares diferentes, simultaneamente esta semana e ela nunca selecionou o errado :s? Estou perdendo alguma coisa?
 
DomGilberto:
Estou confuso, testei minha EA em 16 pares diferentes, simultaneamente esta semana e ela nunca selecionou o errado :s? Estou perdendo alguma coisa?
Até onde posso ver, parece possível que ele possa selecionar a Ordem errada, eu a consertaria para ter certeza em vez de arriscar. Verifique seu código, se isso não puder acontecer, então você não precisa consertá-lo.
 

DomGilberto:
I thought that too - It says I need OrderSelect() before using OrderType, but it works? I only ever have one order open at any given time...

I can't think of how to use OrderOpenTime() to my advantage and stop CloseHalfOrder being called every time...

A parte EA fecha a ordem, a EA precisa saber qual ordem não fechar novamente, então obtenha OrderOpenTime() antes que você feche a parte. Codifique EA para não fechar novamente os pedidos naquele par de moedas com o mesmo OrderOpenTime().

 
SDC:

A parte EA fecha a ordem, a EA precisa saber qual ordem não fechar novamente, então obtenha OrderOpenTime() antes que você feche a parte. Codifique EA para não fechar novamente os pedidos naquele par de moedas com o mesmo OrderOpenTime().


Sim, estou começando a chegar lá agora - presumo que preciso comparar com os negócios que fecharam na história na mesma OrdemSymbol()?

O problema que eu tenho; estou tentando fechar parcialmente o mesmo "OP_BUY" ou "OP_SELL" até 4 vezes a preços diferentes... Eu acho que a pergunta que eu deveria estar fazendo é, posso conseguir uma maneira, onde por mim tenho uma regra que TODOS os fechamentos parciais (de qualquer lote e preço em UM determinado comércio) só fechará parcialmente UMA VEZ em seus parâmetros pré-definidos "OrderClose()" definidos...

Desta forma, estou olhando para fazer isso agora com a comparação do OrderOpenTime() funcionará essencialmente apenas uma vez, e restringirá qualquer outro tipo de função OrderClose() de acontecer em tudo... Quero encontrar uma maneira de aplicar uma regra a 4 funções OrderClose()... (se isso fizer sentido?)

Eu sei que as pessoas estão sugerindo 4 ordens abertas, mas sem ir muito fundo, é menos eficiente para mim fazer isso dessa maneira.
Razão: