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

 
fenix74:
evillive, versucht zu ersetzen, wie Sie gesagt haben, aber ich denke, auch dies erfordert ein wenig mehr Wissen, Kompilieren gibt "53 Fehler, 18 Warnung(en)", das Ergebnis ist beigefügt. evillive, kann ich Sie bitten, diese Ersetzungen vorzunehmen, wenn Sie Zeit haben.

Sie müssen nur aufmerksamer sein oder nicht zu faul sein, den Variablentyp in jeder Zeile anzugeben oder ein Komma statt eines Semikolons zu setzen. Und in Indikatoraufrufen müssen Variablen definiert werden, nicht nur von einer Taschenlampe.


Hier ist ein Beispiel, und dann - auf eigene Faust...

Die zweite Datei scheint jedoch in Ordnung zu sein, bis auf einen Punkt in einem Variablennamen. Keine Punkte in Variablennamen.

 
Vinin:
Nur vier Funktionen werden vom Server aufgerufen. Öffnen, Ändern und Schließen (Löschen) eines Auftrags
artmedia70:
Handelsfunktionen. Sie sind die Einzigen, die eine Anfrage an den Handelsserver senden und eine Antwort von ihm erhalten.

Ich danke Ihnen.

 
Roger:
Der Benutzer kann die Historie nur für die visuelle Wahrnehmung sortieren, die Positionsnummern in der Historie können nicht geändert werden.


Wie können Sie anhand der Indikatoren feststellen, ob eine Strategie rentabel oder unrentabel ist?
 
khorosh:

Und wenn Sie die Funktion zerlegen, sollten Sie die Kopfzeile der Funktion nicht abschneiden, denn dort befinden sich wichtige Informationen.

Gibt den Typ der zuletzt geöffneten Position oder -1 zurück - das heißt, wenn es keine geschlossenen Positionen gibt, ist der Wert beim Aufruf der Funktion gleich -1

sy - Name des Instruments (Währungspaar)

mn - magische Zahl. Wenn wir -1 einstellen, gibt die Funktion den Typ der letzten abgeschlossenen Bestellung zurück, egal welche magische Zahl verwendet wird

Das wissen Sie auch, außer dass es eine "magische Zahl" gibt.
Ich danke Ihnen für die nützlichen Hinweise.
Es ist nicht notwendig, die Beschreibung der Variablen zu kürzen.

artmedia70:

1. Lassen Sie uns auf den Sarkasmus verzichten, ok? Er hat Ihnen das Lernen leicht und bequem gemacht. Was hat das mit Genialität zu tun?
2. Argumentativ.
3. Ihren Kommentaren im Code nach zu urteilen, verstehen Sie überhaupt nichts.
4. Das kommt vor.

Zu Punkt 2: Hier ein Beispiel:

Es gibt weniger unnötige Dinge.

1 - Das war kein Sarkasmus! Das Geniale daran ist, dass es mir das Lernen angenehm und leicht gemacht hat.
2 - so viele Menschen, wie es Meinungen gibt. :)
3 - es ist immer noch verständlich. Ich habe nicht geklärt, welche variablen Ziele verfolgt werden, was zu dieser Meinung geführt hat.

Vielen Dank für die ausführliche Beschreibung der Funktion Strings Action, ich habe mich vergewissert, dass ich die vorgestellte Funktion verstanden habe.

Bitte beachten Sie, dass wir nun ein virtuelles Gespräch über vier Themen gleichzeitig geführt haben. Es ist sehr vorteilhaft, seine Antworten im Internet Punkt für Punkt darzulegen, aber manche Leute verstehen das als Beleidigung, sorry.

Übrigens, sprechen Sie mich mit "Sie" an, da mein Alter es nicht zulässt, mich mit "Sie" anzusprechen (eine Meinung, die sich im Zusammenhang mit dem Sozialkundeunterricht der neunten Klasse gebildet hat).
khorosh:

1 - Ihre Beispiele sind nicht korrekt. 2 - Wenn Sie eine Funktion aufrufen, die Parameter hat, müssen Sie die Werte dieser Parameter in Klammern angeben, getrennt durch Kommas. Sie sollten auch wissen, dass nicht allen Funktionen Werte zugewiesen werden. 3 - Wenn der Typ der Funktion ungültig ist, hat sie keine Bedeutung und ist dazu bestimmt, eine Aktion durchzuführen oder einige Variablen zu berechnen. Im letzteren Fall müssen Sie die Namen dieser Variablen kennen, um die Ergebnisse dieser Funktion verwenden zu können.

Entschuldigen Sie, die Antwort ist in Absätze unterteilt.
1 - meine Beispiele sind falsch - das ist eine Folge meiner Unwissenheit.
2 - Ich habe die Klammern völlig vergessen. Ich danke Ihnen. Sie erinnerten mich an sie.
3 - nichtig ? Ist es möglich, sie anstelle von bool zu verwenden, wenn man mit Aktionen (*, /, +, - ) rechnet?


artmedia70:

Der Compiler erzeugt in dieser Zeile einen Fehler, der besagt, dass die Variable nicht deklariert ist.

Die Mindestanforderung ist die folgende:


Ja, ja! Ich habe die Klammern vergessen, aber ich wurde daran erinnert, trotzdem danke!
 
Profitov:

Wie können Sie anhand der Indikatorwerte erkennen, ob die Strategie gewinnbringend oder verlustbringend ist?

Die Indikatoren verwenden für ihre Berechnungen die Schluss- und Eröffnungskurse sowie die Höchst- und Tiefstwerte der Balken.
Die Werte der Schluss- und Eröffnungskurse sowie die Höchst- und Tiefstwerte der Balken werden in der Historie gespeichert.
Dann erhalten die Indikatoren die Werte der Schluss- und Eröffnungskurse, der Höchst- und Tiefstwerte der Balken aus der Historie,
. Dementsprechend führt der Indikator Berechnungen aus der Historie durch.
kann man schlussfolgern, dass, wenn die Strategie auf Indikatorangaben basiert, man anhand der historischen Daten überprüfen kann, ob sie profitabel oder unprofitabel ist.

Vinin:

Sie sollten sich zunächst mit dem Konzept einer Funktion vertraut machen. Und dann können Sie sich damit befassen, was sie bewirken und wie man sie einsetzt.

Kenntnis der drei Auslegungen des Begriffs "Funktion".
 
Link_x:


3 - nichtig ? Ist es möglich, ihn anstelle von bool zu verwenden, wenn man nach Aktionen (*, /, +, - ) zählt?

Ich verstehe die Frage nicht. Die Dokumentation enthält ein Beispiel für eine Funktion vom Typ void, die den Fehlernamen ausgibt:

void errmesg(string s)
  {
   Print("error: "+s);
  }
 

Und vielleicht wird nach dem dritten Mal doch noch jemand auf mein Anliegen aufmerksam?

Ich habe eine CAM-Funktion geschrieben, aber der Tester gibt den Fehler 4051 aus, d.h. eine unmögliche Anzahl von Losen. Hat jemand eine Meinung dazu?

double FindRightLot (int otype) // функция поиска лота, необходимого для выхода из просадки после 
                               //закрытия сетки ордеров
{
  double Lot=0; double TotalLot=0;
  for (int i = OrdersTotal()-1; i>0; i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         {
           Lot = NormalizeDouble (((OrderOpenPrice()-Bid)*Point)*OrderLots()/TP,2); 
           if (Lot>0)
           {
              TotalLot= TotalLot+Lot;
           }
         }
           
       
         else if (otype == OP_SELL)
         {
           Lot = NormalizeDouble (((Ask-OrderOpenPrice())*Point)*OrderLots()/TP,2);
           if (Lot>0)
           {
            TotalLot= TotalLot+Lot;
           }
           
         }
       }
     }
   }
   return (TotalLot);
   
 }
 
Trader7777:

Und vielleicht wird nach dem dritten Mal doch noch jemand auf mein Anliegen aufmerksam?

Ich habe eine CAM-Funktion geschrieben, aber der Tester gibt den Fehler 4051 aus, d.h. eine unmögliche Anzahl von Losen. Hat jemand eine Meinung dazu?


Muss der Preis mit Punkten multipliziert werden?

(OrderOpenPrice()-Bid)*Point)
 
Trader7777:

Und vielleicht wird beim dritten Mal doch noch jemand auf mein Anliegen aufmerksam?

Ich habe die Funktion von SAM geschrieben, aber der Tester gibt Fehler 4051, d.h. unmögliche Anzahl von Losen. Hat jemand eine Meinung dazu???

 double Lot=0; double TotalLot=0;
if (Lot>0)
Beachten Sie den Wert der Variablen, die die Anzahl der Lose bei der Eröffnung einer Position festlegt.
Dieser Wert ist Null.
Es ist unmöglich, eine Position mit einem Volumen von Null für den Handel zu eröffnen.



wadynik:


Muss der Preis mit Punkten multipliziert werden?


Das ist auch möglich, die Hauptsache ist, dass der Code richtig geschrieben wird.
 
vadynik:


Muss der Preis mit den Punkten multipliziert werden?


Nehmen wir an, ich habe bei 1,50.000 gekauft und der Kurs ist auf 1,49950 gestiegen. Wenn Sie nicht mit den Punkten multiplizieren, ergibt sich 0,0005*0,1/100=0,0000005 - nicht genug.


Multipliziert man sie, so ist 50*0,1/100= 0,05 der richtige Wert.

Grund der Beschwerde: