Wie programmiert man? - Seite 170

 
Roger09:
Schauen Sie sich

double NormalizeDouble( double Wert, int Ziffern)

Wenn Sie digits=2 setzen, können Sie sehen, was Sie wollen.

Hallo!

ich glaube, ich habe mich nicht ganz klar ausgedrückt. Zum Beispiel:

- Wenn der aktuelle Kurs 1,3756 ist, sollte der Code 56 zurückgeben.

- Wenn der aktuelle Preis 99,22 ist, sollte der Code 22 zurückgeben

- Wenn der aktuelle Kurs 1,4499 ist, sollte der Code 99 zurückgeben.

Im Grunde versuche ich, den Wert der letzten beiden Ziffern zurückzugeben, unabhängig davon, ob der Kurs 4 oder 2 Dezimalstellen hat.

NomalizeDouble rundet den Preis nur auf die angegebene Stellenplatzierung auf.

Hat jemand eine Idee?

 
musical:
Hi,

Ich glaube, ich habe mich nicht sehr klar ausgedrückt. Zum Beispiel:

- Wenn der aktuelle Kurs 1,3756 ist, sollte der Code 56 zurückgeben.

- Wenn der aktuelle Kurs 99,22 ist, sollte der Code 22 zurückgeben.

- Wenn der aktuelle Kurs 1,4499 ist, sollte der Code 99 zurückgeben.

Im Grunde versuche ich, den Wert der letzten beiden Ziffern zurückzugeben, unabhängig davon, ob der Kurs 4 oder 2 Dezimalstellen hat.

NomalizeDouble rundet den Preis nur auf die angegebene Stellenplatzierung auf.

Hat jemand eine Idee?

ОК

double lasttwonumbers=(Bid-MathFloor(Bid/(Point*100))*Point*100)/Point;

 
1Dave7:
Wie erstelle ich einen EA, der jede offene Ticket-Order von mehreren EAs schließt, wenn der SL 10 Pips oder mehr beträgt?

Dave

<<<

Myfxidea ist Candlestick-Muster Charting-Service und bieten Expert Advisor für mt4

 
Roger09:
ОК double lasttwonumbers=(Bid-MathFloor(Bid/(Point*100))*Point*100)/Point;

Funktioniert wie ein Zauber. Vielen Dank für all Ihre Hilfe

 

Hilfe bei Trailling Stop / 1 Risiko oder Position M

Hallo zusammen,

ich habe versucht, im Forum eine Lösung für mein Problem zu finden:

Am Anfang meines EA:

//---- buy conditions

if(Ask > mybuyconditions)

{

ticket=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-lowestof10bars),((BBupper-BBlower)/(Ask-lowestof10bars))*1000,"Einstieg 1",magic+1,0,Green);

}

//---- sell conditions

if(Bid < mysellconditions)

{

ticket=OrderSend(Symbol(),OP_SELL,LotsShort(),Bid,Spread,Ask+(highestof10bars-Bid),((BBupper-BBlower)/(highestof10bars-Bid))/100,"Einstieg -1",magic-1,0,Red);

}

//----[/CODE]

Stopploss: its easy 10 bars hi/lo

Takeprofit: here i write my formula for my Trailingstop, and that is:

Take the differenz of BBupper - BBlower at the order open time. Then divide by StopLoss in Pips and you have an Factor. Then take the actual BB differenz and divide it by this Faktor. NOW WE HAVE OUR VOLA BB TRAILINGSTOPP!!!!!

SO, my big problem is now to save this FAKTOR!!!! I saved it in th Takeprofit of Ordersend, it works but it is not right!!!!!

And know the 2te Question:

Position Management:

so my order is open and i have my trailing stopp that trails : So and now if the trailingstop is > orderopenprice send next ORDER!!! It's logical because so i can always sicure to risk just my 1 R Risk.

.... if Trailingstopp is > orderopenprice of secondOrder send 3te order.

HERE MY EXAMPLES:

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

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+1)

if(OrderStopLoss()< Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() > OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 1)

{

ticket1=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-Low),((oben-unten)/(Ask-Low))*1000,"Einstieg 2",magic+2,0,Green);

return;

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2 && CalculateCurrentAfterOrders(Symbol()) <= 1)

{

if(OrderStopLoss()<Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() > OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 2)

{

ticket2=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-Low),((oben-unten)/(Ask-Low))*1000,"Einstieg 3",magic+3,0,Green);

return;

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+3 && CalculateCurrentAfterOrders(Symbol()) <= 2)

{

if(OrderStopLoss()< Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

}

}

}

[CODE] if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+1)

{

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() >= OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 1)

{

ticket1=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,0,0,"Einstieg 2",magic+2,0,Green);

return;

}

}

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2)

{

if(OrderStopLoss() >= OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 2)

{

ticket2=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,0,0,"Einstieg 3",magic+3,0,Green);

return;

}

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2)

{

if(CalculateCurrentOrders(Symbol()) == 0)

{

OrderClose(ticket1,OrderLots(),Ask,Spread,Red); return;

}

}

}

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+3)

{

OrderClose(i,OrderLots(),Ask,Spread,Red); return;

}

Ich hoffe jemand kann mir bei diesem Problem helfen!!!!! Vielen Dank an alle.

 

Hinzufügen von Code Wenn die Position gegen Sie geht "x" Pips hinzufügen zusätzliche Menge mit fixedtpsl

Hallo

ich habe eine Menge Studien durchgeführt und herausgefunden, dass es gut sein kann, diese Funktion in meinen EA einzufügen

Wenn die Position gegen Sie "20" Pips geht, fügen Sie ein zusätzliches Lot "0.1" mit eigenem TP und SL Input hinzu

Ist es möglich, dies zu realisieren?

Auch diese Ea ist sehr gut, aber es öffnet nur BUYS

vielleicht ad "verkaufen" Logik

bitte helfen Sie mir

Dateien:
_v1.2.mq4  6 kb
 

Brauche Hilfe bei einem Programmierproblem

Wie kann man Metatrader 4 so programmieren, dass die vorherige Position geschlossen und die neue Position auf dem SELBEN Balken geöffnet wird, wenn man EachTickMode auf false setzt? Wenn Sie EachTickMode auf True setzen, tut er dies automatisch, aber wenn Sie ihn auf false setzen, schließt er die vorherige Position auf einem Balken und wartet dann auf den nächsten Balken, um die neue Position zu öffnen. Ich verwende den

H4-Zeitrahmen und warte 4 weitere Stunden, um eine neue Position zu eröffnen, nachdem das Signal gegeben wurde, ist inakzeptabel. Mein System ist zu empfindlich, um EachTickMode=True zu verwenden. Jede Hilfe, die mir jemand in dieser Angelegenheit geben kann, wäre mir sehr willkommen.

 

Hilfe benötigt, um Ordersend Fehler 130 zu umgehen

Unten ist meine Kauffunktion. Wenn ich die Variable order_type auf 1 (für Market Order) setze, funktioniert sie, also weiß ich, dass meine Funktionen stoploss und takeprofit funktionieren. Das Problem liegt wohl in der Bestimmung des Preises für die op_buylimit-Order. Ich versuche, meinen Auftragspreis zu berechnen, indem ich Ask um einen Prozentsatz der Länge (pct_of_length) des Kerzenkörpers (bei Takt 1) verringere. Ich habe eine Reihe von Kodierungsvarianten ausprobiert (einige davon einschließlich NormalizeDouble), aber ich komme nicht über den Fehler 130 hinaus. Kann mir jemand helfen? Ich verwende IBFX, nebenbei bemerkt.

Vielen Dank im Voraus!

bool place_buy_order() {

int ticket, length_in_pips, offset_in_pips;

double buy_limit_price;

// pct_of_length ist eine externe Ganzzahl, derzeit auf 10 gesetzt

if ( order_type == 2 && pct_of_length > 0 )

{

length_in_pips = MathAbs(High[1]-Low[1]) * MathPow(10,Digits);

offset_in_pips = MathRound(length_in_pips * (pct_of_length/100));

buy_limit_price = Ask - offset_in_pips * Point;

ticket = OrderSend(Symbol(),OP_BUYLIMIT,LotSize(),buy_limit_price,0,stoploss("b",buy_limit_price),takeprofit("b",buy_limit_price),"",MAGICMA,0,Blue);

}

sonst

// Marktauftrag

ticket = OrderSend(Symbol(),OP_BUY,LotSize(),Ask,Slippage,stoploss("b",Ask),takeprofit("b",Ask),"",MAGICMA,0,Blue);

if ( ticket == -1 ) return(false); else return(true);

}

 

Haben Sie versucht, die verschiedenen Variablen, TP, SL usw., auszudrucken und zu sehen, ob sie korrekt gesetzt sind? Das könnte Ihnen einen Anhaltspunkt geben, wo das Problem liegt.

Lux

 
stocktrader24202:
Wie können Sie Metatrader 4 so programmieren, dass er die vorherige Position verlässt und die neue Position auf dem SELBEN Balken öffnet, wenn Sie EachTickMode auf false setzen? Wenn Sie EachTickMode auf True setzen, tut er dies automatisch, aber wenn Sie ihn auf false setzen, schließt er die vorherige Position auf einem Balken und wartet dann auf den nächsten Balken, um die neue Position zu öffnen. Ich verwende den H4-Zeitrahmen, und 4 weitere Stunden zu warten, um eine neue Position zu eröffnen, nachdem das Signal gegeben wurde, ist inakzeptabel. Mein System ist zu empfindlich, um EachTickMode=True zu verwenden. Jede Hilfe, die mir jemand in dieser Angelegenheit geben kann, wäre mir sehr willkommen.

EachTickMode ist eine Variable, die der ursprüngliche Programmierer des EA SPEZIFISCH einfügte, damit Sie wählen können, entweder auf der gleichen Kerze ODER auf der nächsten zu öffnen.

Es klingt wie der EA tut GENAU das, was es für so ich bin nicht sicher, was Ihr Problem ist konzipiert wurde.

Sie sagen, es funktioniert, wie Sie wollen, wenn Sie die Variable auf true so was das Problem? Setzen Sie die Variable einfach auf true.

Lux

Grund der Beschwerde: