[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 386

 
splxgf писал(а) >>

Probabilmente qualcosa del genere, perché i cicli infiniti richiedono un tempo molto lungo sull'hardware moderno.

:)

 
Rita >>:

Добрый день.

В индикатоте есть ф-я IndicatorShortName("iC_C_mod, ..... ");

Мне, однако, нужно, кроме этой надписи, - чтобя я могла вставить коммент с динамично изменяющейся переменной в окно индикатора.

Типа ф-и Comment();

Но только, именно, в окно индикатора, а вовсе не на сам график.

Пож. подскажите ?


#property copyright "Copyright © 2009, :-)"
#property link      "----"

#property indicator_separate_window

int start()
{
   string info = "Bid= "+DoubleToStr(Bid,5);
   IndicatorShortName( info);
//----
   return(0);
}

in modo che venga emesso nella finestra che volete

 
Rita >>:

Добрый день.

В индикатоте есть ф-я IndicatorShortName("iC_C_mod, ..... ");

Мне, однако, нужно, кроме этой надписи, - чтобя я могла вставить коммент с динамично изменяющейся переменной в окно индикатора.

Типа ф-и Comment();

Но только, именно, в окно индикатора, а вовсе не на сам график.

Пож. подскажите ?


Puoi creare un'etichetta e cambiare il testo


   string ID  = "MyLabelName";


   if(ObjectCreate( ID, OBJ_LABEL, 0, 20, 20))
     {
       ObjectSet( ID, OBJPROP_XDISTANCE, 35);
       ObjectSet( ID, OBJPROP_YDISTANCE, 35);
     }
 
   //отображение на экране значения переменной txt 
   string txt = "Belissimo";
   ObjectSetText( ID, txt , 18, "Arial Black", Green);
Il codice può essere sbagliato, ma funziona.
 
Non lasciarlo incustodito
 
Grazie, xeon e splxgf!
 
Amici miei, buon pomeriggio.

Sarà interessante ascoltarla sulla seguente domanda:

Si ritiene che la quotazione di una coppia di valute sia influenzata da molti altri strumenti finanziari:
movimento dei principali indici azionari, futures, opzioni, ecc.


1) Pensi che sia possibile rintracciare questa influenza
(e quindi utilizzare costruttivamente in una strategia di trading)?

2) Avete notato correlazioni persistenti tra le coppie di valute interessate e le quotazioni di altri strumenti finanziari?

3) Avete usato degli indicatori per dimostrare tali correlazioni?


(Sto aspettando i vostri commenti nel ramo tematico di questo forum con lo stesso nome: https://forum.mql4.com/ru/28930 )

 

splxgf писал

void CheckSell()
{
if((NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
Sell();
}

Probabilmente qualcosa del genere, perché i cicli infiniti richiedono un tempo molto lungo sull'hardware moderno.


Ma allora il programma controllerà solo la condizione e se è soddisfatta, la venderà. E se non lo fa, cosa farà? Si suppone che aspetti che la condizione sia soddisfatta proprio in questo frammento di codice.



Vinin ha scritto


Perché hai fatto un loop? Se non c'è una condizione, il programma dovrebbe semplicemente uscire e non aspettare che il segnale appaia.

Ecco perché ho fatto il ciclo, perché è in questo frammento di codice dove il programma dovrebbe aspettare che la condizione appaia. Non si può uscire all'inizio del ciclo. Qual è il modo corretto di implementare l'attesa di una condizione?


E questo è il mio disegno:

void CheckSell()
{
while(!(NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
{
Sleep(5);
RefreshRates();
}
Sell();
}


- Funziona e si blocca solo il tester? O non funziona affatto? Vorrei tanto capire come aspettare correttamente che una condizione sia soddisfatta senza uscire dalla funzione data.


Grazie per le risposte!

 
Jahspear >>:


Но ведь тогда программа просто проверит условие и если оно выполняется, продаст. А если не выполняется, что она будет делать? По задумке, должна ждать выполнения условия именно в этом месте кода.


Вот поэтому и сделал цикл, что именно в этом месте кода программа должна ждать выполнения условия. Выйти в начало нельзя. Как правильно реализовать цикл ожидания условия?


- она рабочая и просто тестер вешает? Или не работает в принципе? Очень хочется понять, как правильно ожидать выполнения условия, не выходя из заданной функции.

È molto probabile che il programma funzioni, ed è sbagliato aspettare la condizione senza uscire dalla funzione, almeno il tester non darà un nuovo tick finché la procedura non sarà stata eseguita.

Se la condizione non è soddisfatta, si dovrebbe terminare il programma e dare il controllo al tester. Un tempo i programmi erano lineari e quindi andavano in loop e aspettavano segnali dall'alto. Ora il programma è guidato dagli eventi, quando si verifica un evento, per esempio, un nuovo tick e il gestore di questo evento è chiamare start() dopo che tutto il lavoro necessario all'elaborazione di un nuovo tick è finito, la funzione deve terminare, invece di essere un dispatcher.

È corretto controllare la condizione nella start(), la condizione è arrivata, fate il vostro lavoro, se non lo è, finite il vostro lavoro e aspettate il prossimo tick. Adattiamo già la nostra logica a questo.

 

C'è anche una domanda.

L'indicatore visualizza le linee MA di due coppie di valute in una finestra separata. Funziona bene.

Ma quando inserisco una condizione nel codice

"Se su uno dei simboli si perde una barra, allora sul secondo simbolo - questa barra presente è saltata (non considerata)", così:

int start()
  {
     int limit;
     int counted_bars=IndicatorCounted();
  //---- проверка на возможные ошибки
     if( counted_bars<0) return(-1);
  //---- последний посчитанный бар будет пересчитан
     if( counted_bars>0) counted_bars-=10;
     limit=Bars- counted_bars;
  //---- основной цикл
ВОТ Я СТАВЛЮ ЭТО УСЛОВИЕ  :
    for( k = 0; k < iBars( Symbol_1,Period()); k++)   {  
    int symb2Shift = iBarShift( Symbol_2,Period(),iTime( Symbol_1,Period(), k),true);
    if( symb2Shift != -1)                            { 
//---------------------------------
    for( k=0; k< limit; k++)
       {
       Symbol1[ k]=     (iMA( Symbol_1,..... k)  ;
       Symbol2[ k]=     (iMA( Symbol_2,..... k)  ;           
       } 
                        }
                       }
//----
    return(0);
  }

Poi mt4 si blocca per un minuto e mezzo o due minuti. Poi l'indicatore inizia a funzionare, ma usa il 35-45% della RAM.

Quale può essere la ragione, per favore consigliatemi?

 

Buon pomeriggio!

Potete dirmi per favore come scrivere un semplice indicatore che evidenzi una certa barra (dovrebbe essere impostato nelle opzioni), per esempio alle 12.30 linea verticale e segni i giorni della settimana sul grafico (diciamo da qualche parte sopra l'emme di ogni giorno)?

Grazie!

Motivazione: