Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1618

 
Vitaly Muzichenko #:

Sie können dies auf diese Weise tun, ohne Bibliotheken zu verwenden

Ich danke Ihnen!

 
MakarFX #:
Der Markt ist jetzt geschlossen, TimeCurrent() ändert sich nicht. Prüfen Sie Krypto, es funktioniert an Wochenenden

Warum sollte man es von der Zecke abhängig machen? Die Schaltfläche sollte nicht von ihnen abhängen.

 

Hallo.

Ich möchte einige Strategien testen, die niemand seit mehr als 2 Monaten hat.

Ich verstehe, dass die Volumina groß sind, deshalb erlauben die Makler keinen Download. Nur Basispaare.

Vielleicht hat jemand noch welche in den Ordnern auf dem Server? Mindestens 1 Jahr lang.

 
Die Frage ist geklärt.
 
Hallo! Beschlossen, hier zu schreiben ... vielleicht wird jemand antworten!!! In CodeBase ... vor langer Zeit war es ... wurde der Indikator gelegt ... weder der Name nicht erinnern ... noch der Autor. Das Wesen der es war dies ... Manuell setzen Sie die horizontale Linie ... und es zeigt, wie oft der Preis überquerte die Linie in eine und andere Richtungen ... und zeigt Statistiken über diesen Preis ... Piped zweimal 66 Seiten, konnte aber nicht finden ... kann jemand erinnern oder haben alle!!! BITTE braucht es dringend!!!
 
Sinax #:
Hallo! Beschlossen, hier zu schreiben ... vielleicht wird jemand antworten!!! In CodeBase ... vor langer Zeit war es ... wurde der Indikator gelegt ... weder der Name nicht erinnern ... noch der Autor. Das Wesen der es war dies ... Manuell setzen Sie die horizontale Linie ... und es zeigt, wie oft der Preis überquerte die Linie in eine und andere Richtungen ... und zeigt Statistiken über diesen Preis ... Piped zweimal 66 Seiten, konnte aber nicht finden ... kann jemand erinnern oder haben alle!!! BITTE braucht es dringend!!!
Das nicht:
?

 
Sergey Gridnev #:
Nicht das:
?

Nein, ist es nicht...die für MT4 war...Danke)))

 

Guten Tag an alle!!!!

Können Sie bitte helfen Sie mir schreiben Code für Gitter EA, das Prinzip der Schließung des Gitters ist einfach alle Aufträge mit einem Gewinn auf alle Aufträge mit einem Verlust plus einen Gewinn aus dem Break-even-Preis.

Ich versuche, eine Idee zu verwirklichen, um nur Min- und Max-Aufträge im Raster bei einem bestimmten Drawdown-Level zu mitteln und zu schließen und so den Drawdown-Level zu reduzieren.

Hier ist ein Teil des Codes für die Eröffnung von Sammelaufträgen:

if (CountTrade() < MaxOrders)

{

int order_type = FindLastOrderType();

if (Auftragsart == OP_BUY)

{

Preis = FindLastOrderPrice(OP_BUY);

if(Ask<= Preis - (NormalizeDouble(ATR/ DivisorVolatility/Point, 0)*Point))

{

lastlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2);

ticket = OrderSend(Symbol(), OP_BUY, lastlot, Ask, slip, 0, 0, "Group Order", Magic, 0, Blue);

wenn (Ticket < 1)

Print ("Fehler beim Kaufauftrag");

ModifyOrders(OP_BUY);

}

}

if (Auftragsart == OP_SELL)

{

Preis = FindLastOrderPrice(OP_SELL);

if(Bid>= Preis + (NormalizeDouble(ATR/ DivisorVolatility/Point, 0)*Point))

{

lastlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2);

ticket = OrderSend(Symbol(), OP_SELL, lastlot, Bid, slip, 0, 0, "Group Order", Magic, 0, Red);

wenn (Ticket < 1)

Print ("Fehler beim Verkaufsauftrag!");

ModifyOrders(OP_SELL);

}

}

}

Hier ist der Teil des Codes, in dem der Befehl zum Ändern von Aufträgen kommt. Hier habe ich die Änderung von Aufträgen durch "Alle Aufträge mit Gewinn und alle Aufträge mit Verlust" und "Durchschnittliche Min- und Max-Aufträge" gekreuzt.

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

//| Änderung der Bestellung |

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

void ModifyOrders(int otype)

{

doppelt

BuyPriceMax = 0, BuyPriceMin = 0, BuyPriceMaxLot = 0, BuyPriceMinLot = 0,

SelPriceMin = 0, SelPriceMax = 0, SelPriceMinLot = 0, SelPriceMaxLot = 0;


int

BuyPriceMaxTic = 0, BuyPriceMinTic = 0, SelPriceMaxTic = 0, SelPriceMinTic = 0;


doppelt

op = 0, lt = 0, order_lots = 0;


int

tk = 0, b = 0, s = 0;

Preis = 0;tp = 0;


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

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if(OrderMagicNumber() == Magic)

if(OrderSymbol() == Symbol() && OrderType() == otype)

{

op = NormalizeDouble(OrderOpenPrice(), Digits())

lt = NormalizeDouble(OrderLots(), 2);

tk = OrderTicket();

if(otype == OP_BUY)

{

b++;

if(op > BuyPriceMax || BuyPriceMax == 0)

{

BuyPriceMax = op;

KaufPreisMaxLos = lt;

BuyPriceMaxTic = tk;

}

if(op < BuyPriceMin || BuyPriceMin == 0)

{

KaufPreisMin = op;

KaufPreisMinLos = lt;

KaufPreisMinTic = tk;

}

}

if(otype == OP_SELL)

{

s++;

if(op > SelPriceMax || SelPriceMax == 0)

{

SelPriceMax = op;

SelPriceMaxLot = lt;

SelPriceMaxTic = tk;

}

if(op < SelPriceMin || SelPriceMin == 0)

{

SelPreisMin = op;

SelPriceMinLot = lt;

SelPriceMinTic = tk;

}

}

wenn (otype == OP_BUY || otype == OP_SELL)

{

Preis += OrderOpenPrice() * OrderLots();

order_lots += OrderLots();

}

}

//*************************************************************//

double AwerageBuyPrice = 0, AwerageSelPrice = 0, avg_price = 0;

if(b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

WertBuyPrice = NormalizeDouble((BuyPriceMax*BuyPriceMaxLot + BuyPriceMin*BuyPriceMinLot)/

(BuyPriceMaxLot + BuyPriceMinLot) + TakeProfitMinMaxOrder* Point(), Digits());

if(s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

AwerageSelPrice = NormalizeDouble((SelPriceMax * SelPriceMaxLot + SelPriceMin * SelPriceMinLot)/

(SelPriceMaxLot + SelPriceMinLot) - TakeProfitMinMaxOrder* Point(), Digits());

wenn (Drawdown < DrawdownClosingMinMaxOrder)

avg_price = NormalizeDouble(price / order_lots, Digits);

//*************************************************************//

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

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if(OrderMagicNumber() == Magic)

if(OrderSymbol() == Symbol())

{

op = NormalizeDouble(OrderOpenPrice(), Digits())

tp = NormalizeDouble(OrderTakeProfit(), Digits())

lt = NormalizeDouble(OrderLots(), 2);

tk = OrderTicket();


if(otype == OP_BUY && b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

{

if(tk == BuyPriceMaxTic || tk == BuyPriceMinTic)

if(Gebot < WertersatzKaufpreis && tp != WertersatzKaufpreis)

if(!OrderModify(tk, op, OrderStopLoss(), AwerageBuyPrice, 0, clrRed))

Print("OrderModify error #", GetLastError());


if(tk != BuyPriceMaxTic && tk != BuyPriceMinTic && tp != 0)

if(!OrderModify(tk, op, 0, 0, 0, clrRed))

Print("OrderModify error #", GetLastError())

}

if(otype == OP_SELL && s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

{

if(tk == SelPreisMaxTic || tk == SelPreisMinTic)

if(Ask > AwerageSelPrice && tp != AwerageSelPrice)

if(!OrderModify(tk, op, OrderStopLoss(), AwerageSelPrice, 0, clrRed))

Print("OrderModify error #", GetLastError());


if(tk != SelPriceMaxTic && tk != SelPriceMinTic && tp != 0)

if(!OrderModify(tk, op, 0, 0, 0, clrRed))

Print("OrderModify error #", GetLastError());

}

wenn (Drawdown < DrawdownClosingMinMaxOrder)

if (otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder*Point, Digits);

if (otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder*Point, Digits);

{

if(OrderModify(OrderTicket(), OrderOpenPrice(), 0, tp, 0))

Print("Aufträge erfolgreich geändert!");

else Print("Fehler bei der Auftragsänderung!");

}

}

}

Das Ergebnis ist wie folgt: Die Änderung von Sammelaufträgen bis zum zulässigen Drawdown-Niveau erfolgt auf normale Weise, und nach dem zulässigen Drawdown-Niveau werden sie gemittelt und schließen min und max wie erwartet,

Aber wenn der Drawdown gesunken ist, will der neue TakeProfit nicht gesetzt werden.

Hier ist das Protokoll mit den Fehlercodes.

Wenn Sie nicht wissen, was Sie mit diesem Fehler machen sollen, keine Sorge, ich werde Ihnen helfen!

 
EVGENII SHELIPOV #:

Guten Tag an alle!!!!

Verwenden Sie

 
MakarFX #:

Verwenden Sie

Können Sie das genauer erläutern?