Fragen Sie! - Seite 117

 

int start(){

if(TimeCurrent()>D'2008.07.01 12:00:00'){Komment("EXPIRED"); return(0);}

...

return(0);

}

amatrader:
Bitte kann mir jemand sagen, ob es möglich ist, ein Datumslimit in einem EA zu haben, was ich meine, ist, dass ich ein Ablaufdatum in einem EA einstellen kann, das, sobald es das eingestellte Datum erreicht, den Handel einfach beendet.

Wahrscheinlich würde es in etwa so lauten:-

check date, wenn Datum gleich oder größer als (set date) ist, nichts tun.

Das ist die englische Version, ich brauche die MQL4 Version...lol

Danke, wenn jemand helfen kann.
 
amatrader:
Bitte kann mir jemand sagen, ob es möglich ist, ein Datumslimit in einem EA zu haben, was ich meine, ist, dass ich ein Ablaufdatum in einem EA einstellen kann, das, sobald es das eingestellte Datum erreicht, den Handel einfach stoppt.

Wahrscheinlich würde es etwa so lauten:-

check date, wenn Datum gleich oder größer als (set date) ist, nichts tun.

Das ist die englische Version, ich brauche die MQL4 Version...lol

Danke, wenn jemand helfen kann.

Schauen Sie sich diesen Thread an https://www.mql5.com/en/forum/174194

 

Vielen Dank, Sir... Ich weiß das sehr zu schätzen.

 

Wöchentliches Hoch-Tief.

Kann jemand eine wöchentliche High Low Indikator wie die beigefügte für die tägliche posten?

Oder vielleicht ändern Sie die beigefügte zu einer wöchentlichen für mich bitte.

Vielen Dank im Voraus.

Dateien:
 

Verwenden Sie diesen Indikator https://www.mql5.com/en/forum/173574/page32 (er ist täglich, wöchentlich und monatlich).

Oder diesen https://www.mql5.com/en/forum/177792

Oder diesen https://www.mql5.com/en/forum/178698

 

Hallo an alle

Hier ist die ea, die ich verwende. Kann mir bitte jemand sagen, was ich ändern muss, damit ein BUY-STOP und ein SELL_Stop gleichzeitig ausgelöst werden. So wie es jetzt ist, wird entweder ein buy-stop oder ein sell-stop ausgelöst. ich möchte beides haben. Zweitens, was sollte ich tun, um die Anzahl der Aufträge für jede Kerze zu begrenzen.

Ich danke Ihnen allen im Voraus.

Hier ist der Code:

void start() {

//---- prüft auf Historie und Handel

if(Bars<100 || IsTradeAllowed()==false) return;

co=CalculateCurrentOrders(Symbol());

CheckForSignals();

if (co>0) CheckForClose();

CheckForOpen();

co=CalculateCurrentOrders(Symbol());

wenn (mkt>0) {

BreakEvenStop(BreakEven,0);

double pcnt =( (AccountEquity()-AccountBalance()) / Kontostand())*100;

Print("Kontoguthaben = ",Kontoguthaben());

Print("Kontostand = ",Kontostand());

if(pcnt>EquityGainPercent)

{

int total = OrdersTotal();

for(int i=summe-1;i>=0;i--)

{

OrderSelect(i, SELECT_BY_POS);

int type = OrderType();

bool Ergebnis = false;

switch(typ)

{

//Geöffnete Long-Positionen schließen

case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );

Pause;

//Geöffnete Short-Positionen schließen

case OP_SELL : Ergebnis = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Rot );

break;

//Schließen schwebender Aufträge

case OP_BUYLIMIT :

case OP_BUYSTOP :

case OP_SELLLIMIT :

case OP_SELLSTOP : result = OrderDelete( OrderTicket() );

}

if(result == false)

{

Alert("Order " , OrderTicket() , " konnte nicht geschlossen werden. Error:" , GetLastError() );

Sleep(3000);

}

}

Print("ALLE ORDERS CLOSE-->Locked in on Profits");

}

return(0);

}

}

//+------------------------------------------------------------------+

Offene Positionen berechnen //|

//+------------------------------------------------------------------+

int CalculateCurrentOrders(string symbol)

{

int ord; mkt=0;

//----

for(int i=0;i<OrdersTotal();i++) {

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) weiter;

if(OrderSymbol()==Symbol && OrderMagicNumber()==MagicNumber) {

ord++;

if (OrderType()==OP_BUY || OrderType()==OP_SELL) mkt++;

}

}

//---- Auftragsvolumen zurückgeben

return(ord);

}

//+------------------------------------------------------------------+

//| Prüfung auf offene Orderbedingungen |

//+------------------------------------------------------------------+

void CheckForSignals() {

//Prüfung auf Long-, Short- und Exit-Signale

buysig=false;

sellsig=false;

closebuy=false;

closesell=false;

remorder=false;

int isins,isouts,iskeyrev,is2brev;

if (InsideBar) isins=IsInsideBar(shift);

if (OutSideBar) isouts=IsOutSideBar(shift);

if (KeyReversalBar) iskeyrev=IsKeyReversalBar(shift);

if (TwoBarReversal) is2brev=IsTwoBarReversal(shift);

//Long-Entry-Signal-Bedingung

if (isins>0 || isouts>0 || iskeyrev>0 || is2brev>0) {

buysig=true;

closesell=true;

}

//Short-Einstiegssignal

if (isins<0 || isouts<0 || iskeyrev<0 || is2brev<0) {

buysig=false;

sellsig=true;

closebuy=true;

}

if (last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars) {

remorder=true;

}

}

void CheckForOpen() {

int res,tr;

//---- Verkaufsbedingungen

co=CalculateCurrentOrders(Symbol());

if(sellsig && lastsig!=-1) {

co=CalculateCurrentOrders(Symbol());

wenn (co==0) {

res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1);

}

lastsig=-1;

last=Time[0];

zurückgeben;

}

//---- Kaufbedingungen

if(kaufsig && lastsig!=1) {

co=CalculateCurrentOrders(Symbol());

wenn (co==0) {

res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1);

}

last=Time[0];

lastsig=1;

zurückgeben;

}

}

void BreakEvenStop(int BES, int BELP) {

//Verschieben des Stoploss, um einen Gewinn zu sichern

bool bres;

double StopLoss;

wenn ( BES > 2 ) {

for (int i = 0; i < OrdersTotal(); i++) {

if ( OrderSelect (i, SELECT_BY_POS) == false ) continue;

if ( OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber ) continue;

if ( OrderType() == OP_BUY ) {

if ( Bid < OrderOpenPrice()+BES*Point ) continue;

StopLoss = OrderOpenPrice()+BELP*Point;

wenn ( StopLoss > OrderStopLoss() ) {

bres=OrderModify (OrderTicket(), OrderOpenPrice(), StopLoss, OrderTakeProfit(), 0, White);

if (!bres) Print("Fehler beim Ändern der BUY-Order : ",ErrorDescription(GetLastError()));

}

}

if ( OrderType() == OP_SELL ) {

if ( Ask > OrderOpenPrice()-BES*Point ) continue;

StopLoss = OrderOpenPrice()-BELP*Point;

wenn ( StopLoss < OrderStopLoss() ) {

bres=OrderModify (OrderTicket(), OrderOpenPrice(), StopLoss, OrderTakeProfit(), 0, Gold);

if (!bres) Print("Fehler beim Ändern der SELL-Order : ",ErrorDescription(GetLastError()));

}

}

}

}

zurück;

}

int IsKeyReversalBar(int shift) {

//Key Reversal Bar, Der Eröffnungswert des Key Bar sollte mindestens ?pips höher sein als der Höchstwert des vorherigen Bars.

//Der Schluss des Schlüsselbalkens sollte zwischen dem Hoch und dem Schluss des vorherigen Balkens liegen. Der Eröffnungswert des aktuellen Balkens sollte

//niedriger sein als der Schlusskurs des Schlüsselbalkens. Eine SellStop-Order sollte auf dem Tiefpunkt des Schlüsselbalkens platziert werden, wenn sie nicht innerhalb

//innerhalb der nächsten 4 Bars nicht ausgeführt wird, wird die Order storniert. Siehe Abbildung unten - short!

if (Open[shift]=Low[shift+1] && Close[shift]Close[shift]) return(1);

if (Open[shift]>High[shift+1] && Close[shift]=Close[shift+1] && Open[shift-1]<Close[shift]) return(-1);

return(0);

}

