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

 

Hallo zusammen,

Ich habe einen Indikator erstellt, der zwei Linien in einem Winkel von 45 Grad zeichnet. Wenn sie sich schneiden, möchte ich, dass sie horizontal sind.

Wie berechne ich also die Schnittmenge?

Ich habe mit Low/High vom Vortag bis zu einem Punkt gezeichnet.

Um eine solche Linie zu erhalten, zeichne ich von einem Punkt zum Tagesanfang und auf der anderen Seite vom Punkt des Strahls.

Wie schreibe ich den Code, um ihn neu zu berechnen? Ich habe es noch nicht getan:

Вот начну искат как цена двигается-толко надо увидет ее-первая ест,но вторая 0:
price1 = NormalizeDouble(ObjectGet("Dn",OBJPROP_PRICE1),Digits);
price2 = NormalizeDouble(ObjectGet("Dn",OBJPROP_PRICE2),Digits);
Time_start - ето синяя вертикалная линия
double b3=iBarShift(Symbol(),0,Time_start);      
double b4=iBarShift(Symbol(),0,TimeCurrent());
ну и цикл поиска
for(int j = b4;j <= b3;j++){
Ну що искат,если я не вижу то,что ищу?
Застрял.
 
bond007:
.... und wie können sie das herausfinden???)
Ich verstehe einfach nicht.... sie sagen, Sie können mit EAs handeln, andere sagen, Sie können nicht - wenn zum Beispiel ein Brokerage-Unternehmen erlaubt Ihnen, einen EA zu verwenden, dann wie?

die Maklerfirma kann den Code nicht sehen.... sie sehen nur die Intensität der Auftragserteilung und Kommentare in den Aufträgen ... es gibt einige DTs, bei denen die Arbeit von EAs im Terminal verboten ist ... das heißt, wenn Sie einen EA auf ein Diagramm kleben, handelt er einfach nicht ... Wenn die Servereinstellungen dies nicht zulassen, gibt der Client eine Fehlermeldung aus, z.B. 2013.01.18 22:45:03 '30xxxxx': Handel durch Experten ist verboten



d.h. ich weiß nicht, warum ich mir solche Sorgen um den Code gemacht habe?

 
hoz:

Danke, jetzt bekommst du Appetit :)
Gut für Sie, und allmählich von einfach zu komplex werden Sie Ihr Verständnis programmieren, das für das Schreiben jedes Programms notwendig ist. Viel Glück!
 
mario065:

Hallo zusammen,

Ich habe einen Indikator erstellt, der zwei Linien in einem Winkel von 45 Grad zeichnet. Wenn sie sich schneiden, möchte ich, dass sie horizontal sind.

Wie berechne ich also die Schnittmenge?

Ich habe mit Low/High vom Vortag bis zu einem Punkt gezeichnet.

Um eine solche Linie zu erhalten, zeichne ich von einem Punkt zum Tagesanfang und auf der anderen Seite vom Punkt des Strahls.

Wie schreibe ich den Code, um ihn neu zu berechnen? Ich habe es noch nicht getan:

Zu helfen.
 
drknn:

Was verstehen Sie unter dem Begriff "logarithmischer Graph"? Bitte geben Sie mir ein Beispiel. Ich zum Beispiel habe bisher nur das Konzept einer logarithmischen Skala kennengelernt. Das MT4-Terminal verfügt bereits über diese Skala.
Ich meine die logarithmische Skala. Wie kann ich sie in MT finden? Ich benutze es seit so vielen Jahren und weiß nicht, was dort bereits vorhanden ist.
 
mario065:

Hallo zusammen,

Ich habe einen Indikator erstellt, der zwei Linien in einem Winkel von 45 Grad zeichnet. Wenn sie sich schneiden, möchte ich, dass sie horizontal sind.

Wie berechne ich nun den Schnittpunkt?

Ich habe mit Low/High vom Vortag bis zu einem Punkt gezeichnet.

Um eine solche Linie zu erhalten, zeichne ich von einem Punkt zum Tagesanfang und auf der anderen Seite vom Punkt des Strahls.

Wie schreibe ich den Code, um ihn neu zu berechnen? Ich habe es noch nicht getan:



Igor Kim's:

Funktion CrossPointOfLines()

 

Alexej, Artem, ich danke euch.

