Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 113

 
hoz:


In der Tat, ja. Vielleicht ist es zu spät, aber ich verstehe es nicht. Das ist im Wesentlichen der Gewinn in pps, das ist der Abstand von der Eröffnung bis zur Schließung. Warum ist der Ausdruck dann falsch?

Da wir durch Punkt dividieren müssen, ist das Ergebnis dieses Ausdrucks
 

Ich werde ein bisschen zu eingebildet... :) Das Problem:

1. Es gibt eine offene Position von 0,1 Lot

2. Sein TakeProfit-Wert beträgt 50 Pips.

3. Ich berechne den potentiellen Gewinn nach der Formel PotentialProfit = Lots*TakeProfit*MarketInfo(Symbol(), MODE_TICKVALUE);

4. Aus der Berechnung erhalte ich den potenziellen Gewinn von 5,00 $ (0,1*50*1,0).

Die Position geht in den roten Bereich und irgendwann wird ein weiterer durchschnittlicher Kauf eröffnet, aber mit 0,2 Lot

1. Ich berechne den Breakeven für diese beiden Positionen. Die Funktion wird seit langem wie gewünscht genutzt, und ich habe bisher keine Beschwerden:

//+----------------------------------------------------------------------------+
/*
Расчёт уровня БУ для множества по одному инструменту:
сумма лотов = суммарная позиция (СП)
стоимость тика СП = СТ
профит СП = ПСП
Формула расчёта довольно проста:
КП = ПСП / (СТ * СП)
В которой узнаём количество пипс (КП) до уровня БУ относительно текущей цены (ТЦ) символа.
И подставив КП в формулу БУ = ТЦ - КП * Point получаем уровень цены БУ.
В зависимости от направления СП выбирается прибавлять либо отнимать от ТЦ.
*/
double PriceWL(int op, int m1, int m2, double &ll) {
   double Res, pp, pt, tic, NumPP, Prof=0, SumLot=0.00000001;
   int i;
   
   pt =MarketInfo(sy,MODE_POINT);
   tic=MarketInfo(sy,MODE_TICKVALUE);                          // Стоимость тика СТ
   for (i=0; i<OrdersTotal(); i++) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)        continue;
         if (OrderType()!=op)          continue;
         if (OrderMagicNumber()==m1 || OrderMagicNumber()==m2) {
            Prof+=(OrderProfit()+OrderSwap()+OrderCommission());  // Суммарный профит позиций ПСП
            SumLot+=OrderLots();                                  // Суммарный лот позиций    СП
            }
         }
      }
   SumLot=MathAbs(NormalizeLot(SumLot));
   NumPP=MathAbs(Prof/(tic*SumLot));                           // Количество пунктов до уровня бу КП
   if (op==0) Res=Ask+NumPP*pt;
   if (op==1) Res=Bid-NumPP*pt;
   ll=SumLot;
   return(Res);
}
//+----------------------------------------------------------------------------+

2. Perfekt. Sie haben die Gewinnschwelle berechnet, aber... Wenn Sie die Spielsteine dieser beiden Positionen darauf setzen, schließen sie bei Null. Okay, denke ich. Jetzt muss ich zu dieser Ebene der BU so viele Punkte hinzufügen, wie ich brauche, um einen Gesamtgewinn zu erzielen, der den zuvor berechneten - $5 entspricht.

3. und hier habe ich eine Blockade in meinem Gehirn. Was ich tue: Ich nehme 5 $, teile durch die Gesamtmenge dieser beiden Positionen (0,1 + 0,2 = 0,3) und multipliziere mit dem TICK_VALUE

Ich habe 5/(0,3*1,0) = 16,6666 Dann multipliziere ich ihn mit Point (0,00016) und addiere ihn zum Breakeven-Preis.

4. Perfekt. Die Einsätze werden dorthin übertragen, aber mir scheint, dass der Gesamtgewinn von zwei Baisers, die auf diesem Niveau schließen, nicht gleich 5 $ ist - mir scheint es weniger. Dies ist aus dem Testdiagramm ersichtlich. Sie zeigt deutlich, dass die Erhöhung des Saldos bei der Schließung einer Position viel größer ist als bei der Schließung mehrerer Positionen in Höhe der berechneten Gesamtmitnahme (Sie erkennen diese Stellen im Diagramm an der Darstellung der Equity-Linie). Die Karte:


Wo liege ich falsch?

Ich verstehe, dass Sie den Gesamtgewinn drucken können, aber... Ich möchte verstehen, wo ich in meinen Berechnungen falsch liegen könnte, nicht den Wert der Variablen. Ich habe sie bereits ausgedruckt.

 
semiromid:

Ich habe einen Preis, der aus 5 Ziffern besteht. Beispiel: 1,3221.


Es bedeutet 4 Ziffern. Das bedeutet 4 oder 5 nach dem Komma. Bei fünf Ziffern wäre es zum Beispiel 132210.
 

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Meine Herren Programmierer, bitte beraten, wie man einen EA mit einem Indikator zu kombinieren?

Ich habe zum Beispiel einen einfachen Bot mo_bidir.mq4 genommen, der mit seinem eigenen Algorithmus handelt, und ich möchte, dass er mit seinem eigenen Algorithmus Geschäfte eröffnet, aber nach 3 MA-Signalen

Zum Beispiel auf Signal - Drei gleitende Durchschnitte:

FastEMA>MediumEMA>SlowEMA (Tendenz nach oben) - bot kauft

FastEMA<MediumEMA<SlowEMA (Trend abwärts) - bot verkauft

Inp_Signal_ThreeEMA_FastPeriod = 8;

Inp_Signal_ThreeEMA_MediumPeriod = 38;

Inp_Signal_ThreeEMA_SlowPeriod= 48;

Ich möchte, dass mein Expert Advisor auf dem 5-Minuten-Zeitrahmen handelt und der Indikator Signale vom Tages- oder 4-Stunden-Zeitrahmen gibt, und ich möchte die Zeitrahmen in den Einstellungen des Bots ändern können.

\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Ich entschuldige mich für die Wiederholung, aber sagen Sie mir wenigstens, in welchem Forumsthread ich mich bewerben soll, oder soll ich einen neuen Thread erstellen?

Ich weiß nicht, was ich tun soll.

 
Hier sind Sie richtig: Arbeit
 

Hallo zusammen. Können Sie erklären, warum OrderSend keine Position eröffnet?

if (NormalizeDouble(Open[0],Norm)>ma && NormalizeDouble(Bid,Norm)<=ma)

      {

      if (CheckFiltr()>=Filtr) 

         {

         Print (CheckFiltr()+" Buy"); <= Это в журнале есть, значит должна открыться сделка.

         for (i=0;i>5;i++)

            {

            res=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid-Sl*Point,0,"OpenBuy",Magik,0,Green);

            Print ("Проверка Бай "+i); <= Этого в журнале нет.

            if (res>0) break;

            Print (GetLastError()); <= Этого в журнале нет.

            Sleep (5000);

            }

         }

      }   
 
for (i=0;i<5;i++)
 
artmedia70:

Ich werde ein bisschen zu eingebildet... :) Das Problem:

1. Es gibt eine offene Position von 0,1 Lot

2. Sein TakeProfit-Wert beträgt 50 Pips.

3. Ich berechne den potentiellen Gewinn nach der Formel PotentialProfit = Lots*TakeProfit*MarketInfo(Symbol(), MODE_TICKVALUE);

4. Aus der Berechnung erhalte ich den potenziellen Gewinn von 5,00 $ (0,1*50*1,0).

Die Position geht in den roten Bereich und irgendwann wird ein weiterer durchschnittlicher Kauf eröffnet, aber mit 0,2 Lot

1. Ich berechne den Breakeven für diese beiden Positionen. Die Funktion wird seit langem wie gewünscht genutzt, und ich habe bisher keine Beschwerden:

2. Perfekt. Sie haben die Gewinnschwelle berechnet, aber... Wenn Sie die Spielsteine dieser beiden Positionen darauf setzen, schließen sie bei Null. Okay, denke ich. Jetzt muss ich zu dieser Ebene der BU so viele Punkte hinzufügen, wie ich brauche, um einen Gesamtgewinn zu erzielen, der den zuvor berechneten - $5 entspricht.

3. und hier habe ich eine Blockade in meinem Gehirn. Was ich tue: Ich nehme 5 $, teile durch die Gesamtmenge dieser beiden Positionen (0,1 + 0,2 = 0,3) und multipliziere mit dem TICK_VALUE

Ich habe 5/(0,3*1,0) = 16,6666 Dann multipliziere ich ihn mit Point (0,00016) und addiere ihn zum Breakeven-Preis.

4. Perfekt. Die Einsätze werden dorthin übertragen, aber mir scheint, dass der Gesamtgewinn von zwei Baisers, die auf diesem Niveau schließen, nicht gleich 5 $ ist - mir scheint es weniger. Dies ist aus dem Testdiagramm ersichtlich. Sie zeigt deutlich, dass die Erhöhung des Saldos bei der Schließung einer Position viel größer ist als bei der Schließung mehrerer Positionen in Höhe der berechneten Gesamtmitnahme (Sie erkennen diese Stellen im Diagramm an der Darstellung der Equity-Linie). Die Karte:


Wo liege ich falsch?

Ich verstehe, dass Sie den Gesamtgewinn drucken können, aber... Ich möchte verstehen, wo ich in meinen Berechnungen falsch liegen könnte, nicht den Wert der Variablen. Ich habe sie bereits ausgedruckt.

auch wenn die Position " Verkaufen" lautet ?
Dateien:
mr01.mq4  6 kb
 
FAQ:

for (i=0;i<5;i++)

Ich bitte um Verzeihung, erklären Sie mir, was hier der Fehler ist. Ich kann es nicht herausfinden.

 
pako:
auch wenn die Position " Verkaufen" lautet ?

Ich spreche von Kaufpositionen. Sie müssen nicht so akribisch sein. Natürlich nehme ich für Sell Positionen mit.