Чтобы определить, из какого списка выбран ордер, необходимо проанализировать его время закрытия. Если время закрытия ордера равно 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);
}
Salve. Per favore aiutatemi a calcolare il profitto dei trade chiusi ieri, l'altro ieri, ecc. Voglio fare Profitto per oggi:. Profitto per ieri, profitto per l'altro ieri
Ho copiato il codice per il calcolo del profitto di oggi.
o come impostare il profitto di oggi per posporre questo valore al profitto di ieri e poi al profitto del giorno prima
Salve. Per favore aiutatemi a calcolare il profitto dei trade chiusi ieri, l'altro ieri, ecc. Voglio fare Profitto per oggi:. Profitto per ieri, profitto per l'altro ieri
Per calcolare il profitto di oggi, copiate il codice/.
o come fare in modo che il valore dal profitto di oggi si sposti più in basso al profitto di ieri, poi al profitto del giorno prima di ieri
Aggiungete un altro parametro alla descrizione della funzione e cambiate la condizione di controllo:
double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1, datetime dtstart, datetime dtstop)
....
if (OrderCloseTime()>=dtstart && dtstop<=OrderCloseTime()) {
È possibile leggere un biglietto d'ordine.
C'è una funzione simile
OrderGetTicket();per mql4?
C'è una funzione simile
per mql4?
C'è, solo che non è esattamente lo stesso. Dopo aver selezionato un ordine devi definire il tipo di ordine e il biglietto tramite altre funzioni.
Buon pomeriggio.
C'è una funzione per aprire una griglia di ordini con lotto incrementato di i,
Ho bisogno che la griglia (lotti) sia costruita per lotto, cioè lotto1 = 0,01, lotto2 = 0,02, lotto3 = lotto2 + lotto 1. ,
come dovrebbe essere descritto nella funzione fLots()?
Voglio controllare se ci sono posizioni aperte in onInit, ma per qualche motivo non posso selezionarle:
Ho capito:
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) Posizione Totale = 1
Voglio controllare se ci sono posizioni aperte in onInit, ma per qualche motivo non posso selezionarle:
Ho capito:
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) Posizione Totale = 1
Subito cattura la mia attenzione:
Non ho guardato oltre perché dovrebbe essere così in un ciclo inverso:
Immediatamente questo ha attirato la mia attenzione:
Non ho guardato oltre, perché è così che dovrebbe essere nel ciclo inverso:
Preferisco questa notazione
Preferisco questa voce
Bene... Ne ho mostrato uno comprensibile per i principianti ;)
Salve. Per favore aiutatemi a calcolare il profitto dei trade chiusi ieri, l'altro ieri, ecc. Voglio fare Profitto per oggi:. Profitto per ieri, profitto per l'altro ieri
Ho copiato il codice per il calcolo del profitto di oggi.
o come impostare il profitto di oggi per posporre questo valore al profitto di ieri e poi al profitto del giorno primaSalve. Per favore aiutatemi a calcolare il profitto dei trade chiusi ieri, l'altro ieri, ecc. Voglio fare Profitto per oggi:. Profitto per ieri, profitto per l'altro ieri
Per calcolare il profitto di oggi, copiate il codice/.
o come fare in modo che il valore dal profitto di oggi si sposti più in basso al profitto di ieri, poi al profitto del giorno prima di ieriAggiungete un altro parametro alla descrizione della funzione e cambiate la condizione di controllo: