Hilfe bei der Codierung - Seite 188

 

Hallo mladen oder jemand,

Ich merke, dass mt4-Plattform hat einige Standard-Indikatoren (obwohl einige in benutzerdefinierten Indikatoren Teil wiederholen,), aber der Code, den ich denke, ist nicht genau das gleiche, wie abrufen oder sehen den Code dieser Standard-Indikatoren, vielen Dank für mich informieren.

 
kenwa:
hallo mladen oder jemand, ich bemerke, dass mt4-Plattform hat einige Standard-Indikatoren (obwohl einige sind wiederholen in benutzerdefinierte Indikatoren Teil,), aber der code, den ich denke, ist nicht genau das gleiche, wie abrufen oder sehen Sie den code von diesen Standard-Indikatoren, vielen Dank für mich informieren.

Sie können nicht

Diese sind in Indikator gebaut (direkt durch das Terminal ausgeführt)

 

scheint diese eingebauten Indikatoren sind besser als die in benutzerdefinierten Indikator Sitzung in Funktion, wirklich keine Möglichkeit, den Code von ihnen wissen?

 

Jemand hat mich gefragt, wie ich das Multi-Time-Framing aus einer einzigen Datei verwende (wenn es nicht möglich ist, eingebaute Funktionen aufzurufen)

Hier ist ein einfaches Beispiel und einige Erklärungen dazu

_____________________________

Der angehängte Indikator verhält sich wie 3 Indikatoren in einem und im Code finden Sie Kommentare, was wann gemacht wird. Ich hoffe, dass dies einigen Leuten hilft, zu verstehen, wie ein korrekter Multi-Time-Frame-Indikator in einer einzigen Datei erstellt werden kann (der, unter anderem, immer die korrekte Anzahl von Balken berechnet, ohne anzunehmen, wie viele Balken im Ziel-Zeitrahmen geändert wurden).

Dieser einfache Single-File-Multi-Time-Frame-Indikator kann also leicht als Vorlage für Multi-Time-Frame-Indikatoren verwendet werden

Dateien:
 

Hallo mladen,

wissen Sie, ist es möglich und wie zu tun iStochasticOnArray? jede Vorlage oder Formeln zu tun, dass? danke für informieren.

 
kenwa:
Hallo mladen, wissen Sie, ob und wie man iStochasticOnArray verwenden kann? Gibt es dafür eine Vorlage oder eine Formel? Danke für die Informationen.

kenwa

So etwas wie eine eingebaute Funktion gibt es nicht. In diesen Beiträgen können Sie sehen, wie eine entsprechende Funktion geschrieben werden kann und wie sie dann verwendet werden kann: https: //www.mql5.com/en/forum/177239/page34

 

hallo mladen:

ein bisschen tiefgründig für mich

z.B.double iStoch(double priceR, double priceH, double priceL, int period, int slowing, int i, int instanceNo=0) ist das ein double innerhalb von double? kann diese methode den indexbuffer im mq4 reduzieren?

Ich finde die Funktion etwas seltsam :

stoch = iStoch(rsi,rsi,rsi,StoPeriod,StoSlowing,i);

Vielen Dank für einige klären.

 
mladen:
Ich weiß nicht, warum es die andere wav-Datei nicht akzeptiert.

Wenn Sie es im Code geändert haben, sollte es akzeptiert werden.

Um ihn 5 Mal zu wiederholen, sollten Sie ihn in eine Schleife setzen, aber das könnte Probleme verursachen (wenn die Datei zu lang ist)

Hier ist der Code, den ich verwendet habe (ich weiß sehr wenig über Programmierung, um zu wissen, wie man Schleifen macht):

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

#Eigenschaft copyright "https://www.forex-tsd.com"

#property link "https://www.forex-tsd.com"

#property indicator_chart_window

//-----------------------------------------------------------------

extern int alertsForNotOlderThan = 300;

extern int alertsForMagicNumber = 0;

extern string alertsForSymbol = "";

extern bool alertsOn = true;

extern bool alertsSound = true;

extern bool alertsMessage = true;

extern bool alertsNotification = false;

extern bool alertsEmail = false;

//-------------------------------------------------------

//

//-------------------------------------------------------

//

//

//

//

//

int tickets[];

bool alerted[];

string symbols[];

int types[];

int times[];

int init() { return(0); }

int deinit() { return(0); }

int start()

{

//

//

// Daten für Aufträge sammeln

//

//

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

{

if (!OrderSelect(i,SELECT_BY_POS)) continue;

if (alertsForSymbol != "" && alertsForSymbol!=OrderSymbol()) continue;

if (alertsForMagicNumber != 0 && alertsForMagicNumber!=BestellungMagicNumber()) continue;

if (alertsForNotOlderThan < (TimeCurrent()-OrderOpenTime())) continue;

//

//

//

//

//

for (int k=ArraySize(tickets); k>0; k--)

if (OrderTicket()==tickets[k-1]) break;

if (k==0)

{

int size = ArraySize(tickets)+1;

ArrayResize(tickets,size); tickets = OrderTicket();

ArrayResize(alerted,size); alerted = false;

ArrayResize(symbols,size); symbols = OrderSymbol();

ArrayResize(types ,size); types = OrderType();

ArrayResize(times ,size); times = OrderOpenTime();

}

}

//

//

// Prüfen, ob eine Bestellung alarmiert werden muss für

//

//

for (i=ArraySize(tickets)-1; i>=0; i--)

{

string type = "";

if (!alerted)

{

alerted = true;

switch (types)

{

case OP_BUY : Typ = "kaufen"; break;

case OP_SELL : Typ = "verkaufen"; break;

case OP_BUYSTOP : type = "Kaufstopp"; break;

case OP_BUYLIMIT : Typ = "Kauflimit"; break;

case OP_SELLSTOP : type = "Verkaufsstopp"; break;

case OP_SELLLIMIT : type = "Verkaufslimit"; break;

}

doAlert(type+" opened at : "+TimeToStr(times,TIME_DATE|TIME_SECONDS)+" für "+symbols);

}

}

return(0);

}

//-------------------------------------------------------

//

//-------------------------------------------------------

//

//

//

//

//

void doAlert(string doWhat)

{

string message;

message = doWhat;

if (alertsMessage) Alert(message);

if (alertsEmail) SendMail(StringConcatenate(Symbol()," order alerts "),message);

if (alertsNotification) SendNotification("Auftragswarnungen "+Nachricht);

if (alertsSound) PlaySound("hallelujah.wav");

}

aber es ertönt nur der normale Alarm, wenn er ausgelöst wird.

Gedanke: Wenn ich den PlaySound nicht ändern kann, könntest du vielleicht eine Schleife einbauen, die 10 Mal alle 1 Sekunde einen kurzen regulären Alarm abspielt? - Das würde zumindest viel mehr bewirken, um mich zu wecken, als nur ein einziger regulärer Alarmton....

Dankeschön

 
person77:
Hier ist der Code, den ich verwendet habe (ich weiß sehr wenig über Codierung zu wissen, wie man Schleifen zu tun):

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

#Eigenschaft Copyright "https://www.forex-tsd.com"

#property link "https://www.forex-tsd.com"

#property indicator_chart_window

//-----------------------------------------------------------------

extern int alertsForNotOlderThan = 300;

extern int alertsForMagicNumber = 0;

extern string alertsForSymbol = "";

extern bool alertsOn = true;

extern bool alertsSound = true;

extern bool alertsMessage = true;

extern bool alertsNotification = false;

extern bool alertsEmail = false;

//-------------------------------------------------------

//

//-------------------------------------------------------

//

//

//

//

//

int tickets[];

bool alerted[];

string symbols[];

int types[];

int times[];

int init() { return(0); }

int deinit() { return(0); }

int start()

{

//

//

// Daten für Aufträge sammeln

//

//

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

{

if (!OrderSelect(i,SELECT_BY_POS)) continue;

if (alertsForSymbol != "" && alertsForSymbol!=OrderSymbol()) continue;

if (alertsForMagicNumber != 0 && alertsForMagicNumber!=BestellungMagicNumber()) continue;

if (alertsForNotOlderThan < (TimeCurrent()-OrderOpenTime())) continue;

//

//

//

//

//

for (int k=ArraySize(tickets); k>0; k--)

if (OrderTicket()==tickets[k-1]) break;

if (k==0)

{

int size = ArraySize(tickets)+1;

ArrayResize(tickets,size); tickets = OrderTicket();

ArrayResize(alerted,size); alerted = false;

ArrayResize(symbols,size); symbols = OrderSymbol();

ArrayResize(types ,size); types = OrderType();

ArrayResize(times ,size); times = OrderOpenTime();

}

}

//

//

// Prüfen, ob eine Bestellung alarmiert werden muss für

//

//

for (i=ArraySize(tickets)-1; i>=0; i--)

{

string type = "";

if (!alerted)

{

alerted = true;

switch (types)

{

case OP_BUY : Typ = "kaufen"; break;

case OP_SELL : Typ = "verkaufen"; break;

case OP_BUYSTOP : type = "Kaufstopp"; break;

case OP_BUYLIMIT : Typ = "Kauflimit"; break;

case OP_SELLSTOP : type = "Verkaufsstopp"; break;

case OP_SELLLIMIT : type = "Verkaufslimit"; break;

}

doAlert(type+" opened at : "+TimeToStr(times,TIME_DATE|TIME_SECONDS)+" für "+symbols);

}

}

return(0);

}

//-------------------------------------------------------

//

//-------------------------------------------------------

//

//

//

//

//

void doAlert(string doWhat)

{

string message;

message = doWhat;

if (alertsMessage) Alert(message);

if (alertsEmail) SendMail(StringConcatenate(Symbol()," order alerts "),message);

if (alertsNotification) SendNotification("Auftragswarnungen "+Nachricht);

if (alertsSound) PlaySound("hallelujah.wav");

}

aber es ertönt nur der normale Alarm, wenn er ausgelöst wird.

Gedanke: Wenn ich den PlaySound nicht ändern kann, könntest du vielleicht eine Schleife einbauen, die 10 Mal alle 1 Sekunde einen kurzen regulären Alarm abspielt? - Das würde zumindest viel mehr bewirken, um mich zu wecken, als nur ein einziger regulärer Alarmton....

Dankeschön

Person77,

Früher hat das funktioniert, indem man ein offenes Diagramm aufruft, dann zu Tools/Optionen/Ereignisse geht und dann bei Alarm einfach die wav. in die gewünschte Richtung ändert, aber das habe ich schon eine Weile nicht mehr gemacht, also bin ich nicht sicher, ob das noch funktioniert.

Dateien:
alert.png  99 kb
 

mrtools - vielen Dank: Das hat super funktioniert!

Grund der Beschwerde: