[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 715

 
dimon74:
Bei mir funktioniert es folgendermaßen. Eine Position wird durch TP geschlossen, während wir zum Setzen eines neuen schwebenden Auftrags TP+n*Punkt benötigen. Und hier gibt es eine Diskrepanz: OrderTakeProfit () gibt mir vier Ziffern an (ich sehe sie in Alert), und meine Brokerfirma will fünf. Ich habe viele Dinge ausprobiert, aber es scheint, dass noch mehr kommen wird. Wenn Sie eine Idee haben, geben Sie mir bitte ein paar Anregungen. Vielen Dank im Voraus!
Alert() und Print() erzeugen standardmäßig 4 Dezimalstellen, während tatsächlich 8 verwendet werden. Für eine korrekte Ausgabe auf der "Konsole" verwenden Sie DoubleToStr().
 
dimon74:
Bei mir funktioniert es folgendermaßen. Die Position wird durch TP geschlossen, während für einen neuen schwebenden Auftrag der Wert von TP+n*Punkt festgelegt werden muss. Hier gibt es eine Diskrepanz: OrderTakeProfit () gibt mir vier Ziffern an (ich sehe sie in Alert), und mein Maklerunternehmen will fünf. Ich habe viele Dinge ausprobiert, aber es scheint, dass noch mehr kommen wird. Wenn Sie eine Idee haben, geben Sie mir bitte ein paar Anregungen. Vielen Dank im Voraus!

string DoubleToStr( double value, int digits)

Konvertiert einen numerischen Wert in eine Textzeichenfolge, die die Zeichendarstellung der Zahl im angegebenen Präzisionsformat enthält.

Dies sollte zur Vorverifizierung beitragen.

Es ist nur so, dass sowohl Alert() als auch Print() die Werte 4-stellig ausgeben. Ihr Problem ist also ein anderes.

 

Ich kann nicht verstehen, warum in dieser Form

for(int a=0;a<8;a++)
// тут что нить делаем
for(int a=0;a<8;a++)
// еще чо нить делаем

Es heißt, dass die Variable bereits definiert wurde. Ich denke, dass sie bei der Wiederholung wieder 0 wird? Und sie befinden sich in verschiedenen Teilen des Codes, der erste in if, der zweite in else...

 
Abzasc:

Ich kann nicht verstehen, warum in dieser Form

Es heißt, dass die Variable bereits definiert wurde. Ich denke, dass sie bei der Wiederholung wieder 0 wird? Und sie befinden sich in verschiedenen Teilen des Codes, der erste in if, der zweite in else...


int a;
for(a=0;a<8;a++)
// тут что нить делаем
for(a=0;a<8;a++)
// еще чо нить делаем
Warum also die gleiche Variable zweimal definieren?
 
Vinin:

Warum die gleiche Variable zweimal definieren?

Zum Nachlesen

 for(int a=0;a<8;a++)
 aJPY[a]=iCustom(NULL,PERIOD_M15,"Indexes",a,0);

D.h., wenn die Bedingung eine ist, lies, wenn eine andere... Scheiße, ich hab's. Aber es ist ein spezieller Fall, ich brauche dieses Fragment nicht in anderen Fällen.

Ich weiß nicht, wie ich die Variable nullen kann, damit sie in einem anderen Codefragment verwendet werden kann. Wenn die Bedingung eine ist, rufen wir einen Indikator auf und wenn eine andere - einen anderen... ...weil es nicht genug Variablen gibt...

 
Abzasc:

Zum Nachlesen

D.h., wenn die Bedingung eine ist, lies, wenn eine andere... Scheiße, ich hab's. Aber es ist ein spezieller Fall, ich brauche dieses Fragment nicht in anderen Fällen.

Ich weiß nicht, wie ich die Variable nullen kann, damit sie in einem anderen Codefragment verwendet werden kann. Wenn die Bedingung eine ist, rufen wir einen Indikator auf und wenn eine andere - einen anderen... weil es nicht genug Variablen gibt...


Nee, wir müssen das irgendwie hinbekommen. Es scheint einfach nicht genug Code zu geben. Ich habe nur von einer Sache gesprochen. Eine Variable deklarieren und verwenden (mit Vorinitialisierung) sind zwei verschiedene Dinge. Ein und dieselbe Variable kann sehr unterschiedliche funktionale Werte haben; die Hauptsache ist, dass man nicht verwechselt, was und wo.
 

Lassen Sie mich versuchen, das zu erläutern. Es gibt einen Indikator, ohne Puffer. Es nimmt Werte eines anderen Indikators in 4 Arrays auf. Ich versuche, die

   int    counted_bars=IndicatorCounted();
   // считать только последний вызов
   int limit;
   if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0;i<limit;i++)
Wenn es einen neuen Balken gibt, werden alle Arrays neu berechnet, wenn es keinen neuen Balken gibt, nur der 0-te Balken. Aber wir berechnen alles neu, d.h. wir rufen sowohl if als auch else auf.
 
Abzasc:

Lassen Sie mich versuchen, das zu erläutern. Es gibt einen Indikator, ohne Puffer. Es nimmt Werte eines anderen Indikators in 4 Arrays auf. Ich versuche, es zu befestigen.

Wenn es einen neuen Balken gibt, werden alle Felder neu berechnet, wenn es keinen Balken gibt, wird nur das 0-te neu berechnet. Aber wir berechnen alles neu, d.h. wir rufen sowohl if als auch else auf.


Ich bevorzuge einen anderen Ansatz

   int    counted_bars=IndicatorCounted();
   // считать только последний вызов
   int limit=Bars-counted_bars-1;
   if(Bars-counted_bars>2)
      limit = //.......................
   for(int i=limit;i>=0;i--)

Aber das ist Geschmackssache. Aber zumindest kann ich jede Zeile erklären

 
Vinin:


Ich bevorzuge einen anderen Ansatz

Das ist allerdings Geschmackssache. Aber wenigstens kann ich jede Zeile erklären

Sagen wir es mal so. Dann, wenn Grenze = 0, wenn wir schreiben, Array 0, 1, 2, sonst - Array 0. Und eine Variable Fehler.

Oder sollten wir ein Array von 1, 2, sonst - Array 0 schreiben?

Wie auch immer, - ich kann die Variable a nicht 2 Mal verwenden, das ist das Problem. Ich verwende es allerdings nur 2 Mal, in if und else. Sie steht nicht einmal in den gemeinsam genutzten Variablen am Anfang des Codes.

 
Abzasc:

So soll es sein. Dann, wenn Grenze = 0, wenn wir schreiben, Array 0, 1, 2, sonst - Array 0. Und eine Variable Fehler.

Oder wenn wir Array 1, 2, sonst - Array 0 schreiben?

Wie auch immer, - ich kann die Variable a nicht 2 Mal verwenden, das ist das Problem. Ich verwende es allerdings nur 2 Mal, in if und else. Sie steht nicht einmal in den gemeinsam genutzten Variablen am Anfang des Codes.


Geben Sie mir den gesamten Code. Sie können sie mir persönlich zusenden. Ich werde versuchen zu helfen.