Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1347
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
Eu não consigo terminar o Expert Advisor. A essência é simples - primeiro desenho um retângulo, que é um gatilho de compra, caso o preço chegue em sua área, depois desenho o segundo - quando o preço chega lá, o negócio deve ser fechado.
Mas acontece o contrário - o preço começa a abrir e fechar dentro da área. O que eu estou fazendo de errado?
//+------------------------------------------------------------------+
//| RECTANGLES OP_BUY.mq4 | RECTANGLES OP_BUY.mq4
//+------------------------------------------------------------------+
#direitos de propriedade intelectual "".
#ligação de propriedade ""
#propriedade versão "1.00"
#propriedade rigorosa
magia int externa = 777701;
Lote duplo externo = 0,01;
Escorregão externo int = 3;
int ticket;
int OrderOfSymbol;
//+------------------------------------------------------------------+
//| Função de inicialização do especialista |
//+------------------------------------------------------------------+
int OnInit()
{
//---
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Função de desinicialização especializada |
//+------------------------------------------------------------------+
nulo OnDeinit(const int razão)
{
//---
}
//+------------------------------------------------------------------+
//| função tick expert |
//+------------------------------------------------------------------+
nulo OnTick()
{
//---
//Cheque para um retângulo:
if(ObjectsTotal(OBJ_RECTANGLE)==0)
{Comentário("Desenhe um retângulo para abrir um negócio de compra!");}
// Obter o NOME do retângulo:
for(int n=0;n<ObjectsTotal();n+++)
{
string name=ObjectName(n);
if(ObjectType(name)==OBJ_RECTANGLE)
{
datatime t1a = (datatime) ObjectGet(name,OBJPROP_TIME1);
datatime t2a = (datatime) ObjectGet(name,OBJPROP_TIME2);
double p1a=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE1),Digits);
double p2a=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE2),Digits);
OrderOfSymbol=CounterOrderTradeType(-1);
se (OrderOfSymbol<1)
se (Fechar[1]>Abrir[1])
if(TimeCurrent()>t1a && TimeCurrent()< t2a &&
Licitação < p1a && Licitação > p2a )
{
bilhete = OrderSend(Symbol(),OP_BUY, Lot, Ask, Slippage, 0, 0, "open buy order", Magic, 0, Blue);
}
}
}
//Cheque se já existe um segundoretângulo:
if(ObjectsTotal(OBJ_RECTANGLE)==1)
{Comentário("Desenhe um segundo retângulo para fechar o comércio de compra!");}
// Obter o NOME do retângulo:
for(int n=0;n<ObjectsTotal();n+++)
{
string name=ObjectName(n);
if(ObjectType(name)==OBJ_RECTANGLE)
{
datatime t1b = (datatime) ObjectGet(name,OBJPROP_TIME1);
datatime t2b = (datatime) ObjectGet(name,OBJPROP_TIME2);
double p1b=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE1),Digits);
double p2b=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE2),Digits);
if(TimeCurrent()>t1b && TimeCurrent()< t2b &&
Licitação < p1b && Licitação > p2b )
CloseBuyPositions1();
}
}
//Cheque para ver se já existe um segundo retângulo:
if(ObjectsTotal(OBJ_CHANNEL)==2)
{Comentário("As áreas abertas e fechadas do pedido de compra estão definidas - o comércio está ligado!");}
}
//+------------------------------------------------------------------+
void CloseBuyPositions1()
{
for(int i = OrderTotal() - 1; i >= 0; i--)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderMagicNumber() == Magic)
if(OrderSymbol() == Símbolo())
{
if(OrderType()==OP_BUY)
{
if(OrderClose(OrderTicket(), OrderLots(), Bid, 3, NULL)){Print("Order Close");}
}
}
}
//+------------------------------------------------------------------+
//| Contagem de pedidos |
//+------------------------------------------------------------------+
int CounterOrderTradeType(ENUM_ORDER_TYPE order_type)
{
int cnt=0;
//----
for(int pos=OrdensTotal()-1;pos>=0;pos--)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)==falso) continua;
if(OrderSymbol()!=_Symbol) continue;
if(order_type == OrderType() || order_type == -1) cnt++;
}
//----
retorno(cnt);
}
Há uma função para a postagem de código como esta, ela tornará mais fácil para todos lerem seu código para ajudar.
Há uma função para postar código como esta, facilitaria a leitura de seu código por todos para ajudar.
Isso não o ajudará. As linhas em branco só são lidas por pessoas como ele.
Порт-моне тв:
O que eu estou fazendo de errado?
Não há nenhuma exclusividade no nome da praça, você tem qualquer praça como condição para comprar e vender
Isto também o ajudará
Por favor, informe como corrigir o erro
Aqui está o erro
'CornerInfo' - constant cannot be modified Wa.mq4 22 1 'CornerInfo1' - constant cannot be modified Wa.mq4 23 1 2 errors, 0 warnings 3 1
Obrigado!
De nada )
Você pode me dizer como corrigir o erro?
Aqui está um erro
As variáveis de entrada não podem ser alteradas.
Você pode fazer isso assim:
De nada )
variáveis de entrada não podem ser alteradas.
Você pode fazer isso assim:
Obrigado. Entendi.
Isto também o ajudará.
Não foi o caso. E percebi que os valores quadrados não são tomados de dois como deveriam ser, mas do último. Eu não sei como vencer isso. Eu não teria descoberto por mim mesmo. Não sou fluente em mql, é por isso que estou lhe pedindo aqui e você está me oferecendo pentes.
não ajudou. E percebi que os valores quadrados não são tomados de dois como deveriam ser, mas do último. Eu não sei como vencer isso. Eu mesmo não teria adivinhado. Não sou fluente em mql, é por isso que estou lhe pedindo, e você está me oferecendo pentes.
Estou lhe oferecendo pentes para tornar seu código fácil de ler para aqueles a quem você se dirige (não há malícia aqui).
Quanto aos quadrados, a fim de identificá-los corretamente, você precisa entender sua origem, ou seja, desenhá-los ou a EA