[¡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 55

 
Buscando un UMPC para usar en mi trabajo diario, ¿podría decirme si MT4 funcionará en un netbook como este http://cgi.ebay.com/4-8-TOUCH-LCD-BenQ-S6-HSDPA-UMPC-3G-NETBOOK-XP-/190490113552?pt=Laptops_Nov05&hash=item2c5a187610#ht_15003wt_1139 Es demasiado para fotografiar, así que he proporcionado un enlace.
 
afirius:
Buscando un UMPC para usar en mi trabajo de día, ¿podría decirme si MT4 funcionará en este netbook https://www.mql5.com/go?link=https://www.ebay.com/itm/4-8-TOUCH-LCD-BenQ-S6-HSDPA-UMPC-3G-NETBOOK-XP-/190490113552?hash=item2c5a187610&pt=Laptops_Nov05[hash]ht_15003wt_1139 Imagen demasiado, así que he proporcionado un enlace.

 
Sergstuddek:
Hola. Por favor, escriba el código para abrir una orden pendiente (stop) relativa a una orden ya abierta (última).


Bueno, eso es un clásico. :)

El código debería ser así:

Si hay una orden abierta, calculamos su precio de ajuste. A continuación, debemos añadir cierta distancia a este precio (puede ser negativa) - obtenemos el nivel donde se establecerá la orden pendiente. Entonces comprobamos si no hay una orden pendiente y si la distancia a la orden pendiente es mayor o igual al nivel mínimo permitido, colocamos la orden pendiente en este nivel. Esto es todo. El código debería ser así.

¿Está satisfecha su petición?

 
¿Es posible introducir los parámetros de optimización deseados en el comprobador de MT4 mediante un archivo de texto o de otro tipo?
 
Sergey_Rogozin:
¿Es posible introducir los parámetros de optimización deseados en el comprobador de MT4 con un archivo de texto o de otro tipo?
Busque un auto-optimizador en el código base
 

Conocido este artículo, intenté ejecutar el auto-optimizador, pero no me funcionó.

No tengo suficientes conocimientos.

Necesito algo más sencillo.

No obstante, gracias.

 
drknn:


Es un clásico. :)

El código de programación debería ser así:

Si hay una orden abierta, calcula su precio de ajuste. Entonces debemos añadir una cierta distancia a este precio (puede ser negativa) - obtenemos el nivel al que se establece la orden pendiente. Entonces comprobamos si no hay ninguna orden pendiente y si la distancia a la orden pendiente es mayor o igual al nivel mínimo permitido, entonces en este nivel, colocamos la orden pendiente. Esto es todo. El código debería ser así.

¿Satisfecho?

+10 Buena caña de pescar... :)

Ahora hay dos posibles desarrollos - la persona escribirá código usando este algoritmo, haciendo preguntas sobre el caso, o señalará que no es un código, sino un algoritmo y esperará una solución ya hecha... :)

 
sergeev:

Necesita una orden de bystop/slestop pendiente

¿O necesita un stop loss en una orden existente?


Primera opción: una orden pendiente de bystop/sllestop.

Por favor, escriba un código básico como plantilla para que yo pueda ver y entender.

 
drknn:


Esto es un clásico. :)

El código de programación debería ser así:

Si hay una orden abierta, calcula su precio de ajuste. Entonces debemos añadir una cierta distancia a este precio (puede ser negativa) - obtenemos el nivel al que se establece la orden pendiente. Entonces comprobamos si no hay una orden pendiente y si la distancia a la orden pendiente es mayor o igual al nivel mínimo permitido, colocamos la orden pendiente en este nivel. Esto es todo. El código debería ser así.

¿Está satisfecha su petición?


La clase es buena, pero todavía hay un problema)))

En teoría, lo entiendo, pero en la práctica, no puedo hacerlo.

