
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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.