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

 
Aleksei Beliakov:

Warum steht in der letzten Zeile kein Schrägstrich, und ist es möglich, einen Wert aus einem Makro zurückzugeben

dies ist die Makro-Substitutionssyntax, das Kleben von Zeichenketten

Hier ist ein Beispiel für die Rückgabe eines Werteshttps://www.mql5.com/ru/forum/318246/page10#comment_12652228

 
Bitte, kann mir jemand helfen?
 
jaffer wilson:
Bitte, kann mir jemand helfen?
anstelle von Texten - Fragen stellen. Derjenige, der auf Sendung ist, wird den Inhalt des Forums berücksichtigen und mithelfen.
 
wenn (MA5>MA20)
{
Signal=1;
}

if(Signal>TradeLevel) // TradeLevel wird auf 0 gesetzt.
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point, "Optim",16384,0,Blue);
}



Können Sie mir bitte sagen, warum diese Logik nicht funktioniert? (mql4)
Deals werden nicht geöffnet

(alles andere, Variablen, alles ist beschrieben - Standard-Eulenvorlage in MT, keine Kompilierungsfehler)
 
Ivan Butko:

   if (MA5>MA20)
     {
      Signal=1;
     }
   if(Signal>TradeLevel) // TradeLevel установлен в 0.
     {
      ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point,"Optim",16384,0,Blue);
     } 


Bitte teilen Sie uns mit, warum diese Logik nicht funktioniert? (mql4)
Die Gewerke werden nicht geöffnet

(alles andere, Variablen, alles ist beschrieben - Standard-Eulenvorlage in MT, keine Kompilierungsfehler)

Funktioniert also die Logik nicht oder werden die EA-Positionen nicht geöffnet?

Es ist eine gute Angewohnheit, zuerst einen Blick in die Zeitschrift "Experts" zu werfen - dort gibt es viel zu schreiben. Und ich möchte auch das "Journal" überprüfen.

Ich sehe genau zwei Fehler und eine Ungewissheit beim Senden einer Handelsanfrage.

 
Artyom Trishkin:

Funktioniert also die Logik nicht oder werden die EA-Positionen nicht geöffnet?

Es ist eine gute Angewohnheit, zuerst einen Blick in die Zeitschrift "Experts" zu werfen - dort gibt es viel zu schreiben. Und es schadet auch nicht, einen Blick in das "Journal" zu werfen.

Aus dem Stegreif sehe ich genau zwei Fehler und eine Ungewissheit beim Senden einer Handelsanfrage.

Danke, es funktioniert!

Ich habe diese Logik einfach in den Standard-MACD-EA übernommen.
Ich brauchte nur eine Basis, um verschiedene Signale einzusetzen und sie zusammenzufassen.

Ich entschuldige mich für die Unannehmlichkeiten. (Das Protokoll war übrigens leer, es gab auch keine Fehler, es wurden nur keine Trades geöffnet, das war's).

Wenn es Ihnen nichts ausmacht, weisen Sie bitte auf den Fehler hin

 

Es gibt einen primitiven Code

templ(T)class CData{
public:CData(){};~CData(){};
       T Total(T &mas[]  ,int y){return(ArraySize(mas));}    
       T Total(T &mas[][],int y){return(ArraySize(mas));}}

Frage, wie manTotal() Funktion aufrufen, ich möchte es zum Beispiel in OnInit(), Jungs bitte nicht unhöflich sein, ich bin ein Trottel, ich verstehe die Hilfe nicht? Muss ich den Speicher der Klasse löschen, und wenn ja, wo und wie?

 

STÖRUNG BEI DER BERECHNUNG DES RISIKOS PRO HANDEL.

AUFGABE: Berechnen Sie die Losgröße für ein akzeptables Risikoniveau von 250 $ pro Handel für ein beliebiges Instrument (einschließlich Forex, Pfandbriefe, CFDs).

MEINE ERKENNTNIS (für BUY, Auszug aus dem Funktionscode):

//valSL - размер стопа
//price - цена открытия ордера
//iLots - размер лота
SL_punkt=(price-valSL)/MarketInfo(currencySelect,MODE_POINT); //Переводим денежное выражение в пункты
 double pricePunkt=NormalizeDouble(iLots*MarketInfo(symb,MODE_TICKVALUE)*SL_punkt,MarketInfo(symb,MODE_DIGITS)); //Вычисляем уровень убытка при заданном размере лота

DAS PROBLEM: Dieser Code berechnet die Verluste für alle Vermögenswerte korrekt, einschließlich Währungspaare (einschließlich Crosses), Gold, Öl, ABER INDEXE, nq100, Z.B.,BERECHNET NICHT korrekt. Meine Skriptdaten (potenzielle Handelsverluste) sind nämlich durchweg 10 Mal WENIGER als das, was der MT4 STRATEGY Tester anzeigt!

EINIGE ANMERKUNGEN:

1. Die Tests wurden im Alpari-Terminal durchgeführt.

2. Laut Terminal ist die Art der Gewinnberechnung für XAUUSD, BRN (Öl) und NQ100 "CFD", für Währungspaare "Forex".

Ich denke, das Problem liegt in der Kontraktgröße, die ich nicht berücksichtige (für Öl - 1000, für XAUUSD - 100, für NQ100 - 10). Aber warum werden dann XAUUSD und BRN korrekt gezählt (und auch die Währungspaare), aber NQ100 nicht? Vielleicht, obwohl in den Eigenschaften des Alpari-Terminalsymbols die Gewinnberechnungsmethode "CFD" lautet, aber in Wirklichkeit als "Forex" gezählt wird? Ist das überhaupt möglich?

Generell wäre ich dankbar, wenn mir jemand meinen Skriptfehler erklären könnte und wie ich ihn beheben kann.

DANKESCHÖN!

 
Сергей Михеев:

FEHLER BEI DER BERECHNUNG DES RISIKOS PRO TRANSAKTION.

MODUS _TICKSIZE

 
Yurij Kozhevnikov 2019.08.10 17:57 DE
Сергей Михеев:

FEHLER BEI DER BERECHNUNG DES RISIKOS PRO HANDEL.

MODUS _TICKSIZE

Lesen xxxxxxxx

Damit ist das Problem leider nicht gelöst. Ich habe

MODE_TICKVALUE равно MODE_POINT и равно MODE_TICKSIZE (для NQ100 это 0.1)

Ich habe auch diese Variante des Codes ausprobiert:

double StoimPunkt(string B){
double S = MarketInfo(B,MODE_TICKVALUE)/(MarketInfo(B,MODE_TICKSIZE)/MarketInfo(B,MODE_POINT));return(S);
}
//valSL - размер стопа
//price - цена открытия ордера
//iLots - размер лота
SL_punkt=(price-valSL)/MarketInfo(symb,MODE_POINT); //Переводим денежное выражение в пункты
 double pricePunkt=NormalizeDouble(iLots*StoimPunkt(symb)*SL_punkt,MarketInfo(symb,MODE_DIGITS)); //Вычисляем уровень убытка при заданном размере лота

IST DAS ERGEBNIS GENAU DASSELBE WIE IN MEINEM OBIGEN BEISPIEL.

Haben Sie eine andere Idee?