#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
// Суть советника в том что сначала он открывает первый ордер на покупку
// затем выставляет стопы в две стороны
// в одну сторону как продолжене уже открытого ордера
// в другую в два раза больше в случае разворота графика
// стопы выставляются по отношению к последнему открытому советником ордеру
// с каждым новым открытием нового отложеного ордера, все старые удаляються
// а ноые отложеные стопы уже открываются относительно нового открытого ордера.
#define MAGIC  20101012
extern double Lot=1;            // Размер лота
extern int TP=0;                // Тейкпрофит
extern int SL=0;                // СтопЛосс
extern int DS=0;                // Дистанция  для открытия ордера в противоположну сторону
int buys=0,sells=0;
int i=0;
//-----------------------------------------------------
void DeleteStopOrders()
{
  int res;
  for(int i=0;i<OrdersTotal();i++)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
    {
      if(OrderType()==OP_SELLSTOP)
        res=OrderDelete(OrderTicket());
      if(OrderType()==OP_BUYSTOP)
        res=OrderDelete(OrderTicket());
     }
  }
}
        
void OpenBuy()
    
   {
   int tickbuy2  =OrderSend(Symbol (), OP_BUY, Lot,  NormalizeDouble(Ask,Digits), 5, Ask-SL*Point,Ask+TP*Point, NULL, MAGIC, 0, Green); // покупка первого ордера при запуске советника
   }
//+------------------------------------------------------------------+
//| считаем количество открытых ордеров                              |
//+------------------------------------------------------------------+
int CalculateCurrentOrders1(string symbol)
{
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   return(buys+sells);   
}
//+------------------------------------------------------------------+
//| считаем количество отложеных ордеров                              |
//+------------------------------------------------------------------+
int CalculateCurrentOrders2(string symbol)
{
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUYSTOP)  buys++;
         if(OrderType()==OP_SELLSTOP) sells++;
        }
     }
//---- return orders volume
   return(buys+sells);   
}

int OpenStops()

{for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderType()==OP_BUY)   // Проверка на то что открытый ордер на покупку
int ticket;
double LotSize=OrderLots();                                                                                 // Размер лота открытого ордера
double OpenPrice=OrderOpenPrice();                                                                          // Цена открытия открытого ордера
ticket=OrderSend(Symbol(),OP_SELLSTOP,LotSize*2,OpenPrice-DS*Point,0,SL*Point,TP*Point,"",MAGIC,0,Red);            // Открытие отложки на продажу в противополжну сторону до открытого ордера   
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lot,OpenPrice+TP*Point,0,SL*Point,TP*Point,"",MAGIC,0,Blue);                  // Открытие отложки на покупку в сторону продолжения до открытого ордера

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderType()==OP_SELL)  // Проверка на то что открытый ордер на продажу
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,OpenPrice-TP*Point,0,SL*Point,TP*Point,"",MAGIC,0,Red);                  // Открытие отложки на покупку в сторону продолжения до открытого ордера
ticket=OrderSend(Symbol(),OP_BUYSTOP,LotSize*2,OpenPrice+DS*Point,0,SL*Point,TP*Point,"",MAGIC,0,Blue);            // Открытие отложки на покупку в противополжну сторону до открытого ордера
}
}
  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
  if (CalculateCurrentOrders1(Symbol())==0)
   OpenBuy();
  if (CalculateCurrentOrders2(Symbol())<=1)
  DeleteStopOrders();
  if (CalculateCurrentOrders2(Symbol())<=1)
   OpenStops();
//----
   return(0);
Entiendo que es un simple EA, pero apenas estoy comenzando mi viaje)))) y ya tengo un problema
 

Pregunta sobre el indicador.

El indicador es un indicador cruzado. Atrae muchas flechas hacia un lado, y luego muchas hacia el otro. Cómo hacer que sólo los primeros sean sorteados. Lo he probado de la forma que se indica en el código, pero cambia cuando cambio de marco.

Por favor, aconseja cómo hacerlo correctamente.

 for(int i=limit-1;i>=0;i--)
   {      
         if ( s == 0 &&    условие продажи)
               {Продажа[i] = High[i]+point*Point;            
                s=1; b=0;}               
      
         if (b == 0 &&     условие покупки)
        
          
              {Покупка[i] = Low[i]-point*Point; 
               s=0; b=1;}
   }
Razón de la queja: