[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 436

 
semiromid:

Прошу помощи .

Как в этот коментарий "Возникла ошибка " можно добавить переменную ?

OrderSend(Symbol(),OP_SELLSTOP,0.1,Ask-50*Point,3,Bid+150*Point,Bid-150*Point, "Возникла ошибка ", 0);


String Stroka;

doppeltes x;

.............

.............


Stroka=StringConcatenate("Ein Fehler ist aufgetreten", DoubleToStr(x, 0) );

OrderSend(Symbol(),OP_SELLSTOP,0.1,Ask-50*Point,3,Bid+150*Point,Bid-150*Point, Stroka, 0);

 
bercut0077:

Guten Tag Experten, in dem Indikator interessiere ich mich für den Wert, der durch den Expert Advisor

Spezielle Konstanten, die verwendet werden, um den Zustand von Parametern und Variablen anzugeben. Kann die folgenden Werte annehmen:

Konstante Wert Beschreibung
NULL 0 Zeigt den Zustand einer leeren Zeichenkette an
LEER -1 Zeigt den leeren Zustand des Parameters an
EMPTY_VALUE 0x7FFFFFFFF Standardwert, Zeiger auf einen leeren Wert. Verwendet in benutzerdefinierten Indikatoren
CLR_NONE 0xFFFFFFFFFF Zeigt keine Farbe an
WHOLE_ARRAY 0 Wird mit Array-Funktionen verwendet. Gibt an, dass alle Elemente eines Arrays verarbeitet werden müssen


0x7FFFFFFFF in Hexadezimal ist gleich 2147483647 in Dezimal.

D.h., zu einem bestimmten Zeitpunkt erscheint ein leerer Wert im Indikatorpuffer - das ist das, was Sie im Expert Advisor sehen. Sie können den "Leerwert" des Indikatorpuffers einstellen:

void SetIndexEmptyValue( int index, double value)

Legt den Leerwert für die Indikatorzeile fest. Leere Werte werden nicht gezeichnet oder im DataWindow angezeigt. Der leere Standardwert ist EMPTY_VALUE.
Parameter:
Index - Index - Indexnummer der Zeile. Muss zwischen 0 und 7 liegen.
Wert - Neuer Wert "leer".
 
peshihod:


D.h. die Öffnungszeit spielt keine Rolle, ob sie vor einer oder zwei Minuten geöffnet wurde?

Punkt 2 ist nicht klar. Das ist alles ein bisschen vage.

Die Öffnungszeit kann mit OrderOpenTime() ermittelt werden.

D.h. der Zeitpunkt des Öffnens spielt keine Rolle, wurde es vor einer oder zwei Minuten geöffnet?


Мгновенное открытие

1.Моментальное(Сиюсекундное +0.5 - 2 секунды) определение вновь открывшегося торгового(не отложеных ордеров) ордера(Ордера открытого вручную и открытого спомощью советника).Система идентефецируюет ордер из друх вариантов (Sell или Byu) .

Если система определила ордер который рание не был открыт . то идет продолжение под номером 2.

2. Выполняеться какая то задача (Например,если Sell: Alert("Открытый ордер на продажу"+y);),(Например,если byu: Alert("Открыт ордер на покупку"+w);), всего 1-н раз,именно для этого ордера .

После того как еще открылся один ордер(толи системой, толи вручную ), система вновь действует с пункта 1 по пункт 2 .

 
peshihod:

String Stroka;

doppeltes x;

.............

.............


Stroka=StringConcatenate("Ein Fehler ist aufgetreten", DoubleToStr(x, 0) );

OrderSend(Symbol(),OP_SELLSTOP,0.1,Ask-50*Point,3,Bid+150*Point,Bid-150*Point, Stroka, 0);


Nette Kombination. Ähm...
 
artmedia70:

Spezielle Konstanten, die verwendet werden, um den Zustand von Parametern und Variablen anzugeben. Kann die folgenden Werte annehmen:

Ja, es ist klar, aber es ist nicht klar, wie man den Indikator von diesen leeren Werten zu heilen, das ist, warum ich den Code veröffentlicht, ich brauche echte Hilfe, d.h. ich brauche den Indikator immer 1 oder -1 auszugeben.
 
bercut0077:
Ja, es ist klar, aber es ist nicht klar, wie man den Indikator dieser leeren Werte zu heilen, das ist, warum ich den Code veröffentlicht, ich brauche echte Hilfe, d.h. ich brauche, dass der Indikator würde immer Ausgabe 1 oder -1.
Ich habe ein Beispiel für eine Funktion gegeben, die den Wert eines leeren Wertes für eine Indikatorlinie festlegt. Man kann es auch anders machen. Wenn Sie nur zwei Werte benötigen (+1 und -1), dann prüfen Sie, wenn ein leerer Wert erscheint, den vergangenen Zustand (+1 oder -1) und geben ihn anstelle des leeren Wertes ein. Dann ist im Puffer immer entweder +1 oder -1.
Angenommen, es gibt einen Wert von +1. Es erscheint ein leerer Wert. Geben Sie stattdessen weiterhin den vorherigen Wert (+1) in den Puffer ein, sobald -1 erscheint, und geben Sie ihn dann in den Puffer ein.
Im Puffer befindet sich nun -1. Sobald ein leerer Wert erscheint, überprüfen Sie den vorherigen Wert (er ist jetzt -1) und tragen ihn in den Puffer ein.
Auf diese Weise haben Sie immer +1 oder -1 im Puffer
 
artmedia70:

Ich danke Ihnen. Eine weitere Aufgabe ist aufgetaucht...
 
semiromid:

1.Моментальное(Сиюсекундное +0.5 - 2 секунды) определение вновь открывшегося торгового(не отложеных ордеров) ордера(Ордера открытого вручную и открытого спомощью советника).Система идентефецируюет ордер из друх вариантов (Sell или Byu) .

Если система определила ордер который рание не был открыт . то идет продолжение под номером 2.

2. Выполняеться какая то задача (Например,если Sell: Alert("Открытый ордер на продажу"+y);),(Например,если byu: Alert("Открыт ордер на покупку"+w);), всего 1-н раз,именно для этого ордера .

После того как еще открылся один ордер(толи системой, толи вручную ), система вновь действует с пункта 1 по пункт 2 .


Ich verstehe, dass ein schwebender Auftrag und ein offener Auftrag unterschiedliche Aufträge sind. Und wenn der schwebende Auftrag geöffnet wird, dann wird die Aufgabe auf die ursprüngliche, auf den offenen Auftrag reduziert. Wenn ich es richtig verstehe, wird es sehr kompliziert.

Was sind die Aufgaben? Vielleicht lässt sich alles auf einfachere Weise erledigen?

 
Liebe Experten, helfen Sie uns, den Code zu ändern, wir müssen
Cur_Trend без пустой величины, тоесть если появляется пустота, то нужно заменить последним известным значением
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LightBlue
#property indicator_color2 Magenta

double CrossUp[];
double CrossDown[];
double Cur_Trend[];
int CurrentTrend = 0;
int starttime = 0;
extern int FasterEMA = 5;
extern int SlowerEMA = 8;

int init()
  {
   IndicatorBuffers(3); 
   SetIndexStyle(0, DRAW_ARROW, EMPTY);
   SetIndexArrow(0, 233);
   SetIndexBuffer(0, CrossUp);
   SetIndexStyle(1, DRAW_ARROW, EMPTY);
   SetIndexArrow(1, 234);
   SetIndexBuffer(1, CrossDown);
   SetIndexBuffer(2, Cur_Trend);
   starttime = TimeLocal(); 
   return(0);
  }

int deinit()
  {
   return(0);
  }

int start() { 
   int limit, i, counter, loop, ii;
   double fasterEMAnow, slowerEMAnow, fasterEMAprevious, slowerEMAprevious, fasterEMAafter, slowerEMAafter;
   double Range, AvgRange;
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   loop = 0;
   for(i = 0; i <= limit; i++) {
      counter=i;
      Range=0;
      AvgRange=0;
      for (counter=i ;counter<=i+9;counter++)
      {
         AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
      }
      Range=AvgRange/10;
      fasterEMAnow = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i);
      fasterEMAprevious = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i+1);
      fasterEMAafter = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);
      slowerEMAnow = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_OPEN, i);
      slowerEMAprevious = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_OPEN, i+1);
      slowerEMAafter = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_OPEN, i-1); 
      if ((fasterEMAnow > slowerEMAnow) && (fasterEMAprevious < slowerEMAprevious) && (fasterEMAafter > slowerEMAafter)) {
         CrossUp[i] = Low[i] - Range*0.5;
         if ((loop == 0) && (CurrentTrend != 1))  {
            CurrentTrend = 1;
            Cur_Trend[ii]= CurrentTrend;
            }
         if (loop == 0)  {
            loop = 1;
            }
      }
      else if ((fasterEMAnow < slowerEMAnow) && (fasterEMAprevious > slowerEMAprevious) && (fasterEMAafter < slowerEMAafter)) {
              CrossDown[i] = High[i] + Range*0.5;
           if ((loop == 0) && (CurrentTrend != -1))  {
              CurrentTrend = -1;
              Cur_Trend[ii]= CurrentTrend;
           }
           if (loop == 0)  {
              loop = 1;
          }
       }
   }
   return(0);
}
 

Liebe Experten!

Ich brauche Ihre Hilfe bei der folgenden Frage. Ich habe einen benutzerdefinierten Indikator, der eine zweifarbige Linie mit einer Farbe und dann eine andere Farbe zeichnet. Gibt es eine Möglichkeit, dem Expert Advisor beizubringen, welche Farbe die Linie im Moment hat?

Dateien: