Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1158

 

Por favor, indique dónde está el error.

Código:

//+------------------------------------------------------------------+
//|                                                     InitMQL4.mqh |
//|                                                 Copyright DC2008 |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "keiji"
#property copyright "DC2008"
#property link      "https://www.mql5.com"
//--- Объявление констант
#include <MT4Orders.mqh>
#include <MQL4_to_MQL5.mqh>
//---
//#define extern input
#define OBJPROP_TIME1 300 //datetime Получает/устанавливает первую координату времени 
#define OBJPROP_PRICE1 301 //double Получает/устанавливает первую координату цены 
#define OBJPROP_TIME2 302 //datetime Получает/устанавливает вторую координату времени 
#define OBJPROP_PRICE2 303 //double Получает/устанавливает вторую координату цены 
#define OBJPROP_TIME3 304 //datetime Получает/устанавливает третью координату времени 
#define OBJPROP_PRICE3 305 //double Получает/устанавливает третью координату цены 
//---
//OBJPROP_COLOR 6 color Получает/устанавливает цвет объекта 
//OBJPROP_STYLE 7 int Получает/устанавливает стиль линии объекта 
//OBJPROP_WIDTH 8 int Получает/устанавливает ширину линии объекта 
//OBJPROP_BACK 9 bool Получает/устанавливает флаг фонового отображения объекта 
//---
#define OBJPROP_RAY 310 //bool Получает/устанавливает флаг свойства луч для объектов типа OBJ_TREND и ему подобных 
//---
//OBJPROP_ELLIPSE 11 bool Получает/устанавливает флаг отображения полного эллипса для объекта OBJ_FIBOARC 
//OBJPROP_SCALE 12 double Получает/устанавливает значение масштаба объекта 
//OBJPROP_ANGLE 13 double Получает/устанавливает значение угла в градусах объекта OBJ_TRENDBYANGLE 
//OBJPROP_ARROWCODE 14 int Получает/устанавливает код стрелки объекта OBJ_ARROW. Может быть одним из символов wingdings или один из предопределенных кодов стрелок 
//OBJPROP_TIMEFRAMES 15 int Получает/устанавливает свойство отображения объекта на различных периодах. Может быть одним или комбинацией нескольких из констант видимости объекта. 
//OBJPROP_DEVIATION 16 double Получает/устанавливает размер отклонения для объекта OBJ_STDDEVCHANNEL 
//OBJPROP_FONTSIZE 100 int Получает/устанавливает размер шрифта для объектов OBJ_TEXT и OBJ_LABEL 
//OBJPROP_CORNER 101 int Получает/устанавливает номер угла привязки для объекта OBJ_LABEL. Принимает значения 0-3 
//OBJPROP_XDISTANCE 102 int Получает/устанавливает расстояние X-координаты в пикселях относительно угла привязки для объекта OBJ_LABEL 
//OBJPROP_YDISTANCE 103 int Получает/устанавливает расстояние Y-координаты в пикселях относительно угла привязки для объекта OBJ_LABEL 
//---
#define OBJPROP_FIBOLEVELS 200 //int Получает/устанавливает число уровней объекта Fibonacci. Может быть от 1 до 32 
//---
//OBJPROP_LEVELCOLOR 201 color Получает/устанавливает цвет линии уровня объекта 
//OBJPROP_LEVELSTYLE 202 int Получает/устанавливает стиль линии уровня объекта 
//OBJPROP_LEVELWIDTH 203 int Получает/устанавливает ширину линии уровня объекта 
#define  OBJPROP_FIRSTLEVEL1 211 //int Получает/устанавливает значения уровня объекта Fibonacci с индексом n. Индекс n может быть от 0 до (количество уровней -1), но не более 31 
#define  OBJPROP_FIRSTLEVEL2 212
#define  OBJPROP_FIRSTLEVEL3 213
#define  OBJPROP_FIRSTLEVEL4 214
#define  OBJPROP_FIRSTLEVEL5 215
#define  OBJPROP_FIRSTLEVEL6 216
#define  OBJPROP_FIRSTLEVEL7 217
#define  OBJPROP_FIRSTLEVEL8 218
#define  OBJPROP_FIRSTLEVEL9 219
#define  OBJPROP_FIRSTLEVEL10 220
#define  OBJPROP_FIRSTLEVEL11 221
#define  OBJPROP_FIRSTLEVEL12 222
#define  OBJPROP_FIRSTLEVEL13 223
#define  OBJPROP_FIRSTLEVEL14 224
#define  OBJPROP_FIRSTLEVEL15 225
#define  OBJPROP_FIRSTLEVEL16 226
#define  OBJPROP_FIRSTLEVEL17 227
#define  OBJPROP_FIRSTLEVEL18 228
#define  OBJPROP_FIRSTLEVEL19 229
#define  OBJPROP_FIRSTLEVEL20 230
#define  OBJPROP_FIRSTLEVEL21 231
#define  OBJPROP_FIRSTLEVEL22 232
#define  OBJPROP_FIRSTLEVEL23 233
#define  OBJPROP_FIRSTLEVEL24 234
#define  OBJPROP_FIRSTLEVEL25 235
#define  OBJPROP_FIRSTLEVEL26 236
#define  OBJPROP_FIRSTLEVEL27 237
#define  OBJPROP_FIRSTLEVEL28 238
#define  OBJPROP_FIRSTLEVEL29 239
#define  OBJPROP_FIRSTLEVEL30 240
#define  OBJPROP_FIRSTLEVEL31 241
//---
#define MODE_OPEN 0
#define MODE_CLOSE 3
#define MODE_VOLUME 4 
#define  MODE_REAL_VOLUME 5
//---
#define DOUBLE_VALUE 0
#define FLOAT_VALUE 1
#define LONG_VALUE INT_VALUE
//---
#define  CHART_BAR 0
#define  CHART_CANDLE 1
//---
#define MODE_ASCEND 0
#define MODE_DESCEND 1
//---
#define MODE_LOW 1
#define MODE_HIGH 2
#define MODE_TIME 5
#define MODE_POINT 11
#define MODE_TICKVALUE 16
#define MODE_TICKSIZE 17
#define MODE_SWAPLONG 18
#define MODE_SWAPSHORT 19
#define MODE_STARTING 20
#define MODE_EXPIRATION 21
#define MODE_TRADEALLOWED 22
#define MODE_MINLOT 23
#define MODE_LOTSTEP 24
#define MODE_MAXLOT 25
#define MODE_SWAPTYPE 26
#define MODE_PROFITCALCMODE 27
#define MODE_MARGINCALCMODE 28
#define MODE_MARGININIT 29
#define MODE_MARGINMAINTENANCE 30
#define MODE_MARGINHEDGED 31
#define MODE_MARGINREQUIRED 32
#define MODE_FREEZELEVEL 33
//---
#define EMPTY -1
//---
#define CharToStr CharToString
#define StrToDouble StringToDouble
#define StrToInteger (int)StringToInteger
#define StrToTime StringToTime
#define StringSetChar StringSetCharacter
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
ENUM_TIMEFRAMES TFMigrate(int tf)
  {
   switch(tf)
     {
      case 0: return(PERIOD_CURRENT);
      case 1: return(PERIOD_M1);
      case 5: return(PERIOD_M5);
      case 15: return(PERIOD_M15);
      case 30: return(PERIOD_M30);
      case 60: return(PERIOD_H1);
      case 240: return(PERIOD_H4);
      case 1440: return(PERIOD_D1);
      case 10080: return(PERIOD_W1);
      case 43200: return(PERIOD_MN1);

      case 2: return(PERIOD_M2);
      case 3: return(PERIOD_M3);
      case 4: return(PERIOD_M4);
      case 6: return(PERIOD_M6);
      case 10: return(PERIOD_M10);
      case 12: return(PERIOD_M12);
      case 16385: return(PERIOD_H1);
      case 16386: return(PERIOD_H2);
      case 16387: return(PERIOD_H3);
      case 16388: return(PERIOD_H4);
      case 16390: return(PERIOD_H6);
      case 16392: return(PERIOD_H8);
      case 16396: return(PERIOD_H12);
      case 16408: return(PERIOD_D1);
      case 32769: return(PERIOD_W1);
      case 49153: return(PERIOD_MN1);
      default: return(PERIOD_CURRENT);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
ENUM_MA_METHOD MethodMigrate(int method)
  {
   switch(method)
     {
      case 0: return(MODE_SMA);
      case 1: return(MODE_EMA);
      case 2: return(MODE_SMMA);
      case 3: return(MODE_LWMA);
      default: return(MODE_SMA);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
ENUM_APPLIED_PRICE PriceMigrate(int price)
  {
   switch(price)
     {
      case 1: return(PRICE_CLOSE);
      case 2: return(PRICE_OPEN);
      case 3: return(PRICE_HIGH);
      case 4: return(PRICE_LOW);
      case 5: return(PRICE_MEDIAN);
      case 6: return(PRICE_TYPICAL);
      case 7: return(PRICE_WEIGHTED);
      default: return(PRICE_CLOSE);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
ENUM_STO_PRICE StoFieldMigrate(int field)
  {
   switch(field)
     {
      case 0: return(STO_LOWHIGH);
      case 1: return(STO_CLOSECLOSE);
      default: return(STO_LOWHIGH);
     }
  }

//+------------------------------------------------------------------+
enum ALLIGATOR_MODE  { MODE_GATORJAW=1,   MODE_GATORTEETH, MODE_GATORLIPS };
enum ADX_MODE        { MODE_MAIN,         MODE_PLUSDI, MODE_MINUSDI };
enum UP_LOW_MODE     { MODE_BASE,         MODE_UPPER,      MODE_LOWER };
enum ICHIMOKU_MODE   { MODE_TENKANSEN=1,  MODE_KIJUNSEN, MODE_SENKOUSPANA, MODE_SENKOUSPANB, MODE_CHINKOUSPAN };
//enum MAIN_SIGNAL_MODE{ MODE_MAIN,         MODE_SIGNAL };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CopyBufferMQL4(int handle,int index,int shift)
  {
   double buf[];
   switch(index)
     {
      case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
         return(buf[0]); break;
      case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
         return(buf[0]); break;
      case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
         return(buf[0]); break;
      case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
         return(buf[0]); break;
      case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
         return(buf[0]); break;
      default: break;
     }
   return(EMPTY_VALUE);
  }
//+------------------------------------------------------------------+
int DayOfWeek()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.day_of_week);
  }
//+------------------------------------------------------------------+
int iBarShift(datetime barTime)
  {
   datetime lastbar[];
   datetime curr=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
   int res=CopyTime(NULL,NULL,curr,barTime,lastbar);
   if(res<=0)
     {
      Print("Getting High data is failed! Error",GetLastError());
      return(0);
     }
   return(res-1);
  }
//+------------------------------------------------------------------+  
double iFractalsMQL4(string symbol,
                     int tf,
                     int mode,
                     int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=iFractals(symbol,timeframe);
   if(handle<0)
     {
      Print("Объект iFractals не создан: Ошибка ",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,mode-1,shift));
  }
//+------------------------------------------------------------------+ 
int Hour()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.hour);
  }
//+------------------------------------------------------------------+  
int Minute()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.min);
  }
//+------------------------------------------------------------------+
int iBars(string symbol,int tf)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int BARS=Bars(symbol,timeframe); 
   return(BARS);
  }

La función se está evaluando

int iBars(string symbol,int tf)

iBars ',' - unexpected token 
'_Symbol' - some operator expected

Не могу понять в чем проблема. Если в отдельном файле компилирую то все в порядке. Здесь выскакивает ошибка.

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
Александр:

Por favor, indique dónde está el error.

Código:

Se está evaluando la función

Prueba a poner el cursor en iBars y hacer clic en F1, y lee lo que dice
 
Alekseu Fedotov:
Prueba a poner el cursor en iBars y hacer clic en F1, y lee lo que dice
Lo tengo. Todo funciona. Describo aquí la función iBars, que ya está descrita en
MQL4_to_MQL5.mqh
 

Hola,

Tengo un indicador que guarda los datos en un archivo, ¿cómo hacer que varios indicadores de un gráfico escriban los datos en diferentes archivos para leerlos si se produce una reinicialización?

El indicador está en la ventana principal, si está en una ventana separada, podría adjuntar el nombre del archivo al número de la ventana. Seguramente debe haber alguna forma sencilla,

Gracias.

 
Vitaliy Sendyaev:

Hola,

Tengo un indicador que guarda los datos en un archivo, ¿cómo hacer que varios indicadores de un gráfico escriban los datos en diferentes archivos para leerlos si se produce una reinicialización?

El indicador está en la ventana principal, si está en una ventana separada, podría adjuntar el nombre del archivo al número de la ventana. Seguramente debe haber alguna forma sencilla,

Gracias.

input string prefix = "что-то";

Y eso es algo que hay que poner en el nombre del archivo.

 
KhuKhu:

Hola.

¿Podría ayudar a corregir dos errores?

1. 1 orden debería abrirse en una barra (ahora se abre aleatoriamente)

2. Para abrir correctamente 1 orden con un volumen determinado (ahora se abre con volúmenes diferentes)

La idea es que este EA debería abrir una operación del 10% del depósito en una barra (eso esperaba), pero no está sucediendo.

Pero esto no sucede.

1. Los fondos libres son

AccountEquity();


2. esta entrada

if (! NumberOfBarOpenLastPos(NULL,mper[tf_bar],OP_BUY, magic) ==0) 

probablemente debería ser así:

if (NumberOfBarOpenLastPos(NULL,mper[tf_bar],OP_BUY, magic)!=0) 
 
Alexey Viktorov:

Y esto es algo que hay que poner en el nombre del archivo.


Es necesario cambiar el nombre del archivo cada vez a mano, seguramente hay una salida, para generar el nombre automáticamente?

 
Vitaliy Sendyaev:

Tienes que cambiar el nombre del archivo manualmente cada vez, seguramente hay una manera de generar el nombre automáticamente.

¿Por qué siempre? Sólo cuando se carga el siguiente indicador en el gráfico.

 
Vitaliy Sendyaev:

Hola,

Tengo un indicador que guarda los datos en un archivo, ¿cómo hacer que varios indicadores de un gráfico escriban los datos en diferentes archivos para leerlos si se produce una reinicialización?

El indicador está en la ventana principal, si está en una ventana separada, podría adjuntar el nombre del archivo al número de la ventana. Seguramente debe haber alguna forma sencilla,

Gracias.

En OnInit formo File Name = Symbol Name + TimeFrame
 
STARIJ:
I forme Nombre del archivo = Nombre del símbolo + Marco temporal en OnInit

Por lo que entiendo, necesita ejecutar varias copias del indicador desde un gráfico, para que escriban en diferentes archivos.