Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 255
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Como você calcula o tp?
Eu especifico na variável duplo tp=50;
Eu especifico na variável duplo tp=50;
agora escreve
2021.12.04 13:56:09.509 TestGenerator: erro de dados inigualável (valor alto 1.13110 em 2021.12.03 23:45 não é alcançado a partir do menor período de tempo, preço alto 1.13104 desajustes)
coloque por um minuto... funciona...
mas o nível de parada é diferente -
1 2021.09.16 05:59 venda 1 0.01 1.18190 51.18192 1.18140 0.00 10000.00
agora escreve
2021.12.04 13:56:09.509 TestGenerator: erro de dados inigualável (valor alto 1.13110 em 2021.12.03 23:45 não é alcançado a partir do menor período de tempo, preço alto 1.13104 desajustes)
Todas as regras são on-line, portanto, verifique você mesmo.
Regras todas on-line, portanto, verifique você mesmo.
Obrigado!
Boa noite cavalheiros, poderiam informar por que o conselheiro dá um erro ao abrir a segunda ordem?
O texto do próprio assessor
//+----------------------Параметры-----------------------------------+
input int TakeProfit = 100; // Lucro em pips
input int StopLoss = 50; // Perda em pips
lote duplo de entrada = 0,01; // Lote inicial
entrada dupla Multilot = 1,95; // multiplicador para o lote inicial
input int Slippage =30; // Slippage
input int MagicNumber = 333 ; // Número único
//+------------------------------------------------------------------+
//| Função de iniciação de especialistas |
//+------------------------------------------------------------------+
duplo tp=0;
dupla sl=0;
int OnInit()
{
tp=NormalizeDouble(TakeProfit*Point(),Digits());
sl=NormalizeDouble(StopLoss*Point(),Digits());
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Função de carrapato de especialista |
//+------------------------------------------------------------------+
nulo OnTick()
{
//- o loop verifica as ordens abertas quando o Expert Advisor é ativado e as calcula.
int buy=0; //Número de pedidos de compra
int sell=0; //Número de ordens de venda
for(int i = OrderTotal()-1; i>=0; i--)
if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()== MagicNumber)
{
if(OrderType()==OP_BUY)
comprar++;
if(OrderType()==OP_SELL)
venda++;
}
//- o laço recebe os dados da última ordem fechada quando a EA é ativada
int type=-1; //o tipo de uma ordem fechada
int history_close_orders=0; //número de ordens fechadas
lote duplo=0; //Lote do último pedido fechado
lucro duplo=0; // Lucro no qual o último pedido foi fechado
data hora=0; //hora de encerramento do último pedido
for(int i = OrderHistoryTotal()-1; i>=0; i--)
if(OrderSelect(i, SELECT_BY_POS,MODE_HISTORY))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()== MagicNumber)
if(OrderCloseTime()>time)
{
história_fechar_ordens+++;
tempo = OrderCloseTime();//o último tempo de fechamento do pedido
lote= OrderLots();//Lote do último pedido fechado
type=OrderType();// Tipo do último pedido fechado
profit=OrderProfit()*OrderSwap()*OrderComission();//Profit do último pedido fechado
}
//calcule o lote com o qual a EA irá trabalhar
duplo Lotes_Lote de trabalho=0;// lote de trabalho
if(history_close_orders==0 || profit>0)// se não houver ordens fechadas ou a última ordem fechada sobre o lucro
Lote_Lote=Lote de trabalho;// lote de trabalho é igual ao lote inicial
if(history_close_orders>0 && profit<0) // se o último pedido for fechado no vermelho
Lots_Work=1;// lote de trabalho será igual ao lote da última ordem multiplicado pelo multiplicador
//abrir a primeira ordem de compra
if(buy==0 || lucro>0)
{
int ticket=OrderSend(Symbol(),OP_BUY,Lots_Work,Ask,Slippage,0,0, "Expert Advisor Test Fair",MagicNumber,0,clrGreen);
if(bilhete<0)
Print("OrderSendido com erro #",GetLastError()));
senão
Imprimir ("OrderSend completed successfully");
}
// Abertura do segundo e dos pedidos de compra subseqüentes
if(buy==0 && type===OP_BUY && profit<0)
{
int ticket=OrderSend(Symbol(),OP_BUY,Lots_Work,Ask,Slippage,0,0, "EA Test fair",MagicNumber,0,clrGreen);
if(bilhete<0)
Print("OrderSendido com erro #",GetLastError()));
senão
Imprimir ("OrderSend completed successfully");
}
// Abertura da primeira ordem de venda
if(venda==0 || lucro>0)
{
int ticket=OrderSend(Symbol(),OP_SELL,Lots_Work,Bid,Slippage,0,0, "EA Test fair",MagicNumber,0,clrRed);
if(bilhete<0)
Print("OrderSendido com erro #",GetLastError()));
senão
Imprimir ("OrderSend completed successfully");
}
// Abertura do segundo e dos pedidos de compra subseqüentes
if(sell==0 && (type====OP_SELL && profit<0))
{
int ticket=OrderSend(Symbol(),OP_SELL,Lots_Work,Bid,Slippage,0,0, "Expert Advisor Test Fair",MagicNumber,0,clrRed);
if(bilhete<0)
Print("OrderSendido com erro #",GetLastError()));
senão
Imprimir ("OrderSend completed successfully");
}
//--Modificar o pedido, adicionando Take Profit e Stop Loss
for(int i = OrderTotal()-1; i>=0; i--)
if(OrderSelect(i, SELECT_BY_POS))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()== MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(OrderStopLoss()==0 || OrderTakeProfit()==0)
if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-sl,Digits(),NormalizeDouble(OrderOpenPrice()+tp,Digits(),0,clrGreen))
Imprimir("OrderModify OK!");
senão
Print("OrderModify BUY failed #", GetLastError()));
}
if(OrderType()==OP_SELL)
{
if(OrderStopLoss()==0 || OrderTakeProfit()==0)
if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+sl,Digits(),NormalizeDouble(OrderOpenPrice()-tp,Digits(),0,clrRed))
Imprimir("OrderModify OK!");
senão
Imprimir("OrderModify SELL failed #", GetLastError()));
}
}
}
//+------------------------------------------------------------------+
Meu antigo laptop com processador i3 ainda tinha WinXP 32 bit instalado, sem suporte MT5. Recentemente aumentou a memória para 6GB, quer instalar um SO de 64 bits que rodaria MT4 e MT5. O que é preferível - Win7 ou Win8.1 ?
10
10