[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 124

 
Notter:

Guten Tag,

Könnten Sie mir bitte sagen, wie ich eine Markierung auf der Karte setzen kann? Zum Beispiel hat sich der Auftrag nicht geöffnet, aber zumindest auf dem Chart zu sehen, zu welchem Zeitpunkt er sich geöffnet haben sollte.

Ich möchte eine Markierung auf einer Karte setzen.

Wie diese

#include <stderror.mqh>

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  int Err;
//----
       if(...........) //покупаем
          { 
          Err=OrderSend(..................);
             if(Err<0)
                SetArrow(159, Blue,"ошибка открытия № "+GetLastError(),Time[0],Open[0],2);
          }
       if(...........) //продаем
          { 
          Err=OrderSend(..................);
             if(Err<0)
                SetArrow(159, Red,"ошибка открытия № "+GetLastError(),Time[0],Open[0],2);
          }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка значка на графике, объект OBJ_ARROW.                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cd - код значка                                                         |
//|    cl - цвет значка                                                        |
//|    nm - наименование               ("" - время открытия текущего бара)     |
//|    t1 - время открытия бара        (0  - текущий бар)                      |
//|    p1 - ценовой уровень            (0  - Bid)                              |
//|    sz - размер значка              (0  - по умолчанию)                     |
//+----------------------------------------------------------------------------+
void SetArrow(int cd, color cl,
              string nm="", datetime t1=0, double p1=0, int sz=0) {
  if (nm=="") nm=DoubleToStr(Time[0], 0);
  if (t1<=0) t1=Time[0];
  if (p1<=0) p1=Bid;
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0,0);
  ObjectSet(nm, OBJPROP_TIME1    , t1);
  ObjectSet(nm, OBJPROP_PRICE1   , p1);
  ObjectSet(nm, OBJPROP_ARROWCODE, cd);
  ObjectSet(nm, OBJPROP_COLOR    , cl);
  ObjectSet(nm, OBJPROP_WIDTH    , sz);
}
 
dertop:


Ja, tut mir leid, ich war verwirrt, weil ich zum ersten Mal im Forum schreibe. Erst kopiert, dann beschlossen, handschriftlich zu schreiben, und dabei durcheinander gekommen... Aber das obige Beispiel ist richtig...

MA1>MA2 und MA1<MA3 und MA3<MA4


Sehen Sie sich den folgenden Thread an
 
Vinin:


Hier ist etwas seltsam.

MA1>MA2 und MA2>MA3 und dann MA1<MA3

Dies gilt umso mehr, als es ausreicht, wenn

Ja, in der Tat, es gibt einen Widerspruch zwischen den beiden. Ich habe einfach nicht in alles hineingeschaut! Der Autor hat noch einen weiten Weg vor sich, um "harte Fehler" zu machen!
 

Die Frage ist folgende. Dies ist nicht das erste Mal, dass ich mit dieser Situation konfrontiert werde:

Wird die Traal- oder Breakeven-Funktion z. B. bei jedem Tick aufgerufen, erscheint ein Fehler 1. Das bedeutet laut der Dokumentation:

ERR_NO_RESULT   1       Нет ошибки, но результат неизвестен

Wenn Sie die Funktion nicht offen in der Startfunktion aufrufen, d.h. nicht einfach die Funktion mit Parametern direkt in Start schreiben, sondern sie bei jedem Takt aufrufen, also nicht in einem Tick, dann gibt es keinen Fehler...

Ich meine so:

int start()
{
   MovingStopLossToBU();
// Что-то дальше делаем..

Warum gerade so?

Und wie wird sie im Allgemeinen intelligenter umgesetzt? Wird es bei jedem Häkchen ressourcenintensiv sein?

 

Всем добрый день.

Ich brauche Ihre Hilfe. Ich verstehe nicht, was hier los ist.

if (OrderStopLoss() != NormalizeDouble(t6,5))

{

a=10;

}

DieBedingungOrderStopLoss()=1.3017 undNormalizeDouble(t6,5)=1.3017 gilt weiterhin, d.h. a=10. Aber sie sollte nicht zufrieden sein.

Was könnte der Grund dafür sein?

 
hoz:

Die Frage ist folgende. Dies ist nicht das erste Mal, dass ich mit dieser Situation konfrontiert werde:

Wird die Traal- oder Breakeven-Funktion z. B. bei jedem Tick aufgerufen, erscheint ein Fehler 1. Das bedeutet laut der Dokumentation:

Wenn nicht offen in Startfunktion aufgerufen, d.h. nicht nur Funktion mit Parametern direkt in Start eingegeben, sondern bei jedem Takt aufgerufen, d.h. nicht tickweise, dann Fehler - nein...

Ich meine so:

Warum gerade so?

Und wie wird sie im Allgemeinen intelligenter umgesetzt? Wird es bei jedem Häkchen ressourcenintensiv sein?

Ich würde Ihnen raten, nicht nach Balken, nach so vielen Pips zu gehen. Wenn es nötig ist, sind die Ressourcen dafür da. Und der Fehler "kein Fehler" tritt auf, wenn der Preis für eine bereits vorhandene Änderung wiederholt wird. Deshalb müssen Sie Schritt für Schritt vorgehen, wie ich es Ihnen zu Beginn geraten habe.
 
hoz:

Die Frage ist folgende. Dies ist nicht das erste Mal, dass ich mit dieser Situation konfrontiert werde:

Wird die Traal- oder Breakeven-Funktion z. B. bei jedem Tick aufgerufen, erscheint ein Fehler 1. Das bedeutet laut der Dokumentation:

Wenn nicht offen in Startfunktion aufgerufen, d.h. nicht nur Funktion mit Parametern direkt in Start eingegeben, sondern bei jedem Takt aufgerufen, d.h. nicht tickweise, dann Fehler - nein...

Ich meine so:

Warum gerade so?

Und wie wird sie im Allgemeinen intelligenter umgesetzt? Wird es bei jedem Tick ressourcenintensiv sein?

Das Schleppnetz versucht, die SL auf dieselbe Ebene zu bringen. Wir müssen eine Prüfung hinzufügen, ob die Schleppnetz-Ebene sich von der aktuellen SL unterscheidet.

 
valeryk:

Das Schleppnetz versucht, SL auf dieselbe Ebene zu bringen. Es sollte eine Prüfung hinzugefügt werden, die besagt, dass der Schleppnetzpegel von der derzeitigen SL abweichen muss.



Ich habe einen Scheck dafür:

if (ND(OrderStopLoss() - priceBU * pt) != 0.0)
{
  if (!OrderModify(OrderTicket(), OrderOpenPrice(), priceBU, OrderTakeProfit(), 0, CLR_NONE ))
  {
    Print ("Ошибка модификации ордера ", OrderType(), " - ", GetLastError());
  }

}
Wenn Haltestelle - neue Haltestelle (in B.U.) nicht Null ist... dann ändern wir... Wenn nicht, ändern wir nichts. Deshalb ist mir auch nicht klar, wie das passiert. Immerhin verstehe ich, dass ich die Gleichstellung von früherer und neuer Haltestelle überprüfen muss, und ich habe es getan.
 

Hallo! Bitte beraten Sie mich, wie ich meine ursprüngliche und endgültige Bestellung auf 1 T/P ändern kann.

gi_304 = CountTrades();

   g_price_212 = 0;

   double ld_24 = 0;

   for (g_pos_300 = OrdersTotal() - 1; g_pos_300 >= 0; g_pos_300--) {

      OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);

      if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;

      if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {

         if (OrderType() == OP_BUY || OrderType() == OP_SELL) {

            g_price_212 += OrderOpenPrice() * OrderLots();

            ld_24 += OrderLots();

         }

      }

   }

   if (gi_304 > 0) g_price_212 = NormalizeDouble(g_price_212 / ld_24, Digits);

   if (gi_332) {

      for (g_pos_300 = OrdersTotal() - 1; g_pos_300 >= 0; g_pos_300--) {

         OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);

         if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;

         if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {

            if (OrderType() == OP_BUY) {

               g_price_180 = g_price_212 + TakeProfit2 * Point;

               gd_unused_196 = g_price_180;

               gd_308 = g_price_212 - Stoploss * Point;

               gi_268 = TRUE;

            }

         }

         if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {

            if (OrderType() == OP_SELL) {

               g_price_180 = g_price_212 - TakeProfit2 * Point;

               gd_unused_204 = g_price_180;

               gd_308 = g_price_212 + Stoploss * Point;

               gi_268 = TRUE;

            }

         }

      }

   }

   if (gi_332) {

      if (gi_268 == TRUE) {

         for (g_pos_300 = OrdersTotal() - 1; g_pos_300 >= 0; g_pos_300--) {

            OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);

            if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;

            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) OrderModify(OrderTicket(), g_price_212, OrderStopLoss(), g_price_180, 0, Yellow);

            gi_332 = FALSE;

         }

      }

   }

   return (0);


 
agat8430:

Hallo! Bitte beraten Sie mich, wie ich meine ursprüngliche und endgültige Bestellung auf 1 T/P ändern kann.


Bearbeiten Sie diesen Code, damit er nicht wie ein Hack aussieht
Grund der Beschwerde: