Fehler, Irrtümer, Fragen - Seite 2964

 
Roman:

Ersetzen Sie die Struktur durch eine einzelne Variable ))

Nicht übertragbar.

 
fxsaber:

Es wird nicht übertragen.

Haben Sie daran gedacht, die Funktion in den Expert Advisor zu importieren?
Ich habe das Beispiel für die Struktur aktualisiert, es war nicht viel falsch dort.
Wenn Sie mit einer Struktur arbeiten, sollten Sie sich überlegen, wie Sie ein Strukturobjekt deklarieren, global oder lokal.
Und für eine Variable ist all dies nicht erforderlich, geben Sie einfach die Variable zurück und das war's.

Документация по MQL5: Основы языка / Препроцессор / Импорт функций (#import)
Документация по MQL5: Основы языка / Препроцессор / Импорт функций (#import)
  • www.mql5.com
Импорт функций (#import) - Препроцессор - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Roman:

Haben Sie daran gedacht, die Funktion in den EA zu importieren?

Können Sie den Quellcode des Indikators und EA für Ihre Idee zur Verfügung stellen oder nicht?

 
fxsaber:

Können Sie den Quellcode des Indikators und EA für Ihre Idee zur Verfügung stellen oder nicht?

Ja, es ist seltsam. Der Export für Funktionen in mql4 will aus irgendeinem Grund nicht funktionieren.
Ich erhalte keine Ergebnisse von der Bibliothek oder dem Indikator. Ich habe jedoch Funktionen in Abhängigkeiten gesehen.
Ein Beispiel für die Bibliothek

#property library
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

double value = 0.0;

//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
double SetValue(double v) export
{
   value = v;    
   return(value);
}

//+------------------------------------------------------------------+
double GetValue(void) export
{
   return(value);
}
//+------------------------------------------------------------------+

Ein Indikator, der einen Wert setzt

#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window

#import "Lib.ex4"
   double SetValue(double v);
   double GetValue(void);
#import

MqlTick tick;


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{

   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
   Comment("");
}
  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   
   SymbolInfoTick(NULL, tick);
   SetValue(tick.bid);
   
   //Comment((string)GetValue());   
   
   return(rates_total);
}
//+------------------------------------------------------------------+

Ein Expert Advisor, der einen Wert über eine Funktion erhalten soll, aber nicht funktioniert

#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

#import "Lib.ex4"
   double GetValue(void);
#import

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   EventSetMillisecondTimer(10);
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   Comment("");
   EventKillTimer();
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
}

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
{
   double bid = GetValue();
   
   Comment("\r\nЭксперт получил значение из индикатора = "+(string)bid);
   //ChartRedraw();

}
//+------------------------------------------------------------------+
 
fxsaber:

Ich sende Ticks aus dem Indikator über diese: sparam enthält MqlTick, lparam - Tick-Nummer.

Der Expert Advisor fängt diese Ticks in OnChartEvent ab. Und sie muss wissen, ob der aktuelle Tick der aktuellste ist oder nicht? Das heißt, gibt es eine Warteschlange mit Zecken oder ist sie leer?

Dazu liest er die Nummer (die Aufgabe besteht darin, diese Nummer zu lesen) des letzten vom Indikator gesendeten Ticks. Wenn das Häkchen die gleiche Nummer hat, ist die Warteschlange leer, und es kann mit den Häkchen gearbeitet werden.


Und während der Operation von OnTick, nach OrderSend ist es notwendig zu prüfen, ob der Indikator mehr Ticks gesendet hat. Dazu müssen wir wieder die Zahl aus dem Indikator ablesen. Und es kann mehr als hundert solcher Überprüfungen während eines OnTicks geben. Deshalb müssen wir sie schnell lesen.

Wenn der Expert Advisor die Ticks durch CopyTicks übernimmt, warum muss er dann wissen, dass die Warteschlange leer ist?

Lassen Sie es jedes der Ereignisse bearbeiten und überspringen Sie die Ereignisse, die weniger Zeit haben als die bereits bearbeiteten.

 
Andrey Khatimlianskii:

Wenn mein Expert Advisor immer noch Ticks über CopyTicks aufnimmt, warum muss er dann wissen, dass die Warteschlange leer ist?

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

fxsaber, 2021.02.17 21:26

Bitte teilen Sie meine Gedanken zu diesem Thema(MT4):

Der Indikator muss irgendwo int-number schreiben. Und EA muss sie lesen.

 
fxsaber:

Würde etwas wie dies helfen?

https://www.mql5.com/ru/code/818

File Mapping без DLL
File Mapping без DLL
  • www.mql5.com
Класс MQL5, который работает напрямую с маппингом, без использования самописной DLL.
 
Mikhail Mishanin:

Würde etwas wie dies helfen?

https://www.mql5.com/ru/code/818

Eine schnelle WinAPI-Option wurde oben vorgeschlagen.

 
fxsaber:

Eine schnelle WinAPI-Variante wurde oben vorgeschlagen.

diese Option ist gefährlicher und schwieriger zu realisieren

 
Andrei Trukhanovich:

diese Option ist gefährlicher und schwieriger zu realisieren

Ich warte auf diesen Film.

Grund der Beschwerde: