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

 
OK, controllerò di nuovo.
 
Ancora una volta, voglio ripetermi.
(Low[2]==Low[1])||(Close[2]==Low[1])||(Low[2]==Open[1])
Non si possono stabilire condizioni del genere. Questi sono eventi improbabili.
 
atguard:

Domanda: come ottengo il valore di "shift" (quando chiamo l'indicatore con uno shift, usa gli stessi valori che senza, cioèiCustom(NULL, 0, "nome",pam1,0,1)= iCustom(NULL, 0, "nome",pam1,0,100), ma se chiamo l'indicatore 100 barre fa, avrà un valore diverso da iCustom(NULL, 0, "nome",pam1,0,100). L'indicatore è semplice, utilizza 5 valori di chiusura precedenti e ne prende la media.



double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)

shift è il numero della barra da cui prendete i dati dell'indicatore, zero bar è la barra attuale che non è stata ancora chiusa. Il parametro si chiama shift perché mostra l'offset dei dati ricevuti dalla barra zero in barre.

 
silhouette:

Uso la funzione Terminal() del tutorial quando chiudo le posizioni, a condizione che Mas_Ord_New[0][0]!=0. Ma qui abbiamo un altro compito: dobbiamo fare un flag che proibisca di fare trading sul segnale corrente, se un ordine è già stato aperto su di esso. Sto cercando di usare le bandiere ma ho fatto un errore.

Penso che sarebbe meglio mettere un numero magico appropriato nell'ordine e controllare se una tale posizione è nella lista. Se c'è = bandiera-vero, no = bandiera-falso. Poi a condizione di aprire una posizione sul tuo segnale inserisci una bandiera, ad esempio

bool flag_1=true;
int MagNum_1=555;

int start()
{
// ...

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {  if (OrderMagicNumber()==MagNum_1)
              flag_1=true;
         else flag_1=false;
}  }  }

if (flag_1==false && /*данное условие открытия позиции*/)
{ OrderSend(..., MagNum_1, ...);
}
//...
}
 
paladin80:

Penso che sia meglio mettere il numero magico appropriato nell'ordine e controllare se quella posizione è nella lista. Se c'è una bandiera-vero, nessuna bandiera-falso. Poi, se viene aperta una posizione sul tuo segnale, inserisci un flag, ad esempio


Cioè, se ho capito bene, proponi di usare diversi magiks corrispondenti ad ogni tipo di segnale?
 
Puoi dirmi perché l'ottimizzatore può contare ma non produrre risultati? Non ci sono errori nel registro. L'algoritmo genetico è disattivato. L'intervallo di ottimizzazione è di 5 giorni, il modo è tutti i tick, il periodo è qualsiasi m1, m5, m15, m30. E solo a partire dal periodo H1 appaiono i risultati.
 
Desead:
Puoi dirmi perché l'ottimizzatore può contare ma non produrre risultati? Non ci sono errori nel registro. L'algoritmo genetico è disattivato. L'intervallo di ottimizzazione è di 5 giorni, il modo è tutti i tick, il periodo è qualsiasi m1, m5, m15, m30. I risultati appaiono solo a partire dal periodo H1.

Su periodi più brevi di H1 l'algoritmo fallisce.
 
Vinin:

Su periodi più brevi di H1, il precipita.
Esattamente, c'è anche una casella di controllo per questo, come mai non lo sapevo?) Grazie.
 
Desead:
Puoi dirmi perché l'ottimizzatore può contare ma non produrre risultati? Non ci sono errori nel registro. L'algoritmo genetico è disattivato. L'intervallo di ottimizzazione è di 5 giorni, il modo è tutti i tick, il periodo è qualsiasi m1, m5, m15, m30. E i risultati appaiono solo a partire dal periodo H1.

Se i guadagni sono negativi con questa combinazione di parametri, i risultati non vengono mostrati. In generale, 5 giorni sono un periodo molto breve, fissate almeno un mese.
 

Buon pomeriggio. Potete consigliarmi per favore, ho bisogno che l'indicatore sia visualizzato non su tutta la storia, ma solo sul bordo su un dato numero di barre. Codice:

//+------------------------------------------------------------------+
//| Индикатор арбитражной ситуации для спреда, состоящего            |
//| из 4-х инструментов                                             |
//| Copyright © 2010, leonid553, Son_Of_Earth                        |
//+------------------------------------------------------------------+
#property copyright "leonid553 & Son_Of_Earth"
#property link      "leonid553@ya.ru,sonofearth.ua@gmail.com"

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Yellow
#property indicator_color4 Black
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1
#property indicator_width4 1


extern string Symbol1.Name = "EURUSD";     // Название инструмента 1
extern bool   Symbol1.Reverse = false;     
extern string Symbol2.Name = "";           // Название инструмента 2
extern bool   Symbol2.Reverse = false;     
extern string Symbol3.Name = "";           // Название инструмента 3
extern bool   Symbol3.Reverse = false;     
extern string Symbol4.Name = "";           // Название инструмента 4
extern bool   Symbol4.Reverse = false;     

extern string  ___MISC___ = " == Прочие настройки ==========";




extern string  ___MA___   = " == Параметры МА ценовых линий ====";

extern int MA.Slow = 50;                   // Период медленной МА


// Буферы для отображения данных
double Buf1[];    // Первый инструмент
double Buf2[];    // Второй инструмент
double Buf3[];    // Третий инструмент
double Buf4[];    // Четрертый инструмент



//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
  // Делаем нечувствительными к регистру ввода наименования инструментов
  Symbol1.Name=StringUpper(Symbol1.Name);
  Symbol2.Name=StringUpper(Symbol2.Name);
  Symbol3.Name=StringUpper(Symbol3.Name);
  Symbol4.Name=StringUpper(Symbol4.Name);

  // Определяем балансовые коэффициенты каждого инструмента
  kVol1=1;
  kVol2=1;
  kVol3=1;
  kVol4=1;
  
  // Задаем имена графическим объектам
  oSymb1=Symbol1.Name;
  oSymb2=Symbol2.Name;
  oSymb3=Symbol3.Name;
  oSymb4=Symbol4.Name;


  // Формируем свойства графиков индикатора
  IndicatorBuffers(4);
  
  SetIndexStyle(0,DRAW_LINE);
  SetIndexBuffer(0,Buf1);
  SetIndexLabel(0, Symbol1.Name); 

  SetIndexStyle(1,DRAW_LINE);
  SetIndexBuffer(1,Buf2);
  SetIndexLabel(1,Symbol2.Name); 

  SetIndexStyle(2,DRAW_LINE);
  SetIndexBuffer(2,Buf3);
  SetIndexLabel(2,Symbol3.Name);

  SetIndexStyle(3,DRAW_LINE);
  SetIndexBuffer(3,Buf4);
  SetIndexLabel(3,Symbol4.Name);

  soundCount=0; // Максимально к-во повторов звукового сигнала

  return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()  {
  // Удаляем все графические объекты
  DeleteObject(oSymb1);
  DeleteObject(oSymb2); 
  DeleteObject(oSymb3);
  DeleteObject(oSymb4);

  return(0);  
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
  // Подсчет количества баров для построения индикатора
  int limit; int counted_bars=IndicatorCounted();
  if(counted_bars<0) return(-1);
  if(counted_bars>0) counted_bars--; 
  limit=Bars-counted_bars;
  
  // Определяем параметры окна индикатора
  wndNum=WindowFind(WindowExpertName());
  wndName=WindowExpertName()+wndNum; 


  
 
  //------------------------------------------------------------------ 
  // Отрисовка ценовых линий: рисуем и синхронизируем по наличию баров
  for(int i=0; i<limit; i++) { 
    // Первый ценовой график
    Buf1[i]= iClose(Symbol1.Name,0,i);
    // Второй ценовой график
    Buf2[i]= iClose(Symbol2.Name,0,i);
    // Третий ценовой график
    Buf3[i]= iClose(Symbol3.Name,0,i);
    // Четвертый ценовой график
    Buf4[i]= iClose(Symbol4.Name,0,i);

 
  } // Конец блока отрисовки ценовых линий

E inoltre, come faccio a sapere il prezzo di uno strumento per un dato numero di barre all'indietro?