Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1467

 

Können Sie es einfach halten?)))

Woher bekomme ich das?

Der Indikator hat einen geschlossenen Code, wie kann ich den Namen dieser Aufzählung erfahren?

Und welche Art von Variable benötige ich?

Ich weiß nur, wie man Indikatoren über iCustom zusammenführt, aber ich bin nicht in der Lage, weiter zu gehen).

Wenn es nicht zu schwierig ist, könnten Sie es einfacher machen))))

ENUM_BASE_CORNER ausprobiert, es wird immer noch nicht angezeigt.
 
Сергей:

Können Sie es einfach halten?)))

Woher bekomme ich das?

Der Indikator hat einen geschlossenen Code, wie kann ich den Namen dieser Aufzählung erfahren?

Und welche Art von Variable benötige ich?

Ich weiß nur, wie man Indikatoren über iCustom zusammenführt, aber ich bin nicht in der Lage, weiter zu gehen).

Wenn es nicht zu schwierig ist, könnten Sie es einfacher machen))))

ENUM_BASE_CORNER versucht, wird immer noch nicht angezeigt.

Hier ist ein Beispiel.

Die erste Möglichkeit ist die Verwendung der Standardaufzählung ENUM_BASE_CORNER.

Die zweite Variante ist die Verwendung der benutzerdefinierten Aufzählung

Dann in iCustom, wo es platziert werden sollte base oder my_base Variable, je nachdem, welche Variante Sie wählen.

Dateien:
100.mq4  5 kb
 
Сергей:

Hallo.

Könnten Sie mir einen Tipp geben, ich bin überfordert.

Ich verschreiben Indikator durch iCustom und mit einem Problem konfrontiert - Indikator hat einen Text-Menü mit einer Auswahl, öffnet es und es gibt mehrere Elemente vorgeschrieben, na ja, ich denke, es ist klar)

Wie kann ich sie in das Menü aufnehmen?

extern int HIT = 0; funktioniert nicht, die Anzeige bleibt stehen, es wird kein Parameter angezeigt.

Vielleicht durch ENUM , da was zu wählen, oder vielleicht etwas anderes?

Vielen Dank im Voraus.

Haben Sie alle Parameter in iCustom(,,,,,,,) in der richtigen Reihenfolge eingegeben?

 

Guten Tag zusammen. Ich versuche Daten zu sammeln, wenn ich eine Order eröffne. Ich möchte den Wert des adh-Indikators bei Candlesticks 1,2,3 in einer Datei aufzeichnen, wenn ich eine Order eröffne.

Ich tue Folgendes. Ich öffnete das Datenverzeichnis, ging in den Ordner "Tester", dann in den Ordner "Dateien" und erstellte dort eine Datei namens "ZNA4_ADX.csv". dann in der Bibliotheksdatei mit der Erweiterung .mqh-Datei mit der Erweiterung . Nachstehend finden Sie den auskommentierten Funktionscode.

void writing_adx_screen1_to_file(int i_param) // ФУНКЦИЯ ЗАПИСИ ДАННЫХ В ФАЙЛ
   { //---НАЧАЛО ФУНКЦИИ ЗАПИСИ В ФАЙЛ ЗНАЧЕНИЯ АДХ ПО ПЕРВОМУ ЭКРАНУЭКРАНУ-----------------------------------------------------------------------+
   
   //-НАЧАЛО ПОЛУЧЕНИЯ ХЕНДЕЛА ОТКРЫВАЕМОГО ФАЙЛА------------------------------------------------------------------------------+
   int hendel= FileOpen("ZNA4_ADX.csv",FILE_WRITE,';');
   
   //-КОНЕЦ ПОЛУЧЕНИЯ ХЕНДЕЛА ОТКРЫВАЕМОГО ФАЙЛА------------------------------------------------------------------------------+
   
   
//---НАЧАЛО ПОЛУЧЕНИЯ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ------------------------------------------------------------------------+

  double adx1= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,1);

//---АДХ_СВЕЧА 2 НАЧАЛО------------------------------------------------------------------------------------------+

double adx2= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,2);
//---АДХ_СВЕЧА 2 КОНЕЦ---------------------------------------------------------------------------------------------+

//---АДХ_СВЕЧА 3 НАЧАЛО------------------------------------------------------------------------------------------+

double adx3= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,3);
//---АДХ_СВЕЧА 3 КОНЕЦ----------------------------------------------------------------------------------------+

//--КОНЕЦ ПОЛУЧЕНИЯ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ//------------------------------------------------------------------------------+
if(hendel>0)
FileWrite(hendel,"ордер "+(string)i_param+" "+(string)adx1,(string)adx2,(string)adx3); // ЗАПИСЫВАЮ ДАННЫЕ В ФАЙЛ:)

FileClose(hendel);

   
   }//---КОНЕЦ ФУНКЦИИ ЗАПИСИ В ФАЙЛ ЗНАЧЕНИЯ АДХ ПО ПЕРВОМУ ЭКРАНУ----------------------------------------------------------------+

Ich möchte, dass die Daten wie auf dem Screenshot unten geschrieben werden.

BEISPIEL, WIE ICH DATEN ERFASSEN MÖCHTE


Das heißt, der rote Text ist eine Überschrift, die ich manuell schreiben werde. Zeile 2 ist das, was ich mit dieser Funktion einstellen möchte. Das ist 1 Bestellnummer im Test. Und wir haben drei adx-Werte. Dann, wenn der zweite Auftrag im Test öffnet, brauchen wir die nächste Zeile, wo die Auftragsnummer 2 wird, und adx Werte wird für drei Candlesticks geschrieben werden, bevor dieser Auftrag öffnet, und so weiter, wie viele Aufträge im Test herauskommen wird...

Ich rufe die Funktion selbst im EA-Code auf, wie im folgenden Codeschnipsel gezeigt.


  //---КОНЕЦ БАЙ ТРЕНДА СИГНАЛ АО------------------------------------------------------------------------------------------+
  if(f_end_trend_buy_ao_market_order() && count_orders_market_buy == 0 && count_orders_market_sell == 0)
  {// НАЧАЛО ЕСЛИ ЕСТЬ СИГНАЛ ОКОНЧАНИЯ БАЙ ТРЕНДА ДИВЕРЕГЕНЦИЯ АО
      if(OrderSend(Symbol(),OP_SELL,lot,Bid,slippages,Bid+sl , Bid-tp ,Coment, Magik_number)) Print("ОТКРЫВАЕМ ОРДЕР СЕЛЛ ПО СИГНАЛУ ОКОНЧАНИЯ ТРНЕДА- ДИВЕРЕГЕНЦИЯ АО"); // ОТКРКЫВВАЕМ СЕЛ ОРДЕР
      writing_adx_screen1_to_file(i_nomer_ordera);// ВЫЗОВ ФУНКЦИ ЗАПИСИ ДАННЫХ В ФАЙЛ
      if (GetLastError()==141){Alert("ОШИБКА № "+string(GetLastError())+"УДАЛЯЕМ ЭКСПЕРТА С ГРАФИКА"); ExpertRemove();}// ПРОВЕРКА ОТ ДОЛБАНИЯ СЕРВЕРА И БАНА СЧЁТА   


  } // КОНЕЦ ЕСЛИ ЕСТЬ СИГНАЛ ОКОНЧАНИЯ БАЙ ТРЕНДА ДИВЕРЕГЕНЦИЯ АО//-------------------------------------------------------------------------------------------------+
  



Der Test läuft ohne Fehler, aber ich habe dieses Ergebnis in der Datei (SCREEN BELOW ).

WAS ICH BEIM SCHREIBEN IN DIE DATEI ERHALTE


Ich erhielt eine Zeile mit dem ersten Auftrag und drei Werten, aber es gab 189 offene Aufträge im Test. Was und wo habe ich vergessen, die Variable für die Zählung der Anzahl der Bestellungen zu erhöhen, und wie muss ich dafür sorgen, dass die Daten nach der ersten Bestellung in den Zeilen 2,3-189 erfasst werden? Bitte schicken Sie mich nicht zu Code Base und anderen Orten, wo es für mich schwierig ist, Text zu lesen, und der Code anderer Leute fast unmöglich ist. Sagen Sie mir also ganz klar, was ich hinzufügen soll und wo ich die benötigten Daten bekomme? P/S wenn es Ihnen nichts ausmacht, den Punkt mit dem Zusatz hervorzuheben ...

 
DanilaMactep:

Guten Tag zusammen. Ich versuche Daten zu sammeln, wenn ich eine Order eröffne. Ich möchte den Wert des adh-Indikators bei Candlesticks 1,2,3 in einer Datei aufzeichnen, wenn ich eine Order eröffne.

Ich tue Folgendes. Ich öffnete das Datenverzeichnis, ging in den Ordner "Tester", dann in den Ordner "Dateien" und erstellte dort eine Datei namens "ZNA4_ADX.csv". dann in der Bibliotheksdatei mit der Erweiterung .mqh-Datei mit der Erweiterung . Nachstehend finden Sie den auskommentierten Funktionscode.

Ich möchte, dass die Daten wie auf dem Screenshot unten geschrieben werden.


Das heißt, der rote Text ist eine Überschrift, die ich manuell schreiben werde. Zeile 2 ist das, was ich mit dieser Funktion einstellen möchte. Das heißt, 1 ist die Bestellnummer im Test. Und wir haben drei adx-Werte. Dann, wenn der zweite Auftrag im Test öffnet, brauchen wir die nächste Zeile, wo die Auftragsnummer 2 wird, und adx Werte wird für drei Candlesticks geschrieben werden, bevor dieser Auftrag öffnet, und so weiter, wie viele Aufträge im Test herauskommen wird...

Ich rufe die Funktion selbst im EA-Code auf, wie im folgenden Codeschnipsel gezeigt.




Der Test läuft ohne Fehler, aber ich habe dieses Ergebnis in der Datei (SCREEN BELOW ).


Ich erhielt eine Zeile mit dem ersten Auftrag und drei Werten, aber es gab 189 offene Aufträge im Test. Was und wo habe ich vergessen, die Variable für die Zählung der Anzahl der Bestellungen zu erhöhen, und wie muss ich dafür sorgen, dass die Daten nach der ersten Bestellung in den Zeilen 2,3-189 erfasst werden? Bitte schicken Sie mich nicht zu Code Base und anderen Orten, wo es für mich schwierig ist, Text zu lesen, und der Code anderer Leute fast unmöglich ist. Sagen Sie mir also ganz klar, was ich hinzufügen soll und wo ich die benötigten Daten bekomme? P/S wenn es Ihnen nichts ausmacht, den Punkt mit dem Zusatz hervorzuheben ...

Wenn die Datei nur mit einem Flag FILE_WRITE geöffnet wird, wird alles in der Datei entfernt. Um vorhandene Daten in einer Datei zu speichern, müssen Sie die Datei zum Lesen und Schreiben öffnen.

Vergessen Sie dann nicht, den Zeiger an das Ende der Datei zu setzen.

 
Alexey Viktorov:

Wenn die Datei nur mit einem Flag FILE_WRITE geöffnet wird, wird alles in der Datei gelöscht. Um vorhandene Daten in der Datei zu speichern, müssen Sie die Datei zum Lesen und Schreiben öffnen.

Vergessen Sie dann nicht, den Zeiger an das Ende der Datei zu setzen.

Alexey, vielen Dank für den Hinweis, wo ich den Fehler "ausgraben" muss - bisher ist es mir gelungen, eine zeilenweise Aufzeichnung zu erstellen - jetzt muss ich das Ganze nur noch in eine für die Analyse brauchbare Form bringen))))
 

Die Werte des Arrays befinden sich in RAM-Zellen, die aufeinander folgen. Die maximale Länge der unbesetzten Zellen kann davon abhängen.

 
Warum funktioniert das nicht mit Funktionsadressen?
template<typename T>
typedef T (*Fun)(const int, const int, const double &[], const double &[], const double &[], const double &[], const int &[]);
Fun    calculation,
       function;

//------------------------------------------------------------------------------------------------------------------------------

int OnInit()
  {
   calculation  = test;
   function     = Dis_HL_Value;
  //-----------------------------------------------------------------
   return(INIT_SUCCEEDED);
  }
 
Hallo, können Sie mir sagen, ob dies eine Deklaration eines zweidimensionalen Arrays ist?
      ArrayInitialize(ZigZagBuffer,0.0);
Vielen Dank im Voraus!
 
Дмитрий:
Hallo, können Sie mir sagen, ob dies eine Deklaration eines zweidimensionalen Arrays ist? Vielen Dank im Voraus!

Nein, es ist eine Initialisierung einer bereits deklarierten.