Wie programmiert man? - Seite 175

 

Ihr System klingt ein wenig verrückt......

extern double Lots=0.1;

extern int TP=50;

extern int SL=50;

extern int timeframe=1;

extern bool close=false;

extern int Slippage=2;

extern int Magic=46151;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

datetime LastTradeTime = 0;

int start()

{

int time=60*timeframe;

if(LocalTime()-LastTradeTime > time) {

if(close==true) {

if(OrdersTotal()!=0) {

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

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderType()==OP_SELL && OrderMagicNumber()==Magic) { OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage, Green ); }

if(OrderType()==OP_BUY && OrderMagicNumber()==Magic) { OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), Slippage, Red ); }

} } }

OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Ask - SL * Point, Ask + TP * Point, NULL, Magic, 0, Green);

OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, Bid + SL * Point, Bid - TP * Point, NULL, Magic, 0, Red);

LastTradeTime = LocalTime(); }

return(0);

}

Wenn "close" wahr ist, schließt es die offenen Aufträge am Ende des Zeitrahmens (in diesem Fall 1 Minute). SL/TP=100 bedeutet 10pips bei einem 5-stelligen Broker.

Übrigens bin ich mir nicht sicher, ob beide Orders sofort geöffnet werden.

Ist es möglich, gleichzeitig zu schließen und zu öffnen (oder 2 Positionen zu öffnen)?

In Backtests funktioniert das natürlich gut, aber ich weiß nicht, ob es in einem Demo-/Live-Konto funktioniert.

 

Ich habe das noch NIE mit einem Broker hinbekommen...

Ich habe Verzögerungen und Bestätigungscodes hinzugefügt, um zu prüfen, ob Aufträge geschlossen und geöffnet wurden, und wenn nicht, versuche ich es erneut.

Selbst dann funktioniert es immer noch nicht korrekt und konsistent.

 

Dies scheint ein Problem für viele Strategien zu sein. Gibt es jemanden, der eine Lösung für dieses Problem gefunden hat?

 

Trailing-Stop-Problem

Ich habe Yen-Paare, die, wenn ich versuche, meinen Trailing-Stop zu verwenden, meinen Preis auf "Null" verschieben, nachdem ich in den Gewinn gegangen bin. Kann mir jemand sagen, warum das vorkommt und wie man es beheben kann? Die Trail Order funktioniert bei 5-stelligen Währungen einwandfrei.

void TrailOrder(int type)

{

if(NachlaufenderStop>0)

{

if(OrderMagicNumber() == MagicNumber)

{

if(type==OP_BUY)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(Point*TrailingStop),OrderTakeProfit(),0,Green);

}

}

}

if(type==OP_SELL)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(Point*TrailingStop),OrderTakeProfit(),0,Red);

}

}

}

}

}

}

 
ajk:
Ich habe Yen-Paare, die, wenn ich versuche, meinen Trailing-Stop zu verwenden, meinen Preis auf "Null" verschieben, nachdem ich in den Gewinn gegangen bin. Kann mir jemand sagen, warum das auftritt und wie man es beheben kann? Die Trail-Order funktioniert bei 5-stelligen Währungen einwandfrei.

Ich denke (das ist nur meine Meinung), dass es daran liegt, dass Sie eine Funktion haben und diese Funktion nichts über OrderOpenPrice(), OrderStopLoss() usw. weiß. Sie sollten diesen Code besser innerhalb der Schleife einfügen.

 
ajk:
Ich habe Yen-Paare, die, wenn ich versuche, meinen Trailing-Stop zu verwenden, meinen Preis auf "Null" verschieben, nachdem ich in den Gewinn gegangen bin. Kann mir jemand sagen, warum das auftritt und wie man es beheben kann? Die Trailing-Order funktioniert bei 5-stelligen Währungen einwandfrei.

Möglicherweise eine sorgfältige Verwendung von NormalizeDouble(...) würde einen Unterschied machen?

 

Wie kann man zwei Indikatoren mit unterschiedlichen Skalen kreuzen?

Wie kann man zwei Indikatoren mit unterschiedlichen Skalen kreuzen?

Ich möchte Hilfe

 

Ich werde alles ausprobieren. Seine seltsam, weil Coder Guru codiert die ea und ich geändert. Ich schaute durch Tonnen' von ea's und kann nicht alles finden.

 

Gibt es einen Vorschlag, wie man den Code nach der

void TrailOrder(int type)

Funktion aufrufen?

Vielleicht nehmen Sie die Funktion komplett heraus und verwenden Sie externe e trailing ea...argh>!

 
ajk:
Haben Sie einen Vorschlag, wie man den Code nach der

void TrailOrder(int type)

Funktion aufrufen?

Vielleicht die Funktion komplett herausnehmen und ein externes e am Ende des EAs verwenden...argh>!

Wenn Sie wollen, kann ich Ihren EA reparieren. Schicken Sie es mir per PM.