Ich werde die Funktionen von Igor Kim lernen.

 

Ich habe also nicht zwei Punkte, sondern nur einen.

Hier ist der Sors:

//+------------------------------------------------------------------+
//|                                                     TRIANGLE.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2013,mario"
#property link      ""

#property indicator_chart_window
extern string   TimeStart  = "Час за начало";
extern datetime Time_start = D'17.01.2013';
extern int      Days       = 1;
bool            New_Bar    = false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){return(0);}
int deinit(){
   ObjectsDeleteAll(0,OBJ_TRENDBYANGLE);
   ObjectsDeleteAll(0,OBJ_VLINE);
   Comment("");return(0);}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  { 
   datetime New_Time,time_next,time_barh,time_barl;
   time_next = Time_start + Days*86400;
   datetime new_day = iTime(Symbol(),PERIOD_D1,0);
//+------------------------------------------------------------------+
   if(New_Time != new_day)                        
           {
           New_Time = new_day;                         
           New_Bar  = true;
           }
//+------------------------------------------------------------------+ 
//Шифтвам 
   double b1=iBarShift(Symbol(),0,Time_start);      
   double b2=iBarShift(Symbol(),0,time_next);
   double min = 3,max = 0;
   for(int i = b2;i <= b1;i++){
      if(iHigh(Symbol(),0,i)>max){ max=iHigh(Symbol(),0,i);time_barh = Time[i];}
      if(iLow (Symbol(),0,i)<min){ min=iLow (Symbol(),0,i);time_barl = Time[i];}
      }
   if(New_Bar == true){ 
      ObjectsDeleteAll(0,OBJ_TRENDBYANGLE);
      ObjectsDeleteAll(0,OBJ_VLINE);
      DrawLine("Start",0,Time_start,0,Time_start,0,0,0,2,Aqua,false);
      DrawLine("Up",3,time_barh,max,0,0,315.0,0,2,DeepSkyBlue,true);
      DrawLine("Up1",3,time_barh,max,Time_start,0,315.0,0,2,DeepSkyBlue,false);
      DrawLine("Dn",3,time_barl,min,0,0,45.0,0,2,Orange,true);
      DrawLine("Dn1",3,time_barl,min,Time_start,0,45.0,0,2,Orange,false);
    }
//+------------------------------------------------------------------+
   double spead = MarketInfo(Symbol(),MODE_SPREAD);
//+------------------------------------------------------------------+ 
   Comment("\nВреме на брокера: ",TimeToStr(TimeCurrent(),TIME_SECONDS),", Локално време: "+TimeToStr(TimeLocal(),TIME_SECONDS),
           "\nТекущ спред: ",DoubleToStr(spead/10,1),
           "\n min:        ",DoubleToStr(min,Digits),
           "\n max:       ",DoubleToStr(max,Digits)
           );
   return(0);
  }
//+------------------------------------------------------------------+
void DrawLine(string name,int lines,datetime time1,double value,datetime time2,double value1,double grd,int style,int wid,color col,bool ray)
{
   ObjectCreate(name,lines,0,time1,value,time2,value1);
   ObjectSet(name,OBJPROP_ANGLE,grd);
   ObjectSet(name,OBJPROP_COLOR,col);
   ObjectSet(name,OBJPROP_STYLE,style);
   ObjectSet(name,OBJPROP_WIDTH,wid);
   ObjectSet(name,OBJPROP_RAY,ray);
}
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Вычисляет координаты точки пересечения двух прямых.            |
//|             Каждая прямая задаётся парой координат своих точек.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив абсцисс              x[0], x[1] - первая прямая              |
//|                                    x[2], x[3] - вторая прямая              |
//|    y - массив ординат              y[0], y[1] - первая прямая              |
//|                                    y[0], y[1] - вторая прямая              |
//|    t - массив искомых координат    t[0]       - абсцисса                   |
//|                                    t[1]       - ордината                   |
//+----------------------------------------------------------------------------+
void CrossPointOfLines(double& x[], double& y[], double& t[]) {
  double z=(y[3]-y[2])*(x[1]-x[0])-(y[1]-y[0])*(x[3]-x[2]);
  ArrayResize(t, 2);
  ArrayInitialize(t, 0.0);

  if (z==0) Print("CrossPointOfLines(): Не удалось найти точку пересечения!");
  else {
    double xy1=x[1]*y[0]-x[0]*y[1];
    double xy2=x[3]*y[2]-x[2]*y[3];
    t[0]=NormalizeDouble((xy1*(x[3]-x[2])-xy2*(x[1]-x[0]))/z, 0);
    t[1]=(xy1*(y[3]-y[2])-xy2*(y[1]-y[0]))/z;
  }
}

