Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 90

 
WindSW:
Alle Optionen sind aufgeführt, außer dem Schließen. Deshalb frage ich.

wurde Ihnen bereits mitgeteilt.

Yedelkin:

Das "Schließen einer Position" ist lediglich das Ergebnis einer Handelsanfrage, für die dieselben Regeln gelten.

D.h. Sie nehmen den "offenen" Antrag und ändern die Auftragsart.

Füllen Sie die nicht benötigten Pflichtfelder mit Nullen aus.

 

Yedelkin:
Для каждого вида торгового запроса предусмотрены обязательные поля. Они должны быть заполнены. "Открытие позиции" или "Закрытие позиции" - это всего лишь результат выполнения конкретного торгового запроса, правила заполнения которого - одни и те же. Т.е. берите свой работающий вариант запроса "на открытие" и меняйте тип ордера. Ненужные обязательные поля заполняйте нулями.

sergeev:

Sie haben bereits eine Antwort erhalten!

Ich danke Ihnen!

Ich habe noch eine Frage: Die unten stehende Anfrage wird gesendet und eine Position wird eröffnet, aber der Stop und der Gewinn werden nicht gesetzt. Ich habe schon verschiedene Einstellungen ausprobiert, aber nichts hat geholfen. Was ist das Problem, was mache ich falsch?

   MqlTick latest_price;       // Будет использоваться для текущих котировок
   if(!SymbolInfoTick(_Symbol,latest_price)) return;        // получить текущее значение котировки в структуру типа MqlTick
   ...
   if(uBuy && opSell==false)    
     {
      if(opBuy) return;                                                // при наличии позиции не добавлять к открытой позиции на покупку
      mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение
      mrequest.price = NormalizeDouble(latest_price.ask,_Digits);           // последняя цена ask
      mrequest.sl = NormalizeDouble(latest_price.ask - StopLoss*_Point,_Digits); // Stop Loss
      mrequest.tp = NormalizeDouble(latest_price.ask + TakeProfit*_Point,_Digits); // Take Profit
      mrequest.symbol = _Symbol;                                            // символ
      mrequest.volume = WorkLot;                                                // количество лотов для торговли
      mrequest.magic = EA_Magic;                                            // Magic Number
      mrequest.type = ORDER_TYPE_BUY;                                       // ордер на покупку
      mrequest.type_filling = ORDER_FILLING_FOK;                            // тип исполнения ордера - все или ничего
      mrequest.deviation=Slippage;                                               // проскальзывание от текущей цены
      OrderSend(mrequest,mresult);                                          // отсылаем ордер
      if(mresult.retcode==10009 || mresult.retcode==10008)                  //запрос выполнен или ордер успешно помещен
        {
         Alert("Ордер Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
        }
      else
        {
         return;
        }
     }
 

Wie addiere ich die letzten 3 ZigZag-Werte?

        double summ=0;//переменная, в которую все суммируется
        int w=0;//счетчик 3 удачных сумирований
        int count_for_buf=0;//Счетчик переходов по буферу ZigZag
        while (w<=3)
         {
         summ=summ+ZigzagBuffer[rates_total-count_for_buf];
         count_for_buf++;
         if (ZigzagBuffer[rates_total-count_for_buf]!=0)//Увеличиваем счетчик, если используемое значение индикатора не равно нулю
          {
          w++;
          }
         }
Auf diese Weise bleibt es aus irgendeinem Grund hängen oder etwas anderes passiert
 
WindSW: Die unten stehende Anfrage wird gesendet und eine Position wird eröffnet, aber es wird kein Stop und kein Gewinn gesetzt. Ich habe schon verschiedene Einstellungen ausprobiert, aber nichts hat geholfen. Was ist das Problem, was mache ich falsch?

Erinnern Sie sich daran, dass Handelsanfragen "zur Eröffnung einer Position" mehrere Optionen haben, die Sie ausfüllen können? Einige dieser Optionen beinhalten sl/tp, andere nicht. Mit anderen Worten: Welchen Handelsmodus hat Ihr Broker?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
Yedelkin:

Erinnern Sie sich daran, dass Handelsanfragen "zur Eröffnung einer Position" mehrere Optionen haben, die Sie ausfüllen können? Einige dieser Optionen beinhalten sl/tp, andere nicht. Mit anderen Worten: Was ist der Handelsmodus Ihres Brokers?

Alpari-Makler. Im manuellen Modus wird nur ein neuer Auftrag in der Börsenausführung platziert. Es gibt keine andere Möglichkeit, in den Markt einzutreten. Mir ist bekannt, dass es sich um ein Ersuchen um Austauschausführung handelt. Danke, ich habe das Problem gelöst. Können Sie mir sagen, warum der Compiler den folgenden Code verarbeitet?

if(CopyBuffer(ema,0,0,3,emaVal)<0) return; // Kopieren der neuen Werte der Indikatorpuffer in Arrays

и

IndicatorRelease(ema);

Es erscheint eine Warnung "möglicher Datenverlust durch Typkonvertierung". Ich kann nicht herausfinden, was hier falsch ist, ich kann es seit gestern Abend nicht mehr reparieren.

 
WindSW: Können Sie mir sagen, warum der Compiler bei den folgenden Zeichenfolgen flucht:

if(CopyBuffer(ema,0,0,3,emaVal)<0) return; // neue Indikatorpufferwerte in Arrays kopieren

и

IndicatorRelease(ema);

Es erscheint eine Warnung "möglicher Datenverlust durch Typkonvertierung". Ich kann nicht herausfinden, was hier falsch ist, ich habe es seit gestern Abend nicht geschafft, das Problem zu beheben.

Und welche Art von variablem EMA?
 
Yedelkin:
Welcher Typ von Variable ist ema?
doppelt
 
WindSW doppelt
Ich hab's. Stellen Sie fest, welchen Typ die Variable haben sollte, um die Indikator-Handles zu speichern, und passen Sie sie an.
 
Yedelkin:
Ich hab's. Stellen Sie fest, welcher Variablentyp zum Speichern von Indikator-Handles verwendet werden soll, und passen Sie ihn an.
Und ich bin es nicht mehr gewohnt, wie in 4 zu schreiben. Nochmals vielen Dank für die Tipps!
 
lazarev-d-m:

Wie addiert man die letzten 3 ZigZag-Werte?

Auf diese Weise bleibt es aus irgendeinem Grund hängen oder etwas anderes passiert

Ich werde Ihnen einen Vorschlag machen:

   double   summ=0;  //переменная, в которую все суммируется
   int      w=0;     //счетчик 3 удачных сумирований
   for(int i=0; i<rates_total; i++)
     {
      if(ZigzagBuffer[rates_total]!=0 && w<3)//Увеличиваем счетчик, если используемое значение индикатора не равно нулю
        {
         summ+=ZigzagBuffer[i];
         w++;
        }
      if(w>2) break;
     } 
Grund der Beschwerde: