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

 

nach Armen

Dies bedeutet, dass die Funktionen im EA nicht verwendet wurden. Schreiben Sie etwas wie

if (CountBuys()>2 && CountSells()>2) {\\действия}

 
Bitte sagen Sie mir, ob es möglich ist, überschüssige Gelder, z.B. in ein Bankschließfach, abzuheben, wenn sie die ursprüngliche Einlage übersteigen, während der EA läuft, und sie innerhalb der ursprünglichen Einlage zu belassen, ohne die offenen Positionen zu schließen?
 
link1:


Vinin, vielen Dank für Ihre Antwort. Aber ich verstehe ehrlich gesagt nicht, warum ask1, ask2, ask3 die Werte 1,-1,-1 zugewiesen werden. was bedeuten sie? Wenn es Ihnen nichts ausmacht, könnten Sie bitte in Worten beschreiben, was und wie es passiert, ich bin ein Neuling, ich verstehe noch nicht alles ganz. Ich werde Ihnen sehr dankbar sein).


Ihnen werden Werte zugewiesen, die niemals dem Preis entsprechen werden.

 
yosuf:
Kann ich überschüssige Gelder abheben, z. B. in das Schließfach, wenn sie die ursprüngliche Einlage während der EA-Operation übersteigen, und sie innerhalb der ursprünglichen Einlage belassen, ohne die offenen Positionen zu schließen?

Auf MT5 können Sie sehen. Verwendung von TesterWithdrawal() zur Simulation einer Gewinnentnahme

Dies ist auf MT4 nicht möglich.

 

Hallo!

Ich schreibe einen Indikator, der die Anzahl der Punkte zählt, um die sich der Preis während eines Ticks nach oben und unten bewegt hat.
Was ist mit dem Code falsch und wo liegt der Fehler, bitte beraten!

#property indicator_chart_window

extern int LimitBar = 10;
extern int cegl = 6;
extern string Shrift = "Arial Black";
extern bool delete = true;



double old_price, max_price, sum_pip_sell, sum_pip_bay, new_pip_bay, new_pip_sell, old_pip_bay, old_pip_sell;
datetime ctat_SB =0;

int init() {return(0);}

int deinit() {
if (delete == true) {
GetDellName(); 
}
ObjectsDeleteAll(0, OBJ_TREND);
return(0);
}

int start() {
double price;
string name_4,name_b;
int i=0;
int limit, pip; 
double delta; 
int counted_bars=IndicatorCounted(); 
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
if(ctat_SB==0) ctat_SB=Time[0];

if(limit>0) limit=0;

for(i=limit; i>=0; i--) {
if(old_price==0) old_price=Close[i];

if(iBarShift(NULL,0,ctat_SB)-iBarShift(NULL,0,Time[i])>=LimitBar) { ' счетчик баров для LimitBar

sum_pip_sell =0;
sum_pip_bay = 0; 
new_pip_bay = 0;
new_pip_sell = 0;
old_pip_bay = 0;
old_pip_sell = 0;

} 

price = Close[i];
if(price > max_price) max_price=price; 

delta = price - old_price; ' разница пунктов
pip = delta*10000; ' округляем до целого

//---- Каунт плюс 

if(delta>=0) { ' условие для ап пунктов

new_pip_bay = pip;
sum_pip_bay = old_pip_bay+new_pip_bay;
old_pip_bay = sum_pip_bay; 

}
//---- Каунт минус
if(delta<0) { ' условие для даун пунктов

new_pip_sell = MathAbs(pip);
sum_pip_sell = old_pip_sell+new_pip_sell;
old_pip_sell = sum_pip_sell;

} 
//----
old_price=price;

//---- размещаем счетчик на графике
name_4 = "TPM_ 4 "+TimeToStr(ctat_SB);
SetText(name_4+"sell",DoubleToStr(sum_pip_sell,0), ctat_SB+60*Period()*2, max_price+(Ask-Bid)*6, Blue,12); 
SetText(name_4+"bay",DoubleToStr(sum_pip_bay,0),ct at_SB-60*Period()*2, max_price+(Ask-Bid)*4.5, Red,12); 

} 

return(0);
}
void SetText(string name,string text,datetime t1, double p1, color c, int size) // --- отображение текста
{
if (ObjectFind(name)!=-1) ObjectDelete(name);
ObjectCreate(name,OBJ_TEXT,0,0,0,0,0); 
ObjectSet(name, OBJPROP_TIME1 , t1);
ObjectSet(name, OBJPROP_PRICE1, p1); 
ObjectSetText(name,text,cegl,Shrift,c);
}

//+------------------------------------------------------------+
void GetDellName (string name_n = "TPM_ ") // -- удаление меток с графика
{
string vName;
for(int i=ObjectsTotal()-1; i>=0;i--)
{
vName = ObjectName(i);
if (StringFind(vName,name_n) !=-1) ObjectDelete(vName);
} 
} 
//----

Vielen Dank im Voraus!


 
yosuf:
Bitte sagen Sie mir, ob es möglich ist, überschüssige Gelder, z. B. in den Tresor, abzuheben, wenn sie während der Arbeit des Expert Advisors die ursprüngliche Einlage überschreiten, und sie innerhalb der ursprünglichen Einlage zu belassen, ohne die offenen Positionen zu schließen.

Erlauben Sie dem Expert Advisor nur den Handel mit einer Einlage in Höhe der Ersteinlage.

Denken Sie an die Höhe der anfänglichen Einlage und überprüfen Sie vor jeder Positionseröffnung die Höhe der Einlage. Wenn das Geschäftsvolumen den zulässigen Wert übersteigt - reduzieren Sie das Los oder geben Sie die Mittel frei.

 
Fox_RM:

Hallo!

Ich schreibe einen Indikator, der die Anzahl der Punkte zählt, um die sich der Preis während eines Ticks nach oben und unten bewegt hat.
Was ist mit dem Code falsch und wo liegt der Fehler, bitte beraten!

Vielen Dank im Voraus!


Warum gibt es so viel Zeug?

Erinnern Sie sich an den Preis des vorherigen Ticks. Bei Ankunft eines neuen Ticks zählen Sie die Preisdifferenz geteilt durch den Punkt und merken sich diesen Preis wieder als den Preis des vorherigen Ticks.

 
artmedia70:

Warum ist das so viel Zeug?

Merken Sie sich den Preis des letzten Ticks. Bei Ankunft eines neuen Ticks zählen Sie die Preisdifferenz geteilt durch den Punkt und merken sich diesen Preis wieder als den Preis des vorherigen Ticks.

Bei den Bedingungen für AP- und DAUN-Punkte ist der Code genau wie vorgeschrieben, aber bei der Anzeige des Indikators auf dem Kurschart gibt der Marker 0 für die Anzahl der Punkte nach oben und 0 für die Anzahl der Punkte nach unten aus. Was ist das Problem, das ich nicht verstehe?
 

Meine Herren Programmierer!

Entspricht die Priorität (und Assoziativität) von MQL4-Operationen der von C?

Ich möchte die Klammern nicht missbrauchen, aber die Priorität der Operationen wird in der Dokumentationnirgends erwähnt.

Diese Frage ist nicht unberechtigt. MQL4 ist als eine C-ähnliche Sprache positioniert. Das Schlüsselwort hier ist DEFINITELY. Wenn so etwas wie eine vollständige Berechnung logischer Ausdrücke nur eine Abweichung vom C-Standard ist, dann ist die Sichtbarkeit von Variablen, die in einem Block außerhalb dieses Blocks definiert sind, ein schwerer Fehler im Programmierkanon.

Wer weiß, wie weit die Vorstellungskraft der MQL4-Entwickler reichen könnte :).

 
artmedia70:

Erlauben Sie dem Expert Advisor nur den Handel mit einer Einlage in Höhe der Ersteinlage.

Denken Sie an die Höhe der anfänglichen Einlage und überprüfen Sie vor jeder Positionseröffnung deren Lot. Wenn das Handelsvolumen die zulässige Größe überschreitet - reduzieren Sie das Lot oder geben Sie die Mittel frei.

Ich meine etwa so: Wenn ich auf micro-real mit 10knt handle, kann ich meine überschüssigen Mittel manuell abheben, wann immer ich will, während der EA-Betrieb, oder muss ich den EA stoppen, alle offenen Positionen schließen und erst dann die überschüssigen Mittel abheben? Ich handle mit einem festen Lot von 0,1. Wie kann ich Ihre Empfehlung wirklich umsetzen? "Erlauben Sie dem Expert Advisor nur denHandel mit einer Einlage in Höhe der Ersteinlage.
Grund der Beschwerde: