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

 
eflaer:

Hallo, Könnten Sie mich bitte beraten, wenn ich meine EA auf, zum Beispiel, 10 Währungspaare?

Können Sie die maximale Anzahl von Paaren festlegen, die Sie eröffnen können?

Mit anderen Worten, wenn der Advisor auf 10 Charts verschiedener Paare eingestellt ist und in den Einstellungen steht, dass die maximale Anzahl von Paaren - 5.

Und der EA wird nur auf die ersten 5 Paare arbeiten und die anderen 5 Paare werden ignoriert werden?

Generell ist es möglich?

Wenn der Code im .mq-Format vorliegt, ist dies möglich. Nicht zu verwechseln mit .ex

 

Guten Tag an alle
Ich habe folgende Frage und möchte Sie um Hilfe bei der Klärung der Situation bitten.

Der Robot Netmaker platziert beim Start ein Netz von Limit-Orders ORDER_TYPE_BUY_LIMIT(auch ORDER_TYPE_BUY_STOP aufwärts). Der Rasterschritt ist 1, die Einnahme 0,5 und das Volumen ist 1 Lot. Das Problem ist, dass ich einmal eine Long-Position eröffne (ich habe bei 10 gekauft und den TP auf 10,5 gesetzt), ohne die Position zu übernehmen, und dann beginne ich das zweite Mal (ich habe bei 9 gekauft und den TP auf 9,5 gesetzt), und ich habe 2 Lots. Dann beginnt der Preis zu kommen und das ganze Volumen wird auf 9,5 genommen!

Die Aufträge werden nach der Struktur vergeben.

      MqlTradeRequest request_={0};
      request_.action=TRADE_ACTION_PENDING;         // установка отложенного ордера 
      request_.magic=order_magic;                  // ORDER_MAGIC 
      request_.symbol=pair;                      // инструмент 
      request_.volume=v_b;                          // объем в 0.1 лот 
      request_.tp=pr_ent_tp;                                // Take Profit 
      //--- сформируем тип ордера 
      request_.type=ORDER_TYPE_BUY_LIMIT;                // тип ордера 
      //---сформируем цену для отложенного ордера 
      request_.price=pr_ent;  // цена для открытия 
      //--- отправим торговый приказ 
      MqlTradeResult result_={0};
      m_Trade.OrderSend(request_,result_);

Ich brauche für jede Bestellung eines meiner eigenen T-Shirts. Ich bin bei 10 eingestiegen und habe auf einen Kurs von 10,5 gewartet.
Und nicht das gesamte Volumen am ersten Abschlag.

Sollte ich etwas an der Struktur ändern?

 
ISL:

Guten Tag an alle
Ich habe diese Frage und brauche Ihre Hilfe, um die Situation zu klären.

Der Robot Netmaker platziert beim Start ein Netz von Limit-Orders ORDER_TYPE_BUY_LIMIT(auch ORDER_TYPE_BUY_STOP aufwärts). Der Rasterschritt ist 1, die Einnahme 0,5 und das Volumen ist 1 Lot. Das Problem ist, dass ich anfange, eine Long-Position zu eröffnen (ich habe bei 10 gekauft, nehme 10,5), ohne sie zu nehmen; ich beginne das zweite Mal (ich habe bei 9 gekauft, nehme 9,5) und ändere das Volumen auf 2 Lots. Dann beginnt der Preis zu kommen und das gesamte Volumen wird bei 9,5 genommen!!!

Die Aufträge werden nach der Struktur vergeben.

Ich möchte, dass jeder an seinem eigenen Abschlag abschlägt. Ich bin bei 10 eingestiegen und habe auf den Kurs von 10,5 gewartet.
Und nicht das gesamte Volumen am ersten Abschlag.

Müssen Sie etwas an der Struktur ändern?

Verwenden Sie die Kontoart "Hedge", nicht "Netting".

 
Um dies zu ändern, müssen Sie die MT erneut aufrufen und das Kästchen Absicherung verwenden ankreuzen. Oder kann ich die vorhandene ändern?
 
ISL:
Um dies zu ändern, müssen Sie die MT erneut aufrufen und das Kästchen Absicherung verwenden ankreuzen. Oder kann ich die vorhandene ändern?

Wiederholen Sie es und kreuzen Sie das Kästchen an ...

 
Ich danke Ihnen!
 
Nochmals dieselbe Frage: Hat jemand ein solches System für einNetting-Konto eingerichtet? Vielleicht gibt es jemanden im Forum, der dies getan hat?
 
ISL:
Ich stelle die gleiche Frage noch einmal: Hat jemand ein solches System von TPs fürNetting-Konten implementiert? Vielleicht gibt es jemanden im Forum, der das getan hat?

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Bibliotheken: Virtuell

fxsaber, 2018.11.15 17:16

Beim Netting hat eine Position immer nur einen TP. So wird insbesondere das Netting von TS, bei dem jeder Auftrag im Netting einen anderen TP hat, nicht wie vorgesehen funktionieren.

Nachstehend finden Sie ein Beispiel für die Funktionsweise.

// Пример Netting с поддержкой множества однонаправленных позиций (у каждой могут быть свои Magic, SL/TP, Comment, OpenTime и т.д.).
// Запустите этот пример на Netting-счете в Тестере с влюченной Визуализацией.

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define  VIRTUAL_LIMITS_TP_SLIPPAGE // Лимитники и TP исполняются по первой цене акцепта - положительные проскальзывания
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577
#include <fxsaber\Virtual\Sync.mqh>    // Синхронизатор

#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

input int iAmount = 5;   // Количество ордеров в сетке
input int iOffset = 120; // На каком расстоянии (в пипсах) ставить ордера сетки
input int iTP = 120;     // TakeProfit каждого ордера сетки

// Выставляем один раз сетку из Amount ордеров на Offset-расстоянии друг от друга с заданным TP.
void System( const int Amount, const int Offset, const int TP )
{
  static bool FirstRun = true;
  
  if (FirstRun)  
  {
    for (int i = 1; i <= Amount; i++)
    {
      const double PriceOpen = Ask - i * Offset * _Point;
      const double PriceTP = PriceOpen + TP * _Point;
      
      OrderSend(_Symbol, OP_BUYLIMIT, 1, PriceOpen, 0, 0, PriceTP, (string)i); // Выставляем каждый ордер сетки
    }
    
    FirstRun = false;
  }
}

void OnTick()
{  
  static const bool Init = VIRTUAL::Select(VIRTUAL::Create()); // Система будет работать в этом виртуальном окружении
  static const bool IsVisual = MQLInfoInteger(MQL_VISUAL_MODE);
  static bool FirstRun = true;

  VIRTUAL::NewTick();            // Добавили тик в виртуальное торговое окружение
  System(iAmount, iOffset, iTP); // Запустили ТС на выбранном торговом окружении (виртуальное)
  
  SYNC::Positions<ISTIME>(); // Синхронизировли реальное торговое окружение с виртуальным

  if (IsVisual)
    Comment(VIRTUAL::ToString(true)); // Вывели на чарт состояние виртуального торгового окружения (true - вместе с историей торгов)
}


Dies ist eine sehr einfache Idee. Wir starten TS in einem virtuellen Raum und synchronisieren es einfach mit dem realen Raum. Sie brauchen die TP-Quelle (im Beispiel die Funktion System) nicht zu ändern.

 

Nachmittags. Ich wollte eine mqh-Datei erstellen, in der die berechneten Arrays liegen, bis ich das Terminal schließe, und sie nur dann erneut herunterladen, wenn eine große Zeitspanne (in meinem Fall 3600) verstrichen ist. Aber wenn ich den Indikator kompiliere, setzt die mqh-Datei auch alle Arrays zurück. Wie kann ich es tun, so kann ich alles mit Indikator und kompilieren, aber mqh Datei nicht zurückgesetzt wird, bis das Terminal geschlossen wird?

class CMyTicks
  {
protected:
   int               countTicks;

public:
   datetime          m_TickTime[];
   datetime          m_FirstTickTime;
   //+------------------------------------------------------------------+
   //| Constructor.                                                     |
   //+------------------------------------------------------------------+      
   void CMyTicks()
     {
      countTicks=0;
     }
   //+------------------------------------------------------------------+  
   void CollectTicks(int m_getticks=1000)
     {
      MqlTick           items[];
      int received=CopyTicks(_Symbol,items,COPY_TICKS_ALL,0,m_getticks);
      
      ...
      m_FirstTickTime=items[0].time;
     }
  };
//+------------------------------------------------------------------+
#include <Test_Array_Include.mqh>
CMyTicks  Test;
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   ReloadAsk();
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
int      getticks=100000;
datetime firstticktime=0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ReloadAsk()
  {
   MqlTick           items[];
   int received=CopyTicks(_Symbol,items,COPY_TICKS_ALL,0,getticks);
   firstticktime=items[0].time;

   if((int)firstticktime>(int)Test.m_FirstTickTime+3600)
     {
      Test.CollectTicks(getticks);
      int ArrSize=ArraySize(Test.m_TickTime);
      Print(" Should not apear after compilation. ArrSize: ",ArrSize); // 
     }
  }
//+------------------------------------------------------------------+
 
Bitte sperren Sie das Konto für einen Monat.
Grund der Beschwerde: