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

 
Elenn:


Qualquer variável é perdida quando você sai do programa (reiniciar o computador, etc.). Exceto variáveis globais, porque elas são armazenadas no disco rígido. Mas eles só podem ser do tipo duplo. O que fazer, se for necessário armazenar variáveis de outros tipos (int ou string, por exemplo)? O que não está claro aqui?

O tipo de variável.

Isto é, o P.G. só pode ser números reais. Também é possível declarar qualquer variável global para um determinado programa dentro do programa, diz aqui

 

Saudações MQL gurus !

Ajude um novato a escrever um código: sei que é fácil para você, mas para um novato .....

A condição - fechar várias posições abriu um lado de cada vez de acordo com a mesma condição (para mim, após o preço ter atravessado um MA)

Há alguns dias estou tentando, usei alguns exemplos dos scripts de Kim e Sergey (não há mais informações sobre ele), mas nada funciona.

Tenho três pedidos abertos e apenas o último tem que fechar por condição.

De acordo com a condição, mas um de cada vez. Quero que todos eles sejam fechados de uma só vez na primeira travessia.

Foi assim que eu tentei, agora não fecha de forma alguma.


//+
+
//| Verifique o fechamento do pedido Comprar |
//+ +
void CheckForClosebuy() {
double maclosebuy;
//---- go trading only for first tiks of new bar
if(Volume[0]>1) return;
// get Moving Average
maclosebuy=iMA(NULL,TF,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//
for(int i=0;i<OrderMagicNumber()==MAGIC;i++)
{
while (i>0)
{

if (Open[1]>maclosebuy && Close[1]<maclosebuy)
OrderClose(OrderTicket(),OrderLots(),Bid,3,Aqua);
continue;
}
}
return(0);
}

 
Elenn:

"Não reclamar" não é realmente um conceito matemático.

Está escrito aqui:


variáveis globais do terminal do cliente, elas são duplas - https://book.mql4.com/ru/variables/globals elas são para troca entre EAs

E há apenas variáveis globais, elas podem ser de qualquer tipo https://book.mql4.com/ru/variables/types elas estão dentro de uma EA

Qual é a sua tarefa?

 

Boa noite! Estou totalmente perplexo aqui. Estou mexendo com o código, que deve abrir dois pedidos, comprar e vender, e é isso. Parece não ser um código muito inteligente, tudo parece claro, mas abre cinco pedidos, e é isso! Eu porei por cima de seus alertas durante a depuração, mas acabou sendo uma coisa absolutamente incrível, ele primeiro abre duas barras (2011.06.04 20:20:48 2011.02.10 19:00 para avalanche EURUSD, H1: Alerta: OrderType ( )0) Não pode, não pode ser!!!!!! Bem, ele não tem nada com que abri-los! De jeito nenhum!!!!!

Tem apenas um pedido tipo OP_BUYSTOP e OP_SELLSTOP. E a distâncias de 20pp para cima e para baixo.

Meu computador está com problemas?

Eu cito // 0 - OP_BUY comprar
1 - OP_SELL venda
2 - OP_BUYLIMIT pendente Limite de compra
3 - OP_SELLLIMIT adiado Limite de Venda
4 - OP_BUYSTOP Pendente da Buy Stop
5 - OP_SELLSTOP Pending Sell Stop

Não pode haver nenhum outro valor.


//

De qualquer forma, não estou chocado, mas estou em um impasse. Abaixo está o código e a captura de tela

//+------------------------------------------------------------------+
//|                                                   ля лавин б.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
extern double stoploss=0; extern double takeprofit=20;extern int otstup=20; extern datetime expiration=0;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
  
  
  
  int tiket,tikett;double volume=0.1;int i=0,R1=0,R2=0,A=1 ;double price; int stsBUY;int stsSELL;double Price;int C=0;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
int X,Y; double price=(Ask+Bid)/2;            

       Alert ("OrdersTotal()",OrdersTotal());
       
       if(C==0){ Price = price ;  C=1;}


 for(int i=OrdersTotal();i>0;i--){Alert ("i", i);Alert ("OrderType( )", OrderType( ));OrderSelect(i,SELECT_BY_POS );if(OrderSymbol()==Symbol()&&OrderMagicNumber( )==1000){
if(OrderType( )==OP_BUYSTOP){X++;Alert ("X-v tsikle", X);}}}Alert ("X", X);
if (X==0){Alert ("Price", Price);Alert ("Price +otstup*Point",Price +otstup*Point);Alert ("Price+takeprofit*Point+otstup*Point", Price+takeprofit*Point+otstup*Point);


   tiket= OrderSend( Symbol(), OP_BUYSTOP,  volume*A, Price +otstup*Point, Point* 3, R1, Price+takeprofit*Point+otstup*Point, "OP_BUYSTOP", 1000,  expiration, Red); 
   Alert ("OP_BUYSTOP", GetLastError( )); }
   

 for ( i=OrdersTotal();i>0;i--){Alert ("i", i);Alert ("OrderType( )", OrderType( )); OrderSelect(i,SELECT_BY_POS );if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()) { 
if(OrderType( ) ==OP_SELLSTOP) { Y++;Alert ("Y-v tsikle", Y);}}}Alert ("Y", Y);
 if (Y==0){ 
 
 
   tikett= OrderSend( Symbol(), OP_SELLSTOP,  volume*A, Price -otstup*Point, Point* 3,R2, Price-takeprofit*Point-otstup*Point, "OP_SELLSTOP" , 2000,  expiration,C'0,128,255' );
    Alert ("OP_SELLSTOP", GetLastError( )); 
    } 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+

Eu simplesmente não sei o que pensar sobre isso.

 

As variáveis X b Y são o número de ordens de bypass e de vendas.

No registro, você pode ver que a ordem é acionada primeiro, contornando a ordem, e não há erro. De repente, quando verificamos o tipo de pedido, temos um pedido de compra com uma constante numérica de zero. etc.

Talvez a função de garantia esteja com falhas?

E só então, as ordens 5 e 4 aparecem!!!


 
Dimka-novitsek:

Boa noite! Estou totalmente perplexo aqui.

Tenho a impressão de que você está sem esperança. Você já tem um conselheiro feito peça por peça, e você coloca os erros antigos em cada nova versão. Substituir tudo

 for(int i=OrdersTotal();i>0;i--)

com .

 for(int i=OrdersTotal()-1;i>=0;i--)
 
Snaf:


Qual é a sua tarefa?

Minha tarefa é ser capaz de armazenar diferentes tipos de dados e poder acessá-los rapidamente. Acho que seria longo através dos arquivos. Através das variáveis globais podem ser rápidas, mas elas só podem armazenar o dobro do tipo. Isso é o que estou pensando.
 
Elenn:
Meu objetivo é ser capaz de armazenar diferentes tipos de dados com a capacidade de acessá-los rapidamente. Acho que o uso de arquivos levaria muito tempo. As variáveis globais podem ser rápidas, mas só podem armazenar o dobro do tipo. Então eu me pergunto o que fazer.
Não vai demorar muito tempo através de um arquivo. Será bastante rápido. Há ainda outra variante. Você pode armazenar dados em objetos gráficos. Os nomes são escritos com antecedência, e você pode armazenar os tipos inteiro e fracionário em valores, data em coordenadas de data. O tipo de fio na descrição do objeto
 
Armazenar dados em objetos. Fácil e rápido de pegar. Fácil de pesquisar. Fácil de pesquisar. Conveniente.
 
Porter:
Armazenar dados em objetos. Fácil e rápido de pegar. Fácil de pesquisar. Fácil de pesquisar. Conveniente.

E como funciona o armazenamento de objetos e o que acontece com os objetos em caso de uma falha do computador?
Razão: