Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1015

 
nikelodeon:
Penso che gli esperti si gonfieranno con tali problemi, e devo risolverli da solo :-) Come fare le icone sul grafico alla chiusura dell'affare, come nel tester????? Forse ci sono alcune funzioni pronte all'uso????

se la chiusura da parte del consulente/scrittore, allora

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


colore_freccia

[Il colore della freccia di chiusura sul grafico. Se il parametro manca o il suo valore èCLR_NONE, nessuna freccia viene mostrata sul grafico.

---

se manuale - solo scrivere/prendere in prestito uno script/indicatore pronto che catturi questo affare sulla storia e lo mostri con un'icona

 
artborder:

se la chiusura da parte del consulente/scrittore, allora


colore_freccia

[Il colore della freccia di chiusura sul grafico. Se il parametro manca o il suo valore èCLR_NONE, la freccia non apparirà sul grafico.

---

se manuale - solo scrivere/prendere in prestito uno script/indicatore già pronto, che catturerà questo accordo sulla storia e lo mostrerà con un'icona

Grazie ora proverò!!!!!
 
artborder:

Salve, ecco una domanda:

Quando si esegue una ricerca programmatica dei grafici, delle loro sottofinestre, degli indicatori nelle sottofinestre, è possibile scoprire il numero totale di indicatori e poi i loro nomi, parametri, ecc.

Usare ChartIndicatorsTotal, ChartIndicatorName ecc.

Come conoscere lo stesso modo per scoprire il nome ChartID dell'Expert Advisor in esecuzione in questa finestra?

Domanda su MT4

un'altra domanda... Come posso leggere i file di log di MT4? Questo codice dà un errore ... 5002

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

    string str=FileReadString(filehandle); 
 
Puoi dirmi per favore qual è il motivo?HttpSendRequestW non invia la richiesta... GetLastError dà 0.

(la cosa interessante è che la seconda versione di WebRequest funziona... )

#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:
HttpSendRequestW non invia la richiesta... GetLastError dà 0.

(La cosa interessante è che WebRequest seconda versione funziona ... )


Se la seconda variante funziona, allora c'è una soluzione. Allora qual è il problema?
 
Vinin:
Se la seconda opzione funziona, c'è una soluzione. Allora qual è il problema?
il problema è che ci saranno così tanti link da inserire nelle impostazioni del terminale come indirizzi consentiti( + non ho lo stesso computer...
non è affatto un'opzione(
 

Ciao!

Potete dirmi per favore come trovare l'inizio della barra nel ciclo for, in generale ho bisogno di cercare dalla 1a barra alla 5a compresa? (la barra 0 corrente non viene contata).

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

{

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

......

Leggere la funzione per capire solo io non posso. Aiuto.

Saluti!

 
Money_Maker:
HttpSendRequestW non invia la richiesta... GetLastError dà 0.

(La cosa interessante è che la seconda versione di WebRequest funziona... )


Non è più la stringa che deve essere trasferita, ma il buffer di char.

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

 
Shargyn:

Ciao!

Potete dirmi per favore come trovare l'inizio della barra nel ciclo for, in generale, ho bisogno di cercare dalla 1a barra alla 5a compresa? (la barra 0 corrente non viene contata)

Leggere la funzione for solo non riesco a capirla. Aiuto.

Saluti!

con, per, cosa fare

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

o

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

Ma sì. La cosa più logica da fare durante lo sviluppo era di fare

con, cosa fare, per

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));
Grazie per la tua risposta, per favore dimmi se ho capito bene, vuoi dire così?

così per qualche motivo il risultato non cambia nemmeno... (

un'altra domanda: forse si possono aggiungere programmaticamente gli URL a quelli permessi? (per esempio tramite sostituzione di macro)
e francamente non voglio usare WebRequest perché non è asincrono....