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

 
nikelodeon:
Creo que los expertos se van a hinchar con estos problemas, y tengo que resolverlos yo mismo :-) Cómo hacer iconos en el gráfico al cierre de la operación, como en el tester????? Tal vez haya algunas funciones listas para usar????

si el cierre por parte del asesor/guión, entonces

bool  OrderClose( 
   int        ticket,      // номер ордера 
   double     lots,        // количество лотов 
   double     price,       // цена закрытия 
   int        slippage,    // максимальное проскальзывание 
   color      arrow_color  // цвет 
   );
 


color_flecha

[in] El color de la flecha de cierre en el gráfico. Si falta el parámetro o su valor esCLR_NONE, no se muestra ninguna flecha en el gráfico.

---

si es manual - sólo escriba/tome prestado un script/indicador listo que atrape este trato en el historial y lo muestre con un icono

 
artborder:

si el cierre por parte del asesor/guión, entonces


color_flecha

[in] El color de la flecha de cierre en el gráfico. Si falta el parámetro o su valor esCLR_NONE, la flecha no aparecerá en el gráfico.

---

si es manual - sólo escriba/tome prestado un script/indicador ya hecho, que captará este trato en el historial y lo mostrará con un icono

¡¡¡¡¡Gracias, ahora lo intentaré!!!!!
 
artborder:

Hola, aquí hay una pregunta:

Cuando se realiza una búsqueda programática de los gráficos, sus subventanas, los indicadores en las subventanas, se puede averiguar el número total de indicadores y luego sus nombres, parámetros, etc.

Usando ChartIndicatorsTotal, ChartIndicatorName etc.

¿Cómo saber la misma forma de averiguar el nombre del ChartID del Asesor Experto que se ejecuta en esta ventana?

Pregunta sobre MT4

otra pregunta... ¿Cómo puedo leer los archivos de registro de MT4? Este código da un error ... 5002

   string filename=TerminalPath() + "\\MQL4\\Logs\\20160219.log"; 
   int filehandle=FileOpen(filename,FILE_READ); 
   if(filehandle<0) 
     { 
      Print("Неудачная попытка открыть файл по абсолютному пути"); 
      Print("Код ошибки ",GetLastError()); 
     } 

    string str=FileReadString(filehandle); 
 
¿Puede decirme cuál es la razón?HttpSendRequestW no envía la solicitud... GetLastError da 0.

(lo interesante es que la segunda versión de WebRequest funciona... )

#property strict
#import "wininet.dll"
int InternetAttemptConnect(int x);
int InternetOpenW(string &sAgent,int lAccessType,string &sProxyName,string &sProxyBypass,int lFlags);
int InternetConnectW(int hInternet,string &szServerName,int nServerPort,string &lpszUsername,string &lpszPassword,int dwService,int dwFlags,int dwContext);
int HttpOpenRequestW(int hConnect,string &Verb,string &ObjectName,string &Version,string &Referer,string &AcceptTypes,uint dwFlags,int dwContext);
int HttpSendRequestW(int hRequest,string &lpszHeaders,int dwHeadersLength,uchar &lpOptional[],int dwOptionalLength);
int HttpQueryInfoW(int hRequest,int dwInfoLevel,int &lpvBuffer[],int &lpdwBufferLength,int &lpdwIndex);
int InternetOpenUrlW(int hInternet,string &lpszUrl,string &lpszHeaders,int dwHeadersLength,uint dwFlags,int dwContext);
int InternetReadFile(int hFile,uchar &sBuffer[],int lNumBytesToRead,int &lNumberOfBytesRead);
int InternetCloseHandle(int hInet);
#import

//Также для эстетики кода определим используемые имена констант из wininet.h.
#define  OPEN_TYPE_PRECONFIG     0           // использовать конфигурацию по умолчанию
#define  FLAG_KEEP_CONNECTION    0x00400000  // не разрывать соединение
#define  FLAG_PRAGMA_NOCACHE     0x00000100  // не кешировать страницу
#define  FLAG_RELOAD             0x80000000  // получать страницу с сервера при обращении к ней
#define  SERVICE_HTTP            3           // требуемый протокол
#define  INTERNET_FLAG_ASYNC     1

string            Host;       // имя хоста
int               Port;       // порт
int               Session;    // дескриптор сессии
int               Connect;    // дескриптор соединения

string acess_type;  // массив с данными для отправки POST-запросов 
uchar  data[];
string URL      = "http://ru.investing.com/earnings-calendar/Service/getCalendarFilteredData";
string Method   = "POST";
string ver_http = "HTTP/1.1";
string Refer    = "http://ru.investing.com/earnings-calendar/";

string HEADERS  = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"+"\n"+
                  "Content-Type: application/x-www-form-urlencoded"+"\n"+
                  "X-Requested-With: XMLHttpRequest"+"\n"+
                  "Connection: Close"+"\n";// сам запрос
  
