Alexey Kozitsyn: Mettiamola così. Mostrate il codice che passa attraverso gli ordini con una spiegazione di come dovrebbe fare questo e solo allora saremo in grado di dire cosa è giusto e cosa è sbagliato. Solo i nomi delle funzioni non vi aiuteranno ad avvicinarvi al risultato.
Ciao ... grazie per aver accettato di aiutarmi ... Sembrava una piccola impresa, per suonare gli ordini di chiusura, potrebbe essere fatto semplicemente aggiungendo l'evento richiesto alla cartella appropriata - si è rivelato non essere così facile ... Ecco un codice di esempio che ho preso daMQL4 ReferenceTrading Functions:
intOrdiniHistoryTotal();
// recuperare informazioni dalla storia commerciale int i,accTotal=OrdersHistoryTotal(); for(i=0;i<accTotale;i++) { //---- controllare il risultato della selezione if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error accessing the history database (",GetLastError(),")); pausa; } // lavorare con un ordine ...
}
... La funzione restituiscela quantità di ordini chiusi e cancellati nella storia del conto corrente caricato nel terminale del cliente. La dimensione della lista della cronologia dipende dalle impostazioni correnti della scheda "Cronologia account" del terminale.
Come li cercherà e perché è necessario non mi è chiaro... Forse è necessario memorizzarli e scartarli, in modo che non siano d'intralcio?
Dovremmo suonare gli ordini appena chiusi nel momento in cui vengono chiusi con un breve segnale acustico. Tutti gli ordini da chiudere nel mio terminale cliente sono solo di due tipi: perTrailStopLoss eTakeProfit media. Quando si chiude un ordine (un gruppo di ordini), non importa in quale direzione (Vendere o Comprare) devono essere separati solo daStopLossoTakeProfit einviati alla funzionePlaySoundcorrispondente.
Ciao ... grazie per aver accettato di aiutarmi ... Sembrava una piccola impresa, per suonare gli ordini di chiusura, potrebbe essere fatto semplicemente aggiungendo l'evento richiesto alla cartella appropriata - si è rivelato non essere così facile ... Ecco un codice di esempio che ho preso daMQL4 ReferenceTrading Functions:
intOrdiniHistoryTotal();
// recuperare informazioni dalla storia commerciale int i,accTotal=OrdersHistoryTotal(); for(i=0;i<accTotale;i++) { //---- controllare il risultato della selezione if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error accessing the history database (",GetLastError(),")); pausa; } // lavorare con un ordine ...
}
... La funzione restituiscela quantità di ordini chiusi e cancellati nella storia del conto corrente caricato nel terminale del cliente. La dimensione della lista della cronologia dipende dalle impostazioni correnti della scheda "Cronologia account" del terminale.
Come li cercherà e perché è necessario non mi è chiaro... Forse è necessario memorizzarli e scartarli, in modo che non siano d'intralcio?
Dovremmo suonare gli ordini appena chiusi nel momento in cui vengono chiusi con un breve segnale acustico. Tutti gli ordini da chiudere nel mio terminale cliente sono solo di due tipi: perTrailStopLoss eTakeProfit media. Quando si chiude un ordine (un gruppo di ordini) non importa in quale direzione (Vendere o Comprare) devono essere separati solo dal comando di chiusuraStopLossoTakeProfite inviati alla funzionePlaySoundcorrispondente.
L'ordine dovrebbe essere cercato in ordine inverso, poiché 0 è il primo. accTotal-1 è l'ultimo. In questo codice, dopo "// lavora con ordine", memorizza il commento e controlla se c'è un commento di chiusura su SL o TP.
Alexey Kozitsyn: Gli ordini devono essere cercati in ordine inverso, poiché 0 è il primo. accTotal-1 è l'ultimo. In questo codice, dopo "// lavora con l'ordine" ricorda il commento e controlla se c'è un commento di chiusura per lo SL o il TP.
intOrdiniHistoryTotal();
// recuperare informazioni dalla storia commerciale int i,accTotal=OrdersHistoryTotal(); for(i=0;i<accTotale;i++) { //---- controllare il risultato della selezione if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error accessing the history database (",GetLastError(),")); pausa; } // lavorare con un ordine ...
}
stringaOrderComment();
commento sulla corda; se(OrderSelect(10,SELECT_BY_TICKET)==falso) { Print("OrderSelect() ha restituito un errore ",GetLastError()); ritorno(0); } comment=OrderComment();
// ...
Grazie per la risposta ... Dopo aver aggiunto il codice della funzioneOrderComment,(MQL4Trading FunctionsReference) che restituisce il commento di un ordine selezionato utilizzando la funzione OrdersHistoryTotal, il codice appare così ... E non abbiamo una funzione che traccia i nuovi ordini chiusi nella storia del terminale?"0 - primissimo. accTotal-1 - ultimo" - intendiamo "primo chiuso" e "ultimo chiuso" nella storia del terminale, è per tempo ...? Ho capito bene?
ma non abbiamo una funzione per tracciare i nuovi ordini chiusi nella cronologia del terminale?
Non ce ne sono di standard.
int i,accTotal=OrdersHistoryTotal(); string comment; for(i=accTotal-1;i>=0;i++) { //---- check selection result if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Ошибка при доступе к исторической базе (",GetLastError(),")"); break; } // работа с ордером ... comment = OrderComment(); // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ }
Per determinare la presenza di una linea in un'altra - usa le funzioni di lavoro con le linee.
int i,accTotal=OrdersHistoryTotal(); string comment; for(i=accTotal-1;i>=0;i++) { //---- check selection result if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Ошибка при доступе к исторической базе (",GetLastError(),")"); break; } // работа с ордером ... comment = OrderComment(); // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ }
Per determinare se una stringa è presente nell'altra - usa le funzioni di stringa.
Grazie... Intendi la funzione StringFind = Cerca una sottostringa in una stringa.
int StringFind(
stringa string_value, //la stringa che stiamo cercando
stringa match_substring, //cosa stiamo cercando
int start_pos=0 //dove iniziare la ricerca
);
Parametri
valore_stringa
[in] Stringa in cui cercare.
match_substringa
[in] Match_substring da cercare.
inizio_pos=0
[in] Posizione nella stringa in cui la ricerca dovrebbe essere avviata.
Valore restituito
Restituisce il numero di posizione nella stringa in cui inizia la sottostringa da cercare, o -1 se non viene trovata alcuna sottostringa.
... o funzioneStringCompare-confronta due stringhe?...
int i,accTotal=OrdersHistoryTotal(); string comment; for(i=accTotal-1;i>=0;i++) { //---- check selection result if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Ошибка при доступе к исторической базе (",GetLastError(),")"); break; } // работа с ордером ... comment = OrderComment(); // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ }
int StringFind( stringstring_value, // строка, в которой ищем stringmatch_substring, // что ищем intstart_pos=0// с какой позиции начинать поиск
int i,accTotal=OrdersHistoryTotal(); string comment; for(i=accTotal-1;i>=0;i++) { //---- check selection result if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Ошибка при доступе к исторической базе (",GetLastError(),")"); break; } // работа с ордером ... comment = OrderComment(); // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ }
int StringFind( stringstring_value, // строка, в которой ищем stringmatch_substring, // что ищем intstart_pos=0// с какой позиции начинать поиск
);
No. Cercate di capire cosa state facendo. Quello che avete scritto è solo un prototipo di funzione (cioè solo una descrizione di ciò che fa). Quindi hai appena strappato un pezzo di documentazione. Dovete usarlo. Quindi dovete sostituire i vostri valori con gli argomenti. E la funzione restituirà il risultato. Poi questo risultato deve essere elaborato.
Potete dirmi OrderSelect da SELECT_BY_POS che 0 ordine è l'ultimo posto o il primo? Sto provando in entrambi i modi e viceversa, ma l'errore modifica #0 sta volando fuori.
Mettiamola così. Mostrate il codice che passa attraverso gli ordini con una spiegazione di come dovrebbe fare questo e solo allora saremo in grado di dire cosa è giusto e cosa è sbagliato. Solo i nomi delle funzioni non vi aiuteranno ad avvicinarvi al risultato.
Ciao ... grazie per aver accettato di aiutarmi ... Sembrava una piccola impresa, per suonare gli ordini di chiusura, potrebbe essere fatto semplicemente aggiungendo l'evento richiesto alla cartella appropriata - si è rivelato non essere così facile ... Ecco un codice di esempio che ho preso daMQL4 ReferenceTrading Functions:
intOrdiniHistoryTotal();
// recuperare informazioni dalla storia commercialeint i,accTotal=OrdersHistoryTotal();
for(i=0;i<accTotale;i++)
{
//---- controllare il risultato della selezione
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Error accessing the history database (",GetLastError(),"));
pausa;
}
// lavorare con un ordine ...
}
... La funzione restituiscela quantità di ordini chiusi e cancellati nella storia del conto corrente caricato nel terminale del cliente. La dimensione della lista della cronologia dipende dalle impostazioni correnti della scheda "Cronologia account" del terminale.
Come li cercherà e perché è necessario non mi è chiaro... Forse è necessario memorizzarli e scartarli, in modo che non siano d'intralcio?
Dovremmo suonare gli ordini appena chiusi nel momento in cui vengono chiusi con un breve segnale acustico. Tutti gli ordini da chiudere nel mio terminale cliente sono solo di due tipi: perTrailStopLoss eTakeProfit media. Quando si chiude un ordine (un gruppo di ordini), non importa in quale direzione (Vendere o Comprare) devono essere separati solo daStopLossoTakeProfit einviati alla funzionePlaySoundcorrispondente.
Ciao ... grazie per aver accettato di aiutarmi ... Sembrava una piccola impresa, per suonare gli ordini di chiusura, potrebbe essere fatto semplicemente aggiungendo l'evento richiesto alla cartella appropriata - si è rivelato non essere così facile ... Ecco un codice di esempio che ho preso daMQL4 ReferenceTrading Functions:
intOrdiniHistoryTotal();
// recuperare informazioni dalla storia commercialeint i,accTotal=OrdersHistoryTotal();
for(i=0;i<accTotale;i++)
{
//---- controllare il risultato della selezione
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Error accessing the history database (",GetLastError(),"));
pausa;
}
// lavorare con un ordine ...
}
... La funzione restituiscela quantità di ordini chiusi e cancellati nella storia del conto corrente caricato nel terminale del cliente. La dimensione della lista della cronologia dipende dalle impostazioni correnti della scheda "Cronologia account" del terminale.
Come li cercherà e perché è necessario non mi è chiaro... Forse è necessario memorizzarli e scartarli, in modo che non siano d'intralcio?
Dovremmo suonare gli ordini appena chiusi nel momento in cui vengono chiusi con un breve segnale acustico. Tutti gli ordini da chiudere nel mio terminale cliente sono solo di due tipi: perTrailStopLoss eTakeProfit media. Quando si chiude un ordine (un gruppo di ordini) non importa in quale direzione (Vendere o Comprare) devono essere separati solo dal comando di chiusuraStopLossoTakeProfite inviati alla funzionePlaySoundcorrispondente.
Gli ordini devono essere cercati in ordine inverso, poiché 0 è il primo. accTotal-1 è l'ultimo. In questo codice, dopo "// lavora con l'ordine" ricorda il commento e controlla se c'è un commento di chiusura per lo SL o il TP.
intOrdiniHistoryTotal();
// recuperare informazioni dalla storia commercialeint i,accTotal=OrdersHistoryTotal();
for(i=0;i<accTotale;i++)
{
//---- controllare il risultato della selezione
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Error accessing the history database (",GetLastError(),"));
pausa;
}
// lavorare con un ordine ...
}
stringaOrderComment();
commento sulla corda;se(OrderSelect(10,SELECT_BY_TICKET)==falso)
{
Print("OrderSelect() ha restituito un errore ",GetLastError());
ritorno(0);
}
comment=OrderComment();
// ...
Grazie per la risposta ... Dopo aver aggiunto il codice della funzioneOrderComment,(MQL4Trading FunctionsReference) che restituisce il commento di un ordine selezionato utilizzando la funzione OrdersHistoryTotal, il codice appare così ... E non abbiamo una funzione che traccia i nuovi ordini chiusi nella storia del terminale?"0 - primissimo. accTotal-1 - ultimo" - intendiamo "primo chiuso" e "ultimo chiuso" nella storia del terminale, è per tempo ...? Ho capito bene?
ma non abbiamo una funzione per tracciare i nuovi ordini chiusi nella cronologia del terminale?
Non ce ne sono di standard.
string comment;
for(i=accTotal-1;i>=0;i++)
{
//---- check selection result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
comment = OrderComment();
// Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
}
Non ce ne sono di standard.
string comment;
for(i=accTotal-1;i>=0;i++)
{
//---- check selection result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
comment = OrderComment();
// Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
}
Grazie... Intendi la funzione StringFind = Cerca una sottostringa in una stringa.
);
Restituisce il numero di posizione nella stringa in cui inizia la sottostringa da cercare, o -1 se non viene trovata alcuna sottostringa.
... o funzioneStringCompare-confronta due stringhe?...
Grazie... Intendi la funzione StringFind = Cerca una sottostringa in una stringa.
);
Restituisce il numero di posizione nella stringa in cui inizia la sottostringa da cercare, o -1 se non viene trovata alcuna sottostringa.
...
Corretto.
Grazie... il codice sarà poi simile a questo:
int i,accTotal=OrdersHistoryTotal();
int StringFind(string comment;
for(i=accTotal-1;i>=0;i++)
{
//---- check selection result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
comment = OrderComment();
// Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
}
string string_value, // строка, в которой ищем
string match_substring, // что ищем
int start_pos=0 // с какой позиции начинать поиск
);
Grazie... il codice avrà quindi la forma di:
int i,accTotal=OrdersHistoryTotal();
int StringFind(string comment;
for(i=accTotal-1;i>=0;i++)
{
//---- check selection result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
break;
}
// работа с ордером ...
comment = OrderComment();
// Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
}
string string_value, // строка, в которой ищем
string match_substring, // что ищем
int start_pos=0 // с какой позиции начинать поиск
);
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Domande dai principianti
A1exPit, 2016.11.30 22:14
Potete dirmi OrderSelect da SELECT_BY_POS che 0 ordine è l'ultimo posto o il primo? Sto provando in entrambi i modi e viceversa, ma l'errore modifica #0 sta volando fuori.