任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 1015

 
nikelodeon:
我认为专家们会因为这样的问题而膨胀,而我必须自己解决这些问题 :-)如何在交易结束时在图表上制作图标,就像在tester?????。也许有一些现成的功能????。

如果由顾问/脚本关闭,那么

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


箭头_颜色

[in] 图表上收盘箭头的颜色。如果缺少该参数或其值为CLR_NONE,则图表上不显示箭头。

---

如果是手工操作--只需编写/借用一个现成的脚本/指示器,就能在历史上捕捉到这一交易,并以图标显示。

 
artborder:

如果由顾问/脚本关闭,那么


箭头_颜色

[in] 图表上收盘箭头的颜色。如果缺少该参数或其值为CLR_NONE,箭头将不会出现在图表上。

---

如果是手工操作--只需编写/借用一个现成的脚本/指示器,就能在历史上捕捉到这个交易,并以图标的形式显示出来。

谢谢,现在我将尝试!!!!!
 
artborder:

你好,这里有一个问题。

当你对图表、其子窗口、子窗口中的指标进行程序化搜索时,你可以发现指标的总数,然后是其名称、参数等。

使用ChartIndicatorsTotal,ChartIndicatorName 等。

我如何通过ChartID知道在这个窗口中运行的专家顾问的名字,也是通过程序化的方式?

关于MT4的问题

另一个问题...如何读取 MT4日志文件?这段代码给出了一个错误...5002

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

    string str=FileReadString(filehandle); 
 
你能告诉我这是什么原因吗?HttpSendRequestW 没有发送请求...GetLastError给出了0。

(有趣的是,WebRequest 的第二个版本可以工作...)。

#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 没有发送请求...GetLastError给出了0。

(有趣的是,WebRequest的第二个版本可以工作...)


如果第二种变体有效,那么就有一个解决方案。那么问题出在哪里呢?
 
Vinin:
如果第二个方案可行,就有一个解决方案。那么问题出在哪里?
问题是将有许多链接作为允许的地址输入到终端设置 中(+我没有相同的电脑......
,这根本不是一个选项。
 

你好!

你能告诉我如何在for循环中找到小节的开始吗?一般来说,我需要从第1小节到第5小节(包括第5小节)寻找。(当前的0-bar不被计算在内)。

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

{

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

......

读了这个功能,我才明白。帮助。

谢谢!

 
Money_Maker:
你能告诉我哪里出了问题吗?HttpSendRequestW 没有发送请求...GetLastError给出了0。

(有趣的是,WebRequest的第二个版本可以工作... )


需要传输的不再是字符串,而是char缓冲区。

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

 
Shargyn:

你好!

你能告诉我如何在for循环中找到小节的起始点吗?一般来说,我需要从第1小节到第5小节(含)寻找。(当前的0-bar不被计算在内)

只读了功能,我无法理解。帮助。

谢谢!

与,到,做什么

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

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

但是,是的。在开发过程中,更合理的做法是让

与,做什么,到

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));
谢谢你的回答,请告诉我是否理解正确,你的意思是这样吗?

,所以由于某些原因,结果也没有改变......(

另一个问题:也许你可以通过编程将URL添加到允许的URL中?(例如通过宏替换)
,坦率地说,我不想使用WebRequest,因为它不是异步的....。