Nützliche Funktionen von KimIV - Seite 96

 
KimIV >> :

Sie brauchen nichts hinzuzufügen... Es ist bereits in der Warteschlange.


Herzlichen Dank!

Ihr Thread ist ein Schatz im Internet, ich kann mich gar nicht sattsehen an dem, was ich gefunden habe.

 
KimIV >> :

Sie brauchen nichts hinzuzufügen... Es ist bereits in der Warteschlange.


Ich möchte Igor und alle, die regelmäßig in diesem Thread schreiben, fragen. Ich habe den Zweig durchforstet und keine Funktion gefunden, die den Trendwinkel bestimmt. Haben Sie eine Funktion, die den Trendwinkel auf einem 15-Minuten-Chart für 6 oder mehr Kerzen bestimmt?
 

Gibt es Funktionen, mit denen Sie den Abzug (Trigger)

Profil

Vorlage

???

 
mazepa писал(а) >>

Ich möchte Igor und alle, die regelmäßig in diesem Thread schreiben, fragen. Ich habe den Zweig durchsucht und keine Funktion gefunden, die den Trendwinkel bestimmt. Haben Sie eine Funktion, die den Trendwinkel bei einer 15-Minuten-Kerze bei 6 oder mehr Kerzen bestimmt?

Wir können nicht über den Winkel sprechen, sondern über die Rate der Preisänderung

 

Grüße! Vielen Dank für Ihre Arbeit, Sie machen einen guten Job.

Ich bin dabei, einen Indikator zu erstellen, aber die Funktion EquationDirect berechnet manchmal den Kreuzungspunkt falsch :(

Ich habe die Punkte der Linien auf meinem Chart berechnet und der Übersichtlichkeit halber in einen Testindikator eingefügt. Die Funktion berechnet den Schnittpunkt nicht korrekt mit einem Offset, d.h. bei einem bestimmten Winkel ist die Formel in der Funktion nicht angemessen und muss in irgendeiner Weise korrigiert werden, so dass, wenn es passiert, die Berechnungen durch eine andere Formel durchgeführt werden IMHO

#define CPR "DECIDE"
#define mName "Signal"

#property indicator_chart_window

extern int SignalBars=30;              // кол-во баров для сигнала
extern int TrendBars=300;              // кол-во баров для т. линий
extern color CostMaxColor=FireBrick;   // цвет максимальной цены
extern color CostMinColor=SteelBlue;   // цвет минимальной цены
extern color VLineColor=DarkSlateGray; // цвет минимальной цены
extern color TrendColor=Gray;          // цвет трендовых линий
extern color OrderColor=Green;         // цвет сигнала ордера
extern color LabelColor=Navy;          // цвет меток

// Инициализация - функция начальных установок
int init(){
   if(!IsDemo())return(0);
   if( SignalBars<30) SignalBars=30;
}

// ДеИнициализация - функция завершения работы
int deinit(){
   ObjectDelete("UpTrend");
   ObjectDelete("DownTrend");
   ObjectDelete("MaxCost");
   ObjectDelete("MinCost");
   ObjectDelete("SignOrder");
   ObjectDelete("Trend");
   ObjectDelete("Volume");
}

// СТАРТ - основная функция обработки
int start(){
   int bar;
   double val, upb, t1, t2, h1, h2;
   val=173;
   bar=iHighest(NULL,0,MODE_HIGH,100,0);
   t1=Time[0]-273600;
   h1=High[ bar];
   t2= t1-518400;
   h2=High[ bar]- val*Point;
   SetTLine( TrendColor,"DownTrend", t2, h2, t1, h1, True,STYLE_SOLID,2);
   upb= EquationDirect( t1, h1, t2, h2,Time[0]);
   SetArrow(6,DarkViolet,"UpBorder",Time[0], upb,2);
   SetVLine( VLineColor,"VLine",Time[0],STYLE_SOLID);
}

// --- ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ ---

// вертикальная временная линия
void SetVLine(color cl,string nm="",datetime t1=0,int st=0,int wd=1){
// Параметры:
// cl - цвет линии
// nm - наименование               ("" - время открытия текущего бара)
// t1 - время                      (0  - время открытия текущего бара)
// st - стиль линии                (0  - простая линия)
// wd - ширина линии               (1  - по умолчанию)

  if( nm=="") nm=DoubleToStr(Time[0],0);
  if( t1<=0) t1=Time[0];
  if(ObjectFind( nm)<0)ObjectCreate( nm,OBJ_VLINE,0,0,0);
  ObjectSet( nm, OBJPROP_TIME1, t1);
  ObjectSet( nm, OBJPROP_COLOR, cl);
  ObjectSet( nm, OBJPROP_STYLE, st);
  ObjectSet( nm, OBJPROP_WIDTH, wd);
}
// установка трендовой линии
void SetTLine(color cl,string nm="",datetime t1=0,double p1=0,datetime t2=0,double p2=0,bool ry= False,int st=0,int wd=1){
// Параметры:
// cl - цвет линии
// nm - наименование               (  ""  - время открытия текущего бара)
// t1 - время открытия бара        (  0   - Time[10]
// p1 - ценовой уровень            (  0   - Low[10])
// t2 - время открытия бара        (  0   - текущий бар)
// p2 - ценовой уровень            (  0   - Bid)
// ry - луч                        (False - по умолчанию)
// st - стиль линии                (  0   - простая линия)
// wd - ширина линии               (  1   - по умолчанию)

  if( nm=="") nm=DoubleToStr(Time[0],0);
  if( t1<=0) t1=Time[10];if( t2<=0) t2=Time[0];
  if( p1<=0) p1=Low[10];if( p2<=0) p2=Bid;
  if(ObjectFind( nm)<0)ObjectCreate( nm,OBJ_TREND,0,0,0,0,0);
  ObjectSet( nm, OBJPROP_TIME1, t1);
  ObjectSet( nm, OBJPROP_PRICE1, p1);
  ObjectSet( nm, OBJPROP_TIME2, t2);
  ObjectSet( nm, OBJPROP_PRICE2, p2);
  ObjectSet( nm, OBJPROP_COLOR, cl);
  ObjectSet( nm, OBJPROP_RAY, ry);
  ObjectSet( nm, OBJPROP_STYLE, st);
  ObjectSet( nm, OBJPROP_WIDTH, wd);
}
// вычисление точки пересечения
double EquationDirect(double x1,double y1,double x2,double y2,double x){
// Параметры:
// x1,y1 - координаты первой точки,
// x2,y2 - координаты второй точки,
// x     - значение, для которого вычислить Y

  if( x2== x1)return( y1);
  else
  return(NormalizeDouble(( y2- y1)/( x2- x1)*( x- x1)+ y1,Digits));
}
// установка значька
void SetArrow(int cd,color cl,string nm="",datetime t1=0,double p1=0,int sz=0){
// Параметры:
// cd - код значка
// cl - цвет значка
// nm - наименование               ("" - время открытия текущего бара)
// t1 - время открытия бара        (0  - текущий бар)
// p1 - ценовой уровень            (0  - Bid)
// sz - размер значка              (0  - по умолчанию)

  if( nm=="") nm=DoubleToStr(Time[0],0);
  if( t1<=0) t1=Time[0];if( p1<=0) p1=Bid;
  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);
}
 

Bildschirmfoto

über Opera hinzugefügt, im Explorer nicht hinzugefügt

 
Wie können Sie die Endzeit (von links) bestimmen, die in der Grafik sichtbar ist?
 
DECIDE писал(а) >>
Wie kann ich die Endzeit (von links) bestimmen, die im Diagramm sichtbar ist?

TimeCurrent()

 
KimIV писал(а) >>

TimeCurrent()

Dies scheint auf der rechten Seite zu sein.

 

Ich habe es bereits herausgefunden.

es liegt nicht an der Funktion EquationDirect, die Berechnung ist korrekt, es liegt an einem Fehler im Terminal, die Linie wird mit einem Versatz gezeichnet

deshalb musste ich zuerst den Kreuzungspunkt mit Time[0] bestimmen und dann eine Trendlinie vom Ausgangspunkt zum Kreuzungspunkt mit Time[0] zeichnen, in diesem Fall funktioniert alles gut

die äußerste rechte Zeit im Diagramm wird für die Positionierung des Indikatorsignal-Schaltsymbols benötigt (wenn die Diagrammskala geändert wird), d.h. wenn Sie das Schaltersymbol über die äußerste rechte Zeit hinaus bewegen, d.h. noch nicht erreicht haben, schaltet das Symbol um (das Signal für die Platzierung eines Auftrags schaltet ein oder aus, d.h. Sie können dem EA den Handel verbieten oder erlauben, indem Sie das Signal umschalten)

Die linke Zeit wird wie folgt bestimmt: Wir erhalten den äußersten sichtbaren Balken im Diagramm

WindowFirstVisibleBar() und ermitteln die Zeit Time[WindowFirstVisibleBar()]

Grund der Beschwerde: