[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 50

 
Zhunko:
Dabei wurden die Deutsche Mark, der ECU und der Euro berücksichtigt. Ich dachte, das wüsste jeder.

Es stellt sich heraus, dass nicht jeder... :(

Es ist seltsam... Eine Marke ist eine Marke - sie ist kein Euro... Vergessen Sie es... Wir werden das berücksichtigen...

 
Notter:

Guten Tag an alle guten Menschen,

Frage zum Handel mit starken Bewegungen. Die Funktion OrderSend hat den Parameter Slippage - die maximale Abweichung vom Auftragspreis. Gibt es irgendwelche Einschränkungen in Bezug auf seinen Wert? Oder können wir sie auf 1000 Punkte festlegen? Bedeutet der Wert "0", dass es keinen Schlupf gibt, oder wird dieser Parameter bei der Eröffnung des Auftrags nicht berücksichtigt?

Wird außerdem mein von meinem Client-Terminal gesendeter Marktauftrag im Falle einer starken Bewegung den Server erreichen und auf die Ausführung der auf dem Server befindlichen anhängigen Aufträge warten, unabhängig von deren Preisen, oder wird er sofort zum Marktpreis im Moment seines Eingangs ausgeführt werden? Mit anderen Worten, kann ich erwarten, dass die Order vor dem Break ausgeführt wird, oder wird sie erst zu Beginn der Korrektur eröffnet?

Slippage ist die Differenz in Punkten zwischen dem Auftragskurs in Ihrem Terminal und dem vom Server zurückgegebenen Kurs. Während sie darüber nachdenken, kann sich der Preis auch entfernen. Wenn es eine starke Bewegung gibt, verlangsamt sich der Server normalerweise. Je länger es brütet, desto geringer ist die Chance, dass Sie zum angegebenen Preis und damit zu einem für Sie günstigeren Preis eröffnen. Wenn Sie eine Slippage von 1000 Pips einstellen, werden Sie... am Ende des Umzugs. Dies ist für die Maklerunternehmen profitabel. Und je mehr "Küche :)", desto länger wird der Server "denken", Sie mit Requotes überlasten und so weiter.

Wenn Sie den Slippage-Parameter auf 0 setzen, öffnen Sie nur, wenn der Auftragspreis und der vom Server zurückgegebene Preis identisch sind.

 

Frohes neues Jahr!

Ich habe einen Code geschrieben, der das Maximum und Minimum des angegebenen Zeitraums innerhalb des Tages finden soll. Aber in Wirklichkeit funktioniert etwas nicht. Bitte sehen Sie es sich an.

//+------------------------------------------------------------------+
//|                                                     +Session.mq4 |
//|                                       Copyright 2012, silhouette |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, silhouette"
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#include <+ChartTrendLineCreate.mqh>

string OpenTime="00:00"; // время открытия сессии
string CloseTime="09:00"; // время закрытия сессии
int Days=100; // количество расчитываемых дней

//+------------------------------------------------------------------+
string Symb;
int i;
bool Ans;
//+------------------------------------------------------------------+
int init()
  {
   Symb=Symbol();
   return(0);
  }

int deinit()
  {

   return(0);
  }

int start()
  {
   //+------------------------------------------------------------------+
   datetime Time_OD, H1_OS, H1_CS; 
   int H1_OpenDayShift, H1_OpenSessionShift, H1_CloseSessionShift, Hst, Lst;
   string H1_OD;
   double Maximum, Minimum;
   //+------------------------------------------------------------------+
   for(i=0; i<100; i++) // перебираем дни
    {
     Time_OD=iTime(Symb,PERIOD_D1,i); // находим дату открытия выбранного бара
     H1_OpenDayShift=iBarShift(Symb,PERIOD_H1,Time_OD,false); // ...его индекс
     
     H1_OD=TimeToStr(Time_OD,TIME_DATE); 
     
     H1_OS=StrToTime(H1_OD+" "+OpenTime);
     H1_OpenSessionShift=iBarShift(Symb,PERIOD_H1,H1_OS,false); // ...индекс бара открытия сессии
     H1_CS=StrToTime(H1_OD+" "+CloseTime);
     H1_CloseSessionShift=iBarShift(Symb,PERIOD_H1,H1_CS,false); // ...индекс бара закрытия сессии
     
     // ... максимум и минимум
     Hst=iHighest(Symb,PERIOD_H1,MODE_HIGH,(H1_OpenSessionShift-H1_CloseSessionShift),H1_CloseSessionShift);
     Lst=iLowest(Symb,PERIOD_H1,MODE_LOW,(H1_OpenSessionShift-H1_CloseSessionShift),H1_CloseSessionShift);
     Maximum=iHigh(Symb,PERIOD_H1,Hst);
     Minimum=iLow(Symb,PERIOD_H1,Lst);
     
     ChartTrendLineCreate(H1_OS, Maximum, H1_CS, Maximum, Red);
     ChartTrendLineCreate(H1_OS, Minimum, H1_CS, Minimum, Red);
     
     
    }

   return(0);
  }

 
silhouette:

Frohes neues Jahr!

Ich habe einen Code geschrieben, der das Maximum und Minimum des angegebenen Zeitraums innerhalb des Tages finden soll. Aber in Wirklichkeit funktioniert etwas nicht. Bitte sehen Sie es sich an.

Versuchen Sie H1_OpenSessionShift-H1_CloseSessionShift +1
 
Mislaid:
Versuchen Sie H1_OpenSessionShift-H1_CloseSessionShift +1
Danke, jetzt findet es alles wie es soll.
 
Können Sie mir bitte sagen, wie man einen EA zu machen, um Aufträge alle 4 Stunden auf TF D1 platzieren? Jetzt muss ich manuell auf Small TF umschalten und eine Order setzen, wenn die Indikatorsignale mit D1 übereinstimmen. Das ist lästig und unpraktisch.
 
sultonov:
Wenn ich fragen wollte, wie ich einen EA auf TF D1 so einstellen könnte, dass er z.B. alle 4 Stunden Orders platziert? Wenn mein Indikatorsignal dasselbe ist wie auf D1, dann muss ich manuell zum kleinen TF gehen und die Order platzieren. Das ist lästig und unpraktisch.

Frohes neues Jahr, Yusuf!!!

Um dies zu tun, müssen Sie explizit Bedingungen in Ihrem EA, einschließlich der Zeit-Tracking für die Einstellung von Aufträgen, können Sie eine neue Bar auf TF H4 zu kontrollieren, damit es zu arbeiten.

In Ihrem Fall, was verhindert, dass der EA an das Symbol-Diagramm auf H4 angehängt ist und Signale zum Öffnen von Aufträgen mit D1 und explizite Einstellung Sie in der expa-Code erhalten?

P.S. Was ist mit Ihnen? Trinkst du keinen Alkohol oder so?

Es ist der 2. Januar hier - trinkt und trinkt! :-)

 

Ich habe eine Funktion geschrieben, die den TP nach Fibo finden soll:

//+-------------------------------------------------------------------------------------+
//| Вычисление ТП по Фибе                                                               |
//+-------------------------------------------------------------------------------------+
double GetProfitByFibo()
{
  double minValue, maxValue;
  
 // if(GetStateMa() == MA_TALKING_LONG)
    if(OrderType() == OP_BUYSTOP)
    {
      maxValue = iHigh(Symbol(),i_ExtremumLookingTF,i_maxValueShiftB);
      minValue = iLow(Symbol(),i_ExtremumLookingTF,i_minValueShiftB);
     
      if((maxValue - minValue) >= 7*pt)
      {
      double fibo1618 = NormalizeDouble((minValue + (maxValue - minValue)*1.618),Digits);
      }
   
    }
  
 // if(GetStateMa() == MA_TALKING_SHORT)
    if(OrderType() == OP_SELLSTOP)
    {
      maxValue = iHigh(Symbol(),i_ExtremumLookingTF,i_maxValueShiftS);
      minValue = iLow(Symbol(),i_ExtremumLookingTF,i_minValueShiftS);
 
      if((maxValue - minValue) >= 7*pt)
      {
      fibo1618 = NormalizeDouble((maxValue - (maxValue - minValue)*1.618),Digits);
      }
          
  }
  return(fibo1618);
}

Externe Variablen für diese Funktion finden Sie hier:

extern string ___H2 = "_____  Параметры для функции Fibo_TP _____";
extern int i_ExtremumLookingTF = 5,
           i_maxValueShiftB = 8,
           i_minValueShiftB = 3,
           i_maxValueShiftS = 3,
           i_minValueShiftS = 8;

Wenn ich diese Funktion anstelle eines festen Take Profit in einen funktionierenden EA einfüge, beginnt der EA zu stocken. Was könnte falsch sein?

Es kommt vor, dass bei der Änderung eines Auftrags der TP überhaupt nicht gesetzt wird.

Dies ist zum Beispiel eine Funktion für den Einkauf (ich habe die vorherige Änderungsfunktion auskommentiert):

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
  int ticket = -1;
  string myNote = "Сов баянул";
  
  double price = High[1] + i_thresholdFromInput*pt;
  double SL = Low[1] - i_thresholdFromBasedSL*pt ;

  if(price > Ask)
  {
    ticket = OrderSend(Symbol(),OP_BUYSTOP,0.1,NormalizeDouble(price,Digits),i_slippage,0,0,myNote,i_myMagic,0,Navy);
  }
  
  if(ticket > 0 && OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES) == true)
  //  if(!OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(SL,Digits),NormalizeDouble(High[1] + i_tp*pt,Digits),0,Navy))
//  Print("GetProfitByFibo() = ", GetProfitByFibo());
      if(!OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(SL,Digits),GetProfitByFibo(),0,Navy))
    return(false);
  
  return(true);
}
 
double GetOrderOpenPrice(string sy="NULL", int op=-1, int mn=-1)
{
datetime t;
double r=0;
int i, k=OrdersTotal();

if (sy=="0") sy=Symbol();
for (i=0; i<k; i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol()==sy || sy=="")
{
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if (op<0 || OrderType()==op)
{
if (mn<0 || OrderMagicNumber()==mn)
{
if (t<OrderOpenTime())
{
t=OrderOpenTime();
r=OrderOpenPrice();
}
}
}
}
}
}
}
return(r);

}


Diese Funktion prüft den Eröffnungspreis der letzten Bestellung.

So schreiben Sie diese Bedingung in den Funktionsaufruf: Wenn sich der Kurs um 75 Pips vom letzten Eröffnungskurs der Order nach oben oder unten bewegt hat, setzen wir unsere Arbeit fort.

 

Hallo!

Die angehängte Datei enthält einen EA von Voldemar. Leider antwortet er nicht unter vier Augen, und ich möchte dies so bald wie möglich korrigieren.

Wie kann ich die Bedingungen für die Auftragseröffnung ändern? Im Moment ist der EA auf den Rollback-Kurs eingestellt. Wir möchten, dass er auf Basis des letzten Balkens öffnet. Wenn der Schlusskurs niedriger ist als der Eröffnungskurs, wird ein Verkauf eröffnet und umgekehrt.

Dankeschön

Dateien:
Grund der Beschwerde: