[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 477

 

demlin:
Еще вопрос: какой функцией можно вытащить стоимость одного пункта инструмента?

https://docs.mql4.com/ru/constants/marketinfo

MarketInfo(Symbol(), MODE_TICKVALUE);
 
LazarevDenis:

Bitte sagen Sie mir, welcher Code in den EA geschrieben werden sollte, damit der EA nur einmal pro Stunde handelt

z.B. der EA hat ausgelöst, eine Order ist geöffnet (nicht weiter interessiert), ich möchte, dass die Order nicht auf dem aktuellen Balken auf stündlichem Zeitrahmen geöffnet wird

es sieht alles gleich aus:

int hh;
int CurrentHour;
CurrentHour=TimeHour(TimeCurrent());
if (AktuelleStunde!=hh)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point);
hh=TimeHour(TimeCurrent());
}

aber ich habe unzählige Aufträge offen

int hh = 0;
muss vor start() und init() gesetzt werden
 
Leute, helft mir, einen EA für den manuellen Handel im Tester auf Geschichte zu finden. Es gibt mehrere in der Codebasis, ich brauche eine, die durch Ziehen der Beschriftung in der unteren linken Ecke der Nrafik gesteuert wurde. Ganz einfach, ich kann keine finden. HistTraining und Visualisierungstests. Der manuelle Handel ist es nicht. Sehr einfacher Berater, man kann auch Stufen festlegen, bei denen die Prüfung endet.
 
demlin:

Hallo zusammen!

Bitte sagen Sie mir, was das bedeutet:

Kaufauftrag ...... fehlgeschlagen [Zeitüberschreitung beim Handel]

Mich interessiert insbesondere, um welche Art von Zeitüberschreitung es sich handelt.

https://www.mql5.com/ru/forum/112612
Dies ist eine abgelaufene Serverantwort --- unabhängig davon, ob das Geschäft geöffnet wurde oder nicht. Und es gibt keine Garantie, dass der Handel nicht eröffnet wurde.

Ich muss also prüfen, ob der Auftrag in einer Minute eröffnet wird, und dann den Handel fortsetzen.

 

rlx:


muss vor start() und init() gesetzt werden


int hh = 0;
int init()
{
return(0);
}
int start()
{
//-------------------------------------------------
int countorder;
countorder=OrdersTotal();
if (countorder==0)
{
Alert ("keine offenen Aufträge");
}else
{
Alert ("haben offene Aufträge");
}
int hh;
int CurrentHour;
CurrentHour=TimeHour(TimeCurrent());
if ((CurrentHour!=h)&&(countorder==0))
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point);
hh=TimeHour(TimeCurrent());
}
//-------------------------------------------------
return(0);
}

int deinit()
{
return(0);
}

Ich habe getan, was Sie sagten, keine Wirkung, fügte Zählung der offenen Aufträge, öffnet jetzt Aufträge direkt nach dem Schließen

Ich habe es mit OrderCloseTime() umgangen - es scheint jetzt zu funktionieren

int countorder;
countorder=OrdersTotal();
if (countorder==0)
{
Alert ("keine offenen Aufträge");
}else
{
Alert ("haben offene Aufträge");
}
int hh;
int CurrentHour;
int LastOrderCloseTime;
CurrentHour=TimeHour(TimeCurrent());


OrderSelect(HistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
hh=TimeHour(OrderCloseTime());


if ((CurrentHour!=hh)&&(countorder==0))
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point);
}

 
rlx:

https://www.mql5.com/ru/forum/112612
Dies ist die Wartezeit, bis der Server antwortet --- ob ein Geschäft eröffnet wurde oder nicht. Und es gibt keine Garantie, dass das Geschäft nicht eröffnet wurde.

Prüfen Sie daher, wie von den Entwicklern empfohlen, nach einer Minute, ob ein Auftrag eröffnet wurde, und fahren Sie erst dann fort.

Danke für die Antworten
 
Roger:

Ich will aber keine Nervensäge sein.

Erklären Sie mir, wie ein Auftrag eröffnet wird, wenn OrderTotal() Null ist.

Ich danke Ihnen.


Nachfolgend die Abbildung mit Klammern, die den Codeblock begrenzen, der unter der Bedingung ausgeführt wird

if(OrdersTotal()>0&&tral>0&&OrderMagicNumber()==MAGIC&&(OrderType()==OP_SELL||OrderType()==OP_BUY))

OrderSend()-Vorgänge sind von dieser Bedingung nicht betroffen.

 

wie man eine Bar-Nummer bekommt, in der "Zukunft" :)

iBarShift() funktioniert gut, um die Taktnummer aus der Historie zu erhalten, aber wie würden Sie die Taktnummer für diesen Code erhalten, wenn Sie die Zeile nach rechts verschieben - jenseits des Nullbalkens?

static string name_vline = "linescr";
//________________________________________________
int init(){
   DrawLine(name_vline,Time[5],Red);
return(0);
}
//________________________________________________
int deinit() {
return(0);
}
//________________________________________________
int start(){
   datetime X;
   X = ObjectGet(name_vline,OBJPROP_TIME1);
   Comment("Координата X = ",iBarShift(NULL,0,X),"\n",
           "Время = ",TimeToStr(X));
return(0);
}
//________________________________________________
void DrawLine(string name, datetime tim, color cl){
   ObjectCreate(name, OBJ_VLINE, 0, tim, Close[0], tim, Close[0]);
   ObjectSet(name, OBJPROP_BACK  , false);
   ObjectSet(name, OBJPROP_COLOR, cl);
   ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID);      
   ObjectSet(name, OBJPROP_WIDTH, 0);
}
 
IgorM:

wie man eine Bar-Nummer bekommt, in der "Zukunft" :)

iBarShift() funktioniert gut, um die Taktnummer aus der Historie zu erhalten, aber wie kann ich die Taktnummer für diesen Code erhalten, wenn ich die Zeile nach rechts verschiebe - über den Nullstrich hinaus?

Sie können einen Offset relativ zu Time[0] erhalten

shift = MathRound((Time[0] - X) / (Period()*60));
 
rlx:

Sie können einen Offset relativ zu Time[0] erhalten

Ich danke Ihnen! Jetzt ist alles in Ordnung!

static string name_vline = "linescr";
//________________________________________________
int init(){
   DrawLine(name_vline,Time[5],Red);
return(0);
}
//________________________________________________
int deinit() {
return(0);
}
//________________________________________________
int start(){
   datetime X;
   X = ObjectGet(name_vline,OBJPROP_TIME1);
   if(X<=Time[0])
         Comment("Координата X = ",iBarShift(NULL,0,X),"\n",  "Время = ",TimeToStr(X));
   else
         Comment("Координата X = ",MathRound((Time[0] - X) / (Period()*60)),"\n","Время = ",TimeToStr(X));
return(0);
}
//________________________________________________
void DrawLine(string name, datetime tim, color cl){
   ObjectCreate(name, OBJ_VLINE, 0, tim, Close[0], tim, Close[0]);
   ObjectSet(name, OBJPROP_BACK  , false);
   ObjectSet(name, OBJPROP_COLOR, cl);
   ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID);      
   ObjectSet(name, OBJPROP_WIDTH, 0);
}