[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 378

 
OK, ich sehe noch einmal nach.
 
Ich möchte mich noch einmal wiederholen.
(Low[2]==Low[1])||(Close[2]==Low[1])||(Low[2]==Open[1])
Solche Bedingungen kann man nicht stellen. Dies sind unwahrscheinliche Ereignisse.
 
atguard:

Frage: Wie erhalte ich den "Shift"-Wert? (Wenn ich den Indikator mit einem Shift aufrufe, verwendet er die gleichen Werte wie ohne ihn, d. h.iCustom(NULL, 0, "name",pam1,0,1)= iCustom(NULL, 0, "name",pam1,0,100), aber wenn ich den Indikator vor 100 Takten aufrufe, wird er einen anderen Wert haben als iCustom(NULL, 0, "name",pam1,0,100). Der Indikator ist einfach, er verwendet 5 vorherige Close-Werte und nimmt deren Durchschnitt.



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

shift ist die Nummer des Balkens, aus dem Sie die Daten des Indikators entnehmen, zero bar ist der aktuelle Balken, der noch nicht geschlossen wurde. Der Parameter heißt Shift, weil er den Versatz der empfangenen Daten vom Nullbalken in Balken angibt.

 
silhouette:

Ich verwende die Funktion Terminal() aus dem Tutorial, wenn ich Positionen schließe, vorausgesetzt, dass Mas_Ord_New[0][0]!=0. Aber hier haben wir eine andere Aufgabe: wir müssen eine Flagge erstellen, die den Handel mit dem aktuellen Signal verbietet, wenn bereits ein Auftrag auf diesem Signal eröffnet wurde. Ich versuche, Flaggen zu verwenden, aber ich habe einen Fehler gemacht.

Ich denke, es wäre besser, eine entsprechende magische Zahl in die Bestellung einzugeben und zu prüfen, ob eine solche Position in der Liste vorhanden ist. Wenn ja = flag-true, nein = flag-false. Dann fügen Sie unter der Bedingung, dass eine Position auf Ihr Signal hin eröffnet wird, eine Flagge ein, z. B:

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:

Ich denke, es ist besser, die entsprechende magische Zahl in die Bestellung einzugeben und zu prüfen, ob diese Position in der Liste enthalten ist. Wenn ein Kennzeichen vorhanden ist - wahr, kein Kennzeichen - falsch. Wenn dann auf Ihr Signal hin eine Position eröffnet wird, fügen Sie ein Flag ein, z. B:


Das heißt, wenn ich richtig verstanden habe, schlagen Sie vor, mehrere Zauber zu verwenden, die jeder Art von Signal entsprechen?
 
Können Sie mir sagen, warum der Optimierer zählen kann, aber keine Ergebnisse liefert? Das Protokoll enthält keine Fehler. Der genetische Algorithmus ist deaktiviert. Das Optimierungsintervall beträgt 5 Tage, der Modus ist alle Ticks, der Zeitraum ist beliebig m1, m5, m15, m30. Und erst ab dem Zeitraum H1 erscheinen die Ergebnisse.
 
Desead:
Können Sie mir sagen, warum der Optimierer zählen kann, aber keine Ergebnisse liefert? Das Protokoll enthält keine Fehler. Der genetische Algorithmus ist deaktiviert. Das Optimierungsintervall beträgt 5 Tage, der Modus ist alle Ticks, der Zeitraum ist beliebig m1, m5, m15, m30. Die Ergebnisse erscheinen erst ab dem Zeitraum H1.

Bei Zeiträumen, die kürzer als H1 sind, schlägt der Algorithmus fehl.
 
Vinin:

In Zeiträumen, die kürzer als H1 sind, sinkt der Wert.
Genau, es gibt sogar ein Kontrollkästchen dafür, wieso wusste ich nichts davon). Danke.
 
Desead:
Können Sie mir sagen, warum der Optimierer zählen kann, aber keine Ergebnisse liefert? Das Protokoll enthält keine Fehler. Der genetische Algorithmus ist deaktiviert. Das Optimierungsintervall beträgt 5 Tage, der Modus ist alle Ticks, der Zeitraum ist beliebig m1, m5, m15, m30. Und die Ergebnisse erscheinen erst ab dem Zeitraum H1.

Ist das Ergebnis bei dieser Kombination von Parametern negativ, werden die Ergebnisse nicht angezeigt. Im Allgemeinen sind 5 Tage ein sehr kurzer Zeitraum, der mindestens einen Monat betragen sollte.
 

Guten Tag. Können Sie mich bitte beraten, ich brauche den Indikator, um nicht auf die gesamte Geschichte angezeigt werden, sondern nur auf den Rand auf eine bestimmte Anzahl von Bars. Code:

//+------------------------------------------------------------------+
//| Индикатор арбитражной ситуации для спреда, состоящего            |
//| из 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);

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

Und wie kann ich den Preis eines Instruments für eine bestimmte Anzahl von Balken rückwärts ermitteln?
Grund der Beschwerde: