[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 88

 

Tudo estava aqui C:UTILIZADORES======AppData_Local_VirtualStore====== - MetaTrader

vista

 

Por favor, informe.

Escrevi um script simples (coloquei dois pingentes próximos ao mercado para colocá-lo no gráfico antes do lançamento da notícia, para não ter que fazê-lo manualmente). Parece ser muito mais fácil, mas não funciona, nenhuma ordem é aberta e o diário apenas diz que o script é carregado com sucesso, e então imediatamente removido no mesmo segundo! Compila sem erros. Eu o converti em forma de especialista, ou seja, adicionado ininit e deinit, para verificá-lo no testador, ele funcionou. Mas, como você entende, eu não preciso de um consultor especializado, mas apenas de um roteiro.

O que está errado aqui? Agradecemos antecipadamente.

Aqui está o código do roteiro:

#propriedade copyright "alexey15"
#ligação de propriedade ""
#property show_confirmar

externo int SL = 15;
externo int TP = 90;
DELTA int externo = 15;
duplo LOT externo = 0,1;
externo int SLIP = 3;

//+------------------------------------------------------------------+
//| função de início do programa de script |
//+------------------------------------------------------------------+
int start()
{
//----
BUYPRICE duplo = Ask + DELTA*Point;
SELLPRICE duplo = Bid - DELTA*Point;
int OPEN_ORDER;

OPEN_ORDER=OrderSend(Symbol(),OP_BUYSTOP,LOT,BUYPRICE,SLIP,BUYPRICE-SL*Point,BUYPRICE+TP*Point,NULL,0,0,Blue);
OPEN_ORDER=OrderSend(Symbol(),OP_SELLSTOP,LOT,SELLPRICE,SLIP,SELLPRICE+SL*Point,SELLPRICE-TP*Point,NULL,0,0,Red);


//----
retorno(0);
}
//+------------------------------------------------------------------+

 
wiwkin52:

Olá. Por favor, ajude. Desinstalei o mt e todos os indicadores junto com ele, todos eles. Agora eu o instalei e tudo ainda está lá. O que eu devo fazer? Talvez haja cópias de indicadores e tudo mais armazenado em algum lugar?

Você só desinstalou ou também excluiu a pasta MT dos Arquivos de Programas?
 
alexey15:

Por favor, informe.

Escrevi um script simples (colocando dois pingentes em ambas as direções próximas ao mercado para colocá-lo no gráfico antes do lançamento da notícia, para não ter que fazê-lo manualmente). Parece ser muito mais fácil, mas não funciona, nenhuma ordem é aberta e o diário apenas diz que o script é carregado com sucesso, e então imediatamente removido no mesmo segundo! Compila sem erros. Eu o converti em forma de especialista, ou seja, adicionei init e deinit, para verificá-lo no testador, ele funcionou. Mas, como você entende, eu não preciso de um consultor especializado, mas apenas de um roteiro.

O que está errado aqui? Agradecemos antecipadamente.

Aqui está o código do roteiro:


Eu o verifiquei. Seu roteiro funciona.

Imprima o erro só por precaução:

int start()
{
//----
double BUYPRICE = Ask + DELTA*Point;
double SELLPRICE = Bid - DELTA*Point;
int TicketBS,TicketSS;
TicketBS=OrderSend(Symbol(),OP_BUYSTOP,LOT,BUYPRICE,SLIP,BUYPRICE-SL*Point,BUYPRICE+TP*Point,NULL,0,0,Blue);
TicketSS=OrderSend(Symbol(),OP_SELLSTOP,LOT,SELLPRICE,SLIP,SELLPRICE+SL*Point,SELLPRICE-TP*Point,NULL,0,0,Red);
 if(TicketBS<=0 || TicketSS<=0)Print("Error = ",GetLastError());
//----
return(0);
}

 
alexey15:

Por favor, informe.

Escrevi um script simples (colocando dois pingentes em ambas as direções próximas ao mercado para colocá-lo no gráfico antes do lançamento da notícia, para não ter que fazê-lo manualmente). Parece ser muito mais fácil, mas não funciona, nenhuma ordem é aberta e o diário apenas diz que o script é carregado com sucesso, e então imediatamente removido no mesmo segundo! Compila sem erros. Eu o converti em forma de especialista, ou seja, adicionado ininit e deinit, para verificá-lo no testador, ele funcionou. Mas, como você entende, eu não preciso de um consultor especializado, mas apenas de um roteiro.

O que está errado aqui? Agradecemos antecipadamente.

Funciona com o número de quatro dígitos. Não o verifiquei em níveis de cinco dígitos, mas acrescentei uma verificação de restrições no StopLevel:

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
extern int SL     = 15;
extern int TP     = 90;
extern int DELTA  = 15;
extern double LOT = 0.1;
extern int SLIP   = 3;

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
int StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL);
if (DELTA <= StopLevel) DELTA = StopLevel+1;

double BUYPRICE = Ask + DELTA*Point;
double SELLPRICE = Bid - DELTA*Point;
int OPEN_ORDER;

OPEN_ORDER=OrderSend(Symbol(),OP_BUYSTOP,LOT,BUYPRICE,SLIP,BUYPRICE-SL*Point,BUYPRICE+TP*Point,NULL,0,0,Blue);
OPEN_ORDER=OrderSend(Symbol(),OP_SELLSTOP,LOT,SELLPRICE,SLIP,SELLPRICE+SL*Point,SELLPRICE-TP*Point,NULL,0,0,Red);

//----
return(0);
}
//+------------------------------------------------------------------+
Em princípio, você pode fazer ajustes de pontos de quatro, cinco dígitos para evitar erros. Porque o nível Delta deveria ser dez vezes maior em cinco dígitos, ou seja, 150 em vez de 15, e as paradas e as tomadas de acordo...

Então, ficaria assim:

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
extern int SL     = 15;
extern int TP     = 90;
extern int DELTA  = 15;
extern double LOT = 0.1;
extern int SLIP   = 3;

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
double PointX;

if(Digits==5 || Digits==3) PointX = Point * 10;    // Корректировка Point под трёх- пятизнак
if(Digits==4 || Digits==2) PointX = Point;

int StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL);
if (DELTA <= StopLevel) DELTA = StopLevel+1;

double BUYPRICE = Ask + DELTA*PointX;
double SELLPRICE = Bid - DELTA*PointX;
int OPEN_ORDER;

OPEN_ORDER=OrderSend(Symbol(),OP_BUYSTOP,LOT,BUYPRICE,SLIP,BUYPRICE-SL*PointX,BUYPRICE+TP*PointX,NULL,0,0,Blue);
OPEN_ORDER=OrderSend(Symbol(),OP_SELLSTOP,LOT,SELLPRICE,SLIP,SELLPRICE+SL*PointX,SELLPRICE-TP*PointX,NULL,0,0,Red);

//----
return(0);
}
//+------------------------------------------------------------------+
 

Bom dia!

Alguém tem alguma dica sobre os índices...?

 
volshebnik:

Bom dia!

Alguém tem alguma dica sobre os índices...?

Certo, os índices.
 
splxgf:
Certo, os índices.
Não tem graça ) A pergunta estava aqui - https://www.mql5.com/ru/forum/131277/page87 Mas como os administradores do fórum não recomendam a repetição de perguntas, eu não a postei novamente.
 
volshebnik:

Olá !

Você pode me dizer o que está errado? Estou usando o testador no GBPUSD - ele abre as negociações como deve ser. Estou usando-o no índice do dólar DXH1 - não abre muitos negócios, o erro "130" - Paradas incorretas. Além disso, não está claro o que está errado - ele abre e não abre em situações semelhantes, mas mais do que isso. Nível de spread e stop para o Índice do Dólar -100 e 200. Nível de spread e stop para GBPUSD -3 e 4. Preços no índice do dólar, por exemplo, 78.150, no par - 4 casas decimais. Mas é contabilizado.

Aqui está uma parte do código :


Logo no topo da minha cabeça:

1) SL e TP são não-normalizados;

2) OrderSend utiliza Dígitos ao normalizar, enquanto o pedido é feito pela Symb.

Tente desta forma:

int opDigits=MarketInfo(Symb,MODE_DIGITS);
SL = NormalizeDouble(SL,opDigits);
TP = NormalizeDouble(TP,opDigits);
ОткрФрвверх = NormalizeDouble(ОткрФрвверх,opDigits);
ticketup=OrderSend(Symb, OP_BUYSTOP, Lot, ОткрФрвверх,0, SL, TP,NULL,A,0,вверх); // Ордер вверх
 
PapaYozh:


Num palpite:

1) SL e TP não são normalizados;

2) OrderSend utiliza dígitos para a normalização, enquanto que o pedido é estabelecido pela Symb.

Tente desta forma:

Muito obrigado! Funcionou, mas raramente, às vezes ocorre o mesmo erro - 130....... ( É sempre necessário normalizar as paradas ou apenas nos índices? (apenas nas paradas de moedas sempre funcionaram, em minha opinião, sem normalização).