Artyom Trishkin: Así que comprueba el número de posiciones abiertas en la vela cero M15. Si ya tienes una posición y está abierta en una vela nula M15, entonces no abras más.
No sé mucho de programación, pero este módulo se ocupa de esto
b=0; for (i=OrdersTotal()-1;i>=0;i--) { RefreshRates(); if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0; if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++; }
Pero el problema es que cuando la orden se cierra por SL o TP, la siguiente señal en M15 la abrirá de nuevo.
Artyom Trishkin: Dentro de la clase, haga las impresiones de los valores. Y luego mira en el registro lo que se imprimirá cuando el script se ejecute ;)
Las impresiones sólo se pueden insertar dentro de una función, pero cómo llamar a esta función para que la impresión o la alerta funcionen no lo entiendo. ¿Puedes ayudarme arreglando mi código con tres simples variables? Hago todo como se describe en el artículo, pero el editor no lo acepta o falta algo, en todo caso un muro, por eso pido ayuda. Gracias por SKC.
Así que comprueba el número de posiciones abiertas en la vela cero M15. Si ya tienes una posición y está abierta en una vela nula M15, entonces no abras más.
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates();
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
}
No soy muy bueno programando, pero este módulo lo hace
}
Intenta hacer un control para una nueva barra en H1
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates();
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
}
if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && b==0 && opp != iTime(_Symbol,PERIOD_H1,0)) // покупка
{
opp = iTime(_Symbol,PERIOD_H1,0);
RefreshRates();
op = Ask;
Prueba un nuevo control de barra en H1
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates();
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
}
if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && b==0 && opp != iTime(_Symbol,PERIOD_H1,0)) // покупка
{
opp = iTime(_Symbol,PERIOD_H1,0);
RefreshRates();
op = Ask;
No soy muy bueno programando, pero este módulo lo hace
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates();
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
}
No, definitivamente no es eso lo que hace este trozo de código.
Tiene que comprobar que la barra de apertura de la posición en el periodo M15 no es igual a cero - entonces puede abrir una posición:
{
// код открытия позиции
}
Hola, ayúdame con las clases, ¿qué estoy haciendo mal?
clase ASDHola, ayúdame con las clases, ¿qué estoy haciendo mal?
clase ASDEmpiece por leer el artículo.
Lo leo, pero no lo entiendo bien.
Esto es lo que tengo:
clase:
{
private:
// Здесь располагаются переменные и функции, доступные только внутри класса
int c(int m_a,int m_b)
{
m_a=a+b; m_b=a-b;
int m_d=m_a+m_b;
d=m_d;
return(c(m_a,m_b));
}
public:
int a;
int b;
int d;
};
guión:
ASD ar;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
ar.a=1;
ar.b=3;
Alert(ar.d);
}
//+------------------------------------------------------------------+
La alerta da cero. ¿Qué pasa?
Lo leo, pero no lo entiendo bien.
Esto es lo que tengo:
clase:
La alerta da cero. ¿Qué pasa?
¿Es difícil insertar el código a través del botón SRC?
He insertado el código correcto para usted.
Lo leo, pero no lo entiendo bien.
Esto es lo que tengo:
clase:
{
private:
// Здесь располагаются переменные и функции, доступные только внутри класса
int c(int m_a,int m_b)
{
m_a=a+b; m_b=a-b;
int m_d=m_a+m_b;
d=m_d;
return(c(m_a,m_b));
}
public:
int a;
int b;
int d;
};
guión:
ASD ar;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
ar.a=1;
ar.b=3;
Alert(ar.d);
}
//+------------------------------------------------------------------+
La alerta da cero. ¿Qué pasa?
Dentro de la clase, haga las impresiones de los valores. Y luego mira en el registro lo que se imprimirá cuando el script se ejecute ;)