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

 

Hola a todos.

Ayúdame.

Escribí un simple script para abrir una orden (desde el tutorial de MQL4).

int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
   Alert (GetLastError());
   return;                                   // Выход из start()
  }

En este ejemplo el código se da para los instrumentos con 4 dígitos.

Tengo una cuenta en una empresa que tiene 5 dígitos después del punto.

Por favor, modifique el código para 5 dígitos y por qué se muestra el error 4109 (comercio no permitido) cuando se ejecuta el script.

 
sss2019: Si establezco el tipo de arrays int, y si recorro cada elemento, puedo ver que los valores del array coinciden con los valores calculados, pero si el tipo es Int, las líneas del indicador no se muestran en la ventana.

Si pongo el tipo de array double, el array almacena más valores que no sé de dónde salen, por ejemplo, 21456545454, 43654534532, 24325235232, etc. Que no se corresponden en absoluto con los valores calculados.

¿Cuál puede ser el problema?

Hay que apelar a los telépatas. Pero es muy posible que el problema sea una incoherencia al dividir números reales entre enteros.
 

Hola, por favor, pueden ayudarme a tratar el indicador. La idea es, con la apertura de la sesión americana a las 16:00 horas de Moscú se coloca una marca encima de la vela, en cualquier timeframe. Tengo problemas con las funciones datetime, he leído el tutorial más de una vez, he mirado otros indicadores, pero sigo sin entender.

Archivos adjuntos:
exfbtix.mq4  2 kb
 
Yulia:

Hola, por favor, pueden ayudarme a tratar el indicador. La idea es, con la apertura de la sesión americana a las 16:00 horas de Moscú se coloca una marca encima de la vela, en cualquier timeframe. Tengo problemas con las funciones datetime, he leído el tutorial más de una vez, he mirado otros indicadores, pero sigo sin entender.


#property indicator_chart_window // указываем, что идикатор будет рисоваться в окне, где рисуется график валютной пары
#property indicator_buffers 1 // сколько линий будет рисовать наш индикатор
#property indicator_color1 Lime // какого цвета будет первая линия 
//---- buffers
double Buffer[];

extern int hour =9;

//+------------------------------------------------------------------+
int init()
{
  SetIndexStyle(0,DRAW_ARROW);
  SetIndexArrow(0,108);
  SetIndexBuffer(0,Buffer);  
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
int start()
{

int counted_bars=IndicatorCounted(); // сколько баров уже просчитано для начего индикатора
if(counted_bars<0) return(-1);// проверяем ошибки


int i=0;
    while(i<Bars)
         {
         if(TimeHour(Time[i])==hour)
            {        
            Buffer[i]=High[i]+150*Point;
            }
         
         i++;
         }

return(0);
}
//+------------------------------------------------------------------+

 
 
Muchas gracias, pero un poco mal, solo necesito una marca en la primera vela en M1,M5 etc, excepto por supuesto la diaria y superior.
 
Reshetov:
Necesitas consultar a un telépata. Pero es muy posible que el problema sea una incoherencia al dividir números reales entre enteros.


Este es el código

int lowsum, highsum;
int Mass1[];
int Mass2[];

                        while(start1 < end1 + 1)
                                {
                                lowsum = lowsum + iVolume(Symbol(), PERIOD_M1, start1);
                                start1++;
                                }
                        while(start2 < end2 + 1)
                                {
                                highsum = highsum + iVolume(Symbol(), PERIOD_M1, start2);
                                start2++;
                                }
                        Mass[i] = lowsum;
                        Mass[i] = highsum;
                        Alert(Mass[i], " ", highsum);

Como resultado, la alerta emite estos mensajes:

Se puede ver que la variable tiene un valor, pero no se puede asignar un valor de la variable a un array, no puedo entender cuál es el problema

 
Yulia:
Muchas gracias, pero un poco mal, sólo necesito una marca en la primera vela en M1,M5 etc., excepto por supuesto la diaria y superior.

Como lo tenías, así queda
 
sss2019:

Se puede ver que la variable tiene un valor, pero no se puede asignar un valor de la variable a un array, no puedo entender cuál es el problema

¿Cuál es el tamaño de la matriz?
 
sss2019:


Este es el código

Como resultado, la alerta emite estos mensajes:

Se puede ver que la variable tiene un valor, pero no se puede asignar un valor de la variable a un array, no puedo entender cuál es el problema


¿No hay que fijar el tamaño del array?
 
Quizás me he explicado mal, sólo hay que marcar la primera vela en m1 m5 m15 m30 h1 h4, que empieza a las 16:00 hora de Moscú, y el indicador marca (por ejemplo en m15 cuatro velas).