Diskussion zum Artikel "Universeller Expert Advisor: Pending Orders und Hedging Support (Part 5)" - Seite 3

 
Сергей Криушин:
Es funktioniert nicht - diese Zeilen sind nicht in Impulse selbst enthalten....
Den Compiler-Meldungen zufolge sind sie zwar in Impulse enthalten, können aber nicht aufgerufen werden, weil die Funktionen Ask, Bid usw. in Ihrer Version von CStrategy nicht definiert sind.
 
Vasiliy Sokolov:
Den Compiler-Meldungen zufolge sind sie in Impulse enthalten, aber ihr Aufruf ist nicht verfügbar, weil die Funktionen Ask, Bid usw. in Ihrer Version von CStrategy nicht definiert sind.
Wie kann man sie dort definieren... die Version muss meine Version sein... aus Ihrer Handelsstrategie einfügen... Ask, Bid, etc. sind für alle gängigen die gleichen...
 
Сергей Криушин:
Wie definieren Sie sie dort... die Version muss meine sein... aus meiner Handelsstrategie einfügen... sie sind Ask, Bid, es scheint für alle gleich zu sein...
Am Ende des Artikels ist die Datei strategyarticle_20.04.16.zip angehängt. Laden Sie sie herunter, entpacken Sie sie und ersetzen Sie alle vorherigen CStrategy-Dateien durch diese neuen.
 
Сергей Криушин:
Es gibt CStrategyList Manager; aber die Klasse Impuls ist nicht vorhanden... vielleicht ist das der Grund.
Warum nicht? MQL5\Include\Strategie\Beispiele\Impulse.mqh
 
Vasiliy Sokolov:
Wie nicht? MQL5/Include/Strategy/Samples/Impulse.mqh.
Ja, es hat gut funktioniert, vielen Dank... das andere Konto hat gut funktioniert.... Ich schätze, ich hätte das Terminal neu starten sollen... Ich weiß nicht, alles wurde kompiliert, aber die Eule blieb stecken... also sorry... so ist das immer irgendwo... und suche seit einem halben Tag...3 mal heruntergeladen und alles überprüft...)))))
 
Wie würde man aus Stop Ones Limit Ones machen, da es scheint, dass mehr nach Limit Ones fragen...und die Entfernung ändern..... und wie kann man die Menge auf 0,01 reduzieren.... so viele Dinge, die ich nicht finden kann...))))
 
Сергей Криушин:
Wie würde man aus Stop Ones Limit Ones machen, da es scheint, dass mehr nach Limit Ones fragen...und die Entfernung ändern..... und wie kann man die Menge auf 0,01 reduzieren.... so viele Dinge, dass es unmöglich ist, etwas zu finden...))))
MM.SetLotFixed(0.01);
if(buy_stop_total == 0 && task == ORDER_TASK_MODIFY)
   Trade.BuyLimit(MM.GetLotFixed(), target, ExpertSymbol(), 0, 0, NULL);
Wie Sie sehen können, nichts Kompliziertes. Den Wert des Ziels müssen Sie selbst berechnen.
 
Vasiliy Sokolov:
Wie Sie sehen können, ist das nichts Kompliziertes. Sie müssen den Zielwert selbst berechnen.

Ich habe es von Grund auf so versucht - es funktioniert nicht - die Stopps gehen so weiter....

//+------------------------------------------------------------------+
void CImpulse::InitSell(const MarketEvent &event)
{
   if(!IsTrackEvents(event))return;                      
   if(positions.open_sell > 0) return;                    
   int sell_limit_total = 0;
   ENUM_ORDER_TASK task;
   double target = Ask() - Ask()*(m_percent/100.0);
   if(target < Moving.OutValue(0))                    // Der den Auftrag auslösende Preis muss über dem gleitenden Durchschnitt liegen
      task = ORDER_TASK_DELETE;
   else
      task = ORDER_TASK_MODIFY;
   for(int i = PendingOrders.Total()-1; i >= 0; i--)
   {
      CPendingOrder* Order = PendingOrders.GetOrder(i);
      if(Order == NULL || !Order.IsMain(ExpertSymbol(), ExpertMagic()))
         continue;
      if(Order.Type() == ORDER_TYPE_SELL_LIMIT)
      {
         if(task == ORDER_TASK_MODIFY)
         {
            sell_limit_total++;
            Order.Modify(target);
         }
         else
            Order.Delete();
      }
   }
   if(sell_limit_total == 0 && task == ORDER_TASK_MODIFY)
      Trade.SellLimit(MM.GetLotFixed(), target, ExpertSymbol(), 0, 0, NULL);
}
//+------------------------------------------------------------------+
//| Arbeiten mit SellStop schwebenden Aufträgen zur Eröffnung von Leerverkäufen |
//| Positionen|
//+------------------------------------------------------------------+
void CImpulse::InitBuy(const MarketEvent &event)
{
   if(!IsTrackEvents(event))return;                      
   if(positions.open_buy > 0) return;                    
   int buy_limit_total = 0;
   ENUM_ORDER_TASK task;
   double target = Bid() + Bid()*(m_percent/100.0);
   if(target > Moving.OutValue(0))                    // Der den Auftrag auslösende Preis muss über dem gleitenden Durchschnitt liegen
      task = ORDER_TASK_DELETE;
   else
      task = ORDER_TASK_MODIFY;
   for(int i = PendingOrders.Total()-1; i >= 0; i--)
   {
      CPendingOrder* Order = PendingOrders.GetOrder(i);
      if(Order == NULL || !Order.IsMain(ExpertSymbol(), ExpertMagic()))
         continue;
      if(Order.Type() == ORDER_TYPE_BUY_LIMIT)
      {
         if(task == ORDER_TASK_MODIFY)
         {
            buy_limit_total++;
            Order.Modify(target);
         }
         else
            Order.Delete();
      }
   }
   if(buy_limit_total == 0 && task == ORDER_TASK_MODIFY)
      Trade.BuyLimit(MM.GetLotFixed(), target, ExpertSymbol(), 0, 0, NULL);
}
 
Сергей Криушин:

Ich habe es so versucht - es funktioniert nicht - die Haltestellen laufen immer noch so.....

Lass mich nachsehen...
 
Vasiliy Sokolov:
Ich werde es jetzt überprüfen...

Ich habe SL und TP Levels und Trawl zur Eule hinzugefügt - es zeigt sich perfekt auf der Metaquotes Demo...beim Umschalten auf Real wieder etwas nicht sehen - es gibt Fehler - die Hauptsache ist, dass ich alles sauber kopiert habe, die ganze Bibliothek - und immer noch Fehler... was ist wieder falsch....eine große Bitte - ist es möglich, irgendwie in einem EA mit Kommentaren zusammenzufassen...sozusagen, für ein klares Verständnis der Essenz von allem Beschriebenen...Mit großem Respekt vor deiner tollen Arbeit, die du geleistet hast...vielen Dank...ich würde auch gerne wissen - geht es nur mir so mit solchen Unverständnissen oder testet noch jemand.... und ohne Fehler...

'Trade.mqh'     Trade.mqh       1       1
'Object.mqh'    Object.mqh      1       1
'StdLibErr.mqh' StdLibErr.mqh   1       1
'SymbolInfo.mqh'        SymbolInfo.mqh  1       
'OrderInfo.mqh' OrderInfo.mqh   1       1
'HistoryOrderInfo.mqh'  HistoryOrderInfo.mqh    1       1
'PositionInfo.mqh'      PositionInfo.mqh        1       1
'DealInfo.mqh'  DealInfo.mqh    1       1
'ENUM_ACCOUNT_MARGIN_MODE' - declaration without type   Trade.mqh       36      4
'POSITION_TICKET' - undeclared identifier       PositionInfo.mqh        84      37
'PositionGetInteger' - no one of the overloads can be applied to the function call      PositionInfo.mqh        84      18
'ENUM_ACCOUNT_MARGIN_MODE' - undeclared identifier      PositionInfo.mqh        259     4
'margin_mode' - undeclared identifier   PositionInfo.mqh        259     29
'margin_mode' - some operator expected  PositionInfo.mqh        259     29
'ACCOUNT_MARGIN_MODE' - undeclared identifier   PositionInfo.mqh        259     86
'ACCOUNT_MARGIN_MODE' - cannot convert enum     PositionInfo.mqh        259     86
'AccountInfoInteger' - some operator expected   PositionInfo.mqh        259     67
ACCOUNT_MARGIN_MODE_RETAIL_HEDG...'. - undeclared identifier      PositionInfo.mqh        264     20
'PositionSelectByTicket' - function not defined PositionInfo.mqh        325     11
'ENUM_ACCOUNT_MARGIN_MODE' - undeclared identifier      PositionInfo.mqh        332     4
'margin_mode' - undeclared identifier   PositionInfo.mqh        332     29
'margin_mode' - some operator expected  PositionInfo.mqh        332     29
'ACCOUNT_MARGIN_MODE' - undeclared identifier   PositionInfo.mqh        332     86
'ACCOUNT_MARGIN_MODE' - cannot convert enum     PositionInfo.mqh        332     86
'AccountInfoInteger' - some operator expected   PositionInfo.mqh        332     67
ACCOUNT_MARGIN_MODE_RETAIL_HEDG...'. - undeclared identifier      PositionInfo.mqh        334     20
'PositionGetTicket' - function not defined      PositionInfo.mqh        336     20
'position' - struct member undefined    Trade.mqh       196     12
'position' - struct member undefined    Trade.mqh       196     35
'position_by' - struct member undefined Trade.mqh       197     12
'position_by' - struct member undefined Trade.mqh       197     35
'position' - struct member undefined    Trade.mqh       50      85
'position_by' - struct member undefined Trade.mqh       51      85
'm_margin_mode' - undeclared identifier Trade.mqh       94      44
'ENUM_ACCOUNT_MARGIN_MODE' - undeclared identifier      Trade.mqh       94      59
'ACCOUNT_MARGIN_MODE' - undeclared identifier   Trade.mqh       94      103
'ACCOUNT_MARGIN_MODE' - cannot convert enum     Trade.mqh       94      103
'AccountInfoInteger' - some operator expected   Trade.mqh       94      84
'position' - struct member undefined    Trade.mqh       354     14
'POSITION_TICKET' - undeclared identifier       Trade.mqh       354     42
'PositionGetInteger' - no one of the overloads can be applied to the function call      Trade.mqh       354     23
'PositionSelectByTicket' - function not defined Trade.mqh       367     8
'position' - struct member undefined    Trade.mqh       373     14
possible loss of data due to type conversion    Trade.mqh       373     22
'position' - struct member undefined    Trade.mqh       427     20
'POSITION_TICKET' - undeclared identifier       Trade.mqh       427     48
'PositionGetInteger' - no one of the overloads can be applied to the function call      Trade.mqh       427     29
'PositionSelectByTicket' - function not defined Trade.mqh       472     8
'position' - struct member undefined    Trade.mqh       492     14
possible loss of data due to type conversion    Trade.mqh       492     23
'PositionSelectByTicket' - function not defined Trade.mqh       513     8
'PositionSelectByTicket' - function not defined Trade.mqh       517     8
'TRADE_ACTION_CLOSE_BY' - undeclared identifier Trade.mqh       529     26