[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 510

 
hoz:
La cuestión es la siguiente. Si quiero colocar una orden pendiente de límite que se active exactamente en la apertura de la barra del día, es decir, la barra en TF D1. ¿Cómo debo aplicarlo? Realmente no entiendo la lógica. Al fin y al cabo, no necesito poner un simple limitador, sino un limitador que funcione exactamente a una hora determinada, es decir, a la apertura de una nueva barra del día.
En primer lugar, decida con la terminología - "Límite que se desencadenará exactamente en un momento determinado" - ¿qué significa "Límite desencadenado"? Y cuanto más explique este proceso mágico - más fácil será implementarlo en la vida real. Por si acaso, lea sobre las órdenes pendientes.
 
Dimka-novitsek:

¡Buenas noches! Estoy perplejo. Tengo dos pedidos abiertos en el probador, uno con takeprofit y otro sin él.

¡¡¡¡Ambos toman beneficios a la vez!!!!

He pasado por este lugar ocho veces en el probador. No puedo entenderlo.

Tal vez pueda compartir un secreto: "¿Por qué crear un clon de una orden abierta? ¿No se puede abrir UNA orden con un lote más grande? ;)
 
Es una estrategia. Puede que ahora haga una captura de pantalla. Mi hermano mayor está aquí. No puedo llegar a tiempo. Sin embargo, es una situación extraña.
 
¿es correcto comparar los formatos de fechas así?
datetime t=OrderCloseTime();
             datetime t1=Time[1];
             datetime t0=Time[0];
             if(t1>=t&&t<t0){
               p++;
             }
 
Dimka-novitsek:
Esto es una estrategia. Puede que ahora haga una captura de pantalla. Mi hermano mayor está aquí. No puedo llegar a tiempo. Es una situación extraña.

Cuando Diman, ¿podrá utilizar una CAMPAÑA PERSONAL)?

¿Has ganado dinero en un año en el mundo real? Es como las cantidades de START que se te asignan, ¿no?)

 
TarasBY:
En primer lugar, defina la terminología: "el límite que se activará exactamente en un momento determinado", ¿qué significa "el límite se activa"? Y cuantos más detalles des sobre este proceso mágico, más fácil será aplicarlo en la vida real.


Sí, me expresé mal. Quiero decir, básicamente. Si está claro aquí, el péndulo sólo se pone en el precio.

Aquí está el código:

//+------------------------------------------------------------------+
//|                                                       2 Days.mq4 |
//|                                                              hoz |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "hoz"
#property link      ""

extern string    A1 = "Объем сделки. Если i_lots = 0, то считается в процентах";
extern double    i_lots = 0.1;
extern string    A2 = "Управление рисками";
extern double    i_sl = 15,
                 i_tp = 10;
extern int  slippage,
            price_b,
            price_a;

extern string    Z1 = "=== Прочие настройки ===";
extern string    i_openOrderSound = "ok.wav";
extern int       i_magicNumber = 400021;

double firstBarClosed,
       secondBarClosed;
 
// Идентификаторы типов сигналов
#define SIGNAL_BUY              1                     // Сигнал на покупку
#define SIGNAL_SELL            -1                     // Сигнал на продажу
#define SIGNAL_NO               0                     // Нет сигнала

#include <stderror.mqh>

int init()
{
   
   return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
   return(0);
}
//+------------------------------------------------------------------+
//+-------------------------------------------------------------------------------------+
//| Получение рыночных данных                                                           |
//+-------------------------------------------------------------------------------------+
//FindOrders()
//+-------------------------------------------------------------------------------------+
//| Получение рыночных данных                                                           |
//+-------------------------------------------------------------------------------------+
void GetMarketInfo()
{
  price_b = MarketInfo(Symbol(),MODE_BID);
  price_a = MarketInfo(Symbol(),MODE_ASK);
}
//+-------------------------------------------------------------------------------------+
//| Открытие позиций                                                                    |
//+-------------------------------------------------------------------------------------+
bool Trade(int signal, double& priceForBuy, double& priceForSell)
{
 // FindOrders();
  priceForBuy = NormalizeDouble(priceForBuy,Digits);
  priceForSell = NormalizeDouble(priceForSell,Digits);
  
  if(!IsTesting())
     GetMarketInfo();
     
  if (signal == SIGNAL_BUY)
     if (!OrderSend(Symbol(),OP_BUYLIMIT, i_lots,priceForBuy,slippage,i_sl,i_tp,"",i_magicNumber,3))
     return(false);
     
  if (signal == SIGNAL_SELL)
     if (!OrderSend(Symbol(),OP_SELLLIMIT,i_lots,priceForSell,slippage,i_sl,i_tp,"",i_magicNumber,3))
     return(false);
     
  return(true);
}
//+-------------------------------------------------------------------------------------+
//| Получение цены входа в покупку или в продажу                                        |
//+-------------------------------------------------------------------------------------+
double GetPriceToInput()
{
  firstBarClosed = iClose(Symbol(),1440,2);
  secondBarClosed = iClose(Symbol(),1440,1);
    
  {
    double deltaForSell = (firstBarClosed - secondBarClosed)/2;
    double priceForSell = secondBarClosed - deltaForSell;
    
    return(priceForSell);
  }  

  {
    double deltaForBuy = (secondBarClosed - firstBarClosed)/2;
    double priceForBuy = secondBarClosed + deltaForBuy;  
    return(priceForBuy);
  }
}
//+-------------------------------------------------------------------------------------+
//| Генерация сигнала закрытия, покупки или продажи                                     |
//+-------------------------------------------------------------------------------------+
int GetSignal()
{
  if(firstBarClosed > secondBarClosed)
  return(SIGNAL_BUY);

  if(firstBarClosed < secondBarClosed)
  return(SIGNAL_NO);
}
//+-------------------------------------------------------------------------------------+
//| Функция Start                                                                       |
//+-------------------------------------------------------------------------------------+
int start()
{
  int signal = GetSignal();
    
    if (signal != SIGNAL_NO)
      if(!Trade(signal, priceForBuy, priceForSell))
      return(0);

  return(0);
}


La cuestión, de hecho, no es muy complicada. He pasadolos parámetros formales priceForBuy y priceForSell a la función Trade(int signal, double& priceForBuy, double& priceForSell). Los parámetros se pasan por los enlaces. ¿No se hace así? Las funciones son locales, no globales.

Se ha producido un error durante la compilación:

'priceForBuy' - variable not defined    E:\Insall'd soft's\Forex\Admiral Markets\experts\2 Days.mq4 (117, 25)
'priceForSell' - variable not defined   E:\Insall'd soft's\Forex\Admiral Markets\experts\2 Days.mq4 (117, 38)

¿De dónde viene el error? Ya he definido estos parámetros en la funciónGetPriceToInput().

 
¿Para qué sirve el doble de pretzel y after (sinceramente no lo sé)?
 
YOUNGA:
¿y para qué sirve el doble de pretzel y after (sinceramente no lo sé)?

Es una obsesión por querer pasar parámetros por referencia. :-)

 
Roman.:

Es una obsesión por querer pasar parámetros por referencia. :-)



¿Cómo si no? ¿Lo mismo para calcular 100 veces?
 
hoz:


Sí, me equivoqué. En general. Si está claro aquí, la orden pendiente se establece sólo por el precio.

Aquí está el código:

La cuestión es esencialmente sencilla. He pasado los parámetros formales priceForBuy y priceForSell a la función Trade(int signal, double& priceForBuy, double& priceForSell). Los parámetros se pasan por los enlaces. ¿No se hace así? Las funciones son locales, no globales.

Se ha producido un error durante la compilación:

¿De dónde viene el error? Ya he definido estos parámetros en la funciónGetPriceToInput().

Las variables precioParaComprar y precioParaVender no fueron encontradas - el compilador dice. Tienes que averiguar cómo pasar los valores de las variables por referencia.