Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 733

 
Alexey Viktorov:
Das muss ich Ihnen lassen. Es ist jedoch sehr mühsam, herauszufinden, dass es sich um das Fenster "Handel" und nicht um das Fenster "Kontoverlauf" handelt. Aus Unachtsamkeit und Faulheit, ohne meine Kopfmuskeln zu strapazieren, glaubte ich, es sei das Fenster Kontoverlauf.

Das kommt vor. Verzeihlich.

 

Deaktiviert die Standard-Bid-Linie auf dem Diagramm wegen der Unannehmlichkeit des Lesens fünf Ziffern, machte die Ausgabe 4 Ziffern in der oberen Ecke, aber manchmal der Preis geht nach unten, die wiederum verursacht Unannehmlichkeiten :-)

Ich möchte das Label-Objekt mit dem Preis bewegen, das rechte PreisschildOBJ_ARROW_RIGHT_PRICE mag ich wegen des Rahmens nicht.

Aber aus irgendeinem Grund funktioniert die Positionierung nach Preisgebot nicht, das Label wird in der oberen linken Ecke angezeigt


//+------------------------------------------------------------------+
//|                                              CandleTimeStationary|
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property strict

//---- input parameters
input color Clock_Color = clrCrimson;

string objname="Bid";


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
        ObjectCreate(0, objname, OBJ_LABEL,0, 0, 0);
        
    

        return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason) { ObjectDelete(0, objname); } 

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total, const int prev_calculated, const datetime& time[], const double& open[], const double& high[], const double& low[], const double& close[], const long& tick_volume[], const long& volume[], const int& spreads[])
{

        ObjectSetDouble(0, objname, OBJPROP_PRICE, SymbolInfoDouble(Symbol(), SYMBOL_BID));     
        ObjectSetString(0, objname, OBJPROP_TEXT, DoubleToString(SymbolInfoDouble(Symbol(), SYMBOL_BID), _Digits-1));
        ObjectSetInteger(0, objname, OBJPROP_FONTSIZE, 12);
        ObjectSetInteger(0, objname, OBJPROP_COLOR, Clock_Color);
        ObjectSetString(0, objname, OBJPROP_FONT, "Verdana");
        
        return(rates_total);
}
 
psyman:

Deaktiviert die Standard-Bid-Linie auf dem Diagramm wegen der Unannehmlichkeit des Lesens fünf Ziffern, machte die Ausgabe 4 Ziffern in der oberen Ecke, aber manchmal der Preis geht nach unten, die wiederum verursacht Unannehmlichkeiten :-)

Ich möchte das Label-Objekt mit dem Preis bewegen, das rechte PreisschildOBJ_ARROW_RIGHT_PRICE mag ich wegen des Rahmens nicht.

Aber aus irgendeinem Grund funktioniert die Positionierung nach Preisgebot nicht, das Label wird in der oberen linken Ecke angezeigt


FürOBJ_LABEL wird der Positionsbericht in Pixel angegeben.

ChartTimePriceToXY(0, 0, TimeCurrent(), Bid, x, y); // x, y добавьте в переменные, тип int
ObjectSetInteger(0, objname, OBJPROP_YDISTANCE, ulong(y)); //если на эту строчку будет предупреждение в компиляторе то, значит ulong ненужен
//ObjectSetDouble(0, objname, OBJPROP_PRICE, SymbolInfoDouble(Symbol(), SYMBOL_BID));
ObjectSetString(0, objname, OBJPROP_TEXT, DoubleToString(Bid, _Digits-1));
 
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

