[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 174
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
>> Bitte beraten Sie mich. Ich habe einen Expert Advisor in einem Fenster (z.B. USDJPY) und brauche ihn, um Pfeile(ObjectCreate) zu einem bestimmten Zeitpunkt in anderen geöffneten Fenstern zu setzen, z.B. AUDUSD, EURUSD usw.
Wenn Sie in der ObjectCreate-Hilfe nachsehen, können Sie deutlich sehen, dass sie nur innerhalb eines einzelnen geöffneten Charts funktioniert, auf dem sich der Indikator oder Expert Advisor befindet. Die Ausgabe kann die Übertragung von Daten an den Expert Advisor im gewünschten Fenster über die globalen Variablen oder eine Datei sein.
Wenn Sie in der ObjectCreate-Hilfe nachsehen, können Sie deutlich sehen, dass sie nur innerhalb eines einzelnen geöffneten Charts funktioniert, auf dem sich der Indikator oder Expert Advisor befindet. Die Ausgabe kann die Übertragung von Daten an den Expert Advisor im gewünschten Fenster über die globalen Variablen oder eine Datei sein.
Das heißt, es gibt keine Möglichkeit, dies von einem anderen Fenster aus zu tun? >> Danke.
Wie kann diese Funktion zur Änderung ausstehender Aufträge über externe Variablen deaktiviert werden?
Wie kann diese Funktion zur Änderung ausstehender Aufträge über externe Variablen deaktiviert werden?
>> etwa so.
Ich danke Ihnen! Vinin!
>> Ich werde es versuchen.)
Programmierer, bitte helfen Sie mir, ich brauche einen EA, der Aufträge öffnet, auch wenn sie bereits offen sind. Dies ist ein Channel EA. Jedes Mal, wenn eine Linie eine der Linien berührt, sollte die entsprechende Order eröffnet werden. Ich möchte mich im Voraus bei Ihnen bedanken.
//+------------------------------------------------------------------+
//| TradeChannel.mq4 |
//| Copyright © 2005, Yuri Makarov |
//| http://mak.tradersmind.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Yuri Makarov"
#property link "http://mak.tradersmind.com"
extern double Lots = 1.0;
extern int Slippage = 5;
extern int TimeOut = 10000;
double SetLevel(double Level, double NewLevel, string ObjName, int Style)
{
switch (Style)
{
case 1: // Buy Order line
ObjectSet(ObjName,OBJPROP_COLOR,Blue);
ObjectSet(ObjName,OBJPROP_STYLE,STYLE_SOLID);
ObjectSet(ObjName,OBJPROP_WIDTH,2);
break;
case 2: // Sell Order line
ObjectSet(ObjName,OBJPROP_COLOR,Red);
ObjectSet(ObjName,OBJPROP_STYLE,STYLE_SOLID);
ObjectSet(ObjName,OBJPROP_WIDTH,2);
break;
case 3: // Buy Stop line
ObjectSet(ObjName,OBJPROP_COLOR,Blue);
ObjectSet(ObjName,OBJPROP_STYLE,STYLE_DASH);
ObjectSet(ObjName,OBJPROP_WIDTH,1);
break;
case 4: // Sell Stop line
ObjectSet(ObjName,OBJPROP_COLOR,Red);
ObjectSet(ObjName,OBJPROP_STYLE,STYLE_DASH);
ObjectSet(ObjName,OBJPROP_WIDTH,1);
break;
case 5: // Buy Take line
ObjectSet(ObjName,OBJPROP_COLOR,Blue);
ObjectSet(ObjName,OBJPROP_STYLE,STYLE_DOT);
ObjectSet(ObjName,OBJPROP_WIDTH,1);
break;
case 6: // Sell Take line
ObjectSet(ObjName,OBJPROP_COLOR,Red);
ObjectSet(ObjName,OBJPROP_STYLE,STYLE_DOT);
ObjectSet(ObjName,OBJPROP_WIDTH,1);
break;
}
if (MathAbs(NewLevel - Close[0]) < MathAbs(Level - Close[0])) return (NewLevel);
else return (Level);
}
int start()
{
int NumObj = ObjectsTotal();
double Spread = Ask - Bid;
double pBuy = 0;
double pSell = 0;
double pBuyStop = 0;
double pBuyTake = 0;
double pSellStop = 0;
double pSellTake = 0;
for (int i = 0; i < NumObj; i++)
{
string ObjName = ObjectName(i);
string ObjDesc = ObjectDescription(ObjName);
double Price = 0;
switch (ObjectType(ObjName))
{
case OBJ_HLINE:
Price = ObjectGet(ObjName,OBJPROP_PRICE1);
break;
case OBJ_TREND:
Price = ObjectGetValueByShift(ObjName,0);
break;
}
if (Price > 0)
{
if (ObjDesc == "Buy") pBuy = SetLevel(pBuy, Price, ObjName, 1); else
if (ObjDesc == "Sell") pSell = SetLevel(pSell, Price, ObjName, 2); else
if (ObjDesc == "Stop")
{
if (Price < Close[0]) pBuyStop = SetLevel(pBuyStop, Price, ObjName, 3);
else pSellStop = SetLevel(pSellStop, Price, ObjName, 4);
} else
if (ObjDesc == "Take")
{
if (Price > Close[0]) pBuyTake = SetLevel(pBuyTake, Price, ObjName, 5);
else pSellTake = SetLevel(pSellTake, Price, ObjName, 6);
}
}
}
int NumOrders = OrdersTotal();
int NumPos = 0;
for (i = 0; i < NumOrders; i++)
{
OrderSelect(i, SELECT_BY_POS);
if (OrderSymbol() != Symbol()) continue;
NumPos++;
double tp = OrderTakeProfit();
double sl = OrderStopLoss();
if (OrderType() == OP_BUY)
{
if (Bid > pSell && pSell > 0)
{
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Red);
Sleep(TimeOut);
return(0);
}
if (MathAbs(tp - pBuyTake) > Spread || MathAbs(sl - pBuyStop) > Spread)
{
OrderModify(OrderTicket(), Ask, pBuyStop, pBuyTake, 0);
Sleep(TimeOut);
return(0);
}
}
if (OrderType() == OP_SELL)
{
if (Ask < pBuy)
{
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Red);
Sleep(TimeOut);
return(0);
}
if (MathAbs(tp - pSellTake) > Spread || MathAbs(sl - pSellStop) > Spread)
{
OrderModify(OrderTicket(), Bid, pSellStop, pSellTake, 0);
Sleep(TimeOut);
return(0);
}
}
}
if (NumPos > 0) return(0);
if ((pSell - pBuy) < Spread*2) return(0);
if (Bid > pSell && pSell > pBuyStop)
{
OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, pSellStop, pSellTake);
Sleep(TimeOut);
return(0);
}
if (Ask < pBuy && (pBuy < pSellStop || pSellStop == 0))
{
OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, pBuyStop, pBuyTake);
Sleep(TimeOut);
return(0);
}
}
int init()
{
return(0);
}
int deinit()
{
return(0);
}
Höchstwahrscheinlich werden Sie durch diese Zeile behindert:
Wir können damit beginnen. Dies sollte entfernt werden.
UND Trennen Sie den Kauf- und Verkaufseinstiegsmechanismus. Nehmen Sie die Funktion von I.Kim (fügen Sie sie ganz am Ende des Codes ein)
Dann ist die Bedingung für die Eröffnung der Transaktion "Kaufen":
Und die Bedingung für die Eröffnung eines Verkaufsgeschäfts:
Dieses Problem wurde wahrscheinlich schon vor 2003 gelöst, aber da jemand anderes es nicht weiß, werde ich es mitteilen)))
Klicken Sie mit der rechten Maustaste auf das Diagramm - wählen Sie Eigenschaften - Registerkarte Allgemein - markieren Sie Feste Skala - OK
Bewegen Sie dann den Mauszeiger über die Preisskala, klicken Sie mit der linken Maustaste und halten Sie sie gedrückt, bewegen Sie die Maus nach oben/unten, um die Skala anzupassen.
Vielleicht haben Sie es im Hauptfenster, so dass Sie nicht lange suchen müssen.
Kanal EA
Ich möchte den EA auffordern, Aufträge zu öffnen, auch wenn sie bereits offen sind. Dies ist ein Kanal EA, jedes Mal, wenn eine Linie oder andere berührt wird, sollte die entsprechende Bestellung geöffnet werden. Ich denke, dass dieser EA einen Auftrag eröffnet und keinen weiteren eröffnet, bis er geschlossen wird.
Ich habe das getan, was ich in dem Beitrag oben beschrieben habe. Ich habe die Funktion "Anzahl der Positionen" eingefügt und den Block "Positionseröffnung" am Ende durch diesen ersetzt:
Jetzt kann EA mindestens 2 Positionen gleichzeitig halten.
Tut mir leid, ich kann es nicht testen, weil Sie vergessen haben, den Indikator, der die Kanäle zeichnet, anzuhängen.