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

 
Nochmals kopieren.

Sie müssen einen Teil des Codes des Handelsroboters so schreiben, dass er einmalig einen Handel tätigt, wenn die Handelsbedingungen erfüllt sind.
Zum Beispiel:
1) Wenn Linie_1 höher ist als Linie_2, wird ein Kaufgeschäft ausgeführt,
2) Das Geschäft wird zu SL oder TP abgeschlossen,
3) Wenn Linie_1 höher ist als Linie_2, wird ein Handel nicht ausgeführt, bis sich die Bedingungen ändern. .

Wenn sich die Bedingungen ändern, d.h. Linie_2 höher ist als Linie_1, wird ein Handel ausgeführt. Dann wird alles wiederholt.
1) Wenn Linie_2 höher ist als Linie_1, wird ein Kaufgeschäft ausgeführt,
2) Der Handel wird bei SL oder TP geschlossen,
3) Wenn Linie_2 höher ist als Linie_1, wird ein Handel nicht ausgeführt, bis sich die Bedingungen ändern. .

Und.
1) Wenn Linie_1 höher ist als Linie_2, wird ein Kaufgeschäft ausgeführt..,
2) Der Handel wird bei SL oder TP geschlossen,
3) Wenn Linie_1 über Linie_2 liegt, wird der Handel nicht ausgeführt, bis sich die Bedingungen ändern. .

usw.
 
Link_x:
Ich kopiere es noch einmal.

Sie müssen einen Teil des Codes Ihres Handelsroboters so schreiben, dass er ein Geschäft einmal durchführt, wenn die Handelsbedingungen erfüllt sind.
Zum Beispiel:
1) Wenn Linie_1 höher ist als Linie_2, wird ein Kaufgeschäft ausgeführt,
2) Das Geschäft wird zu SL oder TP abgeschlossen,
3) Wenn Linie_1 höher ist als Linie_2, wird ein Handel nicht ausgeführt, bis die Bedingungen geändert werden. .
...

usw.


(3) Der Absatz ist unklar. "...bis sich die Bedingungen ändern" - es wird nicht gesagt, um welche Bedingungen es sich handelt.

Müssen Sie nur einen Kaufauftrag eröffnen? Es ist auch nicht klar, ob mehrere Aufträge gleichzeitig auf dem Markt existieren können oder nur ein Auftrag.

 
fozi:

Hallo Camradics.

Wer kann den SP500 über MT4-5 handeln?


mmcis hat eine _SP500 mt4 Demo

Aber es heißt Handel: Nein.

Vielleicht ist es nur auf der Demo, ich weiß es nicht.

 
Link_x:
Ich kopiere es noch einmal.

Sie müssen einen Teil des Codes eines Handelsroboters schreiben, damit er einmal ein Geschäft abschließt, wenn die Handelsbedingungen erfüllt sind.
Zum Beispiel:
1) Wenn Linie_1 höher ist als Linie_2, dann wird ein Kaufgeschäft ausgeführt,
2) Das Geschäft wird zu SL oder TP abgeschlossen,
3) Wenn Linie_1 höher ist als Linie_2, wird ein Handel nicht ausgeführt, bis sich die Bedingungen ändern. .

Wenn sich die Bedingungen ändern, d.h. Linie_2 höher ist als Linie_1, wird ein Handel ausgeführt. Dann wird alles wiederholt.
1) Wenn Linie_2 höher ist als Linie_1, wird ein Kaufgeschäft ausgeführt,
2) Der Handel wird bei SL oder TP geschlossen,
3) Wenn Linie_2 höher ist als Linie_1, wird ein Handel nicht ausgeführt, bis sich die Bedingungen ändern. .

Und.
1) Wenn Linie_1 höher ist als Linie_2, wird ein Kaufgeschäft ausgeführt..,
2) Der Handel wird bei SL oder TP geschlossen,
3) Wenn Linie_1 höher ist als Linie_2, wird der Handel nicht ausgeführt, bis sich die Bedingungen ändern. .

usw.


Ich habe darüber nachgedacht, und ich glaube, ich verstehe es, aber ich möchte immer noch eine Bestätigung, ob ich es richtig verstanden habe.

Auf dem Markt gibt es immer nur einen Auftrag. Der Auftrag wird immer dann eröffnet, wenn sich der Zustand ändert und immer nur zum Kauf.

 
khorosh:

(3) Der Absatz ist unklar. "...bis sich die Bedingungen ändern" - es wird nicht gesagt, um welche Bedingungen es sich handelt.

Müssen Sie nur einen Kaufauftrag eröffnen? Es ist auch nicht klar, ob mehrere Aufträge gleichzeitig auf dem Markt existieren können oder nur ein Auftrag.

Sowohl kaufen als auch verkaufen.
Nur eine Bestellung.

....
 
Link_x:
Sowohl kaufen als auch verkaufen.
Nur eine Bestellung.

....
In Ihrem Auftrag steht kein Wort über den Verkauf, sondern nur über den Kauf.
 
khorosh:
In Ihrem Auftrag steht kein Wort über den Verkauf, sondern nur über den Kauf.


Mein Fehler. Ich werde es in Ordnung bringen. :)


1) Wenn Linie_1 höher ist als Linie_2, dann wird ein Kauf getätigt,
2) Der Handel wird bei SL oder TP geschlossen,
3) Wenn Linie_1 über Linie_2 liegt, wird ein Handel nicht ausgeführt, bis sich die Bedingungen ändern. .

Wenn sich die Bedingungen ändern, d.h. Linie_2 höher ist als Linie_1, wird ein Handel ausgeführt. Dann wird alles wiederholt.
1) Wenn Linie_2 höher ist als Linie_1, wird ein Verkaufsgeschäft ausgeführt,
2) Der Handel wird am SL oder TP geschlossen,
3) Wenn Linie_2 höher ist als Linie_1, wird ein Handel nicht ausgeführt, bis sich die Bedingungen ändern. .

Und.
1) Wenn Linie_1 höher ist als Linie_2, wird ein Kaufgeschäft ausgeführt..,
2) Der Handel wird bei SL oder TP geschlossen,
3) Wenn Linie_1 über Linie_2 liegt, wird ein Handel nicht ausgeführt, bis sich die Bedingungen ändern. .
 
Eine visuelle Erklärung:
Dateien:
 
Link_x:

Ich habe es vermasselt. Ich werde es in Ordnung bringen. :)


1) Wenn Linie_1 höher ist als Linie_2, wird ein Kaufgeschäft ausgeführt,
2) Der Handel wird bei SL oder TP geschlossen,
3) Wenn Linie_1 über Linie_2 liegt, wird ein Handel nicht ausgeführt, bis sich die Bedingungen ändern. .

Wenn sich die Bedingungen ändern, d.h. Linie_2 höher ist als Linie_1, wird ein Handel ausgeführt. Dann wird alles wiederholt.
1) Wenn Linie_2 höher ist als Linie_1, wird ein Verkaufsgeschäft ausgeführt,
2) Der Handel wird am SL oder TP geschlossen,
3) Wenn Linie_2 höher ist als Linie_1, wird ein Handel nicht ausgeführt, bis sich die Bedingungen ändern. .

Und.
1) Wenn Linie_1 höher ist als Linie_2, wird ein Kaufgeschäft ausgeführt..,
2) Der Handel wird bei SL oder TP geschlossen,
3) Wenn Linie_1 über Linie_2 liegt, wird ein Handel nicht ausgeführt, bis sich die Bedingungen ändern. .

int start()
  {
//----
   
   if(Lin1>Lin2)
     {
      if(!ExistPositions("0", -1, -1, 0))
        {
         if(OrdersHistoryTotal()<1 || GetTypeLastClosePos("0", -1)==OP_SELL)
           {
            OpenPosition("0",OP_BUY,NormalizeDouble(Ask-SL*Point,Digits),
                       NormalizeDouble(Ask+TP*Point,Digits), -1);
           }
        }                         
     }
   if(Lin1<Lin2)
     {
      if(!ExistPositions("0", -1, -1, 0))
        {
         if(OrdersHistoryTotal()<1 || GetTypeLastClosePos("0", -1)==OP_BUY)
           {
            OpenPosition("0",OP_SELL,NormalizeDouble(Bid+SL*Point,Digits),
                          NormalizeDouble(Bid-TP*Point,Digits), -1);
           }
        }                         
     }  
//----
   return(0);
  }
Чтобы код работал нужно ещё записать коды всех использованных функций KimIV вне тела функции start() и
определить все значения констант и переменных ошибки по которым будут выданы при компиляции ввиду 
того что здесь они не определены..

	          
 

Ein frohes neues Jahr für alle! Alles Gute, viel Glück, Liebe und natürlich riesige Gewinne für alle! =))


Wenn Sie ein Experte sind, überprüfen Sie bitte die Funktion auf Fehler. Der wichtigste Punkt dieser Funktion: Sie soll ein Lot berechnen, das erforderlich ist, damit die nächste offene Order ihre Verluste in einer bestimmten Anzahl von Punkten deckt, falls das Ordergitter geschlossen wird.

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)*OrderLots()/TP,2); // ТP это то к-во пунктов, за которое след. ордер должен закрыть убыток
           if (Lot>0) // т.е. нас интересуют только убыточные ордера
           {
             TotalLot=TotalLot+Lot;
           }
         }
           
       
         else if (otype == OP_SELL)
         {
           Lot = NormalizeDouble ((Ask-OrderOpenPrice())*OrderLots()/TP,2);
           if (Lot>0)// выбираем только убыточные
           {
             TotalLot=TotalLot+Lot;
           }
           
         }
       }
     }
   }
   return (TotalLot);
   
 }