Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 112

 
Wie erhalte ich Gutschriften oder wie kann ich sie einzahlen?
 

Hier ist der Code für den Expert Advisor, der diesen Indikator TrendToTrend_open verwendet

untenstehender Code

Frage - warum setzt mein Expert Advisor diesen Indikator mit einem Schlusskurs?

//--- входные параметры
input int LongTrend=14; // Период LongTrend
input int ShortTrend=7; // Период ShortTrend
input int EA_Magic=0;   // Magic Number советника
input double Lot=0.02; // Количество лотов
input double STR= 0.14;
input double TR= 0.1;
input double TP= 0.55;

//--- глобальные переменные

int TrendToTrend;
int TrendToTrendOpen;

//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
  {
  //--- достаточно ли количество баров для работы
   if(Bars(_Symbol,_Period)<60) // общее количество баров на графике меньше 60?
     {
      Alert("На графике меньше 60 баров, советник не будет работать!!");
      return(-1);
     }
TrendToTrend=iCustom(_Symbol,0,"TrendToTrend",LongTrend,ShortTrend);
TrendToTrendOpen=iCustom(_Symbol,0,"TrendToTrend_open",LongTrend,ShortTrend);

if(TrendToTrend<0||TrendToTrendOpen<0)
     {
      Alert("Ошибка при создании индикаторов - номер ошибки: ",GetLastError(),"!!");
      return(-1);
     } 
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- освобождаем хэндлы индикаторов
   IndicatorRelease(TrendToTrend);
   IndicatorRelease(TrendToTrendOpen);
   }
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
  {
   static datetime Old_Time;
   datetime New_Time[1];
   bool IsNewBar=false;

// копируем время текущего бара в элемент New_Time[0]
   int copied=CopyTime(_Symbol,_Period,0,1,New_Time);
   if(copied>0) // ok, успешно скопировано
     {
      if(Old_Time!=New_Time[0]) // если старое время не равно
        {
         IsNewBar=true;   // новый бар
         if(MQL5InfoInteger(MQL5_DEBUGGING)) Print("Новый бар",New_Time[0],"старый бар",Old_Time);
         Old_Time=New_Time[0];   // сохраняем время бара
        }
     }
   else
     {
      Alert("Ошибка копирования времени, номер ошибки =",GetLastError());
      ResetLastError();
      return;
     }
//--- советник должен проверять условия совершения новой торговой операции только при новом баре
   if(IsNewBar==false)
     {
      return;
     }
//--- Имеем ли мы достаточное количество баров на графике для работы
   int Mybars=Bars(_Symbol,_Period);
   if(Mybars<60) // если общее количество баров меньше 60
     {
     Alert("На графике менее 60 баров, советник работать не будет!!");
     return;
     }
return; 
}
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 

Hallo!


Können Sie mir bitte sagen, wo die Antwort auf Ihre Frage zu finden ist?

Ich habe einen EA mit zwei Strategien, die den Handel nach unterschiedlichen Prinzipien eröffnen. Sie hat einen gemeinsamen Standpunkt als Endergebnis.

Etwas später muss ich verstehen, wie jede Strategie zu der Position beigetragen hat. Welche Strategie (oder zwei) eröffnete also die Position?

Wie kann ich das tun?


Ich danke Ihnen!

 
sanderz:

Hallo!


Können Sie mir bitte sagen, wo die Antwort auf Ihre Frage zu finden ist?

Ich habe einen EA mit zwei Strategien, die den Handel nach unterschiedlichen Prinzipien eröffnen. Sie hat einen gemeinsamen Standpunkt als Endergebnis.

Etwas später muss ich verstehen, wie jede Strategie zu der Position beigetragen hat. Welche Strategie (oder zwei) eröffnete also die Position?

Wie kann ich das tun?


Ich danke Ihnen!

Wenn Ihr EA die Möglichkeit hat, eine der Strategien zu deaktivieren und Sie die magische Zahl in den Einstellungen ändern können. Dann sollten Sie zwei EAs in Ihrem Konto hinzufügen und eine der Strategien in jedem von ihnen deaktivieren und unterschiedliche magische Zahlen für Positionen festlegen und dann magische Zahlen in der Historie verwenden, um zu verfolgen, welche mehr Gewinn oder Verlust bringt.
 
Kino:
Wenn der EA die Möglichkeit hat, eine der Strategien zu deaktivieren und Sie die magische Zahl in den Einstellungen ändern können. Dann setzen Sie zwei EAs auf das Konto und deaktivieren Sie eine der Strategien in jedem von ihnen und weisen Sie unterschiedliche magische Zahlen für Positionen zu, und verfolgen Sie dann in der Historie, was mehr Plus oder Minus durch magische Zahlen ergibt.

Vielen Dank für die Antwort. Ich habe durch statische Variablen, die ihren Wert ändern, wenn die Strategie Position offen ist (auf Schließung und Stop-Loss auch Werte ändern). Im Allgemeinen funktioniert dies gut, aber ich verstehe, dass nach dem Neustart des EA es seine Aufträge verlieren wird.

Документация по MQL5: Основы языка / Переменные / Статические переменные
Документация по MQL5: Основы языка / Переменные / Статические переменные
  • www.mql5.com
Основы языка / Переменные / Статические переменные - Документация по MQL5
 
Warum tickt das Geld nicht?
Dateien:
965pp1ixr4.png  2000 kb
 
sneak:
Warum tickt das Geld nicht?
Die Berechnung wird nicht häufig aktualisiert. Vielleicht einmal pro Tag.
 

Danke, Kumpel ... ich werde daran denken.

Ich habe Computer im Keller, ...., Bergbau in den Töpfen... lasst uns etwas tun.

 

Ich verstehe nicht, warum die Funktion 0 zurückgibt:

int BarsAmountPassed(datetime open_time)
  {
   datetime time_array[];
   int n;
   Print("inpupt time=",TimeToString(open_time));
   CopyTime(_Symbol,_Period,open_time,TimeCurrent(),time_array);
   n=ArraySize(time_array);
   Print("number of elements in array=",n);
   return(n);
  }

Zum Beispiel mit einem Anruf wie diesem:

int bars;
bars=BarsAmountPassed(1365198000);  
Print(__FUNCTION__+": Баров прошло с этого времени ",bars);
n schreibt korrekt, gibt aber 0 zurück.
 
tor4en:

Ich verstehe nicht, warum die Funktion 0 zurückgibt:

Zum Beispiel mit einem Anruf wie diesem:

n schreibt korrekt, gibt aber 0 zurück.
Seltsam ist, dass, wenn ich den Funktionstyp in short oder double ändere, der berechnete Wert zurückgegeben wird (in diesem Beispiel ist er 4). Aber mit int 0.
Grund der Beschwerde: