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
Alternativamente, diga-me como escrever esta função de exclusão nesta condição.
você deve primeiro definir o bilhete da ordem pendente a ser apagada
se o bilhete for nulo ou indefinido - então não o apague
Isto é para ordens diferentes. A função de remover um por uma condição, removendo o outro sem uma condição.
A questão é por que no meu caso a função de eliminação funciona com sucesso sem uma condição, mas se eu a coloco em uma condição, ela gera um erro quando a condição ocorre.
você deve primeiro definir o ticketD e o ticketUP a ser apagado
Se o bilhete for nulo ou indefinido, então nenhuma exclusão
Assim definido, um ticketD, o outroticketUP .
Ou eu estou misturando algo?
Assim definido, um ticketD, o outroticketUP .
Ou estou confundindo algo?
Como pode ser definido se oticketUP já está apagado?
Você o apagou, atualize o ticketUP para o estado necessário, no qual a condição para apagar o ticketUP não funcionará, e esta condição deve ser adicionada ao código também
Como pode ser definido seo ticketUP já foi eliminado?
Você o apagou, atualize o ticketUP para o estado que você precisa, no qual a condição para apagar o ticket não funcionará, e esta condição também deve ser adicionada ao código.
Assim, os pedidos comticketD, outroticketUP são criados primeiro (de acordo com a condição de ausência), e depois disso eles já são eliminados.
if(BuyLimitCount()==0&& BuyCount()==0){slB=NormalizeDouble(minpr1-pointsl*Point,5);
tpB=NormalizeDouble(minpr1+pointtp*Point,5);
int ticketUP=OrderSend(Symbol(),OP_BUYLIMIT, lotB, minpr1,3, slB, tpB,"", MagicB,0, Red);
if(ticketUP===-1)Print("ERROR OP_BUY"); elsePrint("OP_BUY OK");}
if(SellLimitCount()==0&& SellCount() ==0){
slS=NormalizeDouble(maxpr1+pointsl*Point,5);
tpS=NormalizeDouble(maxpr1-pointtp*Point,5);
int ticketD=OrderSend(Symbol(),OP_SELLLIMIT, lotS, maxpr1,3, slS, tpS,"", MagicS,0, Blue);
if(ticketD===-1)Print("ERROR OP_SELL"); elsePrint("OP_SELL OK");}
if(x!=maxpr1){x=maxpr1;OrderDelete(ticketD);}
OrderDelete(ticketUP);
Se eu estiver confuso, o quê?
Assim, os pedidos comticketD, outroticketUP são criados primeiro (de acordo com a condição de ausência), e depois são eliminados.
se(BuyLimitCount()==0&& BuyCount()==0){slB=NormalizeDouble(minpr1-pointsl*Point,5);
tpB=NormalizeDouble(minpr1+pontosl*Point,5);
int ticketUP=OrderSend(Symbol(),OP_BUYLIMIT, lotB, minpr1,3, slB, tpB,"", MagicB,0, Red);
if(ticketUP==-1)Print("ERROR OP_BUY"); elsePrint("OP_BUY OK");}
se(SellLimitCount()==0&& SellCount() ==0){
slS=NormalizarDuplo(maxpr1+pontosl*Point,5);
tpS=NormalizarDuplo(maxpr1+pontosl*Point,5);
int ticketD=OrderSend(Symbol(),OP_SELLLIMIT, lotS, maxpr1,3, slS, tpS,"", MagicS,0, Blue);
se(ticketD===-1)Print("ERROR OP_SELL"); caso contrárioPrint("OP_SELL OK");}
if(x!=maxpr1){x=maxpr1;OrderDelete(ticketD);}
OrderDelete(ticketUP);
Se eu confundir o quê?
Novamente você tem um comando sem uma condição:
OrderDelete(ticketUP);
Por que você não mudou o código?
Dê um tempo para "pensar", pelo menos, e resolva isso + leia o que você escreveu, que conselho foi dado.
A propósito, há aqui freelancer , se não puder...
Portanto, novamente você tem um comando sem uma condição:
OrderDelete(ticketUP);
Por que você não mudou o código?
Dê um tempo para "pensar" pelo menos e descubra + leia o que foi escrito, que conselho lhe foi dado.
A propósito, há aqui freelance se não funcionar...
É sem condição - porque é assim que a remoção ocorre, e com uma condição - não. Por isso, escrevi para indicar que não posso. Você deve escrevê-lo desta maneira:
OrderDelete(ticketD);
OrderDelete(ticketUP);
Em seguida, cada carrapato elimina os pedidos já criados em cada carrapato (de acordo com a condição de ausência). E se o escrevemos com a condição:
if (x!=maxpr1){x=maxpr1; OrderDelete(ticketD);}
if (z!=minpr1){z=minpr1; OrderDelete(ticketUP);}
Então, quando a condição ocorre, escreve um erro de eliminação.
Como eu escrevo a eliminação das ordens especificadas nesta condição?
É sem uma condição - porque é assim que a eliminação funciona, mas com uma condição não funciona. Escrevi desta maneira para apontar o que não posso fazer. Se você escrever desta forma:
OrderDelete(ticketD);
OrderDelete(ticketUP);
Em seguida, cada carrapato elimina os pedidos já criados em cada carrapato (de acordo com a condição de ausência). E se o escrevemos com a condição:
if (x!=maxpr1){x=maxpr1; OrderDelete(ticketD);}
if (z!=minpr1){z=minpr1; OrderDelete(ticketUP);}
Então, quando a condição ocorre, escreve um erro de exclusão.
Como devemos escrever a condição sobre a eliminação das ordens especificadas?
Você não pode remover a condição para eliminar ordens!
ticketUP e ticketD devem ser escritos nas variáveis globais ao abrir um ticket
GlobalVariableSet("ticketUP",ticketUP);
GlobalVariableSet("ticketD",ticketD);
e leia a partir daí antes de apagar um bilhete pendente
ticketUP=GlobalVariableGet("ticketUP")
ticketD=GlobalVariableGet("ticketD")
A propósito, olhe lá (em global) - o que você tem, que bilhete está escrito
Penso, que depois disso tudo funcionará como deveria
{
private:
template <typename T>
T _array[];
int _index;
int _err;
int _err_sys;
public:
CArray(){_index = -1; _err = 0; _err_sys = 0;}
~CArray(){}
// template <typename T>
T operator[](int i){
if((_index == -1) || (i < 0) || (i > _index)) {_err_sys = -1;}
return (_array[i]);
}
T at(int i){
if((_index == -1) || (i < 0) || (i > _index)) {_err_sys = -1;}
return (_array[i]);
}
void push_back(T value){
_array[++_index] = value;
}
};
parte do código do programa:
#property link "https://www.mql5.com"
#property version "1.1"
#property strict
#include "Array.mqh"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
CArray *array;
int OnInit()
{
int b = 1;
array = new CArray();
array.push_back(b);
int a = array.at(0);
//---
return(INIT_SUCCEEDED);
}
...
Após tentar executar o Expert Advisor em dados reais, o seguinte erro é lançado: erro interno #-1005
O que eu faço de errado? Obrigado de antemão!