Wie programmiert man? - Seite 58

 

Ich dachte, ich hätte das Problem gelöst, aber nein.

Was ich versuche, ist ein Kommentar im Diagramm und im Journal, der angibt, welche Eingabebedingung verwendet wurde, um die aktuelle Position zu öffnen.

Wurde das schon einmal gemacht und wie macht man das? Ich versuche es schon eine Weile, aber ohne Erfolg, und es ist nicht so einfach, wie ich dachte.

Unten ist mein letzter Versuch.

Jede Hilfe wäre großartig

buysig = Long || Long2 || Long3 || Long4;

sellsig = Short || Short2 || Short3 || Short4;

closebuy=sellsig;

closesell=buysig;

if (curprof>=AccountEquity()*ProfitExit/100.0) {

exit=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) {

if ( Short == true)Print(" Short Signal genommen ");

if ( Short2 == true)Print(" Short2-Signal aufgenommen ");

if ( Short3 == true)Print(" Short3-Signal erfasst ");

if ( Short4 == true)Print(" Short4-Signal erfasst ");

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

co=CalculateCurrentOrders(Symbol());

if(buysig && lastsig!=1) {

if ( Long == true) Print(" Long Signal genommen ");

if ( Long2 == true)Print(" Long2-Signal erfasst ");

if ( Long3 == true)Print(" Long3-Signal erfasst ");

if ( Long4 == true)Print(" Long4-Signal erfasst ");

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;

}

}

bool CloseAtMarket(int ticket,double lot) {

//Fehlertolerantes Schließen der Marktorder

bool bres=false; int tr;

tries=0;

while (!bres && tries<OrderTriesNumber) {

RefreshRates();

bres=OrderClose(Ticket,Lot,OrderClosePrice(),Slippage,White);

tries++;

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

}

if (!bres) Print("Fehler beim Schließen der Order : ",ErrorDescription(GetLastError()));

}

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;

wenn (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);

 

Diese EA wird nicht einmal kompilieren, Stoploss sollte die geringste Ihrer Sorgen sein. Es gibt 5 Variablen, die zufällige Leerzeichen in ihnen haben oder der erste Buchstabe ist nicht groß geschrieben!

 
jturns23:
Diese EA wird nicht einmal kompilieren, Stoploss sollte das geringste Ihrer Sorgen sein. Es gibt 5 Variablen, die zufällige Leerzeichen in ihnen haben oder der erste Buchstabe ist nicht groß geschrieben!

Hier die korrigierte Version.

Aber das kann immer noch keine Position zu öffnen, weil es keine Logik in den Code für entscheiden, wie lange / kurze Positionen zu öffnen.

 
 

Hilfe bei diesem EA

Michel:
Wer ist dieser CHinGsMAroonCLK?

Wie ich mich erinnere, ist dieser EA nichts anderes als 10p3 von elCactus, aber vielleicht bin ich falsch...

Schauen Sie in seinem Thread nach, dort finden Sie wahrscheinlich, was Sie suchen: https://www.mql5.com/en/forum/174975

Ok.. so jetzt die Sache ist ich kann y setzen einen Stoploss für diese EA.. was der Code? kann mir helfen? thanx

 

keine Handelszone - Code-Hilfe

Hallo zusammen,

Ich versuche, einen Code zu optimieren, aber nach viel Mühe, die ich noch nicht bekommen konnte es richtig... wenn einer von euch dont mind können Sie einen Blick auf diese haben... schätzen.

Die Idee ist, den nächsten Handel zu stoppen, wenn der Preisbereich in der gleichen Zone wie der vorherige Handel liegt. Der Long-Handel prüft die Zone für den letzten OPEN POSITION Long-Handel, und der Short-Handel prüft die Zone für den letzten OPEN POSITION Short-Handel.

D.h. wenn der erste LONG-Handel bei 1.4000 stattfindet, dann wird der zweite LONG-Handel nur dann ausgelöst, wenn sich der Preis aus der Zone (20 Pips Zone) unter 1.3990 && über 1.4010 bewegt

Vielen Dank an alle.

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

//| Filter für Seitwärtsmärkte - Verhinderung von Mehrfachtrades in ähnlicher Preisspanne und Schaffung einer No-Trade-Zone |

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

extern int Zone1 = -10; // (untere Zone)

extern int Zone2 = 10; // (obere Zone)

// Handelsverbotszone zwischen -10 und +10 vom vorherigen Handel

bool CheckZone(int type)

{

int cnt = OrdersTotal();

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

{

if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;

if (OrderSymbol() != Symbol()) continue;

if (OrderMagicNumber() != Magic) continue;

if (OrderType() != Typ) continue;

wenn (Typ == OP_BUY)

{

if( (Bid - OrderOpenPrice()) > Zone1*Point && (Bid - OrderOpenPrice()) < Zone2*Point ) return(false);

}

if (type == OP_SELL)

{

if( (OrderOpenPrice()-Ask) > Zone1*Point && (OrderOpenPrice()-Ask) < Zone2*Point ) return(false);

}

}

return(true);

}

 

Lösen Sie das EA-Problem

Hallo an alle MQL Programmierer,

Bitte überprüfen Sie den folgenden Code und sagen Sie mir, warum dies nicht platzieren die Trades auf meinem Demo-Konto. Seine gute EA auf GJ 1m aber leider seine nicht funktioniert. Kann jemand es bitte beheben und es als fehlerfreien EA nutzbar machen.

Ich bin dankbar im Voraus!

Mit freundlichen Grüßen.

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

extern int Länge1 = 3;

extern int Länge2 = 10;

extern int Länge3 = 16;

double Histo[];

double MaHisto[];

double up[];

double dn[];

double upMode[];

double dnMode[];

int alertBar;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

int start()

{

int limit;

int counted_bars=IndicatorCounted();

if(gezählte_Balken<0) gezählte_Balken=0;

if(gezählte_Balken>0) gezählte_Balken--;

limit=Balken-gezählt_Balken;

for(int i = 0 ;i <= limit ;i++)Histo = iMA(Symbol(),0,Length1,0,MODE_EMA,PRICE_CLOSE,i) - iMA(Symbol(),0,Length2,0,MODE_EMA,PRICE_CLOSE,i);

for(int j = 0 ;j <= limit ;j++)MaHisto[j] = iMAOnArray(Histo,0,Length3,0,MODE_EMA,j);

for(int m = 0 ;m <= limit ;m++)

{

if(MaHisto[m+1] 0)

{

up[m] = Open[m]-(5*Point);

if(Bars > alertBar && m == 0)

{

//Alert(Symbol()+""+Period()+" KI LONG ",Ask);

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,25,15,0,0,0,Red);

alertBar = Bars;

}

}

else if(MaHisto[m+1] >= 0 && MaHisto[m]< 0)

{

dn[m] = Open[m]+(5*Punkt);

if(Bars > alertBar && m == 0)

{

OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,Red);

alertBar = Bars;

}

}

sonst

{

up[m] = EMPTY_VALUE;

dn[m] = EMPTY_VALUE;

}

if( MaHisto[m] > 0 )

{

upMode[m] = High[m];

dnModus[m] = Niedrig[m];

}

else if( MaHisto[m] < 0 )

{

dnMode[m] = High[m];

upMode[m] = Low[m];

}

}

return(0);

}

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

 
arsenic786:
Hallo an alle MQL-Programmierer,

Bitte überprüfen Sie den folgenden Code und sagen Sie mir, warum dies nicht platzieren die Trades auf meinem Demo-Konto. Seine gute EA auf GJ 1m aber leider seine nicht funktioniert. Kann jemand es bitte beheben und es als fehlerfreien EA nutzbar machen.

Ich bin dankbar im Voraus!

Mit freundlichen Grüßen.

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

extern int Länge1 = 3;

extern int Länge2 = 10;

extern int Länge3 = 16;

double Histo[];

double MaHisto[];

double up[];

double dn[];

double upMode[];

double dnMode[];

int alertBar;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

int start()

{

int limit;

int counted_bars=IndicatorCounted();

if(gezählte_Balken<0) gezählte_Balken=0;

if(gezählte_Balken>0) gezählte_Balken--;

limit=Balken-gezählte_Balken;

for(int i = 0 ;i <= limit ;i++)Histo = iMA(Symbol(),0,Length1,0,MODE_EMA,PRICE_CLOSE,i) - iMA(Symbol(),0,Length2,0,MODE_EMA,PRICE_CLOSE,i);

for(int j = 0 ;j <= limit ;j++)MaHisto[j] = iMAOnArray(Histo,0,Length3,0,MODE_EMA,j);

for(int m = 0 ;m <= limit ;m++)

{

if(MaHisto[m+1] 0)

{

up[m] = Open[m]-(5*Point);

if(Bars > alertBar && m == 0)

{

//Alert(Symbol()+""+Period()+" KI LONG ",Ask);

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,25,15,0,0,0,Red);

alertBar = Bars;

}

}

else if(MaHisto[m+1] >= 0 && MaHisto[m]< 0)

{

dn[m] = Open[m]+(5*Punkt);

if(Bars > alertBar && m == 0)

{

OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,Red);

alertBar = Bars;

}

}

sonst

{

up[m] = EMPTY_VALUE;

dn[m] = EMPTY_VALUE;

}

if( MaHisto[m] > 0 )

{

upMode[m] = High[m];

dnModus[m] = Niedrig[m];

}

else if( MaHisto[m] < 0 )

{

dnMode[m] = High[m];

upMode[m] = Low[m];

}

}

return(0);

}

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

"OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,R ed); "

Sie verkaufen zum Ask-Kurs, sollte Bid sein.

Das Feld Comment sollte "" sein, nicht 0.

25 als SL sollte Bid+25*Punkt sein.

15 als TP sollte Bid-15*Point sein.

"R ed" ist keine Farbe.

 
Michel:
"OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,R ed); "

Sie verkaufen zum Ask-Preis, sollte Bid sein.

Das Feld Comment sollte "" lauten, nicht 0.

25 als SL sollte Bid+25*Punkt sein.

15 als TP sollte Bid-15*Point sein.

"R ed" ist keine Farbe.

Vielen Dank für Ihre Unterstützung!

Aber, ich bin immer noch Probleme Null Wissen von MQL. Können Sie bitte kopieren Sie den Code in mq4 Datei und testen Sie es auf Demo und dann sagen Sie mir, wenn es funktioniert gut. Ihre Unterstützung wird als freundlichste Hilfe Michel gezählt werden.

Mit besten Grüßen,

Kashif.

 

Nein, tut mir leid, ich habe im Moment nicht genug Zeit.

In ein paar Stunden nehme ich ein Boot, um zu meiner Familie für Weihnachten zurückzufahren ... und keinen PC mehr...