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

 

Irgendetwas scheint einfach nicht zu funktionieren. BITTE HELFEN!

Die Idee ist folgende: Wenn die Kerze größer als ein bestimmter Wert ist, wird der weitere Handel verboten.

bool Trade=true;

//---------- start()

{.......

if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==1) CheckForOpen(); //--------open order if (no order is open) AND (candlestick is not bigger than)

if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==-1) Trade=false; //--------- setzt Tradeauf false, sofern (keine offenen Aufträge) UND (der Candlestick ist größer als)

......}

//------- Trade wird in der Funktion CheckForOpen() verwendet.

void CheckForOpen() //------------------- Bedingungen prüfen und Auftrag öffnen

{int res;

if( Handel && A()==-1 && B()==-1) //------- offene Bedingungen prüfen

{ res=OrderSend(Symbol(),OP_SELL,Lot,Bid,2,Ask+SL*Point,Bid-TP*Point,"",MAGICMA,0,Red); //--------- wenn die Bedingung erfüllt ist, wird die Order eröffnet

trade=false; } //--------Trade wird ein Handelsverbotswert zugewiesen. Und hier funktioniert es. Wenn der Auftrag beim Take-Order geschlossen wird, wartet er auf die neuen definitiven Bedingungen, obwohl die alten noch in Kraft sind (vorher öffnete der Advisor kontinuierlich Aufträge).

.........}

//-------------------------- Kerzenhöhe prüfen

int CheckVolume()

{ double volume=High[1]-Low[1]; //-------misst die Höhe des Kerzenständers

if (Volumen <= CandleVolume*Point) return (1); //---------- wenn die Kerze niedriger ist als

if (Volumen > CandleVolume*Point) return (-1);//------------wenn die Kerze größer ist als

return(0);}

Ich habe es auch mit der Version versucht, aber es hat nicht funktioniert:

void start()

{ .....

if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==1) CheckForOpen();

.....}

.....

int CheckVolume()

{ double volume=High[1]-Low[1]; //-------Messung der Kerzenhöhe

if (Volumen <= CandleVolume*Point) return (1); //---------- wenn die Kerze niedriger ist als

if (Volumen > CandleVolume*Point) {Trade=false; return (-1);}//------------wenn die Kerze höher ist als

return(0);}

 
dzhini:

Das wird auf keinen Fall funktionieren.


Vielleicht sollten wir zuerst einen Indikator erstellen
 
Vinin:

Vielleicht sollten wir zuerst einen Indikator erstellen
und es gibt keine Möglichkeit, es ohne sie zu tun?
 

Helfen Sie mir hier! Wie kann ich erreichen, dass ein Druck nur einmal erscheint, aber bei jedem Häkchen ein Druck entfällt?



while(OrdersTotal() != 0 && OrderSelect(index, SELECT_BY_POS, MODE_TRADES)){
    if(OrderType() == OP_BUY)
     {
       Print ("-------   ",OrderSymbol()," "," BUY ",OrderLots()," trade was opened at ", OrderOpenPrice(),"; Stop loss:", OrderStopLoss(),
          "; Take profit:", OrderTakeProfit(), "; Ticket:", OrderTicket(),"; Open time:", OrderOpenTime());
                       return(0);
                }
    if(OrderType() == OP_SELL)
      {
       Print ("-------   ",OrderSymbol()," "," SELL ",OrderLots()," trade was opened at ", OrderOpenPrice(),"; Stop loss:", OrderStopLoss(),
          "; Take profit:", OrderTakeProfit(), "; Ticket:", OrderTicket(),"; Open time:", OrderOpenTime());
                      
       }
index++;
 
itum:

Helfen Sie mir hier! Wie kann ich erreichen, dass ein Druck nur einmal erscheint, aber bei jedem Ticken ein Druckabfall auftritt?


Geben Sie diesen Druck zum Zeitpunkt der Auftragseröffnung aus.
 
sergeev:
diesen Druck ausgeben, wenn die Bestellung geöffnet wird.


Ich muss Informationen über Aufträge ausgeben, die bereits manuell oder durch einen anderen EA geöffnet wurden.

 
itum:


Ich muss Informationen über bestehende Aufträge anzeigen, die bereits manuell oder durch einen anderen EA geöffnet wurden.

Zeigen Sie sie dann in einem Kommentar auf dem Bildschirm an. Kommentar
 

Was ist dieser Fehler? Wenn ich eine Test-Mail vom Terminal aus versende, erhalte ich folgende Fehlermeldung

- 2010.12.28 18:23:55 Mail: 530 5.7.0 Muss zuerst einen STARTTLS-Befehl eingeben. y1sm3265289fak.15

 
dzhini:
und es gibt keine Möglichkeit, es ohne sie zu tun?

Natürlich können Sie das, aber der Indikator macht es einfach, den Algorithmus visuell zu überprüfen
 
itum:


Ich muss Informationen über bestehende Aufträge anzeigen, die bereits manuell oder durch einen anderen EA geöffnet wurden.


Alternativ können wir auch einen Zähler für die Drucke erstellen. Wir deklarieren eine Integer-Variable. Dann prüfen wir, ob es keine Aufträge gibt, und setzen den Wert auf Null. Dann prüfen wir, ob die Variable gleich Null ist und es Aufträge auf dem Markt gibt, dann drucken wir die Auftragsdaten und erhöhen diese Variable um 1. Sobald die Aufträge abgeschlossen sind, wird die Variable wieder auf Null gesetzt. Das bedeutet, dass der Code darauf wartet, dass mindestens ein Auftrag erscheint und Informationen darüber im Protokoll angezeigt werden.