string REQUEST_BODY ="pair_id=6408&action=searchStock";// сюда вписываем данные POST-запроса 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   StringToCharArray(REQUEST_BODY,data,0,StringLen(REQUEST_BODY),CP_ACP);
   
   OpenInet(URL,Port);
    
   int hRequest=HttpOpenRequestW(Connect, Method, URL, ver_http, Refer, acess_type, FLAG_KEEP_CONNECTION|FLAG_RELOAD|FLAG_PRAGMA_NOCACHE, 0); // создаем дескриптор запроса
   if(hRequest<=0)
   {
      Print("-Err OpenRequest");
      InternetCloseHandle(Connect);
      return(false);
   }  
  
    
   // отправили файл
   int hSend=HttpSendRequestW(hRequest,HEADERS,StringLen(HEADERS),data,ArraySize(data));
    
   if(hSend<=0)
   {
      Print("-Err SendRequest");
      InternetCloseHandle(hRequest);
      CloseInet();
   }


   return(INIT_SUCCEEDED);
}

//================== ФУНКЦИЯ ОТКРЫТИЯ / ЗАКРЫТИЯ ИНТЕРНЕТА ================================================================   
bool OpenInet(string aHost,int aPort)
{
   if (aHost=="") {Print("-Host is not specified"); return(false);}
   
   if (Session>0 || Connect>0) {CloseInet(); Print("+Open Inet...");} // если сессия была опеределена, то закрываем

   // Попытки создать подключение к Интернету   
   if (InternetAttemptConnect(0)!=0) {Print("-Err AttemptConnect"); return(false);} // если не удалось проверить имеющееся соединение с интернетом, то выходим
  
   string UserAgent="Mozilla"; string nill=""; 
   // Инициализирует приложение использует функции wininet  
   Session=InternetOpenW(UserAgent,OPEN_TYPE_PRECONFIG,nill,nill,0); // открываем сессию
   
   if (Session<=0) {Print("-Err create Session"); CloseInet(); return(false);} // если не смогли открыть сессию, то выходим

   Connect=InternetConnectW(Session,aHost,aPort,nill,nill,SERVICE_HTTP,0,0); // Открывает протокол передачи файлов (FTP) или http-сеанса для данного сайта.
   if (Connect<=0) {Print("-Err create Connect"); CloseInet();return(false);}
   
   Host=aHost; Port=aPort; // присвоение значений
   
   // все проверки завершились успешно
   return(true);
}
 
void CloseInet()
{
   Print("-Close Inet...");
   if(Session>0) InternetCloseHandle(Session); Session=-1;
   if(Connect>0) InternetCloseHandle(Connect); Connect=-1;
}
//========================================================================================================================= 
 
Money_Maker:
¿Puede decirme qué ocurre?HttpSendRequestW no envía la solicitud... GetLastError da 0.

(Lo interesante es que la segunda versión de WebRequest funciona ... )


Si la segunda variante funciona, entonces hay una solución. ¿Cuál es el problema?
 
Vinin:
Si la segunda opción funciona, hay una solución. ¿Cuál es el problema?
el problema es que habrá tantos enlaces que introducir en la configuración del terminal como direcciones permitidas( + no tengo el mismo ordenador...
no es una opción en absoluto(
 

¡Hola!

¿Me pueden decir cómo encontrar el inicio del compás en el bucle for, en general necesito buscar desde el primer compás hasta el quinto inclusive? (no se cuenta la barra 0 actual).

for (int i=5; i<1; i++)

{

h = iHigh(Symbol(),tf,i);

......

Lea la función para entender sólo no puedo. Ayuda.

¡Saludos!

 
Money_Maker:
¿Puede decirme qué ocurre?HttpSendRequestW no envía la solicitud... GetLastError da 0.

(Lo interesante es que la segunda versión de WebRequest funciona... )


Ya no es la cadena lo que hay que transferir, sino el búfer de caracteres.

https://forum.mql4.com/ru/67441

 
Shargyn:

¡Hola!

¿Podríais decirme cómo encontrar el inicio del compás en el bucle for, en general, tengo que buscar desde el primer compás hasta el quinto inclusive? (no se cuenta la barra 0 actual)

Leer la función for sólo no puedo entenderlo. Ayuda.

¡Saludos!

con, a, que hacer

for(int i=1;i<=5;i++)

o

for(int i=5;i>=1;i--)

Pero sí. Lo más lógico durante el desarrollo era hacer

con, qué hacer, a

for(int i=1;i++;i<=5)

 
#import "wininet.dll"
int HttpSendRequestW(int hRequest,char &lpszHeaders[],int dwHeadersLength,uchar &lpOptional[],int dwOptionalLength);
#import

char a[];
StringToCharArray(HEADERS,a);

int hSend=HttpSendRequestW(hRequest,a,StringLen(HEADERS),data,ArraySize(data));
Gracias por tu respuesta, por favor dime si te he entendido bien, ¿te refieres a esto?

así que por alguna razón el resultado tampoco cambia... (

otra pregunta: ¿quizás se puedan añadir programáticamente URLs a las permitidas? (por ejemplo a través de la sustitución de macros)
y francamente no quiero usar WebRequest porque no es asíncrono....