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

 
Igor Makanu:

Ich bezweifle, dass ich das erklären kann, wenn es das ist, wonach Sie fragen.

Objekt ist ... Sagen wir, eine Variable der Klasse Typ

in Ihrem Codeabschnitt ist die Klasse CProgram

irgendwo in Ihrem Code muss es heißen

und muss aufgerufen werden

Du bist GOTT!!! Ich habe Sie verstanden und es hat alles geklappt)
 

Können Sie mir sagen, was das bedeutet?

Rückgabewert von'OrderSend' sollte überprüft werden TestLibrary.mq4 64 6

 
MakarFX:

Können Sie mir sagen, was das bedeutet?

Rückgabewert von 'OrderSend' sollte überprüft werden TestLibrary.mq4 64 6

Das Ergebnis von OrderSend sollte überprüft werden. :-)

 
Maxim Kuznetsov:

Das Ergebnis von OrderSend muss überprüft werden. :-)

Ich kann Englisch)))

Wie kann man das überprüfen?

 
MakarFX:

Ich kann Englisch)))

Wie kann man das überprüfen?

result=SomeOperation(....)

if (result!=ok) {

Print("Error");

}

 
Maxim Kuznetsov:

result=SomeOperation(....)

if (result!=ok) {

Print("Error");

}

Dankeschön
 
