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

 
Veterros:

In der letzten Zeile gibt es viele Klammern. Vielleicht sollten Sie versuchen, die leeren Felder zu entfernen.
Man kann nie zu viele Klammern haben, solange es so viele öffnende und schließende Klammern gibt, wie es schließende Klammern gibt.
 
alexeymosc:

Hallo! Ich verstehe nicht, warum ein Fehler auftritt, wenn ich ein Array außerhalb von Funktionen deklariere.

Fehler: '[' - ungültiger Indexwert

Wie deklariere ich ein zweidimensionales nicht-dynamisches Array mit Variablen als Indizes?

Ich habe versucht, const anstelle von static zu setzen. Ich habe auch [][] ausprobiert. Immer noch ein Fehler (

Geben Sie bitte ein Tutorial heraus, in dem Sie diese Frage ein für alle Mal nachschlagen können.

Denn trotz der Reihenfolge , in der den Variablen Werte zugewiesen werden, bleiben sie uninitialisiert, bis das Programm ausgeführt wird. Solange Sie also int Oninit() nicht ausführen, ist die von Ihnen verwendete Variable nicht initialisiert. Verschieben Sie diese Zeile in Oninit() und alles sollte funktionieren...
 

Ich habe einen einfachen Code, der keine Aufträge öffnet.

In meinem Protokoll steht: 1419717': Order buy 0.01 EURUSD opening at market sl: 1.13720 tp: 1.13842 failed [Invalid S/L or T/P].

Hier (im Forum) bekam ich einen Tipp: "Stops und Takei sollten normalisiert werden!

Ich verstehe nicht, was diese Formulierung bedeutet?

Der Compiler gibt keine Fehler oder Warnungen aus. Bei den Tests funktioniert alles. Ich weiß einfach nicht mehr, wo und was ich lesen soll.

Wenn dies zu lang ist, um es zu erklären, schicken Sie mir bitte den Link, wo ich nachlesen kann, wie man Stoploss und Takeprofit normalisiert.

Vielen Dank im Voraus.

double Lots=0.01;
double TakeProfit=100;
double StopLoss=10;
int tk=0;

void start()
{
   if (OrdersTotal()==0)
      {
         tk=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,0,0,0,Green);
         if(tk<0) 
         {
            Print("OrderSend завершилась с ошибкой #",GetLastError());
         }
         else         
         {
            Print("Функция OrderSend успешно выполнена");
         }
      }
}
 
AlexeyVik:
Denn trotz der Reihenfolge, in der den Variablen Werte zugewiesen werden, bleiben sie bis zum Start des Programms uninitialisiert. Das heißt, bis Sie int Oninit() ausführen, wird die Variable, die Sie als Dimension des Arrays verwenden, nicht initialisiert. Verschieben Sie diese Zeile in Oninit() und alles sollte funktionieren...

AlexeyVik, ich danke dir!

Genau das werde ich tun. Ich habe nicht an Oninit gedacht, aber es ist wohl wahr.

 

Bitte geben Sie mir einen Hinweis ))))

Das Diagramm enthält eine gewisse Anzahl von grafischen Objekten.

Ein neuer Balken ist fertig geformt. Wie kann man am einfachsten feststellen, ob er einen Gegenstand berührt hat?

(Ich möchte nicht nach den Preisen aller Objekte suchen und vergleichen, ob die Preisspanne des letzten Balkens eines dieser Objekte berührt hat).

Mit anderen Worten, der Preis und der Datumsbereich, um festzustellen, ob es ein grafisches Objekt in diesen Koordinaten gibt.

 
favidu:

Ich habe einen einfachen Code, der keine Aufträge öffnet.

In meinem Protokoll steht: 1419717': Order buy 0.01 EURUSD opening at market sl: 1.13720 tp: 1.13842 failed [Invalid S/L or T/P].

Hier (im Forum) bekam ich einen Tipp: "Stops und Takei sollten normalisiert werden!

Ich verstehe nicht, was diese Formulierung bedeutet?

Der Compiler gibt keine Fehler oder Warnungen aus. Bei den Tests funktioniert alles. Ich weiß einfach nicht mehr, wo und was ich lesen soll.

Wenn dies zu lang ist, um es zu erklären, schicken Sie mir bitte den Link, wo ich nachlesen kann, wie man Stoploss und Takeprofit normalisiert.

Ich danke Ihnen im Voraus.

NormalizeDouble() dig im Referenzbuch. Wenn Ihr Broker jedoch nicht zulässt, dass Sie Stops zum Zeitpunkt der Eröffnung einer Marktorder aussetzen, sollten Sie sie in Nullen eingeben und sie im zweiten Schritt separat aussetzen. Es gibt Beispiele in der kodobase.


tk=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,NormalizeDouble(Bid-StopLoss*Point,_Digits),NormalizeDouble(Ask+TakeProfit*Point,_Digits),0,0,0,Green);
 
evillive:

NormalizeDouble() die Referenz untersuchen. Wenn der Broker es jedoch nicht zulässt, dass Sie bei der Eröffnung eines Marktauftrags Stopps setzen, sollten Sie diese in Nullen eingeben und separat im zweiten Schritt setzen. Es gibt Beispiele in der kodobase.


Ich danke Ihnen vielmals.
 

Leute, gebt mir einen Schubs in die richtige Richtung...

Zum Beispiel:

#property strict
#property indicator_chart_window
#property indicator_buffers             0

int init() {

        return(0);
}

int start() {
        if (!GlobalVariableCheck(StringConcatenate("ID_", Symbol()))) {
                long id = ChartID();
                Print (id);
                GlobalVariableSet(StringConcatenate("ID_", Symbol()), id);
        }
        return(0);
}

Er speichert nie, was er druckt...

Etwa so:

Ergebnis

CHANDNT?

 
Nun, sobald ich das gepostet hatte, ging der Server auf 404 =)
 

Vorübergehend wurden die hohen Bits separat geschrieben, die niedrigen Bits separat.

Es scheint, dass eine globale Variable vom Typ double nicht lange passt.

Obwohl es hier heißt, dass es kein Problem geben sollte, außer in Situationen, in denen"eine ganze Zahl größer als 9223372036836854774784 oder kleiner als -9223372036854774784 ist".

Aber stimmen Sie zu, die Diagramm-ID = 130659893770676840 ist um mindestens eine volle Stelle kleiner als 9223372036854774784.


P.S. Wenn jemand meinen Fehler erklären kann oder es sich um eine Störung handelt, danke im Voraus. Ich werde hier immer wieder vorbeischauen.