Um auf das Problem der Bestimmung von Stoplosses und Takeprofits im OnTradeTransaction-Ereignis zurückzukommen. Ich habe das folgende Protokoll, das alle Felder der Strukturen ausgibt (aus dem MetaQuotes-Beispiel), und dies ist nicht mehr ein Tester, sondern ein Online-Wettbewerb. Hier haben wir einen Kauf:
Das Einzige, was diese Transaktionen verbindet, ist der Preis(Schlusskurs gleich TP-Kurs). Frage: Ist das die Art und Weise, wie man die Tatsache der TP feststellt? Imho unbequem und zweideutig (wenn ich mich richtig erinnere, kann der genaue TP-Kurs nicht eintreten und der TP wird zum nächstgelegenen anderen Kurs geschlossen).
Guten Tag! Ich entschuldige mich im Voraus, vielleicht bin ich begriffsstutzig, oder ich verstehe einige offensichtliche Dinge nicht. Ich versuche, den iMA-Indikator zu verwenden, indem ich versuche, nach den Beispielen zu schreiben, die ich gelesen habe.
Im Allgemeinen versuche ich, es so zu machen. Ich erkläre an der Spitze, über allen Funktionen von EA.
double MA[]; // массив для индикатора iMA//---- handles for indicatorsint MA_handle; // указатель на индикатор iMA
Dann verwende ich eine Funktion, die in der Funktion OnTick() funktioniert. In dem Beispiel steht die Funktion selbst ganz unten. In der Tat werde ich zunächst nur den letzten Nullwert des Arrays verwenden.
if (EURNZD_d1 != 0.0) countq++;
EURUSD_d1 = CalculateStrengthPairsTF("EURUSD"+dop_symb, PERIOD_D1);
if (EURUSD_d1 != 0.0) countq++;
EURCAD_d1 = CalculateStrengthPairsTF("EURCAD"+dop_symb, PERIOD_D1);
if (EURCAD_d1 != 0.0) countq++;
EURGBP_d1 = CalculateStrengthPairsTF("EURGBP"+dop_symb, PERIOD_D1);
if (EURGBP_d1 != 0.0) countq++;
EURAUD_d1 = CalculateStrengthPairsTF("EURAUD"+dop_symb, PERIOD_D1);
if (EURAUD_d1 != 0.0) countq++;
EURCHF_d1 = CalculateStrengthPairsTF("EURCHF"+dop_symb, PERIOD_D1);
if (EURCHF_d1 != 0.0) countq++;
if (countq != 0) D1_eur = NormalizeDouble((EURJPY_d1 + EURNZD_d1 + EURUSD_d1 + EURCAD_d1 + EURGBP_d1 + EURAUD_d1 + EURCHF_d1) / countq, 0);
}
int l_count_4 = 0;
AVG_eur = 0;
if (M1_eur != 0.0) l_count_4++;
if (M5_eur != 0.0) l_count_4++;
if (M15_eur != 0.0) l_count_4++;
if (M30_eur != 0.0) l_count_4++;
if (H1_eur != 0.0) l_count_4++;
if (H4_eur != 0.0) l_count_4++;
if (D1_eur != 0.0) l_count_4++;
if (l_count_4 != 0) AVG_eur = (M1_eur + M5_eur + M15_eur + M30_eur + H1_eur + H4_eur + D1_eur) / l_count_4;
}
double CalculateStrengthPairsTF(string a_symbol, int a_timeframe) {
int DIGITS_ = SymbolInfoInteger(a_symbol,SYMBOL_DIGITS);
//---MqlTick last_tick;
if(SymbolInfoTick(a_symbol,last_tick));
double BID_ = last_tick.bid;
BID_ = NormalizeDouble( BID_, DIGITS_);
MA_handle=iMA(a_symbol,a_timeframe,Period_,0,method_ma,price_applied);
//--- заполнение массива MA[] текущими значениями индикатора iMA//--- в массив будет записано 100 элементовCopyBuffer(MA_handle,0,0,100,MA);
//--- задаём порядок индексации массива MA[] как в MQL4ArraySetAsSeries(MA,true);
double iMA_ = NormalizeDouble(MA[0], DIGITS_);
Ich werde nur den letzten Nullwert verwenden.
Fehler 'a_timeframe' - kann enum nicht konvertieren Owl.mq5 2009 28
Was diese imino-Variable betrifft, so befindet sie sich in der string-type-Anweisung, die selbst blau leuchtet...
Valmars: Dies ist ein reiner Testerfehler. Das Feld Trans.price_tp kann im Falle von TRADE_TRANSACTION_DEAL_ADD 0 oder beliebigen Unsinn enthalten. Beim Online-Handel wird alles korrekt ausgegeben.
Ich danke Ihnen. Behoben. Ein Fix wird in der nächsten Build verfügbar sein.
Bitte geben Sie an, warum die Zeile request.type_filling=ORDER_FILLING_AON; im EA den Fehler 'ORDER_FILLING_AON' - nicht deklarierter Bezeichner cs2011.mq5 127 28 in Version 697 enthält
Bitte geben Sie an, warum die Zeile request.type_filling=ORDER_FILLING_AON; im EA den Fehler 'ORDER_FILLING_AON' - nicht deklarierter Bezeichner cs2011.mq5 127 28 in Version 697 enthält
Aus irgendeinem Grund sehe ich folgendes Bild: Wenn ich im Terminal einen Indikator aus dem Navigator in ein Diagramm einfüge, zeigt das Diagramm jedoch einen leeren Bereich für den Indikator, der Indikator selbst wird nicht angezeigt, aber wenn ich die Liste der Diagrammindizes öffne, erscheint er dort mit dem Hinweis "Debugging". Was ist dieser Fehler und wie kann ich ihn bekämpfen?
marketeer: Aus irgendeinem Grund sehe ich folgendes Bild: Wenn ich im Terminal einen Indikator aus dem Navigator in ein Diagramm einfüge, zeigt das Diagramm jedoch einen leeren Bereich für den Indikator, der Indikator selbst wird nicht angezeigt, aber wenn ich die Liste der Diagrammindizes öffne, erscheint er dort mit dem Hinweis "Debugging". Worum handelt es sich bei diesem Fehler und wie kann ich ihn beheben?
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Um auf das Problem der Bestimmung von Stoplosses und Takeprofits im OnTradeTransaction-Ereignis zurückzukommen. Ich habe das folgende Protokoll, das alle Felder der Strukturen ausgibt (aus dem MetaQuotes-Beispiel), und dies ist nicht mehr ein Tester, sondern ein Online-Wettbewerb. Hier haben wir einen Kauf:
Und hier schließt er mit Take Profit:
Das Einzige, was diese Transaktionen verbindet, ist der Preis(Schlusskurs gleich TP-Kurs). Frage: Ist das die Art und Weise, wie man die Tatsache der TP feststellt? Imho unbequem und zweideutig (wenn ich mich richtig erinnere, kann der genaue TP-Kurs nicht eintreten und der TP wird zum nächstgelegenen anderen Kurs geschlossen).
Guten Tag! Ich entschuldige mich im Voraus, vielleicht bin ich begriffsstutzig, oder ich verstehe einige offensichtliche Dinge nicht. Ich versuche, den iMA-Indikator zu verwenden, indem ich versuche, nach den Beispielen zu schreiben, die ich gelesen habe.
Im Allgemeinen versuche ich, es so zu machen. Ich erkläre an der Spitze, über allen Funktionen von EA.
Dann verwende ich eine Funktion, die in der Funktion OnTick() funktioniert. In dem Beispiel steht die Funktion selbst ganz unten. In der Tat werde ich zunächst nur den letzten Nullwert des Arrays verwenden.
Ich werde nur den letzten Nullwert verwenden.
Fehler 'a_timeframe' - kann enum nicht konvertieren Owl.mq5 2009 28
Was diese imino-Variable betrifft, so befindet sie sich in der string-type-Anweisung, die selbst blau leuchtet...
Schreibt Fehler 'a_timeframe' - kann enum nicht konvertieren Owl.mq5 2009 28
Ich danke Ihnen!!! Ist es dasselbe wie double, string oder int? Ich verstehe nicht, sorry, wo soll ich diesen Typ eintragen?
In Ordnung, danke!
Dies ist ein reiner Testerfehler. Das Feld Trans.price_tp kann im Falle von TRADE_TRANSACTION_DEAL_ADD 0 oder beliebigen Unsinn enthalten. Beim Online-Handel wird alles korrekt ausgegeben.
Bitte geben Sie an, warum die Zeile request.type_filling=ORDER_FILLING_AON; im EA den Fehler 'ORDER_FILLING_AON' - nicht deklarierter Bezeichner cs2011.mq5 127 28 in Version 697 enthält
Bitte geben Sie an, warum die Zeile request.type_filling=ORDER_FILLING_AON; im EA den Fehler 'ORDER_FILLING_AON' - nicht deklarierter Bezeichner cs2011.mq5 127 28 in Version 697 enthält
Denn die Sprache hat sich seit der Erstellung des EA geändert.
request.type_filling=ORDER_FILLING_AON in diese Zeile einfügen;
request.type_filling=ORDER_FILLING_FOK; und viel Glück.
Oder Sie können einfach 0 eingeben
request.type_filling=0;
wird auch funktionieren.
PS oder alternativ (um zu vermeiden, dass Sie den gesamten EA bearbeiten müssen) können Sie einen Patch an den Anfang von allem setzen
#define ORDER_FILLING_AON ORDER_FILLING_FOK
Dies ist nur für den Fall, dass ORDER_FILLING_AON mehrmals erwähnt wird.
Aus irgendeinem Grund sehe ich folgendes Bild: Wenn ich im Terminal einen Indikator aus dem Navigator in ein Diagramm einfüge, zeigt das Diagramm jedoch einen leeren Bereich für den Indikator, der Indikator selbst wird nicht angezeigt, aber wenn ich die Liste der Diagrammindizes öffne, erscheint er dort mit dem Hinweis "Debugging". Worum handelt es sich bei diesem Fehler und wie kann ich ihn beheben?
Gute Leute, Hilfe!
Nehmen Sie den einfachsten Code.
#property copyright "Copyright 2011,"
#property link "http://www.mql5.com"
#property version "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
double Vhod;
Vhod=linfunc(15);
//---
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
double linfunc(int b) // имя функции и список параметров
{
double a;
while((a/b)<1 && !IsStopped())//---------
{
a=a+1;
}
double f=a+b;
// составной оператор
return(a+b); // возвращаемое значение
}
Wir kompilieren es mit dem 687-Build und erhalten Vhod=0 im Debugger.
Wie verstehen Sie das? Gleichzeitig habe ich manchmal Vhod=30. (seltsam, aber wahr).
return gibt irgendeinen Unsinn zurück...
Was sind das für Pannen, oder habe ich etwas übersehen?