EA-Wettbewerb auf echten Konten - Seite 17

 

Jetzt habe ich mir den Kontoverlauf angesehen und herausgefunden. Dass die Funktion des Schließens von Positionen nach Erreichen des angegebenen Gewinns im realen Konto praktisch nicht funktioniert! Obwohl es im Testgerät ordnungsgemäß funktioniert.

Das heißt, in den meisten Fällen werden gewinnbringende Positionen bei einem Ticrofit von 15 Pips - dem minimal zulässigen Stop-Level - geschlossen.

Aber dieser Pipswise Expert Advisor wurde optimiert, um +11 auf EURCHF und +8 auf EURGBP zu schließen!

Ein solcher Unterschied (insbesondere 15 und 8) ist sehr empfindlich für einen Scalping Expert Advisor!

Ich weiß noch nicht, warum es so passiert ist.... Ich habe eine fertige Funktion von einem anderen (fremden) Entwurf übernommen.

Ich habe sie gekämmt und verbessert (für Eurofrank sieht die Funktion so aus):

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
//Функция дает команду на  закрытие  позиции при достижении профита , 
//задаваемого  параметром CloseProfit. Для корректной работы 
//этой функции необходимо наличие вспомогателной функции del(int ticket)
void CloseProfit()                                                    {
    if (OrdersTotal() > 0)                                            {
      for (int q = OrdersTotal() + 1; q >= 0; q--)                    {
         if (OrderSelect( q, SELECT_BY_POS, MODE_TRADES))              {
            if (OrderSymbol() == "EURCHF")                            {
               if (OrderMagicNumber() == Magic)                       {
                  if (OrderCloseTime() == 0)                          {
                     if (OrderType() == OP_BUY)                       {
                        RefreshRates();
                        if (Bid > OrderOpenPrice() + CloseProfit* Point) {
                           Print("ClosePozishion"); del(OrderTicket());
                        } }
                     if (OrderType() == OP_SELL)                         {
                        RefreshRates();
                        if (Ask < OrderOpenPrice() - CloseProfit* Point) {
                           Print("ClosePozishion"); del(OrderTicket());
                        }}}}}}}}}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
//Функция реализует закрытие позиций по текущей цене
void del(int ticket) {
   int Error;
   double _bid;
   for (int w = 0; w < 1; w++) {
      GetLastError();
      OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES);
      if (OrderType() == OP_BUY) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_BID);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }
      if (OrderType() == OP_SELL) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_ASK);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }
      if ( Error == 0) {  PlaySound("expert.wav");  return; }//при  нормальном закрытии  
      //  позиции, - даем сигнал "expert.wav"
      if ( Error != 0) {// если произошла ошибка закрытия - сигнал и печать .
         PlaySound("timeout.wav");
         Print("Error for Close Funtion =", Error);
      }
      while (!IsTradeAllowed()) Sleep(5000);//если торг. поток занят, - ждем 5 сек
      if ( Error == 146) while (IsTradeContextBusy()) Sleep(10000);
      //если нет соединения с сервером, ждем - 10 сек
   }
}

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
 

Gibt er Fehler aus?

dieser Entwurf kann vereinfacht werden

      if (OrderType() == OP_BUY) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_BID);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }
      if (OrderType() == OP_SELL) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_ASK);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }

wie diese

RefreshRates();
if (!OrderClose( ticket, OrderLots(),OrderClosePrice(), 3, Green)) Error = GetLastError();
 
keekkenen писал(а) >>

Gibt er Fehler aus?

dieser Entwurf kann vereinfacht werden

wie diese.

Zu Fehlern kann ich nichts sagen. Ich habe nur das Investitionspasswort von diesem Konto.

Aber auf meinem realen Konto bei diesem Maklerunternehmen passieren sehr oft Fehler. Ich erhalte ein piepsendes Signal bei Fehlern im Code, und ich höre dieses Signal ziemlich oft! Zunächst gibt es ein Einschaltfehlersignal. Und oft gibt es nach ein oder zwei weiteren Minuten ein Signal zur Gewinnmitnahme. Mit anderen Worten, die Schließungsfunktion funktioniert nicht richtig und der Kurs bricht über das eingestellte Schließungsniveau hinaus zum Take-Profit-Niveau durch!

Was die Vereinfachung des Entwurfs betrifft, so kann er zwar vereinfacht werden, doch ist es für mich klarer, wenn alles detailliert beschrieben ist.

 

Sie schrieben: Dieser Pips Expert Advisor ist optimiert, um +11 auf EURCHF und +8 auf EURGBP zu schließen!

