Como codificar? - página 69

 

Oi Wolfe

wolfe:
Sei que isto já foi coberto antes, mas alguém pode me mostrar algum código para permitir apenas 1 comércio por barra? Obrigado.

Isto funciona para mim

data/hora LastOpenTime=0;

//////////////////////////////////////////

int Ordem;

for(int t=0;t<OrdensTotal();t++)

{

if(OrderSelect(t, SELECT_BY_POS, MODE_TRADES))

{

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumbers && OrderType() == OP_SELLL)

{

if(OrderOpenTime()>LastOpenTime)LastOpenTime=OrderOpenTime();

}

}

}

Então eu apenas o enfiei em meu código

if(LastOpenTime0)

{ EncomendarEnviar(blá blá blá

Sendo o tempo[0] o início da vela de seu período de tempo, então certifique-se de escolher o período de tempo certo

 
waltini:
Isto funciona para mim.

data/hora LastOpenTime=0;

//////////////////////////////////////////

....................

Sendo o tempo[0] o início da vela de seu período de tempo, então certifique-se de escolher o período de tempo certo

Isto pode ser um pouco mais simples:

datetime LastOpenTime; //Global var

[/CODE]

[CODE]

int init()

{

LastOpenTime=Time[0];

}

int start()

{

................

if(LastOpenTime!=Time[0])

{

// do your trade code

LastOpenTime=Time[0];

}

..............

return(0);

}

Seu "código comercial" será executado uma única vez apenas em qualquer vela. Não haverá mais nenhuma troca nessa vela, mesmo que você feche seu MT4 e o ligue novamente. Mas observe, digamos que você ative a EA em uma vela das 17h, não haverá mais nenhuma troca nessa vela, você terá que esperar pela próxima vela.

 
wolfe:
Sei que isto já foi coberto antes, mas alguém pode me mostrar algum código para permitir apenas 1 comércio por barra? Obrigado.

Global, coloque isto antes de init()

datetime PreviousBar;[/CODE]

In the order placement and/or order close stuff, wrap it in this:

if(NewBar() == true)

{

if blah blah blah, gimme pips // not actual functions but you get the idea

if blah blah blah, close orders // um

}

Common function outside main loop:

[CODE]//--- returns true if current bar just formed

bool NewBar()

{

if(PreviousBar<Time[0])

{

PreviousBar = Time[0];

return(true);

}

else

{

return(false);

}

return(false);

}
 

Ajuda na programação

Hi,

Tenho feito o meu melhor para tentar programar algumas coisas, mas bati numa parede de tijolos. Por isso, tentei algo muito simples. Se eu descomentar "Imprimir("Cinco");" e testar o programa, ele só imprimirá "Yahooooooo". (Bem, ele também imprime "Um"). Agora com "Print("Five");" comentou, mesmo o "Yahooooooooo" não imprime. O que estou perdendo?

Arquivos anexados:
trial.mq4  2 kb
 

Fechar todos os pedidos pendentes e abertos quando 1 comércio atingir TP

Hi,

Estou tentando escrever um código em minha EA que fechará todas as ordens pendentes e abertas uma vez que houver 1 negociação que atinja a TP. Abaixo estão os códigos que eu usei, parece não funcionar. Alguém pode dar uma olhada e avisar o que está faltando. Obrigado.

if( Encomendas Abertas Anteriores > Encomendas Abertas )

{

for( cnt = OrderTotal()-1; cnt >= 0; cnt-- )

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

modo = OrderType();

if( OrderSymbol() == Symbol() &&

OrderMagicNumber()==Magic)

{

if( modo == OP_BUY ) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Blue);

if( mode == OP_SELL ) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),OrderClosePrice(),slippage,Red);

if (mode == OP_SELLLIMIT) OrderDelete(OrderTicket());

if (mode == OP_BUYLIMIT) OrderDelete(OrderTicket());

}

}

}

}

 

Use Bid e Ask respectivamente em vez de OrderClosePrice()...

 
ralph.ronnquist:
Use Bid e Ask respectivamente em vez de OrderClosePrice()...

Olá ralph,

você pode ajudar a dar um exemplo. Obrigado pela ajuda.

 
timebandit:
Olá, tenho feito o meu melhor para tentar programar algumas coisas, mas bati numa parede de tijolos. Por isso, tentei algo muito simples. Se eu descomentar "Imprimir("Cinco");" e testar o programa, ele só imprimirá "Yahooooooo". (Bem, ele também imprime "Um"). Agora com "Print("Five");" comentou, mesmo o "Yahooooooooo" não imprime. O que estou perdendo?

Se você não usar parênteses, apenas uma linha é executada. Depende do que você quer fazer, mas você deve fazer assim:

if(d>5)

{

Print("Five");

Print("Yahoooooooooooooooooooooooo");

}
 

if( mode == OP_BUY ) OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Blue);

if( mode == OP_SELL ) OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Red);

 

Parada de movimento uma vez

Aqui está minha parte de código para movimentar o stoploss para obter um certo lucro. Há algo de errado com ele?

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() == Point * MoveStopWhenPrice) {

OrderModify(OrderTicket(),OrderOpenPrice(), Bid - Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}