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
Você pode me dizer se é possível implementar essa construção a partir da MQL4 usando m_Trade.PositionModify (m_Trade é um membro da classe CTrade)?
O objetivo do script é abrir uma compra no mercado com um determinado número de lotes e, em seguida, definir um take profit em 10 partes. Fiquei preso no fato de que, sem definir um stop loss, o PositionModify dá o erro 10016(Incorrect stops in the request). E não há nenhuma tarefa para definir um stop :). Na ajuda, está escrito que é possível não especificar um valor:
Tentei passar o valor obtido na solicitação de compra anterior (há zero, é claro), bem, o mesmo rake apenas no perfil. Aqui está meu código:
Agradeço antecipadamente por sua ajuda.
Boa introdução à programação orientada a objetos em MQL5.
Com o MT5 build 1347, o primeiro exemplo de código não consegue compilar com o erro "illegal switch expression type".
Tive que adicionar a conversão para int nas declarações de switch no AccountInfo.mqh para fazê-lo funcionar, como:
switch((int)MarginMode())
Problema semelhante no RTS-3.13 Opening-demo, tentei de tudo (enquanto as ordens de limite são definidas como ORDER_TIME_SPECIFIED_DAY, conforme escrito no perfil do símbolo) !!!!. Enquanto a ordem buy-stop está perfeitamente aberta no mercado manualmente. Essa é uma falha no terminal, você deve escrever para os desenvolvedores
Olá
Em algumas corretoras (FoxPro, por exemplo), ao tentar abrir uma posição, ocorre o erro 10030. Descrição do código: preenchimento inválido. Em outras corretoras (por exemplo, a Alpari) funciona sem essas linhas
No bloco de inicialização do Expert Advisor, escrevi valores diferentes no código:
Não ajuda. Como resolver o problema? Ou essa classe CTrade está desatualizada e não corresponde às atualizações mais recentes do terminal e eu preciso escrever operações de negociação de acordo com o esquema padrão por meio da estrutura?
UPD: Rashid postou um arquivo de biblioteca acima, que resolveu meu problema. É triste que a biblioteca padrão tenha um erro. Agora vou estudar a comparação para ver se é possível fazer algumas alterações diretamente no EA sem substituir a biblioteca para que tudo funcione
Boa introdução à programação orientada a objetos em MQL5.
Com o MT5 build 1347, o primeiro exemplo de código não consegue compilar com o erro "illegal switch expression type".
Tive que adicionar a conversão para int nas declarações de switch no AccountInfo.mqh para fazê-lo funcionar, como:
switch((int)MarginMode())
Olá, obrigado por essa postagem muito útil e, por favor, ajude-me a resolver esse problema. Sou novo no MT5 e estou aprendendo a criar EAs, então copiei o código de exemplo para executar o Ctrade.Buy, mas o backtest falhou. Aqui estão mais informações:
1) Conta: É uma conta real com a moeda base como NZD
2) Configurações do MetaEditor para o backtest:
3) Código: Copiado de https://www.mql5.com/pt/articles/481:
//+------------------------------------------------------------------+
//| demo.mq5 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#include<Trade\Trade.mqh>
//--- object for performing trade operations
CTrade trade;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- set MagicNumber for your orders identification
int MagicNumber=123456;
trade.SetExpertMagicNumber(MagicNumber);
//--- set available slippage in points when buying/selling
int deviation=10;
trade.SetDeviationInPoints(deviation);
//--- order execution mode
trade.SetTypeFilling(ORDER_FILLING_RETURN);
//--- logging mode: it would be better not to declare this method at all, the class will set the best mode on its own
trade.LogLevel(1);
//--- what function is to be used for trading: true - OrderSendAsync(), false - OrderSend()
trade.SetAsyncMode(true);
//---
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
BuySample1();
}
//--- Buy sample
//+------------------------------------------------------------------+
//| Buying a specified volume at the current symbol |
//+------------------------------------------------------------------+
void BuySample1()
{
//--- 1. example of buying at the current symbol
if(!trade.Buy(0.1))
{
//--- failure message
Print("Buy() method failed. Return code=",trade.ResultRetcode(),
". Code description: ",trade.ResultRetcodeDescription());
}
else
{
Print("Buy() method executed successfully. Return code=",trade.ResultRetcode(),
" (",trade.ResultRetcodeDescription(),")");
}
//---
}
4) Registro de erros (observe que estou testando apenas em EUR/USD):
GJ 0 19:36:44.410 127.0.0.1 login (build 1730)
HH 0 19:36:44.420 Rede 38520 bytes de informações da conta carregadas
JO 0 19:36:44.420 Rede 1482 bytes de parâmetros do testador carregados
QE 0 19:36:44.420 Rede 188 bytes de parâmetros de entrada carregados
FR 0 19:36:44.421 Rede 443 bytes de lista de símbolos carregados
IF 0 19:36:44.421 Arquivo de especialista do testador adicionado: Experts\demo.ex5. 46684 bytes carregados
QH 0 19:36:44.433 Depósito inicial do testador 10000.00 NZD, alavancagem 1:100
JN 0 19:36:44.437 Testador inicializado com sucesso
ES 0 19:36:44.437 Rede 46 Kb de dados totais de inicialização recebidos
PP 0 19:36:44.437 Testador Intel Core i7-4510U @ 2.00GHz, 8103 MB
RJ 0 19:36:44.799 Símbolos EURUSD: símbolo a ser sincronizado
HR 0 19:36:44.800 Símbolos EURUSD: símbolo sincronizado, 3624 bytes de informações de símbolo recebidas
NJ 0 19:36:44.800 Histórico EURUSD: sincronização do histórico iniciada
GO 0 19:36:44.856 Histórico EURUSD: carregar 27 bytes de dados do histórico para sincronizar em 0:00:00.000
RQ 0 19:36:44.856 Histórico EURUSD: histórico sincronizado de 2012.01.01 a 2017.11.15
EF 0 19:36:44.993 Histórico EURUSD,Daily: cache do histórico alocado para 1010 barras e contém 312 barras de 2014.01.01 00:00 a 2014.12.31 00:00
ND 0 19:36:44.993 Histórico EURUSD,Diário: histórico começa a partir de 2014.01.01 00:00
OL 0 19:36:44.996 Testador EURUSD,Daily (HalifaxPlus-Live): geração de cada tick
GN 0 19:36:44.996 Testador EURUSD,Daily: teste de Experts\demo.ex5 de 2015.01.01 00:00 a 2017.11.15 00:00 iniciado
CK 0 19:36:56.288 Symbols NZDUSD: símbolo a ser sincronizado
IS 0 19:36:56.288 Símbolos NZDUSD: símbolo sincronizado, 3624 bytes de informação de símbolo recebidos
JL 0 19:36:56.288 Histórico NZDUSD: sincronização do histórico iniciada
HJ 0 19:36:56.575 Histórico NZDUSD: carregar 14 Kb de dados do histórico para sincronizar em 0:00:00.078
LS 0 19:36:56.575 Histórico NZDUSD: histórico sincronizado de 2013.01.01 a 2017.11.15
CO 0 19:36:56.579 Símbolos EURNZD: símbolo a ser sincronizado
OJ 0 19:36:56.580 Símbolos EURNZD: símbolo sincronizado, 3624 bytes de informação de símbolo recebidos
DL 0 19:36:56.580 Histórico EURNZD: sincronização do histórico iniciada
MK 0 19:36:56.656 Histórico EURNZD: carregar 27 bytes de dados do histórico para sincronizar em 0:00:00.000
OD 0 19:36:56.656 Histórico EURNZD: histórico sincronizado de 2013.01.01 a 2017.11.15
IN 0 19:36:56.665 Trade 2015.01.02 03:00:00 market buy 0.10 EURUSD (1.20538 / 1.20549 / 1.20538)
PE 0 19:36:56.665 Trades 2015.01.02 03:00:00 deal #2 buy 0.10 EURUSD at 1.20549 done(based on order #2)
FH 0 19:36:56.666 Negociação 2015.01.02 03:00:00 negócio realizado [#2 comprar 0.10 EURUSD a 1.20549]
OG 0 19:36:56.666 Trade 2015.01.02 03:00:00 ordem executada comprar 0.10 em 1.20549 [#2 comprar 0.10 EURUSD em 1.20549]
FO 0 19:36:56.670 demo (EURUSD,D1) 2015.01.02 03:00:00 Buy() method executed successfully. Código de retorno=10009 (realizado em 1.20549)
NM 2 19:37:15.823 Histórico NZDUSD 2016.09.21 23:01:00: histórico corrompido detectado (s:-73370, o:73433, h:+48, l:-123, c:-117 -- tv:63, rv:11250111)
JF 2 19:37:15.823 Histórico NZDUSD 2016.09.21, contêiner ruim encontrado, deve ser ressincronizado
LQ 2 19:37:16.106 Erro 9 no histórico do testador em uma função indefinida
OH 2 19:37:16.106 O testador parou em 0% do intervalo de teste com o erro '20 NZDUSD'
Por favor, diga-me o que está errado e como posso resolver isso?