Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 512

 
woin2110:

wenn ((hi-low)<=max_koridor_v_punktah)
{
int buy = OrderSend(Symbol(), OP_BUYSTOP, LotBuy, OpenBuy, 0, StopLossBuy, 0);//Kaufauftrag eröffnen.

wenn (Kauf>0)
{
Alert ("Die BuyStop-Order wurde gesetzt ",buy);
}
int sell= OrderSend(Symbol(), OP_SELLSTOP, LotSell, OpenSell, 0, StopLossSell, 0);//Offener Verkaufsauftrag.
wenn (Verkauf>0)
{
Alert ("SellStop order set ",sell);
}
if (DayOfWeek()==5 && Hour()==22) //Löschen von ausstehenden und offenen Aufträgen am Freitag, 23:00 Serverzeit
{
if (OrderSelect(sell,SELECT_BY_TICKET)==true)
{
OrderClose(sell,OrderLots(),Bid,3,Green);//(Ticket,Lot,Close price,Slippage in Pips,Farbe des Close-Pfeils auf dem Chart){ Close market order to sell.
OrderDelete(sell);//Schließen des Verkaufslimits.
}
if (OrderSelect(buy,SELECT_BY_TICKET)==true)
{
OrderClose(buy,OrderLots(),Ask,3,Red);//(Ticket,Lot,Schlusskurs,Slippage in Punkten,Farbe des Schlusspfeils auf dem Chart)/Schlussmarktauftrag zum Kauf.
OrderDelete(buy);//Schließen des Kauflimits.
zurück(0);
}
}
}

Wer kann mir sagen, warum es Aufträge nicht schließt und Limits nicht löscht?


Kaufauftrag zum Geldkurs schließen, Verkauf zum Briefkurs.
 
isn-88:

Kaufauftrag zum Geldkurs schließen, Verkauf zum Briefkurs.
danke
 
AlexeyVik:
Einfache Bedingung in init-Funktion
Metalle, Vorräte und Rohstoffe zählen nicht.

Danke. Können Sie mir sagen, wie das am einfachsten geht? Ich muss wissen, ob es offene Positionen für dieses Paar gibt oder nicht. ob es Verkaufsaufträge und Kaufaufträge gibt. Das bedeutet, dass wir uns

0 - wenn es keine offenen Aufträge gibt

1 Ich habe Verkaufsaufträge, aber keine Kaufaufträge.

2 - es gibt Kaufaufträge, aber keine Verkaufsaufträge

3 - es gibt beides...

 
woin2110:

https://docs.mql4.com/ru/series