double Znomer()
{
zn=0; // z-число
psd=0; // кол. положительных сделок
usd=0; // количество отрицательных сделок 
ww=0; // боол переменная 
nn=0; // боол переменная
C=0; // C = количество чередований между отрицательными и положительными сделками
index=OrdersHistoryTotal(); 
if(OrdersHistoryTotal()>302) index=301; // берём не более 301 сделки
if(index<30) return(1); // берём не менее 30
count=OrdersHistoryTotal(); // считаем от скольки 
prom=count-index; // выделяем только последние сделки
if (prom<0) prom=0; // исключаем ошибки

for( i=count;i>prom;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)== true)
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{// далее магия
pribul=OrderProfit(); 
if (ww==0&&pribul>1){C++;ww=1;nn=0;}// подсчитываем смену тенденции
if (nn==0&&pribul<1){C++;ww=0;nn=1;}// подсчитываем смену тенденции 
if (pribul>1){psd++;}//прибыльные сделки
if (pribul<1){usd++;}// убыточные сделки

}
}
}
/*/*
Величина Z = (A * (C — 0.5) — B)/ ((B*(B — C))/(C -1))^(1/2), где:
A = количество анализируемых сделок;
B = 2*количество прибыльных сделок * количество убыточных сделок;
C = количество чередований в выборке (чередованием считается каждая пара сделок, 
когда прибыльная сделка сменяет убыточную либо наоборот).
*/
zn = (index*(C-0.5)-(2*psd*usd))/
((((2*psd*usd)*((2*psd*usd)-C))/
(C-1))*((((2*psd*usd)*((2*psd*usd)-C))/
(C-1))*0.5));



return(zn);
}

Ich habe beschlossen, einen einfachen Code zu schreiben, um die Tendenz zum Verlust eines Kontos zu berechnen. Zu diesem Zweck habe ich eine einfache Z-Konto-Formel genommen und versucht, sie auf den mq4-Code zu übertragen.
Alles scheint korrekt zu sein, aber wenn ich die einfache Ausgabe mit Print ausführe, funktioniert der EA nicht auf einmal. Beim Kompilieren erhalte ich keine Fehler.
Ich habe mir bereits den Kopf über einen einfachen Code zerbrochen.

Danke, wenn Sie helfen können!

 
Aliaksei Karalkou:

Ich habe beschlossen, einen einfachen Code zu schreiben, mit dem ich die Tendenz zum Verlust eines Kontos berechnen kann. Zu diesem Zweck habe ich eine einfache Formel des Z-Kontos genommen und versucht, sie im mq4-Code zu verwenden.
Alles scheint korrekt zu sein, aber wenn ich die einfache Ausgabe mit Print ausführe, funktioniert der EA nicht auf einmal. Beim Kompilieren erhalte ich keine Fehler.
Ich habe mir bereits den Kopf über einen einfachen Code zerbrochen.

Danke, wenn Sie helfen können!

Prüfen Sie die Arbeitserlaubnis für den EA. Und wo in der Druckausgabe? Dieser Teil des Codes muss etwas zurückgeben, wenn es keine Fehler gibt, dann liegt das Problem außerhalb dieses Teils des Codes. Außer, dass in diesem Block eine Division durch 0 auftreten kann.

 
Ilya Prozumentov:

FürOBJ_LABEL wird der Positionsbericht in Pixel angegeben.

Ilja, danke, es hat funktioniert.

Erst beim Übergang zur nächsten Stufe - der Berücksichtigung der Größenänderung des Fensters - gibt der Compiler eine Warnung über die Datentypkonvertierung aus:

int width = ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0);

möglicher Datenverlust durch Typenumwandlung 4digit+.mq5 36 14


Obwohl die Funktion den Typ int zurückgibt.


 
psyman:

Ilja, danke, es hat funktioniert.

Erst beim Übergang zur nächsten Stufe - der Berücksichtigung der Größenänderung des Fensters - gibt der Compiler eine Warnung über die Datentypkonvertierung aus:

möglicher Datenverlust durch Typenumwandlung 4digit+.mq5 36 14


Obwohl die Funktion den Typ int zurückgibt.


Die Funktion gibt den Long-Typ
 
novichok2018:

Und wo wird angezeigt, dass der Auftrag abgeschlossen ist?

Ein grüner TP im "Trade"-Fenster bedeutet, dass der aktuelle Kurs innerhalb von -100 Pips des TPs liegt, oder, um genauer zu sein, innerhalb von 100 Pips des TPs.

Ich danke Ihnen!
 
Artyom Trishkin:
Die Funktion gibt long type zurück

Was soll ich in solchen Fällen tun, den Typ der Variablen ändern oder sie so lassen, wie sie ist?

 
psyman:

Was ist in solchen Fällen zu tun, den Typ der Variablen zu ändern oder ihn unverändert zu lassen?

int width = (int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0);