
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
Michel,
Vielen Dank, dass Sie sich die Zeit genommen haben, sich den Code anzusehen und zu antworten. Manchmal braucht es nur ein weiteres Paar Augen! Sie hatten Recht, dass der Fehler in der Division durch 0 mit einem fehlenden Balken lag. Jetzt ist alles in Ordnung.
BW
Code-Erklärung - Ind-Fractals-1
kann jemand erklären, wie die Fraktale in diesem(https://c.mql5.com/forextsd/forum/165/ind-fractals-1.mq4) Indikator bestimmt werden. ich habe bemerkt, dass wie normale Fraktale sie gibt es eine Verzögerung zwischen dem Wendepunkt und die tatsächliche Fraktal gezeichnet wird, aber ich würde gerne wissen, wie lange diese Verzögerung ist. ich denke, ein 15min Fraktal ist 40-50 1min Bars gezeichnet, nachdem der Punkt festgelegt ist. ich habe auch bemerkt, dass die Farbe der Fraktale ändern (obwohl ihre Position nicht), wie einige 15min Fraktale 1hr Fraktale werden.
Wie kodiere ich das Folgende?
Hallo zusammen,
Ich bin ein Neuling auf metatrader 4. Ich weiß nicht viel über die Codierung in mt4.
Ich möchte, dass Metatrader einen Alarm ausgibt, wenn
1. 30 Periode einfache gleitende Durchschnitt steigt über 60 Periode einfache gleitende Durchschnitt.
2. 30 Periode einfacher gleitender Durchschnitt fällt unter 60 Periode einfacher gleitender Durchschnitt.
Kann mir jemand helfen, den Code hier zu posten?
Vielen Dank!
Hallo zusammen,
Ich bin ein Neuling auf metatrader 4. Ich weiß nicht viel über die Codierung in mt4.
ich möchte, dass metatrader eine Warnung ausgibt, wenn
1. 30 Periode einfacher gleitender Durchschnitt über 60 Periode einfacher gleitender Durchschnitt steigt.
2. 30 Periode einfacher gleitender Durchschnitt fällt unter 60 Periode einfacher gleitender Durchschnitt.
Kann mir jemand helfen, den Code hier zu posten?
vielen DankWarum nicht diesen Code verwenden? Geben Sie Ihren MA ein und wählen Sie 0 für den einfachen Durchschnitt.
Vielen Dank~~
Warum nicht diese verwenden? setzen Sie in Ihrem MA und wählen Sie 0 für einfache, gibt Ihnen Linien und Pfeile
Hallo, ich möchte das Signal kommen, wenn die 2 saubere Kerze nach der cross over.thx im Voraus beendet worden ist
Bitte helfen Sie, meinen Code zu korrigieren
Zunächst einmal, ich glaube, dieser Code ist sehr praktisch, viele ppl wird es lieben. Also bitte helfen Sie mir, ihn zu verbessern.
In der Tat, dieser Code funktioniert bereits großartig. Aber ich bin einfach müde von der einfachen Alert-Popup, mit NO Symbol angezeigt. Also habe ich einige Zeilen geändert/hinzugefügt, um zu versuchen, was der %%%%%%%%% Teil ist.
Ich weiß nicht, warum, drucken, kommentieren... was auch immer, nichts passiert.
Und seltsamerweise kann man im Teil "----alert----" sehen, dass ich UPBREAK alert in etwas anderes geändert habe, aber es wird immer noch "UP BREAK" angezeigt. ---- Ich bin mir sicher, dass ich jedes Mal, wenn ich den Code umschreibe, ihn kompiliere, aus dem Diagramm lösche und ihn dann wieder lade.
Irgendeine Idee?
#property indicator_chart_window
#import "usr32.dll" // %%%%%%%%%%
int MessageBoxA(int hWnd,string lpText,string lpCaption,int uType); //%%%%%%%%%%
#import //%%%%%%%%%%
int PrevAlertTime = 0;
int init()
{
return(0);
}
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
int start()
{
int i=ObjectsTotal();
int redtotal=0,j,typ1;
double price1,price2,up,down;
color col;
string name1,name2,nameup,namedown,warn1,sym=Symbol();
warn1=sym + "Break Up"; //%%%%%%%%%%
Print(sym); //%%%%%%%%%%%
//----make sure exactly 2 red lines on chart---------------------
for (j=0; j<i; j++)
if(ObjectGet(ObjectName(j),OBJPROP_COLOR)==255 && ObjectType(ObjectName(j))==OBJ_TREND)
{ redtotal++;
if (redtotal==1) name1=ObjectName(j);
if (redtotal==2) name2=ObjectName(j);
}
if (redtotal==2)
{
if(ObjectFind("remind")==0) ObjectDelete("remind");
}
else
{
ObjectCreate("remind",OBJ_LABEL,0,0,0);
ObjectSet("remind", OBJPROP_XDISTANCE,0);
ObjectSet("remind", OBJPROP_YDISTANCE,20);
ObjectSetText("remind", "Keep exactly 2 red lines on chart" ,16,"Times New Roman",Blue);
return(0); // question here: what should I use, 0 or -1 ?
}
//--------decide which line is up / down ---------------------
price1=NormalizeDouble(ObjectGetValueByShift(name1,1),
MarketInfo(Symbol(),MODE_DIGITS));
price2=NormalizeDouble(ObjectGetValueByShift(name2,1),
MarketInfo(Symbol(),MODE_DIGITS));
if (price2>=price1)
{
nameup=name2; namedown=name1;
up=price2; down=price1;
}
else
{ nameup=name1; namedown=name2;
up=price1; down=price2;
}
//-------- alert ----------------------------------------------
if (TimeCurrent() - PrevAlertTime > Period()*60/3)
{
if (Close[1]up)
{ MessageBoxA(NULL,"tupole","11111",0); // %%%%%%%%%%
Print(Symbol()); // %%%%%%%%%%
PrevAlertTime = TimeCurrent();
}
if (Close[1]>=down && Close[0]<down)
{ Alert("DOWN BREAK",Symbol());
PrevAlertTime = TimeCurrent();
}
}
return(0);
}
Ich habe gefunden, was falsch ist:
Normalerweise erstelle oder bearbeite ich einen Code mit: "Metaeditor---datei---neu/öffnen..."
Aber ich habe gerade herausgefunden: nachdem ich den Code an das Diagramm angehängt habe, und dann einige Änderungen in diesem Code vorgenommen habe, wirken sich weitere Änderungen nicht mehr auf das Diagramm aus (sicherlich habe ich sie kompiliert!)----- aber "Metaeditor---Navigator---Dateien---mein Code..." schon! Das ist seltsam, es sollte derselbe Code sein!
Hilfe bei Trail-Code
{
if (byPips >=5)
{
for (int i = 0; i < OrdersTotal(); i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName)) ) // only look if mygrid and symbol...
{
if (OrderType() == OP_BUY) {
//if (Bid > (OrderValue(cnt,VAL_OPENPRICE) + TrailingStop * Point)) {
// OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet);
// break;
//}
if (Bid - OrderOpenPrice() > byPips * MarketInfo(OrderSymbol(), MODE_POINT)) {
if (OrderStopLoss() < Bid - byPips * MarketInfo(OrderSymbol(), MODE_POINT)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - byPips * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);
}
}
} else if (OrderType() == OP_SELL) {
if (OrderOpenPrice() - Ask > byPips * MarketInfo(OrderSymbol(), MODE_POINT)) {
if ((OrderStopLoss() > Ask + byPips * MarketInfo(OrderSymbol(), MODE_POINT)) ||
(OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(),
Ask + byPips * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);
}
}
}
}
}
}
} // proc TrailIt()Das ist der Code. Wie in der Anlage zu sehen ist, wird bei einem Auftrag die Haltestelle geändert, aber auch in die falsche Richtung, und ich kann es nicht beheben. Ich wäre Ihnen wirklich dankbar, wenn Sie mir bei der Suche nach der Lösung helfen könnten!!!
Versuchen Sie dies. Es sieht so aus, als ob Sie möglicherweise versuchen, Aufträge mit verschiedenen Symbolen zu ändern. Wenn dies der Fall ist, beziehen Bid und Ask die Marktdaten nur von dem Symbol des Chart-Fensters, an das der EA angehängt ist. Mit MarketData(Symbol, MODE_BID) können Sie die entsprechenden Daten abrufen.
{
if (byPips >=5)
{
for (int i = 0; i < OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
double bid=MarketInfo(OrderSymbol(),MODE_BID);
double ask=MarketInfo(OrderSymbol(),MODE_ASK);
if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName)) ) // only look if mygrid and symbol...
{
if (OrderType() == OP_BUY)
{
if (bid - OrderOpenPrice() >= byPips * MarketInfo(OrderSymbol(), MODE_POINT))
{
if (OrderStopLoss() < bid - byPips * MarketInfo(OrderSymbol(), MODE_POINT)|| (OrderStopLoss() == 0))
{
OrderModify(OrderTicket(), OrderOpenPrice(), bid - byPips * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);
}
}
}
else if (OrderType() == OP_SELL)
{
if (OrderOpenPrice() - ask >= byPips * MarketInfo(OrderSymbol(), MODE_POINT))
{
if ((OrderStopLoss() > ask + byPips * MarketInfo(OrderSymbol(), MODE_POINT)) || (OrderStopLoss() == 0))
{
OrderModify(OrderTicket(), OrderOpenPrice(),ask + byPips * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);
}
}
}
}
}
}
return;
}