Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1902

 
Vitaly Muzichenko #:

Ich weiß nicht, wo ich anfangen soll.

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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[])
{
  int H=100;
  double b, a;
  if(prev_calculated==0) {
    ArrayInitialize(Buffer1,EMPTY_VALUE);
    ArrayInitialize(Buffer2,EMPTY_VALUE);
  }

  b=SymbolInfoDouble(Symbol(),SYMBOL_BID);
  a=SymbolInfoDouble(Symbol(),SYMBOL_ASK);

  if(rates_total-prev_calculated==1) {
    Buffer1[H+1]=EMPTY_VALUE;
    Buffer2[H+1]=EMPTY_VALUE;
  }
  else if (rates_total == prev_calculated) { // сдвигаем данные только когда количество баров не поменялось (в случае появления нового бара они сдвигаются системой терминала)
    ArrayCopy(Buffer1, Buffer1, 1, 0, H);
    ArrayCopy(Buffer2, Buffer2, 1, 0, H);
  }
  // записываем новые данные
  Buffer1[0]=b;
  Buffer2[0]=a;
  return(rates_total);
}

Es soll ja auch funktionieren. Sehen Sie sich das an.

P.S. Und bitte schreiben Sie, wie viel Geschwindigkeit Variante mit ArrayCopy Funktion ändert. Ich würde es selbst gerne wissen.

 
Vitaly Muzichenko #:

Ich weiß nicht, wo ich anfangen soll

Hier ist eine Variante von mql5. Aber nur für Ask price. Für den Angebotspreis müssen Sie es selbst machen.

Es hat alles, einschließlich der Arbeit mit Indikator-Puffer, und die Arbeit mit Ticks, und ein Beispiel, wie es nicht notwendig ist, um die Indexierung von Indikator-Puffer umzukehren.

Bei 1000 Takten erfolgt die Anzeige ohne jegliche Verzögerung.

Dateien:
 
Alexey Viktorov #:

Hier ist eine Variante von mql5. Aber nur für Ask price. Für den Angebotspreis schließen Sie es selbst ab.

Es hat alles, einschließlich der Arbeit mit Indikator-Puffer, und die Arbeit mit Ticks, und ein Beispiel, wie die Indizierung von Indikator-Puffer muss nicht umgekehrt werden.

Bei 1000 Takten erfolgt die Anzeige ohne jegliche Verzögerung.

Ich hab's! Ich danke Ihnen!

 

Hallo, ich habe vor kurzem angefangen, mit MT4 zu arbeiten und bin auf folgendes Problem gestoßen: Es gibt keine richtige Funktion, um eine geschlossene Order zu verfolgen. Mein Algorithmus ist einfach: Wenn eine neue Kerze erscheint, platziere ich zwei schwebende Orders: einen Sell Stop und einen Bid Stop, und ich muss der geschlossenen Order (Sell Stop oder Bid Stop) folgen, wenn eine von ihnen geschlossen wird, und eine Order anstelle der geschlossenen Order platzieren. Aufträge werden platziert - kein Problem damit, aber ich kann nicht verstehen, wie man die geschlossenen zu verfolgen, ich habe den Code, aber die Nachricht zeigt nur SellSTOP, und reagiert nicht auf BAYSTOP:


if (OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY))
   {
   Print("OrderType", OrderType());//Тут всегда только только "1"
   }
   if(OrderType()==0)
    {
    Print("Закрылся  BUYSTOP:", OrderTicket());
    }
   if(OrderType()==1)
   {Print("Закрылся   SELLSTOP:",  OrderTicket());} //Тут сообщает корректно - номер ордера

Und ich bin auch auf die Tatsache gestoßen, dass OnTrade oderOnTradeTransaction nicht funktioniert, habe dies ausprobiert:

void OnTradeTransaction()
 {
 Print("status - "); 
 }  
 
MixanM #:

Hallo, ich habe vor kurzem angefangen, mit MT4 zu arbeiten und bin auf folgendes Problem gestoßen: Es gibt keine richtige Funktion, um eine geschlossene Order zu verfolgen. Mein Algorithmus ist einfach: Wenn eine neue Kerze erscheint, platziere ich zwei schwebende Orders: einen Sell Stop und einen Bid Stop, und ich muss der geschlossenen Order (Sell Stop oder Bid Stop) folgen, wenn eine von ihnen geschlossen wird, und eine Order anstelle der geschlossenen Order platzieren. Aufträge werden platziert - kein Problem, aber ich kann nicht verstehen, wie man geschlossene zu verfolgen, habe ich den Code, aber die Nachricht zeigt nur SellSTOP, BAYSTOP reagiert nicht:

//+----------------------------------------------------------------------------+
int LastClose()
  {
   int result=-1;
   datetime t=0;
   int i=OrdersHistoryTotal()-1;
   for(int pos=i;pos>=0;pos--)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol)
           {
            if(OrderType()==OP_BUY||OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime())
                 {
                  t=OrderCloseTime(); result=OrderType();
                 }
              }
           }
        }
     }
   return(result);
  }
//+----------------------------------------------------------------------------+

MixanM OnTradeTransaction nicht funktioniert, habe dies ausprobiert:

Es scheint für MT5 zu sein
 
Hallo zusammen, Freunde.
Ich habe eine Frage.
Das Kopieren von Angeboten in diesem Dienst hat sich seit vielen Jahren nicht verändert. Schon lange hat man den Eindruck, dass die Entwickler überhaupt nicht daran interessiert sind, an die Bequemlichkeit der Besucher zu denken.
Es bedurfte eines eigenen Projekts.

Ich weiß nicht, ob das möglich ist?

1) Ich brauche den Kopierer von Geschäften, ( Berater ) Ich weiß nicht, was die Last und wie es gemessen wird, müssen Sie, dass es in der Lage wäre, von einem zu kopieren und zu verteilen mehr als hundert Konten.
Die Frage nach dem Kopieren. Mein Ziel ist es, ein Handelsvolumen zu erhalten, das auf den Prozentsätzen der Geschäfte basiert (d.h. ich habe 100 auf meinem Konto; mein Follower hat 1000 auf seinem Konto; ich eröffne ein Geschäft mit 3% meiner Einlage und das Losvolumen wird durch den Prozentsatz meines Geschäfts neu berechnet; d.h. mein Geschäft mit 3% ist $3; der Follower hat ein offenes Geschäft mit 3% = $30; d.h. ich weiß nicht, ob das wirklich wichtig ist oder nicht).


2) Ist es möglich, seine Kontodaten abzurufen? D.h. Vorname, Nachname, aber vor allem der Betrag auf dem Guthaben? Wenn es nicht möglich ist, alle Informationen zurückzuziehen, was ist dann möglich?

3) Liebe Programmierer, schätzen Sie die ungefähren Kosten für einen solchen Auftrag, ich möchte nicht getäuscht werden und möchte den angemessenen Preis verstehen.
Ich danke Ihnen!
 
Roman Voloshchuk Kopieren von Transaktionen über diesen Dienst hat sich seit vielen Jahren nicht verändert. Schon lange hat man den Eindruck, dass die Entwickler überhaupt nicht daran interessiert sind, an die Bequemlichkeit der Besucher zu denken.
Es bedurfte eines eigenen Projekts.

Ich weiß nicht, ob das möglich ist?

1) Ich brauche den Kopierer von Geschäften, ( Berater ) Ich weiß nicht, was die Last und wie es gemessen wird, müssen Sie, dass es in der Lage wäre, von einem zu kopieren und zu verteilen mehr als hundert Konten.
Die Frage nach dem Kopieren. Mein Ziel ist es, ein Handelsvolumen zu erhalten, das auf den Prozentsätzen der Geschäfte basiert (d.h. ich habe 100 auf meinem Konto; mein Follower hat 1000 auf seinem Konto; ich eröffne ein Geschäft mit 3% meiner Einlage und das Losvolumen wird nach dem Prozentsatz meines Geschäfts neu berechnet; aus diesem Grund ist mein Geschäft mit 3% $3, während der Follower ein Geschäft mit 3% = $30 eröffnet hat.


2) Ist es möglich, die Kontodaten eines Abonnenten zurückzuziehen? D.h. Vorname, Nachname, aber vor allem der Betrag auf dem Guthaben? Wenn es nicht möglich ist, alle Informationen zurückzuziehen, was ist dann möglich?

3) Liebe Programmierer, schätzen Sie die ungefähren Kosten für einen solchen Auftrag, ich möchte nicht getäuscht werden und möchte den angemessenen Preis verstehen.
Ich danke Ihnen!

Teilnehmerdaten sind schädlich für die Entnahme.

Nochmals: Sie haben 50 auf Ihrem Konto mit einer Hebelwirkung von 500 und ein Abonnent hat 5000 mit einer Hebelwirkung von 33.

Hier gibt es ein kleines Berechnungsproblem. Wenn wir über diesen Dienst sprechen.

Wenn wir von Selbstkopie sprechen, dann:

Sie haben 50 auf Ihrem Konto mit einer Hebelwirkung von 2000 und ein Teilnehmer 5000 mit einer Hebelwirkung von 33.

Sie werden in der Lage sein, 3 Positionen mit einem kleinen Hebel zu eröffnen, während der Abonnent nach der zweiten Position kein Geld mehr übrig haben wird, da er sich einer Marge aussetzt.

---

So einfach ist das nicht.

 

Tretyakov Rostyslav #:
Это вроде для МТ5С

Vielen Dank für den Code, aber Ihre gibt auch nur geradzahlige Aufträge (SELLSTOP) aus irgendeinem Grund, ich kann nicht verstehen, warum, vielleicht ist die Sortierung falsch / (Ich führe den Code in der Tester - vielleicht ist das das Problem?)

 
MixanM #:

Vielen Dank für den Code, aber Ihre gibt auch nur geradzahlige Aufträge (SELLSTOP) aus irgendeinem Grund, ich kann nicht verstehen, warum, vielleicht ist die Sortierung falsch / (Ich führe den Code im Tester - könnte dies das Problem sein?)

mein Code gibt den Typ der letzten geschlossenen Order zurück - "0-Buy" oder "1-Sell"
 
Tretyakov Rostyslav #:
mein Code gibt den Typ der letzten geschlossenen Order zurück - "0-Buy" oder "1-Sell"

Ja, das habe ich gemeint - dass nur Daten für einen "Sellstop"-Auftrag zurückgegeben werden. Ich habe dies zu Ihrer Seite hinzugefügt, nur um sie visuell zu überprüfen:

...

if(t<OrderCloseTime())

{

t=OrderCloseTime(); result=OrderType();

Print("Order TIP :", OrderTicket());

}

....

Grund der Beschwerde: