Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 151

 
Forexman77:
Puoi dirmi come impostare uno stop al massimo o al minimo della barra in cui il trade è aperto?

Se alto, allora High[ ] invece di stop, se basso Low[ ], ma tieni a mente due cose.


1.Questo è lo spread e la distanza dalla fermata impostata dal rivenditore.

2. Non è possibile posizionare correttamente uno stop sulla barra che si sta formando. Cioè, High[0]. E solo sulle barre precedenti. Cioè Alta[1], ecc.

 
satorifx:

Buon pomeriggio.

Potete dirmi come collegare programmaticamente 2 sistemi di coordinate in un grafico: (X,Y) e (tempo,prezzo)? Avete bisogno di un'etichetta con coordinate (X,Y) che sarà sempre al prezzo minimo sul grafico.

artmedia70:
Ci sono delle differenze. Sul grafico in generale, cioè su tutta la storia disponibile nel terminale, o sul grafico visibile (all'interno dello schermo del monitor) ?


Esattamente sul grafico visibile nello schermo del monitor

 
satorifx:

Esattamente sul grafico visibile nello schermo del monitor

Lancia questo script sul grafico:

//+------------------------------------------------------------------+
//|                                       sc_LowestPricePerChart.mq4 |
//|                               Copyright 2013, Artyom A. Trishkin |
//|                          artmedia70@gmail.com, Skype: Artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, Artyom A. Trishkin"
#property link      "artmedia70@gmail.com, Skype: Artmedia70"
//+------------------------------------------------------------------+
//|           script program start function                                    |
//+------------------------------------------------------------------+
int start() {
   int count=WindowBarsPerChart();                             // количество видимых баров 
   int LowestBar=iLowest(Symbol(),Period(),MODE_LOW,count,0);  // бар с минимальной ценой
   double LowestPricePerChart=Low[LowestBar];                  // минимальная цена из видимых баров
   SetArrow(5, Yellow, "sc_LowestPricePerChart_LowestPrice", Time[LowestBar], LowestPricePerChart, 1);
   return(0);
}
//+------------------------------------------------------------------+
void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=0) {
   if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0, 0);
   ObjectSet(nm, OBJPROP_TIME1    , t1);
   ObjectSet(nm, OBJPROP_PRICE1   , p1);
   ObjectSet(nm, OBJPROP_ARROWCODE, cd);
   ObjectSet(nm, OBJPROP_COLOR    , cl);
   ObjectSet(nm, OBJPROP_WIDTH    , sz);
}
//+------------------------------------------------------------------+

Fate lo stesso per il massimo

 
artmedia70:

Lancia questo script sul grafico:

Fate lo stesso per il massimo


Il punto è che l'oggetto ARROW ha coordinate (tempo, prezzo) ma non coordinate (x,y). Se estendete la finestra dell'indicatore nella parte inferiore dello schermo, l'oggetto si muoverà insieme alla finestra, ma allo stesso tempo, le coordinate (x,y) dell'oggetto nella finestra cambieranno e non potranno essere calcolate perché non c'è connessione tra i due sistemi di coordinate. In linea di principio, si potrebbe usare un oggetto TEXT o qualsiasi altro oggetto al posto diun oggettoARROW , ma questo non risolve il problema.
 
satorifx:
Il punto è che l'oggetto ARROW ha coordinate (tempo, prezzo), ma non coordinate (x,y). Se si allarga la finestra dell'indicatore nella parte inferiore dello schermo, l'oggetto si muoverà insieme alla finestra, ma allo stesso tempo le coordinate (x,y) dell'oggetto nella finestra cambieranno e non potranno essere calcolate perché non c'è connessione tra i due sistemi di coordinate. In linea di principio, si potrebbe usare un oggetto TEXT o qualsiasi altro oggetto al posto di un oggetto ARROW , ma questo non risolve il problema.

Allora lega il bianco al caldo. Ti è stato mostrato come conoscere il prezzo minimo sulle barre visibili, e ti è stato mostrato come segnarlo sul grafico.

Il resto è il tuo oscuro pensiero velleitario ;)

 
Sepulca:



Non ho capito bene cosa intendi? Se non c'è nessun file (non è stato aperto) o c'è stato un errore di lettura. Avrebbe dato un messaggio, ma non ci sono notizie...
 
Il codice dovrebbe essere scritto in modo tale che sulla barra in cui viene aperto il trade, c'è un'uscita dalla posizione, se si forma uno spike, sulla barra successiva immediatamente dopo la barra con uno spike, ma i segnali sulle barre dopo le quali viene aperto il trade, dove si è verificato uno spike, vengono ignorati. Non c'è nessun problema con il codice che descrive il picco. La difficoltà è come dire al programma che il segnale di utilizzare solo la barra in cui il commercio è stato aperto.
 
Forexman77:
Il codice dovrebbe essere scritto in modo tale che sulla barra in cui viene aperto il trade, c'è un'uscita dalla posizione, se si forma uno spike, sulla barra successiva immediatamente dopo la barra con uno spike, ma i segnali sulle barre dopo le quali viene aperto il trade, dove si è verificato uno spike, vengono ignorati. Non c'è nessun problema con il codice che descrive il picco. La difficoltà è come indicare al programma che solo la barra in cui il trade è aperto è usata per il segnale.
L'affare ha un tempo di apertura OrderOpenTime(); C'è una funzione che ti mostra il numero di barra per tempo iBarShift(); Usa questa barra come "... usiamo solo la barra in cui l'affare è aperto per il segnale ...".
 
artmedia70:
Il trade ha un tempo di apertura OrderOpenTime(); E c'è una funzione che vi mostrerà il numero di barra per tempo iBarShift(); Questa è la barra e la usiamo come "... che per il segnale che usiamo, solo la barra in cui il trade è aperto...".

Grazie, darò un'occhiata.
 
Zolotai:

Non ho capito bene cosa intendi? Se non c'è nessun file (non è stato aperto) o c'è stato un errore durante la lettura. Il messaggio è stato mostrato, ma non si riceve alcuna notizia...

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ|FILE_WRITE,";");// Aprire il file.

Se FILE_WRITE non è combinato con FILE_READ, verrà aperto un file di lunghezza zero. Anche se c'erano dati nel file prima che fosse aperto, saranno distrutti.
Se volete aggiungere dati a un file esistente, dovete aprirlo usando la combinazione FILE_READ | FILE_WRITE..
Se FILE_READ non è combinato con FILE_WRITE, il file sarà aperto solo se il file esiste già. Se il file non esiste, può essere creato usando la modalità FILE_WRITE.