[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 425

 
Elenn:


Las variables se pierden al salir del programa (reiniciar el ordenador, etc.). Excepto las variables globales, porque se almacenan en el disco duro. Pero sólo pueden ser de tipo double. ¿Qué hacer si es necesario almacenar variables de otros tipos (int o string, por ejemplo)? ¿Qué es lo que no está claro aquí?

El tipo de variable.

Es decir, los P.G. sólo pueden ser números reales. También es posible declarar cualquier variable global para un programa dado dentro del programa, dice aquí

 

¡Saludos gurús de MQL !

Ayuda a un novato a escribir un código : Sé que es fácil para ti, pero para un novato .....

La condición - cerrar varias posiciones abiertas un lado a la vez de acuerdo con la misma condición (para mí, después de que el precio ha cruzado una MA)

Llevo un par de días intentándolo, he utilizado algunos ejemplos de los scripts de Kim y Sergey (no hay más información sobre él), pero nada funciona.

Tengo tres órdenes abiertas y sólo la última tiene que cerrarse por condición.

Según la condición, pero de uno en uno. Quiero que se cierren todos a la vez en el primer cruce...

Así es como lo he probado, ahora no se cierra en absoluto.


//+------------------------------------------------------------------+
//| Comprobar el cierre de la orden de compra |
//+------------------------------------------------------------------+
void CheckForClosebuy()
{
double maclosebuy;
//---- operar sólo en los primeros momentos de la nueva barra
if(Volume[0]>1) return;
//---- obtener la media móvil
maclosebuy=iMA(NULL,TF,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//----
for(int=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:

"No quejarse" no es realmente un concepto matemático.

Está escrito aquí:


Existen variables globales del terminal del cliente, son dobles - https://book.mql4.com/ru/variables/globals son para intercambiar entre EAs

Y sólo hay variables globales, pueden ser de cualquier tipo https://book.mql4.com/ru/variables/types están dentro de un EA

¿Cuál es su tarea?

 

¡Buenas noches! Estoy totalmente perplejo aquí. Estoy trasteando con el código, que debería abrir dos órdenes, buystop y sellstop, y ya está. Parece un código no muy inteligente, todo parece claro, pero abre cinco órdenes, ¡y ya está! ¡¡¡¡¡¡Yo estudié a fondo sus alertas durante la depuración, pero resultó una cosa absolutamente sorprendente, primero abre dos barras (2011.06.04 20:20:48 2011.02.10 19:00 para la avalancha EURUSD, H1: Alerta: OrderType ( )0) No puede, no puede ser!!!!!! Bueno, ¡no tiene nada con qué abrirlos! ¡¡¡¡¡No hay manera!!!!!

Sólo tiene un tipo de orden OP_BUYSTOP y OP_SELLSTOP. Y a distancias de 20pp arriba y abajo.

¿Mi ordenador tiene problemas de funcionamiento?

Cito // 0 - OP_BUY comprar
1 - OP_SELL vender
2 - OP_BUYLIMIT pendiente de límite de compra
3 - OP_SELLLIMIT Límite de venta diferido
4 - OP_BUYSTOP pendiente de Buy Stop
5 - OP_SELLSTOP Tope de venta pendiente

No puede haber otros valores.


//

De todos modos, no estoy sorprendido, pero estoy en un punto muerto. A continuación se muestra el código y la captura de pantalla

//+------------------------------------------------------------------+
//|                                                   ля лавин б.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);
  }
//+------------------------------------------------------------------+

No sé qué pensar de ello.

 

Las variables X b Y son el número de órdenes de bypass y sellstop.

En el registro, se puede ver que la orden se activa primero, pasando por alto la orden, y no hay ningún error. Entonces, de repente, resulta que cuando comprobamos el tipo de orden, tenemos una orden de compra con una constante numérica de cero. etc.

¿Tal vez la función de envío de órdenes de compra tiene un fallo?

Y sólo entonces, ¡¡¡aparecen los pedidos 5 y 4!!!


 
Dimka-novitsek:

¡Buenas noches! Estoy totalmente perplejo aquí.

Tengo la impresión de que no tiene remedio. Ya tienes un asesor hecho a pulso, y metes los viejos errores en cada nueva versión. Reemplazar todo

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

con .

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


¿Cuál es su tarea?

Mi tarea es poder almacenar diferentes tipos de datos y poder acceder a ellos rápidamente. Creo que sería largo a través de archivos. A través de las variables globales puede ser rápido, pero sólo pueden almacenar el tipo de doble. Eso es lo que estoy pensando.
 
Elenn:
Mi objetivo es poder almacenar diferentes tipos de datos con la posibilidad de acceder a ellos rápidamente. Creo que se necesitaría mucho tiempo para utilizar los archivos. Las variables globales pueden ser rápidas, pero sólo pueden almacenar el tipo double. Así que me pregunto qué hacer.
No tardará mucho en pasar por un archivo. Será bastante rápido. Existe otra variante. Puede almacenar datos en objetos gráficos. Los nombres se escriben por adelantado, y se pueden almacenar tipos enteros y fraccionarios en los valores, y la fecha en las coordenadas de fecha. El tipo de cadena en la descripción del objeto
 
Almacenar datos en objetos. Fácil y rápido de recoger. Fácil de buscar. Fácil de buscar. Conveniente.
 
Porter:
Almacenar datos en objetos. Fácil y rápido de recoger. Fácil de buscar. Fácil de buscar. Conveniente.

¿Y cómo funciona el almacenamiento de objetos y qué ocurre con ellos en caso de fallo del ordenador?