int IsTwoBarReversal(int shift) {

//Two Bar Reversal, Die Eröffnung des ersten Balkens sollte in der Nähe des Tiefs des vorherigen Balkens liegen und der Abschluss sollte viel niedriger sein und

//haben eine gute Größe Körper. Der Eröffnungswert des zweiten Balkens sollte sehr nahe am Schlusswert des ersten Balkens liegen, aber beide sollten deutlich unter

//der Mitte jedes Balkens liegen, wobei der Schlusskurs in der Nähe des Tiefs des 2 Balken zuvor liegen sollte. Eine BuyStop-Order sollte beim Höchststand von

//des Balkens 1 platziert werden, wenn sie nicht innerhalb von 4 Balken ausgeführt wird, wird die Order storniert. Siehe Abbildung unten

if (MathAbs(Open[shift+1]-Close[shift+1])> MathAbs(Open[shift+1]-Low[shift+2])<=

MathAbs(Schließen[shift]-Tief[shift+2])<=

MathAbs(Open[shift]-Close[shift+1]) &&

Close[shift+1]<(High[shift+1]+Low[shift+1])/2 &&

Öffnen[shift]<(Hoch[shift]+Tief[shift])/2)

return(1);

if (MathAbs(Open[shift+1]-Close[shift+1])> MathAbs(Open[shift+1]-High[shift+2])<=

MathAbs(Schließen[shift]-Low[shift+2])<=

MathAbs(Open[shift]-Close[shift+1]) &&

Close[shift+1]>(High[shift+1]+Low[shift+1])/2 &&

Öffnen[shift]>(Hoch[shift]+Tief[shift])/2)

return(-1);

return(0);

}

int OpenStop(int mode,double lot, double prc, int SL, int TP) {

int res,tr,col;

string mail;

double openprice,sl,tp,stlev;

tries=0;

stlev=(1+MarketInfo(Symbol(),MODE_STOPLEVEL)))*Point;

while (res<=0 && tries<OrderTriesNumber) {

tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(2000); }

RefreshRates();

wenn (Modus==OP_SELLSTOP) {

if (prc<=Bid-stlev) openprice=prc;

sonst openprice=Bid-stlev;

if (SL>0) sl=offenerPreis+SL*Punkt;

if (TP>0) tp=openprice-TP*Point;

col=Rot;

} sonst

wenn (mode==OP_BUYSTOP) {

wenn (prc>=Ask+stlev) openprice=prc;

sonst openprice=Ask+stlev;

if (SL>0) sl=offenerPreis-SL*Punkt;

wenn (TP>0) tp=offener Preis+TP*Point;

col=Blau;

} else return;

Print(Ask," ",Bid," " ",Symbol()," ",mode," ",lot," ",openprice," ",sl," ",tp," ");

res=OrderSend(Symbol(),mode,lot,openprice,slippage,sl,tp,EAName+"_"+MagicNumber,MagicNumber,0,col);

versucht++;

}

if (res<=0) Print("Fehler beim Eröffnen einer Pending Order : ",ErrorDescription(GetLastError()));

return(res);

}

void CheckForClose() {

bool bres; int tr;

for(int i=0;i<OrdersTotal();i++) {

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;

if(OrderMagicNumber()!=MagicNumber || OrderSymbol()!=Symbol()) continue;

//---- Auftragsart prüfen

if(OrderType()==OP_BUY && closebuy) {

bres=CloseAtMarket(OrderTicket(),OrderLots());

weiter;

}

if(OrderType()==OP_SELL && closesell) {

bres=CloseAtMarket(OrderTicket(),OrderLots());

fortfahren;

}

if(OrderType()==OP_BUYSTOP && (closebuy || remorder)) {

bres=DeletePending(OrderTicket());

fortfahren;

}

if(OrderType()==OP_SELLSTOP && (closesell || remorder)) {

bres=DeletePending(OrderTicket());

fortfahren;

}

}

}

bool DeletePending(int ticket) {

bool bres=false; int tr;

tries=0;

while (!bres && tries<OrderTriesNumber) {

bres=AuftragLöschen(ticket);

tries++;

tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(2000); }

}

if (!bres) Print("Fehler beim Löschen der Bestellung : ",ErrorDescription(GetLastError()));

return(bres);

}

 

Kennt jemand den Code, damit ein EA nur mit einer bestimmten Kontonummer funktioniert? Danke!

 

Es ist hier https://www.mql5.com/en/forum/174194 (Beitrag #7)

 

Du hast zu viele davon

}
 
newdigital:
Sie ist hier https://www.mql5.com/en/forum/174194 (Beitrag #7)

Danke newdigital.

Ich habe meinen Initialisierungscode (der eine Zeitspanne enthält) wie folgt eingerichtet:

int init()

{if (TimeCurrent()>D'2008.06.07 12:00:00'){Comment("Bitte erneuern Sie Ihr Abonnement"); return(0);}

return(0);

}

}

if (Konto != Kontonummer()){

Comment("Handel auf Konto : "+Kontonummer()+" VERBOTEN!");

return(0);

}else {Kommentar("");}

Und jetzt erhalte ich diesen Fehler:

'}' - unausgewogene Klammern

Was mache ich hier falsch? Passt auch "int Account = 111111;" zu den Einstellungen des EA? Danke!