//+------------------------------------------------------------------+
//| TEST_V01.mq4 |
//| Copyright 2019, MetaQuotes Software Corp.
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#Eigenschaft Version "1.00"
#Eigenschaft streng
#define MAGICMA 20131111
//--- Eingaben
Eingabe int Risiko = 1;
Eingabe int Max_Risk = 8;
Eingabe int SL = 100;
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Experten-Tick-Funktion |
//+------------------------------------------------------------------+
void OnTick()
{
if(AufträgeSumme()==0)
if(OrderSend(Symbol(), OP_BUY, Lot_Calculate(Symbol(), Risk, Max_Risk, SL), Ask, 30, NormalizeDouble(Ask - SL*Point, Digits), NormalizeDouble(Ask + SL*Point, Digits),",MAGICMA,0,Blue)==-1)
Print("Fehler: ",GetLastError());
}
//+------------------------------------------------------------------+
//-----------------------------------------------------------------
// Lot_Calculate |
//-----------------------------------------------------------------
double Lot_Calculate(string _symbol, int _risk, int _m_risk, int _pips)
{
_m_Risiko = Max_Risiko;
_pips +=20;
double minlot = MarketInfo(_symbol,MODE_MINLOT);
double maxlot = MarketInfo(_symbol,MODE_MAXLOT);
double steplot = MarketInfo(_symbol,MODE_LOTSTEP);
double money_risk = NormalizeDouble(AccountEquity()*_risk/100,2);
double calk_pip_cost = NormalizeDouble(money_risk/_pips,2); // Kosten pro Punkt
double lot_pip_cost = MarketInfo(_symbol,MODE_TICKVALUE); // die Kosten eines Pips bei einer Preisänderung durch ein Volumen von einem Standardlot
// while(!MathIsValidNumber(lot_pip_cost || lot_pip_cost ==0)
//{
// lot_pip_cost = MarketInfo(_symbol,MODE_TICKVALUE);
//}
double lot = calk_pip_cost/lot_pip_cost;
//-------------------------------------------------------------
double money_m_risk = NormalizeDouble(AccountEquity()*2*_risk/100,2); // Ich verdopple auch das Risiko
double _m_calk_pip_cost = NormalizeDouble(money_m_risk/_pips,2); // Berechnung des Ein-Punkt-Wertes nach Verdoppelung
double lot_m = _m_calk_pip_cost/lot_pip_cost; // Berechnung der Partie nach Verdoppelung
if(lot <= minlot) lot = minlot;
else if(lot >= maxlot) lot = maxlot;
else if(lot > minlot && lot < maxlot)
{
int k = int((lot - minlot)/steplot);
lot = NormalizeDouble(minlot+k*steplot,2);
}
zurück(lot);
// ------------------------------------------------------
{
if(lot_m <= minlot) lot_m = minlot; // ab dieser Zeile, mein Selbst
else if(lot_m >= maxlot) lot_m = maxlot;
else if(lot_m > minlot && lot_m < maxlot)
{
int k = int((lot - minlot)/steplot);
lot_m = NormalizeDouble(minlot+k*steplot,2);
}
zurück(lot_m);
if(OrderProfit()>0) lot--;
if(OrderProfit()<0) lot_m++;
}
if(_m_Risiko == Max_Risiko) lot_m = lot; // hier kann man nichts verstehen
zurück(0);

}


Ich kämpfe seit zwei Tagen mit diesem Problem. Ich kann die Funktion zur Neuberechnung des Risikos nicht schreiben.

Wird ein Geschäft durch TP geschlossen, bleibt das Risiko gleich.

Wird das Risiko durch SL geschlossen, erhöht sich das Risiko um das 2-fache usw., bis zu dem in den Eingangsvariablen des Expert Advisors festgelegten Wert, z. B. Max_Risk = 8;

und dann auf das Ausgangsrisiko Risiko = 1 zurückgesetzt;

Nun, wenn nach der Verdoppelung der Handel bei TR geschlossen wird, kehren wir wieder zum ursprünglichen Risiko = 1 zurück;

Können Sie helfen?

Ich danke Ihnen im Voraus.

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. и снова dll и маркет День добрый! Правило №1 dll на...
 
Das ist es ganz und gar nicht.
 

Guten Tag!

Fachleute bitte helfen. Ich kann ein Problem nicht lösen. Hier ist der Code:


datetime some_time=TimeCurrent();

int start()

{

Doppelsumme;

Doppelter Rasiermesser;

int k=iBarShift(",PERIOD_M5,some_time);

double VAL0=MathAbs(iATR(NULL,0,1,1))/Punkt;

double VAL1=MathAbs(iATR(NULL,0,1,0))/Punkt;

wenn (VAL1>VAL0)

{

razn =MathAbs((iATR(NULL,0,1,0))-(iATR(NULL,0,1,1))/Point;

for(int i = k; i >= 1; i--)

{

summ=summ+razn;

}

Comment("Verwendete Zeiträume: ",k,"\n,

"ATR vorher: "+VAL0+"\n",

"ATR aktuell: ",VAL1,"\n",

"ATR-Differenz: ",razn,"\n",

"ATR-Differenz:",summ,"\n");

}

zurück(0);

}

Die Idee ist die folgende: Der Expert Advisor zählt die Differenz zwischen dem aktuellen ATR-Wert und dem vorherigen Wert. Aber nur mit steigender ATR.

Diese Differenz wird in der Variablen "razn" angezeigt. Ich möchte, dass der Wert der Variable "razn" bei jeder Ankunft eines neuen Balkens zur Variable "summ" addiert/kumuliert wird.

In der aktuellen Version funktioniert die Akkumulation von "summ" nicht korrekt.

Ich vermute, es geht um Schleifen.


Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Все предопределенные периоды графиков имеют уникальные идентификаторы. Идентификатор PERIOD_CURRENT означает текущий период графика, на котором запущена mql5-программа.
 
Guten Tag an die Forumsmitglieder. Ich kann keine Informationen finden. Gibt es ein Werkzeug, das automatisch Linien (nicht horizontal) von Tiefst- und Höchstständen zu einem bestimmten Punktniveau zeichnet? Mit anderen Worten: Definieren Sie das Tief oder das Hoch und ziehen Sie die Linie zur Kerze, die den Abstand in Pips vom Hoch oder Tief festlegt? Ich habe herausgefunden, dass der Fractal-Indikator die Bestimmung von Tiefst- und Höchstständen ermöglicht. Ich habe jedoch kein solches Add-on gefunden, das es mir ermöglicht, eine Linie zum Punkt der Preisänderung um eine bestimmte Anzahl von Punkten zu ziehen.