Alles ist einfach zu erklären: Sie eröffnen eine Long-Position und warten auf die Bedingung, die legalen 15 Pips auszulösen

if (OrderType() == OP_BUY){
	RefreshRates();
    if (Bid > OrderOpenPrice() + CloseProfit* Point) {
		Print("ClosePozishion"); del(OrderTicket());
    }
}

Man kauft zum Bid und schließt zum Bid, verliert also den Spread (4 Pips), also muss man im Ifa Ask statt Bid einstellen,

um Ihre 15 Pips zu bekommen...


und auch, die oben ist etwas unklar... wenn takeprofit ist 15 Pips, warum früher schließen?

 
keekkenen писал(а) >>

Sie schrieben: Dieser Pips Expert Advisor ist optimiert, um +11 auf EURCHF und +8 auf EURGBP zu schließen!

Alles ist einfach zu erklären: Sie eröffnen eine Long-Position und warten auf die Bedingung, die legalen 15 Pips auszulösen

Man kauft zum Bid und schließt zum Bid, verliert also den Spread (4 Pips), also muss man im Ifa Ask statt Bid einstellen,

um Ihre 15 Pips zu bekommen...

Wenn takeprofit 15 pips ist, warum sollte ich früher schließen?

Nicht ganz. Ich möchte die Position nach Erreichen eines Gewinns von +11 Pips schließen. Während der Take Profit bei +15 liegt (weil es unmöglich ist, ihn näher zu platzieren - das Stopp-Niveau in DC ist zulässig = 15).

Warum, glauben Sie, habe ich auf Gebot gekauft? Ich habe auf asc gekauft.

Aber Long-Positionen werden durch Verkauf geschlossen? - Stimmt's?

und deshalb ist es auf die E-Gebühr geboten...

Aber selbst wenn ich die Größe der Streuung in Ihrer Meinung verliere, erklärt diese Tatsache nicht die Divergenz der Ergebnisse zwischen dem echten und dem Tester!

Fast 500$ Divergenz zum Schlechteren mit Lot =0.1 in 10 Tagen mit 200 Trades.

 
leonid553 >> :

Aber selbst wenn ich Ihrer Meinung nach die Größe des Spreads verliere, erklärt diese Tatsache nicht den Unterschied zwischen den Ergebnissen des echten und des Testgeräts!

>> Aha. Es gibt auch die Freeze-Stufe, vielleicht ist das das Problem.
 
TheXpert писал(а) >>

Nahezu ein Drittel der Trades fehlt in der Realität, was ein entgangener Gewinn sein kann. Oder vielleicht fehlt etwas. Sagen Sie mir Bescheid und wir finden eine Lösung.

Ich habe die Anzahl der Angebote sortiert. Jetzt habe ich den Expert Advisor im Tester mit aktivierter Option der Requotes-Modellierung laufen lassen. Die Anzahl der Deals im Tester und im realen Konto war fast gleich (innerhalb vernünftiger Grenzen).

D.h., Requotes sind daran schuld. Sie haben die Anzahl der Geschäfte stark reduziert, und viele rentable Geschäfte müssen auf dem Realkonto gestrichen worden sein.

Dennoch erklärt dies nicht alle Unterschiede zwischen den Test- und den tatsächlichen Ergebnissen.

//-------------------------------------------------------------------

Mein Expert Advisor scheint sich also "hochgearbeitet" zu haben und einer der führenden zu werden...

http://acompetition.love-craft.ru/?q=ru

 
TheXpert писал(а) >>
Es gibt auch eine Freeze-Stufe, vielleicht liegt das Problem darin.

Wenn ich das richtig verstanden habe, beinhaltet dieses Konzept eine Begrenzung der Anzahl der gleichzeitig offenen Positionen und eine Begrenzung der Losgröße.

Ich glaube nicht, dass dieser Faktor relevant ist.

Gemäß dem Algorithmus des Expert Advisors kann für ein Paar nicht mehr als eine Position gleichzeitig auf dem Markt sein.

Das Los ist vorläufig festgelegt. (0.1)

 
leonid553 >> :

Wenn ich es richtig verstanden habe, beinhaltet dieses Konzept eine Begrenzung der Anzahl der offenen Positionen und eine Begrenzung der Losgröße.

Nein - es handelt sich um eine niedrigere Stufe, über die hinaus Sie Aufträge sowie Takes und Lots nicht ändern können.

 
Ich danke Ihnen für die Klarstellung. Ich werde die DC-Website besuchen, um die Angelegenheit zu klären.
Grund der Beschwerde: