Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1015

 
nikelodeon:
Ich denke, dass die Experten mit solchen Problemen überfordert sind und ich sie selbst lösen muss :-) Wie man Symbole auf dem Diagramm bei Geschäftsabschluss erstellt, wie im Tester????? Vielleicht gibt es einige fertige Funktionen????

wenn Schließung durch Berater/Skript, dann

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


Pfeil_Farbe

[in] Die Farbe des Schließungspfeils im Diagramm. Fehlt der Parameter oder hat er den WertCLR_NONE, wird im Diagramm kein Pfeil angezeigt.

---

wenn manuell - nur ein fertiges Skript/einen Indikator schreiben/ausleihen, das/der dieses Geschäft im Verlauf erfasst und mit einem Symbol anzeigt

 
artborder:

wenn Schließung durch Berater/Skript, dann


Pfeil_Farbe

[in] Die Farbe des Schließungspfeils im Diagramm. Fehlt der Parameter oder hat er den WertCLR_NONE, wird der Pfeil nicht im Diagramm angezeigt.

---

wenn manuell - nur ein vorgefertigtes Skript/Indikator schreiben/ausleihen, der dieses Geschäft in der Historie erfasst und mit einem Symbol anzeigt

Danke, jetzt werde ich es versuchen!!!!!
 
artborder:

Hallo, ich habe eine Frage:

Wenn Sie eine programmatische Suche nach Diagrammen, deren Unterfenstern und Indikatoren in Unterfenstern durchführen, können Sie die Gesamtzahl der Indikatoren und deren Namen, Parameter usw. herausfinden.

Verwendung von ChartIndicatorsTotal, ChartIndicatorName usw.

Wie kann ich auf die gleiche Weise den ChartID-Namen des in diesem Fenster laufenden Expert Advisors herausfinden?

Frage zu MT4

eine andere Frage... Wie kann ich MT4-Logdateien lesen? Dieser Code gibt einen Fehler ... 5002

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

    string str=FileReadString(filehandle); 
 
Können Sie mir bitte sagen, was ist der Grund?HttpSendRequestW sendet keine Anfrage... GetLastError ergibt 0.

(das Interessante daran ist, dass die zweite Version von WebRequest funktioniert... )

#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:
Können Sie mir bitte sagen, was falsch ist?HttpSendRequestW sendet keine Anfrage... GetLastError ergibt 0.

(Das Interessante daran ist, dass die zweite Version von WebRequest funktioniert ... )


Wenn die zweite Variante funktioniert, dann gibt es eine Lösung. Wo liegt also das Problem?
 
Vinin:
Wenn die zweite Option funktioniert, gibt es eine Lösung. Wo liegt also das Problem?
das Problem ist, dass es so viele Links gibt, die in den Terminaleinstellungen als erlaubte Adressen eingegeben werden müssen( + ich habe nicht denselben Computer...
ist überhaupt keine Option(
 

Hallo!

Können Sie mir bitte sagen, wie ich den Anfang des Taktes in der for-Schleife finden kann, im Allgemeinen muss ich vom 1. bis einschließlich zum 5. (der aktuelle 0-Balken wird nicht gezählt).

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

{

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

......

Lesen Sie die Funktion für zu verstehen, nur ich kann nicht. Hilfe.

Herzliche Grüße!

 
Money_Maker:
Können Sie mir bitte sagen, was falsch ist?HttpSendRequestW sendet die Anforderung nicht... GetLastError ergibt 0.

(Das Interessante daran ist, dass die zweite Version von WebRequest funktioniert... )


Es ist nicht mehr die Zeichenkette, die übertragen werden muss, sondern der Zeichenpuffer.

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

 
Shargyn:

Hallo!

Können Sie mir bitte sagen, wie ich den Anfang des Taktes in der for-Schleife finden kann, im Allgemeinen muss ich vom 1. bis zum 5. einschließlich suchen? (der aktuelle 0-Balken wird nicht gezählt)

Lesen Sie die Funktion für zu verstehen, nur ich kann nicht. Hilfe.

Herzliche Grüße!

mit, zu, was zu tun

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

oder

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

Aber ja. Die logischste Maßnahme während der Entwicklung war es, die

mit, was zu tun, zu

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));
Vielen Dank für Ihre Antwort, bitte sagen Sie mir, ob ich Sie richtig verstanden habe, meinen Sie so?

so aus irgendeinem Grund das Ergebnis nicht ändern entweder ... (

eine andere Frage: vielleicht kann man programmatisch URLs zu den erlaubten hinzufügen? (z. B. über Makro-Substitution)
und offen gesagt möchte ich WebRequest nicht verwenden, weil es nicht asynchron ist....