if(TagderWoche()==1,2..... && Stunde()==1,2....)
{
double hi=iHigh(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//define high
double low=iLow(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//define low.

/////////////////////////////////////////////////////////////////////////////////////////////////

double op=iOpen(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//define opening.


Ich danke Ihnen!
 
Zolotai:

Danke. Können Sie mir sagen, wie das am einfachsten geht? Ich muss wissen, ob es offene Positionen für dieses Paar gibt oder nicht. ob es Verkaufsaufträge und Kaufaufträge gibt. Das bedeutet, dass wir uns

0 - wenn es keine offenen Aufträge gibt

1 Ich habe Verkaufsaufträge, aber keine Kaufaufträge.

2 - es gibt Kaufaufträge, aber keine Verkaufsaufträge

3 - es gibt beides.

Zum Beispiel so:

int i_buy=0;

int i_sell=0;

//--- получим количество открытых и отложенных ордеров

int total=OrdersTotal();

for(int i=0;i<total;i++)

{

//--- выберем i-й ордер из списка торговли

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

{

//--- если ордер открыт по текущему финансовому инструменту

if(OrderSymbol()==Symbol())

{

switch(OrderType())

{

//--- Бай ордер

case OP_BUY:

i_buy++;

break;

//--- Селл ордер

case OP_SELL:

i_sell++;

break;

case OP_BUYSTOP:

case OP_BUYLIMIT:

case OP_SELLSTOP:

case OP_SELLLIMIT:

//--- пробойники, лимитники

break;

}

}

}

}


if(i_buy==0 && i_sell==0)

{

//--- нет открытых ордеров

}

if(i_buy>0 && i_sell==0)

{

//--- открыты баи

}

if(i_buy==0 && i_sell>0)

{

//--- открыты селы

}

if(i_buy>0 && i_sell>0)

{

//--- открыты и баи и селы

}

 
isn-88:

Zum Beispiel so:



Ich danke Ihnen vielmals. Soweit ich weiß, ist asc der aktuelle Preis. Ich eröffne einen Auftrag, obwohl es keine offenen Aufträge gibt. Die Schleife geht vom ersten bis zum letzten offenen Auftrag? Wie kann ich das Lot des letzten offenen Auftrags und dessen Preis in eine Variable übertragen?
 
Zolotai:

Ich danke Ihnen vielmals. Soweit ich weiß, ist asc der aktuelle Preis. Ich eröffne einen Auftrag, obwohl es keine offenen Aufträge gibt. Die Schleife geht vom ersten bis zum letzten offenen Auftrag? Wie kann ich das Lot des letzten offenen Auftrags und dessen Preis in eine Variable setzen?

https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots

double z; //eine Variable "z" deklarieren.
double y; //die Variable "y" deklarieren


if(OrderSelect(10,SELECT_BY_POS)==true) //wenn die Bestellung (nach Ticket) bereits ausgewählt ist

{

OrderLots()=z //Zuweisung des Loses für diesen Auftrag an die Variable "z".

OrderOpenPrice()=y //Zuweisung des Eröffnungskurses an die Variable "y".

}

Versuchen Sie dies

 
woin2110:

https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots

double z; //die Variable "z" deklarieren
double y; //die Variable "y" deklarieren


if(OrderSelect(10,SELECT_BY_POS)==true) //wenn die Bestellung (nach Ticket) bereits ausgewählt ist

{

OrderLots()=z //Zuweisung des Loses für diesen Auftrag an die Variable "z".

OrderOpenPrice()=y //Zuweisung des Eröffnungskurses an die Variable "y".

}

Versuchen Sie dies

y = OrderOpenPrice();


Ups, ich hab's, verstehe es nur nicht. if((i_buy==0 && i_sell==0) || y > Step). Sollte eine weitere Order eröffnen, wenn der Abstand zur letzten offenen Order mehr als 5 Pips beträgt. Aber es funktioniert nicht, Frage.

for(int i=0;i<total;i++) Es geht von der ersten geöffneten Bestellung bis zur letzten? Das heißt, ich sollte letztendlich den Preis der zuletzt eröffneten Bestellung erhalten.

 
Zolotai:

y = OrderOpenPrice();


Ich verstehe if((i_buy==0 && i_sell==0) || y > Step) nicht. Sollte eine weitere Order eröffnen, wenn der Abstand zur letzten offenen Order mehr als 5 Pips beträgt. Aber es funktioniert nicht, Frage.

for(int i=0;i<total;i++) Es geht von der ersten geöffneten Bestellung bis zur letzten? Mit anderenWorten, ich sollte den Preis des zuletzt eröffneten Auftrags erhalten.


Ich weiß es nicht, ich bin noch nicht darauf gestoßen.
 

Hallo. Ich habe einen Beitrag auf https://forum.mql4.com/ru/51490/page2 gesehen, in dem es ein Skript gibt, das das EA-Einstellungsfenster öffnet:

Mit diesem Befehl wird das EA-Einstellungsfenster geöffnet:

//+------------------------------------------------------------------+
//|                                                      EaSetup.mq4 |
//+------------------------------------------------------------------+
//|                                                      EaStart.mq4 |
//|                                 Copyright © 2010, XrustSolution. |
//|                                           mail: xrustx@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, XrustSolution."
#property link      "mail: xrustx@gmail.com"
#import "user32.dll"
   int   RegisterWindowMessageA(string lpstring);
   int   PostMessageA(int  hWnd,int  Msg,int  wParam,string lParam);
#import
#define WM_COMMAND      0x0111
//+------------------------------------------------------------------+
void start(){Sleep(200);PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33048, 0);return;}
//+------------------------------------------------------------------+ 

Ist es möglich, dass das Skript das EA-Einstellungsfenster in 1-Sekunden-Intervallen öffnet und sofort bestätigt (Taste ok) und so weiter?

Grund der Beschwerde: