Wie programmiert man? - Seite 69

 

Hallo Wölfe

wolfe:
Ich weiß, dass dieses Thema schon einmal behandelt wurde, aber kann mir jemand einen Code zeigen, der nur 1 Handel pro Bar zulässt? Danke.

Das funktioniert bei mir

datetime LastOpenTime=0;

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

int Bestellung;

for(int t=0;t<OrdersTotal();t++)

{

if(OrderSelect(t, SELECT_BY_POS, MODE_TRADES))

{

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumbers && OrderType() == OP_SELL)

{

if(OrderOpenTime()>LastOpenTime)LastOpenTime=OrderOpenTime();

}

}

}

Dann füge ich es einfach in meinen Code ein

if(LetzteÖffnungszeit0)

{ OrderSend(blah blah

Time[0] ist der Beginn der Kerze Ihres Zeitrahmens, also stellen Sie sicher, dass Sie den richtigen Zeitrahmen wählen.

 
waltini:
Das funktioniert bei mir

datetime LastOpenTime=0;

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

....................

Time[0] ist der Beginn der Kerze Ihres Zeitrahmens. Stellen Sie also sicher, dass Sie den richtigen Zeitrahmen wählen.

Dies ist vielleicht ein bisschen einfacher:

datetime LastOpenTime; //Global var

[/CODE]

[CODE]

int init()

{

LastOpenTime=Time[0];

}

int start()

{

................

if(LastOpenTime!=Time[0])

{

// do your trade code

LastOpenTime=Time[0];

}

..............

return(0);

}

Ihr "Handelscode" wird nur einmalig für eine Kerze ausgeführt. Es wird kein Handel mehr auf dieser Kerze stattfinden, auch wenn Sie Ihren MT4 schließen und ihn wieder einschalten. Aber bitte beachten Sie, wenn Sie den EA bei einer Kerze um 17 Uhr aktivieren, wird auch bei dieser Kerze kein Handel stattfinden, Sie müssen auf die nächste Kerze warten.

 
wolfe:
Ich weiß, dass dieses Thema bereits behandelt wurde, aber kann mir jemand einen Code zeigen, der nur 1 Handel pro Bar zulässt? Danke.

Global, dies vor init() einfügen

datetime PreviousBar;[/CODE]

In the order placement and/or order close stuff, wrap it in this:

if(NewBar() == true)

{

if blah blah blah, gimme pips // not actual functions but you get the idea

if blah blah blah, close orders // um

}

Common function outside main loop:

[CODE]//--- returns true if current bar just formed

bool NewBar()

{

if(PreviousBar<Time[0])

{

PreviousBar = Time[0];

return(true);

}

else

{

return(false);

}

return(false);

}
 

Hilfe bei der Programmierung

Hallo,

Ich habe mich bemüht, einige Dinge zu programmieren, aber ich bin auf eine Mauer gestoßen. Also habe ich etwas ganz einfaches versucht. Wenn ich "Print("Five");" auskommentiere und das Programm teste, druckt es nur "Yahooooooo". (Nun, es druckt auch "Eins"). Wenn ich nun "Print("Five");" auskommentiere, wird nicht einmal "Yahooooooo" gedruckt. Was übersehe ich?

Dateien:
trial.mq4  2 kb
 

Alle schwebenden und offenen Aufträge schließen, wenn 1 Trade den TP erreicht

Hallo,

Ich versuche, einen Code in meinem EA zu schreiben, der alle schwebenden und offenen Aufträge schließt, sobald 1 Trade den TP erreicht hat. Unten ist die Codes, die ich verwendet, scheint nicht zu funktionieren. Kann jemand einen Blick und beraten, was fehlt. Danke!

if( PreviousOpenOrders > OpenOrders )

{

for( cnt = OrdersTotal()-1; cnt >= 0; cnt-- )

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

Modus = OrderType();

if( OrderSymbol() == Symbol() &&

OrderMagicNumber()==Magic)

{

if( mode == OP_BUY ) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Blue);

if( mode == OP_SELL ) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red);

if (mode == OP_SELLLIMIT) OrderDelete(OrderTicket());

if (mode == OP_BUYLIMIT) OrderDelete(OrderTicket());

}

}

}

}

 

Verwenden Sie Bid bzw. Ask anstelle von OrderClosePrice()...

 
ralph.ronnquist:
Verwenden Sie Bid und Ask jeweils anstelle von OrderClosePrice()...

Hallo ralph,

kannst du mir helfen, ein Beispiel zu geben. Danke für die Hilfe.

 
timebandit:
Hallo, ich habe mein Bestes getan, um einige Dinge zu programmieren, aber ich bin auf eine Mauer gestoßen. Also habe ich etwas ganz einfaches versucht. Wenn ich "Print("Five");" auskommentiere und das Programm teste, wird es nur "Yahooooooo" ausgeben. (Nun, es druckt auch "Eins"). Wenn ich nun "Print("Five");" auskommentiere, wird nicht einmal "Yahooooooo" gedruckt. Was übersehe ich?

Wenn Sie keine Klammern verwenden, wird nur eine Zeile ausgeführt. Es hängt davon ab, was Sie tun wollen, aber Sie sollten es so machen:

if(d>5)

{

Print("Five");

Print("Yahoooooooooooooooooooooooo");

}
 

if( mode == OP_BUY ) OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Blue);

if( mode == OP_SELL ) OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Red);

 

Stop einmal verschieben

Hier ist mein Code, um den Stoploss nach einem bestimmten Gewinn auf den Breakeven zu verschieben. Ist daran etwas falsch?

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() == Point * MoveStopWhenPrice) {

OrderModify(OrderTicket(),OrderOpenPrice(), Bid - Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}