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

 
Una vez más, quiero repetirme.
(Low[2]==Low[1])||(Close[2]==Low[1])||(Low[2]==Open[1])
No se pueden poner condiciones así. Son acontecimientos poco probables.
 
atguard:

Pregunta: ¿Cómo obtengo el valor del "desplazamiento"? (cuando llamo al indicador con un desplazamiento, utiliza los mismos valores que sin él, es deciriCustom(NULL, 0, "nombre",pam1,0,1)= iCustom(NULL, 0, "nombre",pam1,0,100), pero si llamo al indicador hace 100 barras, tendrá un valor diferente de iCustom(NULL, 0, "nombre",pam1,0,100). El indicador es simple, utiliza 5 valores de Cierre anteriores y toma su promedio.



double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)

shift es el número de la barra de la que se toman los datos del indicador, zero bar es la barra actual que aún no se ha cerrado. El parámetro se denomina desplazamiento porque muestra el desfase de los datos recibidos con respecto a la barra cero en barras.

 
silhouette:

Utilizo la función Terminal() del tutorial cuando cierro posiciones, siempre que Mas_Ord_New[0][0]!=0. Pero aquí tenemos otra tarea: necesitamos hacer una bandera que prohíba operar en la señal actual, si una orden ya ha sido abierta en ella. Estoy intentando utilizar las banderas pero he cometido un error.

Creo que sería mejor poner un número mágico apropiado en la orden y comprobar si tal posición está en la lista. Si hay = flag-true, no = flag-false. Entonces, a condición de abrir una posición a su señal, inserte una bandera, por ejemplo

bool flag_1=true;
int MagNum_1=555;

int start()
{
// ...

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {  if (OrderMagicNumber()==MagNum_1)
              flag_1=true;
         else flag_1=false;
}  }  }

if (flag_1==false && /*данное условие открытия позиции*/)
{ OrderSend(..., MagNum_1, ...);
}
//...
}
 
paladin80:

Creo que es mejor poner el número mágico apropiado en la orden y comprobar si esa posición está en la lista. Si hay bandera-verdadero, sin bandera-falso. Entonces, si se abre una posición a su señal, inserte una bandera, por ejemplo


Es decir, si he entendido bien, ¿propones utilizar varios magos correspondientes a cada tipo de señal?
 
¿Puede decirme por qué el optimizador puede contar pero no producir resultados? No hay errores en el registro. El algoritmo genético está desactivado. El intervalo de optimización es de 5 días, el modo es todos los ticks, el periodo es cualquiera m1, m5, m15, m30. Y sólo a partir del periodo H1 aparecen los resultados.
 
Desead:
¿Puede decirme por qué el optimizador puede contar pero no producir resultados? No hay errores en el registro. El algoritmo genético está desactivado. El intervalo de optimización es de 5 días, el modo es todos los ticks, el periodo es cualquiera m1, m5, m15, m30. Los resultados sólo aparecen a partir del periodo H1.

En periodos inferiores a H1 el algoritmo falla.
 
Vinin:

En periodos más cortos que H1, la caída en picado.
Exacto, incluso hay una casilla de verificación para eso, ¿cómo es que no lo sabía?) Gracias.
 
Desead:
¿Puede decirme por qué el optimizador puede contar pero no producir resultados? No hay errores en el registro. El algoritmo genético está desactivado. El intervalo de optimización es de 5 días, el modo es todos los ticks, el periodo es cualquiera m1, m5, m15, m30. Y los resultados sólo aparecen a partir del periodo H1.

Si las ganancias son negativas con esta combinación de parámetros, los resultados no se muestran. Por lo general, 5 días es un periodo muy corto, establece al menos un mes.
 

Buenas tardes. Me pueden aconsejar por favor, necesito que el indicador no se muestre en todo el historial, sino sólo en el borde en un número determinado de barras. Código:

//+------------------------------------------------------------------+
//| Индикатор арбитражной ситуации для спреда, состоящего            |
//| из 4-х инструментов                                             |
//| Copyright © 2010, leonid553, Son_Of_Earth                        |
//+------------------------------------------------------------------+
#property copyright "leonid553 & Son_Of_Earth"
#property link      "leonid553@ya.ru,sonofearth.ua@gmail.com"

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Yellow
#property indicator_color4 Black
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1
#property indicator_width4 1


extern string Symbol1.Name = "EURUSD";     // Название инструмента 1
extern bool   Symbol1.Reverse = false;     
extern string Symbol2.Name = "";           // Название инструмента 2
extern bool   Symbol2.Reverse = false;     
extern string Symbol3.Name = "";           // Название инструмента 3
extern bool   Symbol3.Reverse = false;     
extern string Symbol4.Name = "";           // Название инструмента 4
extern bool   Symbol4.Reverse = false;     

extern string  ___MISC___ = " == Прочие настройки ==========";




extern string  ___MA___   = " == Параметры МА ценовых линий ====";

extern int MA.Slow = 50;                   // Период медленной МА


// Буферы для отображения данных
double Buf1[];    // Первый инструмент
double Buf2[];    // Второй инструмент
double Buf3[];    // Третий инструмент
double Buf4[];    // Четрертый инструмент



//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
  // Делаем нечувствительными к регистру ввода наименования инструментов
  Symbol1.Name=StringUpper(Symbol1.Name);
  Symbol2.Name=StringUpper(Symbol2.Name);
  Symbol3.Name=StringUpper(Symbol3.Name);
  Symbol4.Name=StringUpper(Symbol4.Name);

  // Определяем балансовые коэффициенты каждого инструмента
  kVol1=1;
  kVol2=1;
  kVol3=1;
  kVol4=1;
  
  // Задаем имена графическим объектам
  oSymb1=Symbol1.Name;
  oSymb2=Symbol2.Name;
  oSymb3=Symbol3.Name;
  oSymb4=Symbol4.Name;


  // Формируем свойства графиков индикатора
  IndicatorBuffers(4);
  
  SetIndexStyle(0,DRAW_LINE);
  SetIndexBuffer(0,Buf1);
  SetIndexLabel(0, Symbol1.Name); 

  SetIndexStyle(1,DRAW_LINE);
  SetIndexBuffer(1,Buf2);
  SetIndexLabel(1,Symbol2.Name); 

  SetIndexStyle(2,DRAW_LINE);
  SetIndexBuffer(2,Buf3);
  SetIndexLabel(2,Symbol3.Name);

  SetIndexStyle(3,DRAW_LINE);
  SetIndexBuffer(3,Buf4);
  SetIndexLabel(3,Symbol4.Name);

  soundCount=0; // Максимально к-во повторов звукового сигнала

  return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()  {
  // Удаляем все графические объекты
  DeleteObject(oSymb1);
  DeleteObject(oSymb2); 
  DeleteObject(oSymb3);
  DeleteObject(oSymb4);

  return(0);  
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
  // Подсчет количества баров для построения индикатора
  int limit; int counted_bars=IndicatorCounted();
  if(counted_bars<0) return(-1);
  if(counted_bars>0) counted_bars--; 
  limit=Bars-counted_bars;
  
  // Определяем параметры окна индикатора
  wndNum=WindowFind(WindowExpertName());
  wndName=WindowExpertName()+wndNum; 


  
 
  //------------------------------------------------------------------ 
  // Отрисовка ценовых линий: рисуем и синхронизируем по наличию баров
  for(int i=0; i<limit; i++) { 
    // Первый ценовой график
    Buf1[i]= iClose(Symbol1.Name,0,i);
    // Второй ценовой график
    Buf2[i]= iClose(Symbol2.Name,0,i);
    // Третий ценовой график
    Buf3[i]= iClose(Symbol3.Name,0,i);
    // Четвертый ценовой график
    Buf4[i]= iClose(Symbol4.Name,0,i);

 
  } // Конец блока отрисовки ценовых линий

Y también, ¿cómo puedo saber el precio de un instrumento para un número determinado de barras hacia atrás?
 
La tarea consiste en mostrar los valores de los indicadores y el porcentaje de cambio de precios desde el comienzo del día para diferentes instrumentos en una ventana. ¿Puede mostrarse todo en una ventana sin un gráfico? ¿Es posible mostrar los valores de los indicadores de diferentes marcos temporales? También estaría muy agradecido por los ejemplos de algo similar. Gracias.