Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 604

 
new-rena:

Controdomanda.

Pensi che il movimento su qualsiasi coppia di valute: grafico, prezzi bid e ask e così via, dipenda da un insieme di tue variabili?

Il movimento dei tassi non dipende dalle variabili, ma un trader cerca di trovare delle regolarità nel movimento, e su questa base seleziona le variabili (dati di input) per aprire, tenere e chiudere le posizioni. Dopo tutto, il sistema di trading è un insieme di regole destinate ad un lavoro redditizio. Forse, la distribuzione dei profitti e delle perdite è casuale, ma la loro proporzione è diversa e, quindi, si formano sistemi di trading redditizi. Deve essere così.
 
Евгений:
Il movimento del tasso non dipende dalle variabili, ma il trader cerca di trovare modelli nel movimento, e su questa base sceglie le variabili (input) per aprire, mantenere e chiudere la posizione. Dopo tutto, il sistema di trading è un insieme di regole destinate ad un lavoro redditizio. Forse, la distribuzione dei profitti e delle perdite è casuale, ma la loro proporzione è diversa e, quindi, si formano sistemi di trading redditizi. Credo di sì.
In pratica, hai risposto alla tua stessa domanda. Cioè, sullo stesso movimento di prezzo si può ottenere quanto segue; profitto-perdita = CONST
 
suggerire una funzione sulla restrizione, nell'Expert Advisor voglio mettere un divieto di vendere o comprare dalla media mobile.
 
KoltRU:
Si prega di consigliare la funzione di limitare, in Expert Advisor voglio mettere un divieto di vendita o di acquisto da una media mobile.
L'ho reso più semplice, ho aggiunto una condizione all'apertura
 

Questo è un fastidio. Il riferimento all'array non viene passato alla funzione.

void GetIndValue(int IndNo, int Vol, double *out[]){;};

Con questo doppio *out[] - non importa come lo scrivi, si verificano tutti gli errori.

'BatIndicators.mqh' BatIndicators.mqh 1 1

'*' - il puntatore non può essere usato BatIndicators.mqh 18 45

'out' - gli array sono passati solo per riferimento BatIndicators.mqh 18 46

2 errore(i), 0 avviso(i) 3 1

o l'uno o l'altro o entrambi. Ricordo che prima non c'era nessun problema, o è in C. )


 
Yuriy Asaulenko:

Questo è un fastidio. Il riferimento all'array non viene passato alla funzione.

Con questo doppio *out[] - non importa come lo scrivi, si verificano tutti gli errori.

'BatIndicators.mqh' BatIndicators.mqh 1 1

'*' - il puntatore non può essere usato BatIndicators.mqh 18 45

'out' - gli array sono passati solo per riferimento BatIndicators.mqh 18 46

2 errore(i), 0 avviso(i) 3 1

o l'uno o l'altro o entrambi. Ricordo che prima non c'era nessun problema, o è in C. )


Prova così

void GetIndValue(int IndNo, int Vol, double &out[]){}
 
Andrey Barinov:

Prova questo

Grazie.
 

//--- ottenere il numero della nuova sottofinestra, in cui cercheremo di aggiungere l'indicatore

int subwindow=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);

Questo è il codice che sto guardando https://www.mql5.com/ru/docs/chart_operations/chartindicatoradd

L'esempio mostra come mettere un indicatore in una sottofinestra. Se non avete bisogno di una sottofinestra, basta usare l'esempio di muwig per mostrare come fare?

Документация по MQL5: Операции с графиками / ChartIndicatorAdd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
  • www.mql5.com
Операции с графиками / ChartIndicatorAdd - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexander Antoshkin:

//--- ottenere il numero di una nuova sottofinestra, in cui cercheremo di aggiungere un indicatore

int subwindow=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);

Questo è il codice che sto guardando https://www.mql5.com/ru/docs/chart_operations/chartindicatoradd

L'esempio mostra come mettere un indicatore in una sottofinestra. Se non avete bisogno di una sottofinestra, basta usare l'esempio di muwig per mostrare come fare?

Se volete aggiungere l'indicatore alla finestra principale, allora:

sottofinestra

[Numero di sottofinestra del grafico. 0 significa finestra principale del grafico. Per aggiungere un indicatore a una nuova finestra, il parametro deve essere uno in più dell'indice dell'ultima finestra esistente, cioè uguale aCHART_WINDOWS_TOTAL. Se il valore del parametro supera il valore diCHART_WINDOWS_TOTAL, una nuova finestra non sarà creata, l'indicatore non sarà aggiunto.

 
Karputov Vladimir:

Se avete bisogno di aggiungere un indicatore alla finestra principale, allora:

//+------------------------------------------------------------------+
//|                                                         0000.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

input int MA_Period=21; 
input int MA_Shift=0; 
input ENUM_MA_METHOD MA_Method=MODE_SMA;

int MA_handle=INVALID_HANDLE; 
//+------------------------------------------------------------------+ 
//| Expert initialization function                                   | 
//+------------------------------------------------------------------+ 
int OnInit() 
  { 
  
   MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",  MA_Period,  MA_Shift, MA_Method,  PRICE_CLOSE  );
//--- попробуем добавить индикатор на график 
AddIndicator();

   return(INIT_SUCCEEDED); 
  } 

//+------------------------------------------------------------------+ 
//| Функция проверки и добавления индикатора на график               | 
//+------------------------------------------------------------------+ 
bool AddIndicator() { if(MA_handle==INVALID_HANDLE) 
{ Print(__FUNCTION__,"  Создаем индикатор ");

 MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",  MA_Period,  MA_Shift, MA_Method,  PRICE_CLOSE  );
if(MA_handle==INVALID_HANDLE) 
{ 
 Print("Не удалось создать индикатор . Код ошибки ",GetLastError()); 
 } 
  }     
//--- сбросим код ошибки 
   ResetLastError(); 
//--- накладываем индикатор на график 
  
   Print("Mа построен "); 
//--- получим номер нового подокна, в которое добавим индикатор  
   int subwindow=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL); 
   PrintFormat("Добавляем индикатор на окно %d графика",subwindow); 
   if(!ChartIndicatorAdd(0,subwindow,MA_handle)) 
     { 
      PrintFormat("Не удалось добавить индикатор  на окно %d графика. Код ошибки  %d", 
                  subwindow,GetLastError()); 
     } 
   return(true); 
  } 
void OnDeinit(const int reason)
{
MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",  MA_Period,  MA_Shift, MA_Method,  PRICE_CLOSE  );

Ciao Vladimir.

Devo aver formulato male la mia domanda.

Non ho bisogno di una sottofinestra, l'indicatore dovrebbe essere posizionato sul grafico dei prezzi, come un grafico standard

Lo considero un esempio e cerco di capire.

Voglio che l'indicatore montato sul grafico abbia il suo numero, in modo che il numero necessario di copie possa essere creato sul grafico usando il pulsante "Add" ..... Voglio cancellarne uno selezionato dal pulsante "croce" ........ (non voglio ancora descriverli))

Motivazione: