Escapee: Si prega di consigliare una soluzione; Ho bisogno che lo script imposti automaticamente lo stop loss minimo del server sul simbolo corrente quando si apre un ordine. Cosa si dovrebbe scrivere qui? OrderSend(Symbol(),OP_BUY,0.01,Ask,10,?,0);
Quando si imposta un ordine pendente, il prezzo di apertura non può essere troppo vicino al mercato. La distanza minima del prezzo in sospeso dal prezzo corrente di mercato in punti può anche essere ottenuta utilizzando la funzione MarketInfo() con il parametro MODE_STOPLEVEL. Se l'ordine pendente si apre a un prezzo errato, verrà generato l'errore 130 (ERR_INVALID_STOPS).
В документации есть 2 момента касательно индикаторов.
In costanti speciali, queste sono:
" indicator_buffers numero di buffer per calcolare l'indicatore, fino a un massimo di 8 "
Sotto indicatori personalizzati:
"Alloca la memoria per i buffer usati per i calcoli degli indicatori personalizzati. Il numero di buffer non può superare 8 ed essere inferiore al valore specificato nella proprietà indicator_buffers. Se l'indicatore personalizzato richiede buffer aggiuntivi per il conteggio, dovreste usare questa funzione per specificare il numero totale di buffer. "
Se il numero di buffer è specificato, penso che questo significhi già allocare la memoria per i buffer. Correggimi se intendi qualcos'altro qui, per favore.
Buon pomeriggio. Domanda su un puntatore di file... Nel libro MQL4, che si trova su MQL4.community, nella sezione "Standard Functions", c'è un esempio dello script "File Operations", che è destinato a leggere dati da un file e a visualizzare oggetti grafici in una finestra simbolo:
//--------------------------------------------------------------------// timetablenews.mq4// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------- 1 --int start() // Спец. функция start
{
//--------------------------------------------------------------- 2 --int Handle, // Файловый описатель
Stl; // Стиль вертикальной линииstring File_Name="News.csv", // Имя файла
Obj_Name, // Bмя объекта
Instr, // Название валюты
One,Two, // 1я и 2я чать названия инстр.
Text, // Текст описания события
Str_DtTm; // Дата и время события(строка)datetime Dat_DtTm; // Дата и время события(дата)color Col; // Цвет вертикальной линии//--------------------------------------------------------------- 3 --
Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файлаif(Handle<0) // Неудача при открытии файла
{
if(GetLastError()==4103) // Если файла не существует,..Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера else// При любой другой ошибке..Alert("Ошибка при открытии файла ",File_Name);//..такое сообщPlaySound("Bzrrr.wav"); // Звуковое сопровождениеreturn; // Выход из start()
}
//--------------------------------------------------------------- 4 --while(FileIsEnding(Handle)==false)// До тех пор, пока файловый ..
{ // ..указатель не в конце файла//--------------------------------------------------------- 5 --
Str_DtTm =FileReadString(Handle);// Дата и время события(дата)
Text =FileReadString(Handle);// Текст описания событияif(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
Dat_DtTm =StrToTime(Str_DtTm); // Преобразование типа данных
Instr =StringSubstr(Text,0,3);// Извлекаем первые 3 символа
One=StringSubstr(Symbol(),0,3);// Извлекаем первые 3 символа
Two=StringSubstr(Symbol(),3,3);// Извлекаем вторые 3 символа
Stl=STYLE_DOT; // Для всех - стиль пунктир
Col=DarkOrange; // Для всех - цвет такойif(Instr==One || Instr==Two) // А для событий по нашему ..
{ // .. финансовому инструменту..
Stl=STYLE_SOLID; // .. такой стиль..
Col=Red; // .. и такой цвет верт. линии
}
//--------------------------------------------------------- 7 --
Obj_Name="News_Line "+Str_DtTm; // Имя объектаObjectCreate(Obj_Name,OBJ_VLINE,0,Dat_DtTm,0);//Создаем объект..ObjectSet(Obj_Name,OBJPROP_COLOR, Col); // ..и его цвет,..ObjectSet(Obj_Name,OBJPROP_STYLE, Stl); // ..стиль..ObjectSetText(Obj_Name,Text,10); // ..и описание
}
//--------------------------------------------------------------- 8 --FileClose( Handle ); // Закрываем файлPlaySound("bulk.wav"); // Звуковое сопровождениеWindowRedraw(); // Перерисовываем объектыreturn; // Выход из start()
}
//--------------------------------------------------------------- 9 --
Di seguito, quando si analizza questo script nel libro su MQL4, viene data la seguente frase: "se il controllo specificato (le ultime 2 righe del blocco 5-6) viene rimosso, un oggetto extra verrà creato a runtime. E solo dopo questo, la condizione di fine del ciclo while scatterà e il controllo verrà passato al blocco 8-9".
Ho capito bene? Un puntatore a file NON è INFLUITO DA SEGNALI DI TESTO (per esempio: text| dove | è un puntatore a file), ma è un puntatore CON ESPRESSIONE, per esempio: text dove k è il carattere "to", k-th è evidenziato da un puntatore a file. Questo spiega la necessità delle corde (vedi p.164):
if(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
Infatti. Alla penultima iterazione, dopo aver creato l'oggetto ULTIMO
2007.05.11 18:30;JPY
il puntatore del file è nella posizione dell'ultimo oggetto, cioè
2007.05.11 18:30;JPYFabbricazione industriale
(dove o è il carattere" o", k è l'indice del file). Poi, quando si passa il controllo all'intestazione dell'istruzione while, la funzione FileIsEnding(handle) restituirà ovviamente true, perché il puntatore del file NON è alla fine del file, ma all'ULTIMO carattere di quel file. Poi, quando le prime due linee vengono eseguite, il puntatore del file si sposta nello spazio vuoto e se non ci sono linee
if(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
lo script creerà un grafico (cioè una linea) con una descrizione vuota e una coordinata temporale che corrisponde a 0. Questo è ciò che si intende nella frase: "se il controllo specificato (le ultime 2 linee nel blocco 5-6) viene rimosso, allora un oggetto extra verrà creato a runtime. "
Domanda: ho capito bene:
a) la definizione di un puntatore di file;
b) il significato della frase "Se il controllo specificato (le ultime 2 righe del blocco 5-6) viene cancellato, allora un oggetto extra verrà creato all'esecuzione del programma.E solo dopo che la condizione di fine del ciclo while sarà attivata e il controllo sarà passato al blocco 8-9".
P.S. Per non sporcare il forum, vi ringrazio in anticipo per la vostra risposta
Per favore ditemi, non ho esperienza, se tra due tick il mio programma invia diversi comandi al server, saranno tutti eseguiti, o solo il primo comando ? Dove posso trovare informazioni su questo argomento?
Per favore ditemi, non ho esperienza, se tra due tick il mio programma invia diversi comandi al server, saranno tutti eseguiti, o solo il primo comando ? Dove posso trovare informazioni su questo argomento?
Salve, ho una domanda sugli indicatori in MQL4 e non riesco a capirlo... Per esempio, ho un semplice indicatore frattale:
Se lo compilo in questa forma, quando estendo il bordo sinistro del grafico e carico la cronologia, inizia a glitchare e a mostrare segni dove non dovrebbero essere (vedi screenshot in allegato). Se commentiamo una parte del codice:
Poi questi glitch spariscono... Gli stessi problemi appaiono quando si carica la storia, se si riempiono solo gli elementi "non vuoti" dell'array di indicatori e non si resetta il valore dell'indicatore dove non ci sono etichette...
Perché succede questo? Perché, a quanto pare, è necessario ricalcolare l'intero indicatore quando si carica la storia? E perché devo annullare i valori degli elementi "vuoti" dell'array?
Se le barre fossero indicizzate da sinistra a destra, al caricamento della storia gli indici delle barre cambierebbero, e l'indicatore sarebbe visualizzato erroneamente senza ricalcolo, allora capiremmo questo inconveniente... Ma in MT4 le barre sono indicizzate da destra a sinistra, quindi, quando si carica lo storico, gli indici delle barre che erano indicizzate dovrebbero essere rimasti gli stessi (e anche i valori dell'indicatore), allora perché ricalcolare l'indicatore e da dove vengono questi spostamenti di etichetta?
Perché è necessario ricalcolare l'intero indicatore quando si carica la storia? E perché i valori degli elementi "vuoti" dell'array dovrebbero essere azzerati? E se non lo fai, allora gli indicatori vengono visualizzati in modo errato...
Potete per favore dirmi come emettere 1 valore e un valore dell'indicatore già ridisegnato come 2 linee, che viene ridisegnato in un indicatore separato? Non riesco a capirlo, emette sempre l'ultimo valore ridisegnato.
Ho bisogno che lo script imposti automaticamente lo stop loss minimo del server sul simbolo corrente quando si apre un ordine. Cosa si dovrebbe scrivere qui? OrderSend(Symbol(),OP_BUY,0.01,Ask,10,?,0);
Leggi
В документации есть 2 момента касательно индикаторов.
In costanti speciali, queste sono:
" indicator_buffers numero di buffer per calcolare l'indicatore, fino a un massimo di 8 "
Sotto indicatori personalizzati:
"Alloca la memoria per i buffer usati per i calcoli degli indicatori personalizzati. Il numero di buffer non può superare 8 ed essere inferiore al valore specificato nella proprietà indicator_buffers. Se l'indicatore personalizzato richiede buffer aggiuntivi per il conteggio, dovreste usare questa funzione per specificare il numero totale di buffer. "
Se il numero di buffer è specificato, penso che questo significhi già allocare la memoria per i buffer. Correggimi se intendi qualcos'altro qui, per favore.
Buon pomeriggio. Domanda su un puntatore di file... Nel libro MQL4, che si trova su MQL4.community, nella sezione "Standard Functions", c'è un esempio dello script "File Operations", che è destinato a leggere dati da un file e a visualizzare oggetti grafici in una finestra simbolo:
Di seguito, quando si analizza questo script nel libro su MQL4, viene data la seguente frase: "se il controllo specificato (le ultime 2 righe del blocco 5-6) viene rimosso, un oggetto extra verrà creato a runtime. E solo dopo questo, la condizione di fine del ciclo while scatterà e il controllo verrà passato al blocco 8-9".
Ho capito bene? Un puntatore a file NON è INFLUITO DA SEGNALI DI TESTO (per esempio: text| dove | è un puntatore a file), ma è un puntatore CON ESPRESSIONE, per esempio: text dove k è il carattere "to", k-th è evidenziato da un puntatore a file. Questo spiega la necessità delle corde (vedi p.164):
Infatti. Alla penultima iterazione, dopo aver creato l'oggetto ULTIMO
2007.05.11 18:30;JPY
il puntatore del file è nella posizione dell'ultimo oggetto, cioè
2007.05.11 18:30;JPYFabbricazione industriale
(dove o è il carattere" o", k è l'indice del file). Poi, quando si passa il controllo all'intestazione dell'istruzione while, la funzione FileIsEnding(handle) restituirà ovviamente true, perché il puntatore del file NON è alla fine del file, ma all'ULTIMO carattere di quel file. Poi, quando le prime due linee vengono eseguite, il puntatore del file si sposta nello spazio vuoto e se non ci sono linee
lo script creerà un grafico (cioè una linea) con una descrizione vuota e una coordinata temporale che corrisponde a 0. Questo è ciò che si intende nella frase: "se il controllo specificato (le ultime 2 linee nel blocco 5-6) viene rimosso, allora un oggetto extra verrà creato a runtime. "
Domanda: ho capito bene:
a) la definizione di un puntatore di file;
b) il significato della frase "Se il controllo specificato (le ultime 2 righe del blocco 5-6) viene cancellato, allora un oggetto extra verrà creato all'esecuzione del programma.E solo dopo che la condizione di fine del ciclo while sarà attivata e il controllo sarà passato al blocco 8-9".
P.S. Per non sporcare il forum, vi ringrazio in anticipo per la vostra risposta
Per favore ditemi, non ho esperienza, se tra due tick il mio programma invia diversi comandi al server, saranno tutti eseguiti, o solo il primo comando ? Dove posso trovare informazioni su questo argomento?
Per favore ditemi, non ho esperienza, se tra due tick il mio programma invia diversi comandi al server, saranno tutti eseguiti, o solo il primo comando ? Dove posso trovare informazioni su questo argomento?
Leggere:
https://book.mql4.com/ru/basics/common
Leggere:
https://book.mql4.com/ru/basics/common
Salve, ho una domanda sugli indicatori in MQL4 e non riesco a capirlo... Per esempio, ho un semplice indicatore frattale:
Se lo compilo in questa forma, quando estendo il bordo sinistro del grafico e carico la cronologia, inizia a glitchare e a mostrare segni dove non dovrebbero essere (vedi screenshot in allegato). Se commentiamo una parte del codice:
Poi questi glitch spariscono... Gli stessi problemi appaiono quando si carica la storia, se si riempiono solo gli elementi "non vuoti" dell'array di indicatori e non si resetta il valore dell'indicatore dove non ci sono etichette...
Perché succede questo? Perché, a quanto pare, è necessario ricalcolare l'intero indicatore quando si carica la storia? E perché devo annullare i valori degli elementi "vuoti" dell'array?
Se le barre fossero indicizzate da sinistra a destra, al caricamento della storia gli indici delle barre cambierebbero, e l'indicatore sarebbe visualizzato erroneamente senza ricalcolo, allora capiremmo questo inconveniente... Ma in MT4 le barre sono indicizzate da destra a sinistra, quindi, quando si carica lo storico, gli indici delle barre che erano indicizzate dovrebbero essere rimasti gli stessi (e anche i valori dell'indicatore), allora perché ricalcolare l'indicatore e da dove vengono questi spostamenti di etichetta?
Perché è necessario ricalcolare l'intero indicatore quando si carica la storia? E perché i valori degli elementi "vuoti" dell'array dovrebbero essere azzerati? E se non lo fai, allora gli indicatori vengono visualizzati in modo errato...
IndicatorBuffers specifica il numero totale di buffer utilizzati.
Esempio.
#proprietà indicator_buffers 2
.......... .................................
IndicatoreBuffer 3
Disegna due linee, il terzo buffer non viene visualizzato, ma viene utilizzato per i calcoli intermedi.