Es gibt sie, nur nicht genau dieselbe. Nachdem Sie einen Auftrag ausgewählt haben, müssen Sie über weitere Funktionen die Auftragsart und das Ticket festlegen.
Чтобы определить, из какого списка выбран ордер, необходимо проанализировать его время закрытия. Если время закрытия ордера равно 0, то ордер является открытым или отложенным и взят из списка открытых ордеров терминала. Отличить открытый ордер от отложенного ордера можно по типу ордера. Если время закрытия ордера не равно 0, то ордер является...
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает суммарный профит в валюте депозита |//| закрытых с определённой даты позиций |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| dt - Дата и время в секундах с 1970 года ( 0 - с начала истории) |//+----------------------------------------------------------------------------+double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1, datetime dt=0)
{
double p=0;
int i, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (dt<OrderCloseTime()) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
}
return(p);
}
// код Кима изменил на это и теперь от считает профит за сегодня и обнуляется в полночьdouble GetProfitFromDateInCurrency1(string sy="0", int op=-1, int mn=-1)
{
double p=0;
int i, k=OrdersHistoryTotal();
datetime dt=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE));
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (dt<OrderCloseTime()) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
}
return(p);
}
Hallo. Bitte helfen Sie mir bei der Berechnung des Gewinns der gestern und vorgestern abgeschlossenen Geschäfte usw. Ich möchte den Gewinn für heute, den Gewinn für gestern und den Gewinn für vorgestern berechnen.
Ich habe den Code/ für die heutige Gewinnberechnung kopiert.
oder wie man den heutigen Gewinn setzt, um diesen Wert auf den gestrigen Gewinn und dann auf den Gewinn des Vortages zu verschieben
Hallo. Bitte helfen Sie mir bei der Berechnung des Gewinns der gestern und vorgestern abgeschlossenen Geschäfte usw. Ich möchte den Gewinn für heute, den Gewinn für gestern und den Gewinn für vorgestern berechnen.
Um den Gewinn für heute zu berechnen, kopieren Sie code/.
oder wie man den Wert vom heutigen Gewinn auf den gestrigen Gewinn und dann auf den Gewinn von vorgestern senken kann
Fügen Sie der Funktionsbeschreibung einen weiteren Parameter hinzu und ändern Sie die Prüfbedingung:
double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1, datetime dtstart, datetime dtstop)
....
if (OrderCloseTime()>=dtstart && dtstop<=OrderCloseTime()) {
Es ist möglich, einen Bestellschein zu lesen.
Gibt es eine ähnliche Funktion
OrderGetTicket();für mql4?
Gibt es eine ähnliche Funktion
für mql4?
Es gibt sie, nur nicht genau dieselbe. Nachdem Sie einen Auftrag ausgewählt haben, müssen Sie über weitere Funktionen die Auftragsart und das Ticket festlegen.
Guten Tag.
Es gibt eine Funktion zum Öffnen eines Rasters von Aufträgen mit um i erhöhtem Los,
Ich möchte, dass das Raster (Lose) nach Losen aufgebaut wird, d. h. Los1 = 0,01, Los2 = 0,02, Los3 = Los2 + Los 1. ,
Wie sollte dies in der Funktion fLots() beschrieben werden?
Ich möchte prüfen, ob in onInit offene Positionen vorhanden sind, aber aus irgendeinem Grund kann ich sie nicht auswählen:
Ich verstehe:
2019.05.01 00:11:32.177 breakeven (GBPUSD,H1) ticket(1) = 0
2019.05.01 00:11:32.177 breakeven (GBPUSD,H1) false
2019.05.01 00:11:32.177 breakeven (GBPUSD,H1) Position Total = 1
Ich möchte prüfen, ob in onInit offene Positionen vorhanden sind, aber aus irgendeinem Grund kann ich sie nicht auswählen:
Ich verstehe:
2019.05.01 00:11:32.177 breakeven (GBPUSD,H1) ticket(1) = 0
2019.05.01 00:11:32.177 breakeven (GBPUSD,H1) false
2019.05.01 00:11:32.177 breakeven (GBPUSD,H1) Position Total = 1
Sie fällt mir sofort ins Auge:
Ich habe nicht weiter nachgeschaut, weil es in einem umgekehrten Zyklus so sein sollte:
Das ist mir sofort aufgefallen:
Ich habe nicht weiter nachgeschaut, denn so sollte es im Rückwärtsgang sein:
Ich bevorzuge diese Schreibweise
Ich bevorzuge diesen Eintrag
Na ja... Ich habe ein verständliches Beispiel für Anfänger gezeigt ;)
Hallo. Bitte helfen Sie mir bei der Berechnung des Gewinns der gestern und vorgestern abgeschlossenen Geschäfte usw. Ich möchte den Gewinn für heute, den Gewinn für gestern und den Gewinn für vorgestern berechnen.
Ich habe den Code/ für die heutige Gewinnberechnung kopiert.
oder wie man den heutigen Gewinn setzt, um diesen Wert auf den gestrigen Gewinn und dann auf den Gewinn des Vortages zu verschiebenHallo. Bitte helfen Sie mir bei der Berechnung des Gewinns der gestern und vorgestern abgeschlossenen Geschäfte usw. Ich möchte den Gewinn für heute, den Gewinn für gestern und den Gewinn für vorgestern berechnen.
Um den Gewinn für heute zu berechnen, kopieren Sie code/.
oder wie man den Wert vom heutigen Gewinn auf den gestrigen Gewinn und dann auf den Gewinn von vorgestern senken kannFügen Sie der Funktionsbeschreibung einen weiteren Parameter hinzu und ändern Sie die Prüfbedingung: