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

 

Hallo. Können Sie mir bitte sagen, ob es einen EA gibt, der Ein- und Ausstiegspunkte auf dem Diagramm markiert, wie im Strategietester?

 

Und manuell - was ist daran falsch? Ziehen Sie Trades aus der Account History mit der Maus in den Chart und sie werden dort angezeigt!

Oder verwenden Sie das Skript - http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=32

 
TheXpert >> :

ShellExecute, Befehl "open", z.B.


Dankeschön
 
rid >> :

Sie sollte an der Außenseite angebracht werden. Nicht innerhalb einer Funktion, sondern als separate, unabhängige Funktion.

Das kann man so machen:


Ich bin nicht sicher, ob der EA unter diesen Bedingungen funktionieren wird. Denn die allererste Stelle wird sich nicht öffnen können...

Die Funktion isCloseLastPosByTake() sollte aus einer Kauf- oder Verkaufsbedingung entfernt werden.

Dann funktioniert es.

den Code eines EAs mit Korrekturen gemäß der Empfehlung von rid nur den Start

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
    // Узнаем уровень стопов и спрэд
    int Spread = MarketInfo(Symbol(), MODE_SPREAD);
    int StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);

    // Рассчитываем значения средних на 0-ом и 1-ом барах
    double MAF_0 = iMA(NULL, 0, MAFP, 0, 1, 1, 0);
    double MAF_1 = iMA(NULL, 0, MAFP, 0, 1, 1, 1);
    double MAS_0 = iMA(NULL, 0, MASP, 0, 1, 1, 0);
    double MAS_1 = iMA(NULL, 0, MASP, 0, 1, 1, 1);
    
   // открытие позиции Buy покупка
    if( MAF_1 < MAS_1 && MAF_0 > MAS_0)                         {
    if( isCloseLastPosByTake( NULL, OP_SELL, MagicNumber) ==true) {
     if( CheckOrders(OP_SELL))                                      {
       if( StopLoss <= StopLevel+ Spread)
         double SL = 0;        else         SL = Ask - StopLoss*Point;
       if( TakeProfit <= StopLevel- Spread)
         double TP = 0;        else         TP = Ask + TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 5, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
                }
               }
              }
//-------------------Конец покупки -----------------------
    
  //  ----- Открытие позиции Sell продажа------------  
    if( MAF_1 > MAS_1 && MAF_0 < MAS_0)                         {
    if( CheckOrders(OP_BUY))                                     {
      if( StopLoss <= StopLevel+ Spread)
         SL = 0;        else         SL = Bid + StopLoss*Point;
       if( TakeProfit <= StopLevel- Spread)
         TP = 0;        else         TP = Bid - TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 5, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
                 }
                }
               }
      //---конец блока продажи ------------------------------
     
//----
   return(0);
  }//+----------КОНЕЦ ФУНКЦИИ СТАРТ -------------------+

//ЖЖЖЖЖЖЖ Другие вызываемые пользовательские функции ЖЖЖЖЖЖ
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия           |
//|  последней позиции по тейку.                                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, otp;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++) {
    if (OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()== sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if ( op<0 || OrderType()== op) {
            if ( mn<0 || OrderMagicNumber()== mn) {
              if ( t<OrderCloseTime()) {
                t=OrderCloseTime();
                j= i;
              }} }}}}}

  if (OrderSelect( j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo( sy, MODE_DIGITS);
    if ( dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    otp=NormalizeDouble(OrderTakeProfit(), dg);
    if ( ocp== otp) return( True);
  }
  return( False);
}
 

Beim Kompilieren trat ein Fehler auf.

2;73;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;103:3;'}' - unbalanced parentheses

dieser Ort ist gekennzeichnet * helfen Sie den guten Menschen.....

   return(0);
 * }//+----------КОНЕЦ ФУНКЦИИ СТАРТ -------------------+
 
igrok2008 писал(а) >>

Beim Kompilieren trat ein Fehler auf.

dieser Ort ist gekennzeichnet * helfen Sie den guten Menschen.....

Die Anzahl der geschweiften Klammern ist bei der Startfunktion unterschiedlich

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start() {
    // Узнаем уровень стопов и спрэд
    int Spread = MarketInfo(Symbol(), MODE_SPREAD);
    int StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);

    // Рассчитываем значения средних на 0-ом и 1-ом барах
    double MAF_0 = iMA(NULL, 0, MAFP, 0, 1, 1, 0);
    double MAF_1 = iMA(NULL, 0, MAFP, 0, 1, 1, 1);
    double MAS_0 = iMA(NULL, 0, MASP, 0, 1, 1, 0);
    double MAS_1 = iMA(NULL, 0, MASP, 0, 1, 1, 1);
    
   // открытие позиции Buy покупка
    if( MAF_1 < MAS_1 && MAF_0 > MAS_0)                         {
        if( isCloseLastPosByTake( NULL, OP_SELL, MagicNumber) ==true) {
            if( CheckOrders(OP_SELL))                                      {
                if( StopLoss <= StopLevel+ Spread)   double SL = 0;        else         SL = Ask - StopLoss*Point;
                if( TakeProfit <= StopLevel- Spread) double TP = 0;        else         TP = Ask + TakeProfit*Point;
                if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 5, SL, TP, NULL, MagicNumber))
                    Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
            }
        }
    }
    //-------------------Конец покупки -----------------------
    
    //  ----- Открытие позиции Sell продажа------------  
    if( MAF_1 > MAS_1 && MAF_0 < MAS_0)                         {
        if( isCloseLastPosByTake( NULL, OP_BUY, MagicNumber) ==true) {
            if( CheckOrders(OP_BUY))                                     {
               if( StopLoss <= StopLevel+ Spread)             SL = 0;        else         SL = Bid + StopLoss*Point;
               if( TakeProfit <= StopLevel- Spread)           TP = 0;        else         TP = Bid - TakeProfit*Point;
               if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 5, SL, TP, NULL, MagicNumber))
                   Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
            }
        }
    }
    //---конец блока продажи ------------------------------
    
    return(0);
}//+----------КОНЕЦ ФУНКЦИИ СТАРТ -------------------+
So etwas muss passiert sein. Nicht auf die Logik eingegangen
 
igrok2008 >> :

hier ist der Code von Expert Advisor mit Korrekturen auf Empfehlung von rid


Entfernen Sie die zusätzliche geschweifte Klammer in der Salesbox. Ich habe Ihnen gesagt, dass die Anzahl der öffnenden Klammern gleich der Anzahl der schließenden Klammern sein muss. Und Sie haben zwei Klammern offen und drei geschlossen!

Und natürlich wird es einen Kompilierungsfehler geben.

 
rid >> :

Entfernen Sie die zusätzliche geschweifte Klammer in der Salesbox. Ich habe Ihnen gesagt, dass die Anzahl der öffnenden Klammern gleich der Anzahl der schließenden Klammern sein muss. Aber Sie haben zwei Klammern offen und drei geschlossen!

Und natürlich wird es einen Kompilierungsfehler geben.

Und die öffnenden Klammern sind was????


aaaaaaaaaaahhhh, ich hab's, es ist {.........-!!!!!!!!!!!!!!} :-)))))))

Ich teste........Wenn es etwas gibt, urteilen Sie nicht, ich werde versuchen, Fragen zu stellen.

 
igrok2008 писал(а) >>

Und die öffnenden Klammern sind was????

aaaaaaaaaaaaaaund es ist {.........-!!!!!!!!!!!!!! :-)))))))

Ich werde Tests durchführen......... Wenn ich etwas nicht verstehe, werde ich Fragen stellen.

Ich dachte, ich hätte eine Revision vorgenommen.

 

Eine solche Lösung wird nicht funktionieren. Es wird nicht in der Lage sein, den allerersten Handel zu eröffnen. Denn die Bedingung für die Eröffnung des allerersten Trades in Ihrer Variante ist die Schließung aller vorherigen Trades bei Take oder Stop!

D.h. ein Teufelskreis.

Grund der Beschwerde: