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

 
chief2000 писал(а) >>


No es 1 hora sino 1 minuto, el tamaño de un archivo de este tipo suele ser de unos 160 MBytes (historial de 10 años) - ¿quizás tenga que ver con el espacio en disco?





Gracias, ahora lo veo. Descargué el historial porque el probador no arrancaba sin él.
 
Por favor, ayuda.
No cierra las posiciones. Comm muestra tanto 2 como -2 en int GetTradeSignal_Strategija_1 . Intenté y las funciones de Kim. No sé qué es lo que está mal.
Archivos adjuntos:
pomogite.mq4  21 kb
 
Este es el algoritmo de ManagePositions_Strategija_1.
Archivos adjuntos:
 
Por favor, ayuda.
Por qué cuando pruebo mi Asesor Experto obtengo este error:
precio no válido 1.50615000 para la función OrderSend
Todas las cotizaciones del archivo son de cuatro dígitos, pero el mensaje de error muestra un precio de ocho dígitos?
 
LeRus >>:
Помогите пожалуйста.
Почему когда тестирую советник выдает такую ошибку:
invalid price 1.50615000 for OrderSend function
А архиве все котировки четырехзначные а ошибку выдает с восмизначной ценой??


NormalizarDoble(Precio,Dígito);

 
LeRus >>:
Помогите пожалуйста.
Почему когда тестирую советник выдает такую ошибку:
invalid price 1.50615000 for OrderSend function
А архиве все котировки четырехзначные а ошибку выдает с восмизначной ценой??



Es necesario utilizar:

NormalizeDouble(ПЕРЕМЕННАЯ, Digits)
 
Ahora todo funciona. Muchas gracias.
 
Hola, tengo un indicador que hice para medir los movimientos de los precios en un marco de tiempo determinado:
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1  White
#property indicator_color2  Blue

extern int MAPeriod = 14;

// buffers
double V[];           // Собственно значения
double SmoothedValues[];

int DigitsUsed = 8;


int init()
{
   // ассоциируем буферы
   SetIndexBuffer(0, V);
   SetIndexBuffer(1, SmoothedValues);   
   // задаем настройки для буферов
   SetIndexStyle(0, DRAW_LINE);     // Основной сигнал будет сплошной линией
   SetIndexStyle(1, DRAW_LINE);     // Основной сигнал будет сплошной линией   
   IndicatorDigits(DigitsUsed);

   return(0);
}

int start()
{
   int toCount = Bars - IndicatorCounted();  
   double P1,P2,P3;
   // Считаем значения
   for (int i = toCount - 1; i >=0; i--)
   {
      if(Open[i]>Close[i])
        {
         P1=High[i]-Low[i];
         P2=High[i]-Open[i];
         P3=Close[i]-Low[i];
        }
      if(Close[i]>Open[i])
        {
         P1=High[i]-Low[i];
         P2=High[i]-Close[i];
         P3=Open[i]-Low[i];
        }
      
      V[i] = P1+P2+P3;
   }
      
   // Считаем сглаженные значения
   for (i = toCount - 1; i >=0; i--)
   {
      SmoothedValues[i] = NormalizeDouble(iMAOnArray(V, 0, MAPeriod, 0, MODE_SMA, i), DigitsUsed);
   }
      
   
   return(0);
}
Dónde está el error, necesito que este indicador calcule la barra en los minutos, es decir, que lo tire en la 1 H y que sume todos los minutos del indicador calculado:
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1  White

// buffers
double V[];           // Собственно значения

int init()
{
   // ассоциируем буферы
   SetIndexBuffer(0, V);
   // задаем настройки для буферов
   SetIndexStyle(0, DRAW_HISTOGRAM);     // Основной сигнал будет сплошной линией  
   return(0);
}

int start()
{
   int toCount = Bars - IndicatorCounted(); 
   // Считаем значения
   for (int i = toCount - 1; i >=0; i--)
    {
     double t=0; //обнуляем счетчик
     int Minut1 = iBarShift(NULL,1,iTime(NULL,Period(),i),false);//Сколько минут прошло в баре
     int Minut0 = iBarShift(NULL,1,iTime(NULL,1,i),false);//нулевая минута в баре
     for(int k=Minut0; k<=Minut1;k++)
      {
       double K=iCustom(NULL,1,"V",14,0,k); //Сам индикатор
       t=t+K;
      } 
     V[i]=t; //забиваем в массив
    }   
   return(0);
}
Saludos Alexander
 
Chicos, ayudar a los tontos, en el tutorial y en el foro para que sea muy claro - no han encontrado.

Modifico el EA para un timeframe específico M1 y M5, hay una condición simple:

double m1=iMA(NULL,0,period1,0,1,0,0);
double m2=iMA(NULL,0,period2,0,1,0,0);
then if(m1>m2) {okbuy=1;} blah blah blah

No hay preguntas aquí.
Pero necesito otra condición de MA (como la anterior) pero de un marco de tiempo específico superior D1 (y el EA funcionará en M1)
¿Cómo solicitar en el marco de tiempo actual y en el par actual, los datos del indicador del par actual - pero otro marco de tiempo? Para que luego pueda utilizar estos datos para hacer una condición.
Estaría especialmente agradecido, si usted podría sugerir cómo utilizar los marcos de tiempo más antiguos y otros indicadores en el marco de tiempo actual por analogía. Gracias
 
alfo13 >>:
Ребят, помогите чайнигу, в учебнике и на форуме чтобы сильно понятно - так и не нашел.

Переделываю советник под конкретный таймфрейм M1 и M5, там присутствует простое условие:

double m1=iMA(NULL,0,period1,0,1,0,0);
double m2=iMA(NULL,0,period2,0,1,0,0);
затем if(m1>m2) {okbuy=1;} бла бла бла

Здесь вопросов нет.
Но мне надо чтобы было еще одно условие по MA (по типу вышеописанного) но из старшего конкретного таймфрейма D1 (а советник будет работать на M1)
Как запросить в текущем таймфрейме и в текущей паре, данные индикатора из текущей пары - но другого таймфрема? Чтобы потом можно было по этим данным сделать условие.
Особо буду признателен, если еще подскажете как по аналогии использовать старшие таймфреймы и других индикаторов в текущем периоде. Спасибо


Donde periodo1 o periodo2 insertar PERIOD_D1

Razón de la queja: