Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1015

 
nikelodeon:
Ну думаю знатоки сейчас опухнут от таких проблем, а тут ещё я со своими :-) Ка сделать чтоб при закрытии сделки выставлялись значки на график как в тестере????? Может быть есть уже готовые функции какие????

если закрытие советником/скриптом, то

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


arrow_color

[in]  Цвет стрелки закрытия на графике. Если параметр отсутствует, или его значение равно CLR_NONE, то стрелка на графике не отображается.

---

если вручную - то только писать/взять готовый  скрипт/индикатор, который по истории эту сделку выловит и покажет значком

 
artborder:

если закрытие советником/скриптом, то


arrow_color

[in]  Цветстрелки закрытия на графике. Если параметр отсутствует, или его значение равноCLR_NONE, то стрелка на графике не отображается.

---

если вручную - то только писать/взять готовый  скрипт/индикатор, который по истории эту сделку выловит и покажет значком

Спасибо сейчас попробую!!!!!
 
artborder:

Здравствуйте, такой вопрос:

При програмном переборе чартов, их подокон, индикаторов в подокнах можно узнать общее кол-во индикаторов и далее их имена, параметры и т.д.

используя ChartIndicatorsTotal, ChartIndicatorName .. и т.п.

Как узнать так же програмно по ChartID имя запущенного в этом окне советника(эксперта) ?

Вопрос по МТ4

еще вопрос... как можно програмно читать лог-файлы МТ 4 ? Такой код дает ошибку.. 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-й включительно? (текущий 0-бар не считаем)

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

{

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

......

читал функцию for понять только не могу ее. Помогите.

С уважением!

 
Money_Maker:
Подскажите пожалуйста в чём может быть причина? HttpSendRequestW не отправляет запрос.. GetLastError даёт 0. 

(самое интересное что WebRequest второй её вариант работает ... ) 


Уже не стринг нужно передавать а буфер чара.

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

 
Shargyn:

Здравствуйте!

Подскажите пожалуйста, как в цикле for найти начало бара, в общем нужно с 1- го бара посмотреть по 5-й включительно? (текущий 0-бар не считаем)

читал функцию for понять только не могу ее. Помогите.

С уважением!

с, до, что делать

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-ы в разрешённые? (например через макроподстановку)
да и честно говоря не хочется использовать WebRequest из за её не асинхронности.... 
Причина обращения: