Wie programmiert man? - Seite 110

 

Hallo!

Ich freue mich darauf, deine Tricks zu lernen und dir meine zu zeigen.

 
CodeMuncher:
Hallo. Ich freue mich darauf, Ihre Tricks zu lernen und Ihnen meine zu zeigen.

In diesem Forum findest du eine Menge toller Sachen.

Lies und benutze die Suchfunktion ohne jede Einschränkung!!!

Fühlen Sie sich frei, alles zu fragen ... Hier gibt es eine Menge großartiger Mitwirkender/Helfer.

FerruFx

 
fireslayer26:
In diesem Code ist der Trailing-Stop auf 45 Pips eingestellt. Aber der Trailing-Stop scheint nicht aktiviert zu werden, bis er sich um 45 Pips bewegt. Wie müsste ich es ändern, um den Trailing-Stop zu aktivieren, wenn der Handel platziert wird?

extern string Remark1 = "== Main Settings ==";

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = true;

extern double Lots = 4;

extern int Slippage = 2;

extern bool UseStopLoss = false;

extern int StopLoss = 100;

extern bool UseTakeProfit = false;

extern int TakeProfit = 15;

extern bool UseTrailingStop = true;

extern int TrailingStop = 45;

extern bool MoveStopOnce = False;

extern int MoveStopWhenPrice = 50;

extern int MoveStopTo = 1;

extern int MaxConcurrentTrades = 2;

//Version 2.01

int BarCount;

int Current;

bool TickCheck = False;

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

//| expert initialization function |

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

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);

}

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

//| expert deinitialization function |

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

int deinit() {

return(0);

}

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

//| expert start function |

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

int start()

{

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

Order = SIGNAL_NONE;

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

//| Variable Begin |

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

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

//| Variable End |

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

//Check position

bool IsTrade = False;

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

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {

IsTrade = True;

if(OrderType() == OP_BUY) {

//Close

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

//| Signal Begin(Exit Buy) |

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

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

//| Signal End(Exit Buy) |

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

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

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

if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {

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

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderStopLoss() > Point * TrailingStop) {

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

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

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

} else {

//Close

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

//| Signal Begin(Exit Sell) |

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

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

//| Signal End(Exit Sell) |

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

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {

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

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

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

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

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

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

}

}

}

Geändert in Rot

 

Ich habe die Änderungen in rot, aber jetzt die EA doesnt scheinen zu arbeiten. Ich werde den ganzen EA posten, damit Sie einen Blick darauf werfen können. Danke!

Dateien:
williams_ea.mq4  12 kb
 

Stellen Sie sicher, dass Sie () nach orderstoploss einfügen

 

Cool, das war's!

Wie wäre es mit diesem Indikator....

Könnte er so modifiziert werden, dass die Preise je nach Eröffnungszeitpunkt unterschiedliche Farben aufweisen? Zum Beispiel, wenn er höher als der vorherige Balken eröffnet, wäre der Preis grün, wenn er niedriger ist, dann rot und wenn er gleichmäßig ist, dann gelb? Und diese Farben können ausgewählt werden? Könnten Sie es auch erweitern, um 10 Eröffnungen statt nur 6 anzuzeigen?

Wie würde ich bei dem EA, den wir gerade repariert haben, eine Eingabeeinstellung wie "Pips to Activate Trailing Stop" vornehmen? Ich habe dies in einem anderen EA aber unsicher, wie es zu codieren.

Dateien:
period_open.mq4  23 kb
 

BestellungKommentar()

BestellungTicket()

BestellungLose()

BestellungStopLoss()

BestellungGewinnmitnahme()

OrderOpenTime()

Dies sind alles potenzielle Tools zur Auftragsfilterung.

Was macht diese spezifischen Trades sonst noch einzigartig?

 
Ronald Raygun:
BestellungKommentar()

OrderTicket()

BestellungLose()

BestellungStopLoss()

BestellungGewinnmitnahme()

OrderOpenTime()

Dies sind alles potentielle Werkzeuge zum Filtern von Aufträgen.

Was macht diese speziellen Berufe noch einzigartig?

Zwei der wichtigsten für die Filterung von Aufträgen sind OrderSymbol() und OrderMagicNumber(). Ein weiteres erwähnenswertes Werkzeug ist OrderComment().

Am besten geben Sie einen dieser Befehle in den Metaeditor ein, klicken dann auf das Wort asnd und drücken dann F1. Dadurch wird die Hilfe angezeigt und alle Bestellfunktionen aufgelistet.

Viel Spaß beim Programmieren,

Hiachiever

 

OrderComment verwenden

Seien Sie vorsichtig, wenn Sie OrderComment() zur Identifizierung von Geschäften verwenden. Manchmal fügt der Broker dem Kommentar Zeichen hinzu.

Am besten ist es, Folgendes zu verwenden

if (StringFind(OrderComment(), UserComment, 0) > 0)

{

// Order identifiziert durch UserComment in OrderComment gefunden

}

anstelle von

if (Bestellkommentar() == Benutzerkommentar)

{

// Auftrag könnte durch UserComment identifiziert werden

// wenn OrderComment nicht vom Broker geändert wurde

}

Robert

 

Schließen von Geschäften bei beakeven

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