Der Code selbst ist sehr einfach, aber es gibt nur einen Punkt.

 

Wer weiß, warum der DailyPivotPoints-Indikator im Tester im visuellen Modus für alle Daten nur die Daten von heute anzeigt?

Und wenn möglich, was sollte hinzugefügt werden, um zu zeigen, was in der Geschichte stand? Ich danke Ihnen!

 
lenalebedeva:
Ich meine speziell die logarithmische Skala, wie findet man sie in MT? Ich benutze es seit so vielen Jahren und weiß nicht, was es schon alles gibt.

Siehe

P.S.

Betrachten Sie beispielsweise einen vergangenen Tiefststand im Diagramm und stellen Sie fest, dass er sich zum Rand des Diagramms hin noch weiter aus dem Fenster schiebt. Sie blättern im Diagramm nach unten in die Zukunft und beobachten, wie sich das Diagramm automatisch nach oben verschiebt, wodurch Platz für die Kerzen des zugrunde liegenden Diagramms frei wird. Und was vorher am oberen Rand des Diagrammfensters zu sehen war, ist jetzt noch weiter nach oben, aus dem Diagrammfenster heraus, gerückt. Dies ist die Implementierung einer logarithmischen Preisskala im Diagramm. Gäbe es sie nicht, müssten Sie das Diagramm nicht nur von rechts nach links, sondern auch nach oben und unten verschieben. Aus diesem Grund ist die Zeitskala linear und die Preisskala logarithmisch, um die Daten im Diagrammfenster leichter darstellen zu können.

In der Vergangenheit, als es noch keine Computer gab, benutzten die Händler ein Millimeterdiagramm und zeichneten die Kurse darauf ein, um Trends und Wendepunkte vorherzusagen. Daher gab es auf dem Papier zwei Maßstäbe - Preis und Zeit. Es handelt sich um zwei lineare Skalen. Können Sie sich vorstellen, wie groß ein Blatt Millimeterpapier sein müsste, um alle fünfzehnminütigen Kerzenleuchter des letzten Jahres zu enthalten? Sicherlich wäre sie so groß wie eine Zimmerwand (wenn nicht sogar größer). Wenn Sie also das Diagramm auf dem Bildschirm durchlaufen, können Sie sich dieses Modell vorstellen: Ein Candlestick-Diagramm der Preise wird an die Wand gezeichnet. Es gibt auch einen rechteckigen (z.B. roten) Rahmen - das ist Ihr Monitor. Die Bewegung entlang des Charts ist nichts anderes als die Bewegung dieses roten Rechtecks entlang des Trends. Aber dann würden Sie sagen, dass beide Skalen in Ihrem Monitor linear sind. Das stimmt zwar, aber nur teilweise - beachten Sie, dass beim Scrollen des Diagramms die (visuell als groß wahrgenommene) große Kerze nach einer leichten Verschiebung kleiner wird, obwohl die Anzahl der Punkte gleich bleibt, wenn wir den Abstand zwischen ihren Extremen messen.

Sehen Sie, hier sind 2 Screenshots desselben Diagramms. Der erste Screenshot ist nur ein Screenshot. Das zweite ist ein Screenshot desselben Bildschirms, aber nach dem Drehen des Mausrads um einen Klick hat sich das Diagramm um einige Kerzen nach hinten verschoben. Nehmen Sie ein Blatt Papier, befestigen Sie es am ersten Screenshot und markieren Sie die Höchst- und Tiefstkurse der rot markierten Kerze. Verschieben Sie dann die markierten Risiken auf die gleiche Kerze im zweiten Screenshot. Sie werden verstehen, wovon wir sprechen und was eine Verschiebung der logarithmischen Skala ist (was das Wesentliche der ungleichen Verwendung von Skalen hier ist).

Und warum müssen Sie sich mit den Feinheiten der logarithmischen Skalen befassen? Was erhofften Sie sich von ihnen zu erfahren?