[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 81

 

externo bool BUY = true;
extern int Magic = 0;
extern double Lot = 0.1;
extern int takeprofit = 0;
extern int stoploss = 0;
extern int slippage = 3;
double SL,TP;
int init(){
return(0);
}
int start()
{
if (BUY)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;

BUY=false;
}

return(0);
}
void OPENORDER(string ord)
{
int error;
while (true)
{ error=true;
if (ord==="Buy") error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,",Magic,0){BUY = false;}
}
retorno;
}

 
nemo811:

Por favor, me dê um exemplo. Estou apenas aprendendo, e ainda não enfrentei a tarefa de hastear uma bandeira. )
Basta mudar a variável para falsa e pronto, no próximo sinal a EA não entrará neste bloco e não abrirá mais nada até que seja reiniciada.
 
nemo811:

Favor aconselhar como permitir uma única execução de uma condição em uma EA (por exemplo, abrir uma ordem), em vez de repeti-la a cada tique. Neste caso, ao fechar uma posição, a EA não deve abrir uma nova posição. Tentei visualizá-lo, mas não funciona como pretendido.

Obrigado de antemão.



por que você nomeou a variável onde o bilhete de pedido será salvo erro?

if (ord==="Buy") error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0)}{BUY = false;}

Leia sobre OrderSend(), eu acho que as perguntas vão desaparecer, eu escreveria assim:

void OPENORDER(string ord)
{
int ticket = -1;
 while (ticket<0)
 {ticket=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0);
  sleep(500);
}
return;
}
 
IgorM:



Talvez você tenha lido antes, eu expressei meu problema. Eles parecem ter encontrado uma solução, mas eu não consigo encontrar no livro como trabalhar com fio em mql(

como tirar os números da linha por linha?

 
NameLess:


Talvez você tenha lido antes, eu expressei meu problema. Eles parecem ter encontrado uma solução, mas eu não consigo encontrar no livro como trabalhar com fio em mql(

como tirar os números da linha por linha?


Crie um script para experimentar as funções de string MQL4 - veja aqui https://docs.mql4.com/ru/strings
 

ZERO

sob que regras, por exemplo?

 
drknn:

Crie um script que experimente as funções de string MQL4 - veja aqui https://docs.mql4.com/ru/strings/StringSubstr

Obrigado!
 
NameLess:


Talvez você tenha lido um pouco antes, eu expressei meu problema. Parece ser uma solução, mas não consigo encontrar uma maneira de trabalhar com cordas em mql no livro (

como tirar um número de uma seqüência de números?

para converter um número em um fio https://docs.mql4.com/ru/convert/DoubleToStr

cortar uma parte do cordel https://docs.mql4.com/ru/strings/StringSubstr desde o início https://docs.mql4.com/ru/strings/StringLen

e convertê-lo de volta ao tipo real https://docs.mql4.com/ru/convert/StrToDouble

isso é tudo que você precisa fazer com cordas, talvez StrToDouble() seja suficiente para você.

Outra maneira: multiplique um número real para potência de x por 10, e dê o resultado para o tipo int - se não estou enganado, não haverá arredondamento, então divida int por 10 para potência de x.

 
IgorM:

traduzir um número para a cadeia https://docs.mql4.com/ru/convert/DoubleToStr

cortar uma parte do cordel https://docs.mql4.com/ru/strings/StringSubstr desde o início de https://docs.mql4.com/ru/strings/StringLen

e converter tudo de volta para um tipo real https://docs.mql4.com/ru/convert/StrToDouble

isso é tudo que você precisa fazer com cordas, talvez StrToDouble() seja suficiente para você.

Outra maneira: multiplique um número real por 10 até o poder de x, e dê o resultado ao tipo int - se não estou enganado, não haverá arredondamento, então divida int por 10 até o poder de x


pelo menos *cortado*, pois o número só pode ser tirado do indicador para um fio... obrigado pelo conselho, vou experimentar)
 

IgorM:

Sem nome :

Obrigado pela ajuda. Entendo a lógica com a colocação da bandeira e a função de devolver o número de pedidos. Mas também estou interessado no momento em que o pedido é fechado. Parece que a condição da bandeira tenta colocar uma ordem novamente, mas a função de devolução do número de ordem diz que há menos 1 ordem e inicializa a abertura de uma posição também. Corrija-me se me escapou alguma coisa.