Scusa, alex12, ma sembri un bulldozer (senza offesa, è un termine accettato). Fai qualcosa con pezzi diversi e in qualche modo lo fai compilare, ma non capisci il significato del codice.
Quando usate alcune delle funzioni di Igor Kim, assicuratevi di avere nel vostro codice le sue funzioni mancanti di cui il compilatore vi parla. Trovali nel suo ramo e scrivili nel tuo codice.
OrderOpenTime() mostra il tempo in cui la posizione è stata aperta, la mia domanda è come faccio a sapere il tempo in cui l'ordine STOP è stato impostato? Il rapporto MT4 ha questo tempo, ma è possibile scoprirlo dal codice?
Ancora una volta.
Passate attraverso tutti i vostri ordini di stop in un ciclo "standard", e per voi stessi, staccate il valore di OrderOpenTime() per loro - questo deve essere il momento in cui essi (ciascuno di essi) sono stati impostati. Qui c'è un esempio per gli ordini di mercato - modificatelo un po', cioè, o rimuovete del tutto questa linea
se ((orderType != OP_BUY) && (orderType != OP_SELL)) continua;
o sostituirlo con i dati degli ordini di stop che ti interessano...
int orderCount = 0; // сбрасываем счетчик ордеров // ------------------------------------------------Считаем только наши ордера---------------------------int orderType;
for (orderIndex = (OrdersTotal() - 1); orderIndex >= 0; orderIndex--)
{
if (!OrderSelect(orderIndex, SELECT_BY_POS)) continue; // если ордер не выбран, то идем на следующий открытыйif(OrderCloseTime()!=0) continue; // если тикет принадлежит закрытому ордеру, то берем следующий открытыйif ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != magic)) continue;
orderType = OrderType();
if ((orderType != OP_BUY) && (orderType != OP_SELL)) continue;
ticket = OrderTicket( ); // Номер ордера
orderLots = OrderLots(); // Lots
orderProfit = OrderProfit() + OrderSwap(); // Profit
Price = OrderOpenPrice(); // Цена открытия рыночного ордера
SL = OrderStopLoss(); // Значение StopLoss ордера
TP = OrderTakeProfit(); // Значение TakeProfit ордера
Time = O rderOpenTime();
orderCount++; // считаем ордера (не больше i)
}
Ancora una volta. Passate attraverso tutti i vostri ordini di stop in un ciclo "standard", e per voi stessi, staccate il valore di OrderOpenTime() per loro - questo deve essere il momento in cui essi (ciascuno di essi) sono impostati. Qui c'è un esempio per gli ordini di mercato - modificatelo un po', cioè, o rimuovete del tutto questa linea
se ((orderType != OP_BUY) && (orderType != OP_SELL)) continua;
o sostituirlo con i dati degli ordini di stop che ti interessano...
Qui, in questa fase ho incontrato un dilemma - ho bisogno del tempo di apertura di un ordine STOP per alcune "statistiche" e non vorrei che questo processo sia eseguito tutto il tempo, ma solo in una certa fase finale. Per questo motivo, non dobbiamo cercare gli ordini aperti in quel momento (OrdersTotal()), ma cercare tra gli ordini già chiusi => OrdersHistoryTotal(). Ma per gli ordini STOP che sono già stati chiusi, OrderOpenTime() restituisce il tempo di apertura della posizione, non il tempo in cui l'ordine è stato piazzato. Di conseguenza, tutto si riduce a questo: è possibile recuperare il tempo che gli ordini STOP dalla lista di OrdersHistoryTotal(), quando sono stati impostati?
chief2000: Qui è dove mi sono imbattuto in un dilemma - ho bisogno del tempo di apertura dell'ordine STOP per alcune "statistiche" e non vorrei che questo processo fosse eseguito tutto il tempo, ma solo in una certa fase finale. Per questo motivo, non dobbiamo cercare gli ordini aperti in quel momento (OrdersTotal()), ma cercare tra gli ordini già chiusi => OrdersHistoryTotal(). Ma per gli ordini STOP che sono già stati chiusi, OrderOpenTime() restituisce il tempo di apertura della posizione, non il tempo in cui l'ordine è stato piazzato. Di conseguenza, tutto si riduce a questo: è possibile recuperare il tempo che gli ordini STOP dalla lista di OrdersHistoryTotal(), quando sono stati impostati?
Sì... La sfida... NON LO SO. Sembra che non si possa - soprattutto nelle "fasi finali"...
Devi monitorare costantemente questo processo e tenerne traccia - vedi il post sulle FAQ nella pagina precedente.
Genera un sacco di errori
Scusa, alex12, ma sembri un bulldozer (senza offesa, è un termine accettato). Fai qualcosa con pezzi diversi e in qualche modo lo fai compilare, ma non capisci il significato del codice.
Contatta il servizio lavori.
Genera un sacco di errori
...
OrderOpenTime() mostra il tempo in cui la posizione è stata aperta, la mia domanda è come faccio a sapere il tempo in cui l'ordine STOP è stato impostato?
Il rapporto MT4 ha questo tempo, ma è possibile scoprirlo dal codice?
Ancora una volta.
Passate attraverso tutti i vostri ordini di stop in un ciclo "standard", e per voi stessi, staccate il valore di OrderOpenTime() per loro - questo deve essere il momento in cui essi (ciascuno di essi) sono stati impostati. Qui c'è un esempio per gli ordini di mercato - modificatelo un po', cioè, o rimuovete del tutto questa linea
se ((orderType != OP_BUY) && (orderType != OP_SELL)) continua;
o sostituirlo con i dati degli ordini di stop che ti interessano...
Ancora una volta.
Passate attraverso tutti i vostri ordini di stop in un ciclo "standard", e per voi stessi, staccate il valore di OrderOpenTime() per loro - questo deve essere il momento in cui essi (ciascuno di essi) sono impostati. Qui c'è un esempio per gli ordini di mercato - modificatelo un po', cioè, o rimuovete del tutto questa linea
se ((orderType != OP_BUY) && (orderType != OP_SELL)) continua;
o sostituirlo con i dati degli ordini di stop che ti interessano...
Ma per gli ordini STOP che sono già stati chiusi, OrderOpenTime() restituisce il tempo di apertura della posizione, non il tempo in cui l'ordine è stato piazzato.
Di conseguenza, tutto si riduce a questo: è possibile recuperare il tempo che gli ordini STOP dalla lista di OrdersHistoryTotal(), quando sono stati impostati?
Qui è dove mi sono imbattuto in un dilemma - ho bisogno del tempo di apertura dell'ordine STOP per alcune "statistiche" e non vorrei che questo processo fosse eseguito tutto il tempo, ma solo in una certa fase finale. Per questo motivo, non dobbiamo cercare gli ordini aperti in quel momento (OrdersTotal()), ma cercare tra gli ordini già chiusi => OrdersHistoryTotal().
Ma per gli ordini STOP che sono già stati chiusi, OrderOpenTime() restituisce il tempo di apertura della posizione, non il tempo in cui l'ordine è stato piazzato.
Di conseguenza, tutto si riduce a questo: è possibile recuperare il tempo che gli ordini STOP dalla lista di OrdersHistoryTotal(), quando sono stati impostati?
Sì... La sfida... NON LO SO. Sembra che non si possa - soprattutto nelle "fasi finali"...
Devi monitorare costantemente questo processo e tenerne traccia - vedi il post sulle FAQ nella pagina precedente.
Sì... La sfida... NON LO SO. Sembra che non si possa - soprattutto nelle "fasi finali"...
Devi monitorare costantemente questo processo e tenerne traccia - vedi il post delle FAQ nella pagina precedente.
Grazie comunque!
In questo caso, è più facile scrivere su un file, meno seccature, e le statistiche possono essere organizzate come serve a voi, non al terminale.
Voglio scrivere un Expert Advisor sul modello a tenaglia.
Ho scelto
Sfortunatamente per me la condizione è sbagliata perché 'sl' è impostato a 100.00000 e 'tp' mostra un errore.
Ho deciso di aggiungere una condizione per considerare 1 tick.
il risultato è lo stesso. come posso risolvere il mio problema?