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

 

Einen guten Tag an alle.

Ich habe vor nicht allzu langer Zeit begonnen, mich mit der MQL5-Programmierung zu beschäftigen. Ich habe die Dokumentation studiert und einige Webinare auf youtube gesehen. Ich habe es geschafft, einige bescheidene Schritte zu machen :) Ich arbeite jetzt schon seit drei Tagen daran :( Ich möchte die Profis um Hilfe bitten.

Das allgemeine Konzept ist wie folgt: zuerst erhalten wir die Ask- und Bid-Preise (ich habe MqlTick und SymbolInfoTick für diesen Zweck verwendet), dann schauen wir, ob es ein offenes Geschäft gibt oder nicht (ich habe PositionsTotal für diesen Zweck verwendet), wenn es keine offenen Positionen gibt, eröffnen wir eine Position zum Ack- oder Bid-Preis entsprechend einer bestimmten Bedingung. Wenn wir nämlich einen früheren Handel zum Kauf hatten und dieser sich als positiv herausstellte (wir haben niedrig gekauft und hoch geschlossen), eröffnen wir eine neue Position zum Kauf... Das ist allgemein gehalten :) Das Problem ist, dass ich keine Informationen über die Art der letzten Transaktion erhalten kann und folglich auch nicht, zu welchem Preis sie eröffnet und zu welchem Preis sie geschlossen wurde ...

Hier ist der Code, den ich geschrieben habe:

//+------------------------------------------------------------------+

//|                                                  SOVETNIK_01.mq5 |

//|                                                   Tokarev Sergey |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Tokarev Sergey"

#property link      "https://www.mql5.com"

#property version   "1.00"



//Мои подключаемые библиотеки

#include<Trade\Trade.mqh>           //Библиотека для структуры "CTrade", она отвечает за выполнение всех торговых операций

#include <Trade\PositionInfo.mqh>   //Библиотека для структуры "CPositionInfo" она выдаёт информацию по всем нашим позициям



//переменные для подключаемых классов и структур опишем тут

CTrade Trade;                 //Значение структуры "CTrade" поместим в переменную Trade

CPositionInfo PositionInfo;   //Значение структуры "CPositionInfo" поместим в переменную PositionInfo

MqlTick last_tick;            //В переменной last_tick будут храниться цены последнего пришедшего тика, для этого используем структуру "MqlTick"

MqlTradeRequest request;

MqlTradeResult result;

//глобальные переменные

double SL;                           //Переменная необходимая для преобразования размера StopLoss в зависимости от типа брокера

double TP;                           //Переменная необходимая для преобразования размера TakeProfit в зависимости от типа брокера

double Ask;                          //Переменная в которой будем хранить значения цены спроса

double Bid;                          //Переменная в которой будем хранить значение цены предложения

int MagicNumber=123456;    //Зададим MagicNumber для идентификации своих ордеров

int N;                     //В переменную N мы занесём кол-во открытых позиций                  

int Lot;                    //Укажем размер нашего лота

//+------------------------------------------------------------------+

//| Инструкции которые срабатывают один раз при запуске эксперта                                   |

//+------------------------------------------------------------------+

int OnInit()

  {

   Trade.SetExpertMagicNumber(MagicNumber);        //Занесём наш номер в переменную Trade

   Lot=1;                                                  //Установим размер нашего лота

   return(0);

  }

//+------------------------------------------------------------------+

//| Инструкции которые срабатывают один раз при остановке (закрытии) эксперта                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

  }

//+------------------------------------------------------------------+

//| Инструкции которые срабатывают при каждом новом тике цен                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

   SymbolInfoTick(_Symbol,last_tick);   //Заполняем переменную last_tick последними ценами текущего символа, для этого используем "SymbolInfoTick"

   //Обновляем переменные Ask и Bid для дальнейшего использования

   Ask=last_tick.ask;

   Bid=last_tick.bid;

   Print("Цена ПРОДАЖИ = ",Ask);

   Print("Цена ПОКУПКИ = ",Bid);

//Определим существует ли открытая позиция или нет

   N=PositionsTotal();

   Print("Кол-во открытых позиций: ",N); 

   if(N==0)

      {

      //Если позиции нет то определим какая сделка была крайней

      HistorySelect(0,TimeCurrent());        //Загружаем историю наших сделок

      ulong last_deal_ticket;                   //Объявим переменную для тикета последней сделки

      ulong deals=HistoryOrdersTotal();      //Обяъвим переменную "deals" куда выгрузим количество наших сделок в целом из истории

      last_deal_ticket=HistoryDealGetTicket((int)deals-1); //получим тикет крайней сделки

      Print("Ticket крайней сделки: ",last_deal_ticket);

      long deal_type=HistoryDealGetInteger(last_deal_ticket,DEAL_TYPE); //Тут получить должны тип крайней сделки из истории

      Print ("Тип крайней ",deal_type);      

      //Если была на продажу то покупаем

      if (deal_type==BUY)

         {

         //Открываем наш ордер на покупку

         Trade.Buy(Lot,Symbol(),Ask,SL,TP);

         Print("Мы купили по цене: ",Ask);

} 

 

Vielen Dank im Voraus für Ihre Hilfe :)

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
Karputov Vladimir:
Ich habe mich schon vor langer Zeit von Büchern in Papierform verabschiedet, ebenso wie von Piratenbüchern in elektronischer Form. Ich habe mich daran gewöhnt.

Man kann nicht schön leben.

Ich werde von Neulingen gefragt, was ich lesen soll, und ich weiß nicht mehr, was ich habe.

 

Guten Tag an alle!

Ich muss aus dem Eingabefeld im EA-Fenster den vom Benutzer aus der Dropdown-Liste ausgewählten Zeitrahmen abrufen. Wie kann man sie in der Funktion verwenden, ich kämpfe schon den zweiten Tag in Folge damit, bitte beraten Sie mich)!

Code:

Eingabe enum timeFrame {
Stunde_1 = 60,
Stunde_4 = 240,
Tag_1 = 1440,
Woche_1 = 10080!

};


iADX(currencySelect, DIES IST WIE AUSGEWÄHLTE DATEN INSTALLIEREN!, ADXparam, PRICE_CLOSE, MODE_MINUSDI,2)


Ich danke Ihnen!

 
Сергей Михеев:

Korrektes Einfügen des Codes im Forum

Hier ist ein Beispielskript, das Ihre Aufzählung anwendet:

//+------------------------------------------------------------------+
//|                                                       Primer.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
enum timeFrame
  {
   Hour_1 = 60,
   Hour_4 = 240,
   Day_1=1440,
   Week_1=10080
  };
input timeFrame MyTimeFrame=Hour_1;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   Print(MyTimeFrame);
  }
//+------------------------------------------------------------------+
 
Karputov Vladimir:

Korrektes Einfügen des Codes im Forum

Hier ist ein Beispielskript, das Ihren Eintrag verwendet:

Ich danke Ihnen!

Und mehr, bitte sagen Sie mir, gibt es eine Konstruktion in MQ4 wie assoziatives Array mit Textschlüssel, zum Beispiel: Array["Hier ist der Schlüssel!"]?

 
Сергей Михеев:

Ich danke Ihnen!

Könnten Sie mir bitte auch sagen, ob MQ4 eine Konstruktion wie ein assoziatives Array mit Textschlüsseln hat, zum Beispiel: Array["Hier ist der Schlüssel!"]?

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
#define  Number                1
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   int Arr[]={ 12,15,4 };
   Print(Arr[Number]);
  }
//+------------------------------------------------------------------+
 
Karputov Vladimir:
In Ihrem Beispiel sind die Schlüssel Zahlen und ich meinte die Verwendung von Zeichenketten als Schlüssel.
 
Сергей Михеев:
In Ihrem Beispiel sind die Schlüssel Zahlen, und ich meinte die Verwendung von Zeichenketten als Schlüssel.
Der Zugriff auf die Array-Elemente erfolgt über den Index. Der Index ist eine Ganzzahl vom Typ int.
 

Hallo!

Können Sie bitte beraten, wie man Informationen über offene und geschlossene Geschäfte in MQL EA-Code (welcher Preis wurde geöffnet, was waren die TP und SL)? zumindest für die letzten 1.

Und gibt es eine integrierte Funktion oder Bibliothek, die ein Array mit n letzten Werten des gleitenden Durchschnitts(vorzugsweise gewichtet oder exponentiell) zurückgibt?

 
Alex317:

Hallo!

Können Sie bitte beraten, wie man Informationen über offene und geschlossene Geschäfte in MQL EA-Code (welcher Preis wurde geöffnet, was waren die TP und SL)? zumindest für die letzten 1.

Und gibt es eine integrierte Funktion oder Bibliothek, die ein Array mit n letzten Werten des gleitenden Durchschnitts(vorzugsweise gewichtet oder exponentiell) zurückgibt?

Bitte geben Sie immer an, auf welche Version von MQL4 oder MQL5 sich Ihre Frage bezieht.