Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 14

 
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.

Справочник MQL4
Справочник MQL4
  • docs.mql4.com
Справочник MQL4
 
bablusut:

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?


Справочник MQL4
Справочник MQL4
  • docs.mql4.com
Справочник MQL4
 
bablusut:

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.
 
Alexey Kozitsyn:

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 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?...


StringCompare - Строковые функции - Справочник MQL4
StringCompare - Строковые функции - Справочник MQL4
  • docs.mql4.com
StringCompare - Строковые функции - Справочник MQL4
 
bablusut:

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.

...


Vero.
 
Alexey Kozitsyn:
Corretto.

Grazie... il codice sarà poi simile a questo:

 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(
   string  string_value,        // строка, в которой ищем
   string  match_substring,     // что ищем
   int     start_pos=0          // с какой позиции начинать поиск

   ); 



 

 
bablusut:

Grazie... il codice avrà quindi la forma di:

 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(
   string  string_value,        // строка, в которой ищем
   string  match_substring,     // что ищем
   int     start_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.
 

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.

 
Vladimir Karputov:

Guardiamo il codice.
Motivazione: