Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1015

 
nikelodeon:
Acho que os especialistas vão ficar inchados com tais problemas, e eu mesmo tenho que resolvê-los :-) Como fazer ícones no gráfico no fechamento do negócio, como no tester????? Talvez haja algumas funções prontas para uso????

se fechar por assessor/escritor, então

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


arrow_color

[em] A cor da seta de fechamento na tabela. Se o parâmetro estiver faltando ou seu valor forCLR_NONE, nenhuma seta é mostrada no gráfico.

---

se manual - apenas escreva/manhã um roteiro/indicador pronto que pegue este acordo na história e o mostre com um ícone

 
artborder:

se fechar por assessor/escritor, então


arrow_color

[em] A cor da seta de fechamento na tabela. Se o parâmetro estiver faltando ou seu valor forCLR_NONE, a seta não aparecerá no gráfico.

---

se manual - apenas escreva/manhã um roteiro/indicador pronto, que vai pegar esse negócio na história e mostrá-lo com um ícone

Obrigado agora eu vou tentar!!!!!
 
artborder:

Olá, aqui vai uma pergunta:

Quando você executa uma busca programática de gráficos, suas subjanelas, indicadores nas subjanelas, você pode descobrir o número total de indicadores e, em seguida, seus nomes, parâmetros, etc.

Usando ChartIndicatorsTotal, ChartIndicatorName etc.

Como saber o mesmo caminho para descobrir o nome ChartID do Expert Advisor que funciona nesta janela?

Pergunta sobre o MT4

outra pergunta... Como posso ler os arquivos de log do MT4? Este código dá um erro ... 5002

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

    string str=FileReadString(filehandle); 
 
Você pode me dizer qual é a razão?A HttpSendRequestW não envia pedido... GetLastError dá 0.

(o interessante é que a segunda versão do 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:
Você pode me dizer o que está errado?A HttpSendRequestW não envia pedido... GetLastError dá 0.

(O interessante é que a segunda versão do WebRequest funciona ... )


Se a segunda variante funcionar, então há uma solução. Então, qual é o problema?
 
Vinin:
Se a segunda opção funcionar, há uma solução. Então, qual é o problema?
o problema é que haverá tantos links para entrar nas configurações do terminal como endereços permitidos( + eu não tenho o mesmo computador...
não é uma opção em absoluto(
 

Olá!

Você pode me dizer como encontrar o início da barra no for loop, em geral eu preciso procurar da 1ª barra até a 5ª inclusive? (a barra 0 atual não é contada).

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

{

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

......

Leia a função para entender que só eu não posso. Ajuda.

Cumprimentos!

 
Money_Maker:
Você pode me dizer o que está errado?HttpSendRequestW não envia o pedido... GetLastError dá 0.

(O interessante é que a segunda versão do WebRequest funciona... )


Não é mais o cordão que precisa ser transferido, mas o tampão de carvão.

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

 
Shargyn:

Olá!

Você pode me dizer como encontrar o início da barra no for loop, em geral, eu preciso procurar da 1ª barra até a 5ª inclusive? (a barra 0 atual não é contada)

Leia o for function only I can not understand it. Ajuda.

Cumprimentos!

com, para, o que fazer

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

ou

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

Mas sim. A coisa mais lógica a fazer durante o desenvolvimento era fazer

com, o que fazer, para

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));
Obrigado por sua resposta, por favor me diga se eu o entendi corretamente, quer dizer assim?

então por alguma razão o resultado também não muda... (

outra pergunta: talvez você possa programar a adição de URLs às permitidas? (por exemplo, via substituição de macros)
e, francamente, não quero usar WebRequest porque não é assíncrona....