Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 153

 
EVladMih:

Artemis, Sie haben im zweiten Beitrag angefangen, dem Mann zu erklären, dass er weiß mit heiß kombiniert, und das Einzige, was Sie erklärt haben, war der Teil der Frage, nach dem Sie niemand gefragt hat. Ich weiß zufällig, wie viel Code dieser Mann geschrieben hat, und es waren SIE, die nicht auf den Punkt gekommen sind, nicht er. Übrigens schreibt er diesen Code nicht für sich selbst, sondern für andere.

Wenn Sie also nicht helfen wollen oder können, dann mischen Sie sich wenigstens nicht ein und beschuldigen Sie nicht andere für Ihre Sünden.

Männer, die sich besser auskennen, helfen bitte satorifx. Er muss wirklich das Weiße mit dem Heißen mischen, aber das ist nicht seine Schuld... Sie kennen die Besonderheiten von MT4, wo Dinge aus derselben Oper auf verschiedenen Bühnen (unterschiedlichen Koordinatensystemen) gesungen werden.

Zuallererst. Zunächst einmal spreche ich Sie nicht mit dem Vornamen an. Zweitens: Lernen Sie, den Spitznamen einer Person richtig zu lesen, da Sie ihn nicht verwenden können. Drittens: Ich gebe Ihnen einen Tipp, wie Sie den Crossover mit der Trendlinie erkennen können. In dem Beispiel, das speziell für Anfänger geschrieben wurde, wird die Trendlinie selbst nicht für Berechnungen verwendet. Es ist nur ein Anhaltspunkt, in welche Richtung es gehen soll. Es gibt jedoch eine Reihe von Methoden für dieses Problem. Es ist nicht notwendig, sich mit dem Problem der Inkompatibilität der Koordinaten zu befassen, sondern zu entscheiden, wie man mit den verfügbaren Eingabedaten aus dieser Situation herauskommt.

И... diese... Ich kann schreiben, wovon du noch nicht geträumt hast...

 

EVladMih:,

aber man sollte die Leute wahrscheinlich nicht in Badehäuser auf der Basis von einheimisch/nicht einheimisch einteilen.

Es geht nicht darum, ob eine bestimmte Person ortsansässig oder nicht ortsansässig ist. Es geht um die Art und Weise, wie die Person die Frage stellt. Wenn ich seine Frage falsch verstanden habe, gibt ihm das nicht das Recht, unhöflich zu sein. Ich habe aufrichtig versucht, ihm zu helfen. Und ich denke, wenn er mir nach meiner Antwort gesagt hätte, dass dies nicht das ist, was er wollte und worum er gebeten hatte, und wenn er mir die konkrete Aufgabe erklärt hätte, die ihm gestellt wurde, hätten wir herausgefunden, wie wir alles schnell und effizient erledigen können.

Jetzt reden Sie davon, dass er den Crossover mit der Trendlinie nicht erkennen kann. Aber das bringt einen nur zum Lächeln. Oder habe ich vielleicht schon wieder alles falsch verstanden und verdiene eine weitere Unhöflichkeit? Die einfache Funktion ObjectGetValueByShift() gibt den Preis der Trendlinie für einen bestimmten Balken zurück. Vergleichen Sie also einen Preis mit einem anderen.

 
artmedia70:
Soweit ich verstanden habe, möchte er, dass das Objekt vertikal positioniert und nicht horizontal zum niedrigsten Preis der auf dem Bildschirm angezeigten Balken verschoben wird. Ich zeigte ihm den ersten Teil seiner Frage - wie man den Minimalpreis auf dem Chart findet. Er verstand nicht und bellte mich an. Nun soll er selbst herausfinden, wie er das tun kann, was er braucht, ohne zwei Koordinatensysteme zu kreuzen. Das ist ganz einfach. Vielleicht wird es jemand anderes für ihn tun, aber ich verabschiede mich. Ich mag keine ungehobelten Leute und Schmarotzer - er hat sich nicht einmal die Mühe gemacht, sich mit der Sache zu befassen und selbst etwas in Code zu schreiben.

artmedia70, ich bin ein nicht konfrontativer Mensch, und wenn ich etwas Falsches gesagt habe, entschuldige ich mich und bitte darum, dass es nicht als unhöflich angesehen wird.

Ich weiß wirklich nicht, wie ich das Problem lösen soll.

Ich habe bisher 2 Koordinatensysteme auf einfache Weise gekreuzt: Ich habe ein Etikett erstellt und es manuell auf den Mindestpreis gesetzt - so habe ich ein Koordinaten-Y-Etikett und es entspricht dem Mindestpreis, den ich mit der Funktion WindowPriceMin() erhalte . Aber das ist manuell, ich würde es gerne programmatisch verfolgen und korrigieren.

Wenn es wirklich eine Lösung für dieses Problem gibt, und zwar eine einfache, wäre ich für Hilfe dankbar.


 
artmedia70:

Jetzt sagen Sie, dass er keinen Crossover mit der Trendlinie erkennen kann. Aber das bringt mich nur zum Lächeln. Oder habe ich wieder alles falsch verstanden und eine weitere Unhöflichkeit verdient? Die einfache Funktion ObjectGetValueByShift() gibt den Preis der Trendlinie für einen bestimmten Balken zurück. Vergleichen Sie also einen Preis mit einem anderen.


Hören Sie nicht auf EVladMih - er macht keinen Sinn .
Ich weiß sehr gut, wie man den Abstand zum Trend findet, wenn es um den Preis geht. Die Frage ist eine andere.

Ich verwende in meinem Indikator Marker, die permanent am oberen Bildschirmrand hängen. Nach dem Verschieben einer beliebigen Markierung soll der Abstand von der Markierung zur Trendlinie ermittelt werden, aber die Markierungen haben Koordinaten (x,y) auf dem Bildschirm, während ObjectGetValueByShift mit dem Preis arbeitet, d.h. in einem anderen Koordinatensystem. Das ist der Grund für die ganze Aufregung.

Ich kann das OBJ_TEXT-Objekt nicht mit Preiskoordinaten verwenden, weil ich möchte, dass es an einer Stelle bleibt, wie es bei Beschriftungen (OBJ_LABEL-Objekt) der Fall ist, wenn ich das Diagramm bewege, und nicht bei Tags.

 
satorifx:

Hören Sie nicht auf EVladMih - er schreibt Unfug .
Ich weiß sehr gut, wie man den Abstand zum Trend findet, wenn es um den Preis geht. Die Frage ist eine andere.

In meinem Indikator verwende ich Marker, die ständig am oberen Rand des Bildschirms schweben. Nach der Verschiebung einer beliebigen Markierung sollte der Abstand von der Markierung zur Trendlinie bestimmt werden, aber Markierungen haben Koordinaten (x,y) auf dem Bildschirm, während ObjectGetValueByShift mit dem Preis arbeitet, d.h. in einem anderen Koordinatensystem. Das ist der Grund für die ganze Aufregung.

Ich möchte im Voraus sagen, dass ich das OBJ_TEXT-Objekt nicht mit Preiskoordinaten anstelle von Beschriftungen verwenden kann, weil ich möchte, dass sie (Beschriftungen) nicht zum Preis verschoben werden, wenn ich das Diagramm bewege, sondern an einer Stelle bleiben, wie es bei Beschriftungen der Fall ist (OBJ_LABEL-Objekt).

Um Neuberechnungen zu vermeiden, verwenden Sie PFEIL mit konstanter x-Koordinate = bestimmter Balken anstelle von Etiketten. Sie können den Balken in der Objektbeschreibung speichern und ändern. Sobald das Objekt verschoben wird, schreiben Sie eine neue x-Koordinate, die dem neuen Balken entspricht, in seine Beschreibung. Dann gibt es keine Probleme mit der Preissuche. Und lokalisieren Sie das Objekt immer anhand seiner Beschreibung auf der horizontalen Achse. Die vertikale Achse ist der Preis. Dies ist eine weniger kostspielige Option. Und das Objekt befindet sich auf der X-Achse immer an der gleichen Stelle, die einer bestimmten Taktnummer entspricht.

ZS "...ich entschuldige mich und bitte fassen Sie es nicht als ungehobelt auf..." Ist schon gut, lassen Sie es gut sein... ;)

 

Ich habe mir einen Indikator ausgedacht. Teilt ein Paar durch ein anderes, um nicht enthaltene Instrumente an den Anschluss zu bekommen. Aber jetzt lädt es das Terminal und berechnet bei jedem Tick neu. Ich habe sie in meinen Expert Advisor eingegeben

if (Time[0]<=PrevTime) return(0);

PrevTime=Time[0];

Jetzt wird nur noch eine neue Kerze angezündet. Bitte sagen Sie mir, wie ich es machen soll. Text des Indikators.

P/S/ Übrigens. Alle Paare werden normal angezeigt. Ich möchte Appl to Ruble sehen. Ich möchte es nicht sehen.

#property indicator_separate_window
#Eigenschaft indicator_buffers 1
#Eigenschaft indicator_color1 Lime
//--- Eingabeparameter
extern string Paar_1="EURUSD"; //Gewünschtes Symbol für den Vergleich
extern string Paar_2="GBPUSD"; // gewünschtes Instrument zum Vergleich
extern bool Spiegelung_Paar_2=false;
//--- Puffer
double ExtMapBuffer1[];
static int PrevTime=0;
int start=1;


//+------------------------------------------------------------------+
//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |
//+------------------------------------------------------------------+
int init()
{
//---- Indikatoren
string short_name=Paar_1;
SetIndexStyle(0,DRAW_LINE);
SetIndexPuffer(0,ExtMapPuffer1);
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Iterationsfunktion |
//+------------------------------------------------------------------+
int start()
{
if (Time[0]<=PrevTime && start==1) return(0);
PrevTime=Time[0];
int i, counted_bars=IndicatorCounted();
i=gezählte_Balken-1;
//----
while(i>=0){
double Compare1=iClose(Paar_1,0,iBarShift(Paar_1,0,iTime(Paar_1,0,i),FALSE));
double Compare2=iClose(Paar_2,0,iBarShift(Paar_1,0,iTime(Paar_1,0,i),FALSE));
if(Compare2!=0 && Compare1!=0) double Compare=Compare1/Compare2;
if(Spiegelung_Paar_2==1) Vergleich=1/Vergleich;

ExtMapBuffer1[i]=Vergleichen;
RefreshRates();
i--;
}
//----
Start=0;
zurück(0);
}
//+------------------------------------------------------------------+y

 
Hallo
Hilfe! Wie mache ich eine Verzögerung zwischen den Auftragseröffnungen, Sleep 3000?
int start() {
string ls_0;
int li_8;
bool li_12;
int li_20;
int li_24;
double ld_28;
int li_36;
int li_40;
string ls_48;
string ls_56;
string ls_64;
double ld_76;
int li_84;
Und so sollten Sie einfügen.

Nur für den Fall, dass die Eule selbst

Eine andere Frage, diese Eule ist für sieben Paare auf einmal eingestellt, ich muss nämlich eine Pause zwischen den Bestellöffnungen machen! Zum Beispiel wurden heute 10 Aufträge gleichzeitig in den Nachrichten geöffnet und ich brauche sie mit einer Verzögerung!

Ich danke Ihnen!

/* Dekompiliert gelöscht - Vinin */

 

Mir ist gerade eingefallen, können Sie mir sagen, wo ich Sleep(60000); einfügen soll, damit es eine Verzögerung zwischen den Öffnungen gibt

if (ai_8 == OP_BUY) ad_20 = Ask;
if (ai_8 == OP_SELL) ad_20 = Bid;
if (!IsTradeContextBusy()) {
li_68 = OrderSend(as_0, ai_8, ad_12, NormalizeDouble(ad_20, MarketInfo(as_0, MODE_DIGITS)), ai_28, NormalizeDouble(ad_32, MarketInfo(as_0, MODE_DIGITS)), NormalizeDouble(ad_40,
MarketInfo(as_0, MODE_DIGITS)), as_48, ai_56, ai_60, ai_64)
if (li_68 > 0) {
Print("orderSendReliable(): Erfolgreich! Ticket: " + li_68);
return (li_68);
}



 

Du hast es gestohlen, aber du hast keine Ahnung, was du damit machen sollst))

Ich habe keine Ratgeber für mich selbst geschrieben, ich lese nur, analysiere krumme Eulen in Blockschemata und versuche, den besten Ansatz herauszufinden.

Ich könnte also falsch liegen.

int counterrore=0, //подщет количества ошибок открытия ордера
timesleep=10000; // время задержки
while () // до тех пор пока не будет выход с цыкла
{
 if (!IsTradeContextBusy())
 { 
  RefreshRates(); // последние данные
  if (ai_8 == OP_BUY) ad_20 = Ask;
  if (ai_8 == OP_SELL) ad_20 = Bid;
  li_68 = OrderSend(as_0, ai_8, ad_12, NormalizeDouble(ad_20, MarketInfo(as_0, MODE_DIGITS)), ai_28, NormalizeDouble(ad_32, MarketInfo(as_0, MODE_DIGITS)), NormalizeDouble(ad_40,
  MarketInfo(as_0, MODE_DIGITS)), as_48, ai_56, ai_60, ai_64);
  if (li_68 > 0) 
  {
   Print("orderSendReliable(): Success! Ticket: " + li_68);
   return (li_68);
  }
  Print("orderSendReliable(): False! Error " + GetlastError()); // поищите коректную функцию обработки ошибок
  counterrore++; // количество неудач - сумирование

  if(counterrore>6) // если не удалось 6 раз открыть
  {
   Print("orderSendReliable(): Error!!! " +counterrore+"times --return(-1)" ); // сообщаем логу о даной трагедии
   return (-1); // -1 или что там Вы придумаете для отработки ситуации
  }
 }
 Sleep (timesleep); // время сна для цикла посылки  запроса на сервер и для !IsTradeContextBusy()
}
 
Jetzt werden die Moderatoren kommen und die letzten beiden vor mir sperren :-))