Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Devolve o número do ticket atribuído ao pedido pelo servidor comercial ou -1 se falhar. Para obter informações adicionais sobre erros, é necessário chamar a função GetLastError().
Notas:
Na abertura de uma ordem de mercado (OP_SELL ou OP_BUY), somente os últimos preços de Bid (para venda) ou Ask (para compra) podem ser usados como preço aberto. Se a operação for realizada com uma segurança diferente da atual, a função MarketInfo() deve ser usada com o parâmetro MODE_BID ou MODE_ASK para que as últimas cotações para esta segurança sejam obtidas. O preço calculado ou não pode ser aplicado. Se não houver o preço aberto solicitado no segmento de preço ou se este não tiver sido normalizado de acordo com a quantidade de dígitos após o ponto decimal, será gerado o erro 129 (ERR_INVALID_PRICE). Se o preço aberto solicitado estiver totalmente desatualizado, o erro 138 (ERR_REQUOTE) será gerado independentemente sobre o parâmetro de escorregamento. Se o preço solicitado estiver desatualizado, mas presente no fio, a posição será aberta ao preço atual e somente se o preço atual estiver dentro da faixa depreço+deslizamento.
Os níveis StopLoss e TakeProfit não podem estar muito próximos do mercado. A distância mínima dos níveis de parada em pontos pode ser obtida usando a função MarketInfo() com o parâmetro MODE_STOPLEVEL. No caso de níveis de parada errados ou não normalizados, será gerado o erro 130 (ERR_INVALID_STOPS).
Na colocação de uma ordem pendente, o preço aberto não pode estar muito próximo do mercado. A distância mínima do preço pendente do mercado atual em pontos pode ser obtida usando a função MarketInfo() com o parâmetro MODE_STOPLEVEL. Em caso de falso preço aberto de uma ordem pendente, será gerado o erro 130 (ERR_INVALID_STOPS).
A aplicação do tempo de expiração de pedidos pendentes pode ser desativada em alguns servidores comerciais. Neste caso, quando um valor não zero é especificado no parâmetro deexpiração, o erro 147 (ERR_TRADE_EXPIRATION_DENIED) será gerado.
Em alguns servidores comerciais, a quantidade total de ordens abertas e pendentes pode ser limitada. Se este limite for ultrapassado, nenhuma nova posição será aberta (ou nenhuma ordem pendente será colocada) e o servidor comercial retornará o erro 148 (ERR_TRADE_TOO_MANY_ORDERS).
//--- parâmetros de entrada
período int externo=16;
porog externo int=50;
lote duplo externo=1;
k=5000;
bool pl=true externo;
//+------------------------------------------------------------------+
//| função de inicialização especializada |
//+------------------------------------------------------------------+
int init()
{
//----
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de desinicialização de especialistas |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int start()
{
duplo bs=NormalizarDuplo(iCustom(Símbolo(),0, "Aver",período,0,0),Dígitos);
duplo ss=NormalizarDuplo(iCustom(Símbolo(),0, "Aver",período,1,0),Dígitos);
double tpb=NormalizeDouble(bs+(bs-ss),Digits);
double tps=NormalizeDouble(ss-(bs-ss),Digits);
if(pl===verdadeiro)lotes duplos=MathMin(AccountFreeMargin()/k,5);
if(pl===falso)lotes=lote;
if(OrdensTotal()==0)
{
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,",1394,0,Red);//Open Buy Limit.
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,",1394,0,Blue);//Open Sell Limit.
}
if(OrdersTotal()==2)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);//selecione o pedido mais próximo.
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
if(OrderType()==OP_SELLSTOP&&&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,bs,tps,0,Blue);
if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
if(OrderType()==OP_SELLL&&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
OrderSelect(1,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
if(OrderType()==OP_SELLSTOP&&&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,bs,tps,0,Blue);
if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
if(OrderType()==OP_SELLL&&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
}
if(OrdersTotal()==1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY) {OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,",1394,0,Blue);}
if(OrderType()==OP_SELLL) {OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,",1394,0,Red);}
if(OrderType()==OP_BUYSTOP) {OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,",1394,0,Blue);}
if(OrderType()==OP_SELLSTOP){OrderModify(OrderTicket(),ss,bs,tps,0,Blue);
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,",1394,0,Red);}
}
retorno(0);
}
//+------------------------------------------------------------------+