Como codificar? - página 170

 
Roger09:
Olhe para

duplo NormalizeDuplo (valor duplo, dígitos int)

Se você colocar dígitos=2, você pode ver o que quiser.

Hi,

Eu acho que não fui muito claro. Por exemplo:

- Se o preço atual é 1,3756, o código deve retornar 56

- Se o preço atual for 99,22, o código deve retornar 22

- Se o preço atual for 1,4499, o código deve retornar 99

Basicamente, estou tentando retornar o valor dos dois últimos dígitos, independentemente se a cotação for 4 casas decimais ou 2 casas decimais.

NomalizeDouble apenas arredonda para cima o preço para a colocação dos dígitos especificados.

Alguém tem alguma idéia?

 
musical:
Hi,

Eu acho que não fui muito claro. Por exemplo:

- Se o preço atual é 1,3756, o código deve retornar 56

- Se o preço atual for 99,22, o código deve retornar 22

- Se o preço atual for 1,4499, o código deve retornar 99

Basicamente, estou tentando retornar o valor dos dois últimos dígitos, independentemente se a cotação for 4 casas decimais ou 2 casas decimais.

NomalizeDouble apenas arredonda para cima o preço para a colocação dos dígitos especificados.

Alguém tem alguma idéia?

ОК

lasttwonumbers=(Bid-MathFloor(Bid/(Point*100))*Point*100)/Point;

 
1Dave7:
Como posso criar um EA que feche qualquer pedido de ingressos aberto de vários EA's se SL for 10 Pips ou maior?

Dave

<<<

Myfxidea é um serviço de gráficos de padrões de velas e fornece um consultor especializado para mt4

 
Roger09:
ОКdouble lasttwonumbers=(Bid-MathFloor(Bid/(Point*100))*Point*100)/Point;

Funciona como um encanto. Obrigado por toda a sua ajuda.

 

Ajuda com a parada de enchimento / 1 Risco ou posição M

Olá a todos,

tentei procurar no fórum uma solução para meu problema:

No início da minha EA:

//---- buy conditions

if(Ask > mybuyconditions)

{

ticket=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-lowestof10bars),((BBupper-BBlower)/(Ask-lowestof10bars))*1000,"Einstieg 1",magic+1,0,Green);

}

//---- sell conditions

if(Bid < mysellconditions)

{

ticket=OrderSend(Symbol(),OP_SELL,LotsShort(),Bid,Spread,Ask+(highestof10bars-Bid),((BBupper-BBlower)/(highestof10bars-Bid))/100,"Einstieg -1",magic-1,0,Red);

}

//----[/CODE]

Stopploss: its easy 10 bars hi/lo

Takeprofit: here i write my formula for my Trailingstop, and that is:

Take the differenz of BBupper - BBlower at the order open time. Then divide by StopLoss in Pips and you have an Factor. Then take the actual BB differenz and divide it by this Faktor. NOW WE HAVE OUR VOLA BB TRAILINGSTOPP!!!!!

SO, my big problem is now to save this FAKTOR!!!! I saved it in th Takeprofit of Ordersend, it works but it is not right!!!!!

And know the 2te Question:

Position Management:

so my order is open and i have my trailing stopp that trails : So and now if the trailingstop is > orderopenprice send next ORDER!!! It's logical because so i can always sicure to risk just my 1 R Risk.

.... if Trailingstopp is > orderopenprice of secondOrder send 3te order.

HERE MY EXAMPLES:

for(int i = (OrdersTotal()-1); i >= 0; i--)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+1)

if(OrderStopLoss()< Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() > OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 1)

{

ticket1=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-Low),((oben-unten)/(Ask-Low))*1000,"Einstieg 2",magic+2,0,Green);

return;

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2 && CalculateCurrentAfterOrders(Symbol()) <= 1)

{

if(OrderStopLoss()<Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() > OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 2)

{

ticket2=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-Low),((oben-unten)/(Ask-Low))*1000,"Einstieg 3",magic+3,0,Green);

return;

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+3 && CalculateCurrentAfterOrders(Symbol()) <= 2)

{

if(OrderStopLoss()< Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

}

}

}

[CODE] if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+1)

{

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() >= OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 1)

{

ticket1=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,0,0,"Einstieg 2",magic+2,0,Green);

return;

}

}

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2)

{

if(OrderStopLoss() >= OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 2)

{

ticket2=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,0,0,"Einstieg 3",magic+3,0,Green);

return;

}

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2)

{

if(CalculateCurrentOrders(Symbol()) == 0)

{

OrderClose(ticket1,OrderLots(),Ask,Spread,Red); return;

}

}

}

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+3)

{

OrderClose(i,OrderLots(),Ask,Spread,Red); return;

}

Espero que alguém possa me ajudar com este problema!!!!! Obrigado a todos.

 

Adicionando Código Quando a posição vai contra você "x" pips adiciona lote adicional com tpsl fixo

oi

fiz muitos estudos e descobri que pode ser bom acrescentar esta função à minha EA

Quando a posição vai contra você "20" pips adicionar lote adicional "0,1" com entrada própria TP e SL

é possível perceber ??

Também este Ea é muito bom, mas só abre COMPRAS

talvez com lógica de "vender

por favor, me ajude

Arquivos anexados:
_v1.2.mq4  6 kb
 

Precisa de ajuda com um problema de programação

Como você pode programar o Metatrader 4 para sair da posição anterior e abrir a nova posição na barra SAME se você definir o EachTickMode como falso? Quando você ajusta EachTickMode para True ele faz isso automaticamente, mas quando você o ajusta para false, ele fechará a posição anterior em uma barra e então aguardará a próxima barra para abrir a nova posição. Eu uso o

O prazo H4 e esperar mais 4 horas para abrir uma nova posição após o sinal ser dado é inaceitável. Meu sistema é sensível demais para usar EachTickMode=True. Qualquer ajuda que alguém possa me dar com isto seria muito apreciada.

 

Ajuda necessária para passar o erro de Orderend 130

Abaixo está minha função de compra. Se eu definir a variável order_type para 1 (para ordem de mercado), ela funciona, então eu sei que minhas funções stoploss e takeprofit estão funcionando. O problema deve estar na determinação do preço para a ordem op_buylimit. Estou tentando calcular meu preço de pedido diminuindo o Ask por uma porcentagem do comprimento (pct_of_length) do corpo da vela (na barra 1). Tentei uma série de variações de codificação (algumas incluindo NormalizeDouble), mas não consigo ir além do erro 130. Alguém pode ajudar? Estou usando o IBFX, a propósito.

Obrigado de antemão!

bool place_buy_order() {

int ticket, length_in_pips, offset_in_pips;

duplo preço_limite_ de compra;

// pct_of_length é um número inteiro externo, atualmente ajustado para 10

se ( order_type == 2 && pct_of_length > 0 )

{

length_in_pips = MathAbs(High[1]-Low[1]) * MathPow(10,Digitos);

offset_in_pips = MathRound(length_in_pips * (pct_of_length/100));

buy_limit_price = Ask - offset_in_pips * Ponto;

bilhete = OrderSend(Symbol(),OP_BUYLIMIT,LotSize(),buy_limit_price,0,stoploss("b",buy_limit_price),takeprofit("b",buy_limit_price),"",MAGICMA,0,Blue);

}

senão

// ordem de mercado

bilhete = OrderSend(Symbol(),OP_BUY,LotSize(),Ask,Slippage,stoploss("b",Ask),takeprofit("b",Ask),"",MAGICMA,0,Blue);

se ( bilhete == -1 ) retornar(falso); caso contrário, retornar(verdadeiro);

}

 

Você já tentou imprimir as várias variáveis, TP, SL, etc., e ver se elas estão sendo definidas corretamente? Isso pode lhe dar uma pista de onde está o problema.

Lux

 
stocktrader24202:
Como você pode programar o Metatrader 4 para sair da posição anterior e abrir a nova posição na barra SAME se você definir o EachTickMode como falso? Quando você ajusta EachTickMode para True ele faz isso automaticamente, mas quando você o ajusta para false, ele fechará a posição anterior em uma barra e então aguardará a próxima barra para abrir a nova posição. Eu uso o tempo H4 e esperar mais 4 horas para abrir uma nova posição após o sinal ser dado é inaceitável. Meu sistema é sensível demais para usar EachTickMode=True. Qualquer ajuda que alguém possa me dar com isto seria muito apreciada.

CadaTickMode é uma variável que o codificador original da EA incluía ESPECIFICAMENTE para que você pudesse escolher entre abrir na mesma vela OU abrir na próxima.

Parece que a EA está fazendo EXATAMENTE o que foi projetado para isso não tenho certeza de qual é o seu problema.

Você diz que funciona da maneira que você quer quando você define a variável como verdadeira, então qual é o problema? Apenas defina a variável como verdadeira.

Lux