[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 326

 
drknn:


Beginnen Sie mit der Definition des Problems.

- Verwenden Sie das Skript, um das Vorhandensein einer Linie im Diagramm zu erkennen.

- Wenn die Zeile existiert, drucken Sie ihren Anfangs- und Endpreis in die Variablen; die Taktnummern (oder die Zeit) drucken Sie in die Variablen.

- Führen Sie die erforderlichen Berechnungen mit Hilfe des Skripts durch.

- Drucken Sie die Ergebnisse auf dem Bildschirm aus (oder in ein Textdokument oder in das Expert Advisor Journal)

Wenn Sie diese 4 Probleme nicht auf Anhieb lösen können, sollten Sie mit dem Erlernen der Sprache beginnen.


drknn! danke! Ich werde es mir ansehen!!!
 
Zhunko:

Das ist kein Geheimnis. Es wird viel darüber geschrieben. Dabei spielt es keine Rolle, welches Werkzeug zur Erstellung der Geschichte verwendet wurde. Es geht darum, den Chart so zu aktualisieren, dass der Expert Advisor darauf funktioniert.

Dies kann mit Hilfe der WinAPI geschehen. Es wurde hier schon oft beschrieben. Ich habe eine Bibliothek geschrieben. Ich habe es hier veröffentlicht.

Es enthält Funktionen zur Steuerung der autonomen Aktualisierung des Diagramms. Es ist kein Skript oder Experte erforderlich. Aber sie ist nicht für jeden geeignet. Es gibt auch Funktionen, die allen zur Verfügung stehen, um den Chart von einem Expert Advisor, einem Skript oder einem Indikator aus zu aktualisieren. Es ist schwieriger, sie zu verwenden. Denn Sie müssen sich überlegen, welche Ihrer Programme die Tabelle aktualisieren sollen. Beispiele sind im Testskript enthalten.

Haben Sie zufällig eine fertige Lösung, um die letzte Zeile der Protokolldatei für die Anzeige in den Kommentaren zu "extrahieren"?
 

Helfen Sie einem Nerd aus. Nur um das Wesentliche der Frage zu verdeutlichen.

Ich habe zwei Punkte auf dem Diagramm, Punkt 2 - derjenige, der näher an der Nulllinie liegt und t.1 - derjenige, der weiter von der Nulllinie in der Historie entfernt ist. Ich versuche, aus diesen beiden Punkten eine Trendlinie zu ziehen,

indem ein Segment zwischen diesen Punkten um N (variable int RayLong) Intervalle nach vorne verlängert wird. Der Code lautet wie folgt:

if (RayLong!=0 && point1s==true && point2s==true)
{
//расчет цены в будущем
if (price11s>price22s) {price11s=NormalizeDouble(price11s+((price11s-price22s)*RayLong),Digits);} 
if (price11s<price22s) {price11s=NormalizeDouble(price11s-((price22s-price11s)*RayLong),Digits);}
//расчет бара в будущем
int bis=iBarShift(Symbol(),0,time22s,true)-iBarShift(Symbol(),0,time11s,true);
Print("Sup "+iBarShift(Symbol(),0,time22s,true)+" "+iBarShift(Symbol(),0,time11s,true)+" "+bis+
" sec="+bis*Period()*60*NormalizeDouble(RayLong,Digits)+" Time="+TimeToStr(time11s+(Period()*60*
(iBarShift(Symbol(),0,time22s,true)-iBarShift(Symbol(),0,time11s,true)+1)*RayLong),TIME_DATE|TIME_SECONDS));
time11s=time11s+(Period()*60*((iBarShift(Symbol(),0,time22s,true)-iBarShift(Symbol(),0,time11s,true))*RayLong));
//time11s=time11s+((time11s-time22s)*RayLong); //альтернативный вариант предыдущей строки
}
Das Problem ist, dass der Berechnungspunkt auf dem Datum schwebt. Der Preis ist in Ordnung. Das Datum hingegen ist entweder fein oder schwimmend. Die Ausdrucke zeigen, dass dies der Fall ist, wenn das Abrechnungsdatum nicht auf dem Zeitplan steht - an Wochenenden oder Feiertagen. Bitte schlagen Sie eine Lösung für dieses Problem vor.
 
forexnew:
Haben Sie zufällig eine fertige Lösung, um die letzte Zeile der Protokolldatei für die Anzeige in den Kommentaren zu "extrahieren"?
Das ist nutzlos. Die Protokolldatei wird nach dem Hochladen von MT4 oder wenn MT4 Zeit dazu hat, ausgefüllt.
 
ZZZEROXXX:

Helfen Sie einem Nerd aus. Nur um das Wesentliche der Frage zu verdeutlichen.

Ich habe zwei Punkte auf dem Diagramm, Punkt 2 - derjenige, der näher an der Nulllinie liegt und t.1 - derjenige, der weiter von der Nulllinie in der Historie entfernt ist. Ich versuche, aus diesen beiden Punkten eine Trendlinie zu ziehen,

indem ein Segment zwischen diesen Punkten um N (variable int RayLong) Intervalle nach vorne verlängert wird. Der Code lautet wie folgt:

Das Problem ist, dass der Berechnungspunkt auf dem Datum schwebt. Für den Preis ist alles in Ordnung. Das Datum hingegen ist entweder fein oder schwimmend. Ich verwende Print, um herauszufinden, dass dies passiert, wenn das Abrechnungsdatum nicht im Zeitplan steht - an Wochenenden oder Feiertagen. Bitte beraten Sie mich, wie ich dieses Problem lösen kann.

Ich verstehe das Problem nicht. Wenn Sie nach Preis und Balken zeichnen Es gibt keine Wochenend- und Nicht-Wochenend-Balken in der Grafik. Also der Trend und sollte auf die nächsten Balken entsprechend den Daten der Handelstage fortsetzen.

Oder ist es bei Ihnen anders?

 

Könnten Sie mir bitte sagen, ob das Array im folgenden Code mit ausstehenden Auftragstikets gefüllt wird:

int tiket[];

int SetFunk()

{

for (i=0; i<=k-1; i++)

{
ticket[i]=OrderSend(Symbol(),OP_BUYSTOP,0.01*Lots,Ask+Step*i*Point,3,Bid-S_Loss*Point,0,",10000,0,Green);

ticket[i+k]=OrderSend(Symbol(),OP_SELLSTOP,0.01*Lots,Bid-Step*i*Point,3,Ask+S_Loss*Point,0,"",10000,0,Green);

}

}

?????
Nullen werden zurückgegeben, wenn man versucht, print()

 
Wozu dient die statische Speicherklasse? Können Sie, wenn möglich, ein gutes Beispiel für seine Verwendung im Code geben und die Merkmale hervorheben, die es von anderen Speicherklassen abheben? Dieses Ding scheint nutzlos zu sein, wer weiß was?
 
myrzila:

Könnten Sie mir bitte sagen, ob das Array im folgenden Code mit ausstehenden Auftragstikets gefüllt wird:

int tiket[];

int SetFunk()

{

for (i=0; i<=k-1; i++)

{
ticket[i]=OrderSend(Symbol(),OP_BUYSTOP,0.01*Lots,Ask+Step*i*Point,3,Bid-S_Loss*Point,0,",10000,0,Green);

ticket[i+k]=OrderSend(Symbol(),OP_SELLSTOP,0.01*Lots,Bid-Step*i*Point,3,Ask+S_Loss*Point,0,"",10000,0,Green);

}

}

?????
Nullen werden zurückgegeben, wenn man versucht, print()

zuerst die Größe des Arrays festlegen (ArrayResize) und dann mit ihm arbeiten
 

Hallo.

Ich habe einen EA.

Wie kann ich erreichen, dass die in der Abbildung gezeigten gleitenden Durchschnittswerte angezeigt werden?

Im Moment zeigt es nur Nullen an.


//+------------------------------------------------------------------+
//| Experten-Initialisierungsfunktion |
//+------------------------------------------------------------------+
int init()
{
//----

//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Expertenstartfunktion |
//+------------------------------------------------------------------+
int start()
{
//----
SetLabel("MA_LABEL",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0)-0.0015,0),Red,10,20,0,20);
SetLabel("MA_LABEL2",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0),0),Red,10,50,0,20);
//----
zurück(0);
}
//+------------------------------------------------------------------+


void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
ObjectSetText(nm, tx, fs);
ObjectSet(nm, OBJPROP_COLOR, cl);
ObjectSet(nm, OBJPROP_XDISTANCE, xd);
ObjectSet(nm, OBJPROP_YDISTANCE, yd);
ObjectSet(nm, OBJPROP_CORNER, cr);
ObjectSet(nm, OBJPROP_FONTSIZE, fs);
}




 
emilien:


Hallo.

Ich habe einen EA.

Wie kann ich erreichen, dass die in der Abbildung gezeigten gleitenden Durchschnittswerte angezeigt werden?

Im Moment zeigt es nur Nullen an.


//+------------------------------------------------------------------+
//| Experten-Initialisierungsfunktion |
//+------------------------------------------------------------------+
int init()
{
//----

//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Expertenstartfunktion |
//+------------------------------------------------------------------+
int start()
{
//----
SetLabel("MA_LABEL",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0)-0.0015,0),Red,10,20,0,20);
SetLabel("MA_LABEL2",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0),0),Red,10,50,0,20);
//----
zurück(0);
}
//+------------------------------------------------------------------+


void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
ObjectSetText(nm, tx, fs);
ObjectSet(nm, OBJPROP_COLOR, cl);
ObjectSet(nm, OBJPROP_XDISTANCE, xd);
ObjectSet(nm, OBJPROP_YDISTANCE, yd);
ObjectSet(nm, OBJPROP_CORNER, cr);
ObjectSet(nm, OBJPROP_FONTSIZE, fs);
}




double iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)

Ich habe noch nichts über Zeitrahmen 13 gehört.