Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Unbekannte Teilfensternummer
Hallo, liebe Programmierer
Hat jemand eine Lösung für dieses Problem mit iCustom-Aufrufen? Ich habe alles ausprobiert, was mir einfällt, aber ich habe immer noch dieselbe Meldung auf der Registerkarte Experten.
Unbekannte Unterfensternummer -1 für die Funktion ObjectCreate
Mit freundlichen Grüßen CJA
Entfernen Sie die Subwindow-Aufrufe im Indikator
Hallo liebe Coderkollegen
Hat jemand eine Lösung für dieses Problem mit iCustom-Aufrufen? Ich habe alles ausprobiert, was mir einfällt, aber ich habe immer noch dieselbe Meldung auf der Registerkarte Experten.
Unbekannte Subwindow-Nummer -1 für ObjectCreate-Funktion
Mit freundlichen Grüßen CJAHallo CJA!
ich habe eine Lösung, mit der ich dieses Problem umgehen kann.
Der Indikator, den Ihr EA im iCustom aufruft, versucht, ein Unterfenster zu finden, um seine Objekte zu zeichnen.
In den meisten Fällen muss Ihr Indikator nichts zeichnen, sondern nur die Indikatorwerte an Ihren EA weitergeben.
Meine Lösung besteht darin, eine Kopie des Indikators zu erstellen und die Aufrufe des Unterfensters und die Routinen zum Zeichnen von Objekten zu löschen.
Dadurch werden die Subwindow-Fehler beseitigt und der EA läuft auch schneller.
Verwenden Sie dann diesen neuen Indikatornamen in Ihren iCustom-Anweisungen für Ihren EA.
Ich bin mir sicher, dass es eine bessere Lösung gibt, aber bei mir funktioniert es so.
Hoffentlich hilft das,
Robert
iCustom Unterfenster-Fehler
Hallo CJA,
Ich habe eine Lösung, die ich verwende, um dieses Problem zu umgehen.
Der Indikator, den Ihr EA im iCustom aufruft, versucht, ein Unterfenster zum Zeichnen seiner Objekte zu finden.
In den meisten Fällen muss Ihr Indikator nichts zeichnen, sondern nur die Indikatorwerte an Ihren EA weitergeben.
Meine Lösung besteht darin, eine Kopie des Indikators zu erstellen und die Aufrufe des Unterfensters und die Routinen zum Zeichnen von Objekten zu löschen.
Dadurch werden die Subwindow-Fehler beseitigt und der EA läuft auch schneller.
Verwenden Sie dann diesen neuen Indikatornamen in Ihren iCustom-Anweisungen für Ihren EA.
Ich bin mir sicher, dass es eine bessere Code-Lösung gibt, aber bei mir funktioniert das.
Hoffentlich hilft das,
RobertDanke Robert - dein Vorschlag funktioniert, aber ich vermute, dass es noch eine andere Möglichkeit gibt, obwohl ich im Netz gesucht habe und keine funktionierenden oder sinnvollen Lösungen gefunden habe, nur eine Menge Fragen und keine Antworten. Also noch einmal vielen Dank für Ihre Hilfe.
Mit freundlichen Grüßen CJA
CJA
Nur ein Vorschlag: Warum verwenden Sie nicht (beim Aufruf mit iCustom()) einen Parameter zur Übergabe der gewünschten Fensternummer? So etwas wie: wenn (ParameterWindowID>=0), dann ist es von iCustom, ansonsten wird ein Standardcode ausgeführt.
Auf diese Weise könnte man das Zeichnen von Objekten erzwingen, auch wenn es von einem anderen Code aufgerufen wird, und es würde die Objekte an der richtigen Stelle zeichnen.
Hilfe bei der Codierung
Hallo Leute.
Kann mir jemand sagen, ob es möglich ist, BOLD textFONTtype in einem E-Mail-Warnbericht zu verwenden? Wenn ja, wie kann ich dies codieren?
Vielen Dank für die Hilfe.
Meinen Sie, wie man in eine CSV-Datei speichert?
Prüfen Sie das:
Werkzeuge - .csv-ReaderHallo, Guru,
Kann ich diese Dll irgendwo von Ihrer Website herunterladen? Ich denke, dies ist ein hervorragendes Tool und ich bin mir ziemlich sicher, dass Sie es besser schreiben können als ich, also werde ich mich nicht damit herumschlagen. Vielen Dank im Voraus.
Muss ich mich registrieren? Es befindet sich im Download-Bereich, aber ich konnte nicht herausfinden, wie man etwas herunterlädt.
schnelle EA-Änderung
Hallo!
Ich brauche etwas Hilfe, ich habe versucht, den Code unten zu ändern, aber der EA stürzte immer wieder MT4 ab.
Ich möchte, dass die Bestellung zu schließen, wenn der aktuelle bar (also die Bar, wo die Bestellung ausgeführt wurde) schließt. Grundsätzlich wird ein Balken gehandelt.
Dies ist der ursprüngliche Code, er handelt von Signal zu Signal.
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
if (signaldown!=EMPTY_VALUE&&signaldown!=0) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| 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;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > 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) |
//+------------------------------------------------------------------+
if (signalup!=EMPTY_VALUE&&signalup!=0) Order = SIGNAL_CLOSESELL;
//+------------------------------------------------------------------+
//| 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;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
//if (timeprev!=Time[0]){
// timeprev = Time[0];
if (signalup!=EMPTY_VALUE&&signalup!=0)
{
Order = SIGNAL_BUY;
}
if (signaldown!=EMPTY_VALUE&&signaldown!=0){
Order = SIGNAL_SELL;
}
// }
//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+
//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (100 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//Sell
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (100 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("SELL order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Error opening SELL order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
//+------------------------------------------------------------------+Kann mir jemand weiterhelfen?
Ich habe auch diesen Code gefunden,
if(data!=iTime(Symbol(),0,0))
{
if(signalup!=EMPTY_VALUE&&signalup!=0)
{
if(openpos()>0)
{
for(i=0;i<OrdersTotal();i++)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()==OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==mn)
{
if(OrderClose(OrderTicket(),lots,Ask,slip))
Print("short was closed");
}
}
}
Print("try open long");
Print(Symbol());
nt=OrderSend(Symbol(),OP_BUY,lots,Ask,slip,0,0,"ab",mn,0,Green);
if(nt>0)
Print("long order was opened");
}
if(signaldown!=EMPTY_VALUE&&signaldown!=0)
{
if(openpos()>0)
{
for(i=0;i<OrdersTotal();i++)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()==OP_BUY&&OrderSymbol()==Symbol()&&OrderMagicNumber()==mn)
{
if(OrderClose(OrderTicket(),lots,Bid,slip))
Print("long was closed");
}
}
}
Print("try open short");
Print(Symbol());
nt=OrderSend(Symbol(),OP_SELL,lots,Bid,slip,0,0,"ab",mn,0,Red);
if(nt>0)
Print("short was opened");
}
data=iTime(Symbol(),0,0);
}
//----
//----
return(0);
}
//+------------------------------------------------------------------+
int openpos()
{
int j=0;
int i,n;
n=OrdersTotal();
for(i=0;i<n;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==mn&&(OrderType()==OP_SELL||OrderType()==OP_BUY))
j++;
}
return(j);
Kann mir ein Experte sagen, welcher besser geschrieben ist?
Deckungsbeitrag für alle Bestellungen eines Paares (Magie)
Hallo zusammen,
ich möchte alle Orders (Kauf&Verkauf) eines Paares per Magic sammeln und wenn sie einen Breakeven erreichen, sollen alle Orders geschlossen werden.
Jeder Hinweis ist sehr willkommen, danke
extern bool PairBreakeven=true;// Breakeven pro Paar alle Orders desselben Paares/Magic
extern double Pairbreakevengain=6;// Gewinn in Pips, der erforderlich ist, um den Break-Even zu erreichen
extern double Pairbreakeven=3;// Break Even, Order geschlossen, 3 Pip Gewinn/Verlust
double Pairmovebreakeven;
if(PairBreakeven==true){
if(Pairbreakevengain>0)Pairmovebreakeven(Pairbreakevengain,Pairbreakeven);
CloseBuyOrders(Magic);
CloseSellOrders(Magic);
}
void Pairmovebreakeven(double Pairbreakevengain,double Pairbreakeven){
RefreshRates();
if(OrdersTotal()>0){
for(int i=OrdersTotal();i>=0;i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic ){
zurück;
}
}
}
}
int CloseBuyOrders(int Magic){ //op_sell ist ähnlich
int total=BestellungenGesamt();
for(int cnt=Gesamt-1;cnt>=0;cnt--){
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==Magic && OrderSymbol()==Symbol()){
if(OrderType()==OP_BUY){
OrderClose(OrderTicket(),OrderLots(),Bid,3*mt);
}
}
}
return(0);
}
ArraySort mit 3 oder mehr Dimensionen.
Kann jeder Experte in diesem helfen?
Ich habe versucht, mit Arraysort erfolgreich für 1 oder 2 Dimension Array. Aber stecken geblieben mit der 3 Dimension. Soweit ich weiß, verwendet arraysort nur die erste Spalte für die Sortierung. Kann jemand beraten, wie man diese Arraysortierung mit 3 oder mehr Dimensionen lösen?
bool Restart = true;
double arraystore[20][20][20];
double ArrayActual[20] = {1.23,3.65,0.02,5.44,0.92,0.11,1.21,999.0,555.5,0.0001,44.221,1.01,0.002};
void init()
{
if (Restart == true)
{
Go();
Restart = false;
}
}
void start()
{
}
void Go()
{
for (int a = 1; a<=3; a++)
{
for (int b = 1; b<=6; b++)
{
int c = b+ (a-1)*6;
arraystore[a][0] = ArrayActual[c];
arraystore[a][1] = a;
arraystore[a][2] = b +a;
Print ( arraystore[a][0] + " . " + arraystore[a][1] + " . " + arraystore[a][2]);
}
}
ArraySort(arraystore,WHOLE_ARRAY,1,MODE_DESCEND);
for ( a = 1; a<=3; a++)
{
for ( b = 1; b<=6; b++)
{
Print ( arraystore[a][0] + " . " + arraystore[a][1] + " . " + arraystore[a][2]);
}
}
}