[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 403

 
mersi:
Laden Sie die Geschichte herunter und die Frage verschwindet

Wie können Sie es herunterladen?
 
kolyango:

Ich verstehe das richtig:

Die konkrete Umsetzung ist sehr stark von Ihren Bedingungen abhängig.

Ein Flag ist einfach eine Variable, in der der Zustand gespeichert wird. Grob gesagt, kann sie angehoben oder abgesenkt werden. Bauen Sie darauf auf und setzen Sie Ihre Logik um.

 
w_ersoc:

Können Sie beraten, wie man eine korrekte Bedingung für den Expert Advisor zu schreiben, um 1 Mal mit der Eröffnung eines neuen Bar in einem bestimmten Zeitrahmen auslösen? :(

Sie können sich verschiedene Varianten ausdenken, oft wird diese Art von Bedingung verwendet:

int start()
static datetime dtBar;
//.................
if(Time[0]==dtBar) return(0);//…проверим открытие новой свечи
dtBar=Time[0]; //(тот же Бар-возврат)(новый-продолжение...)
// 
 
splxgf:

Die konkrete Umsetzung ist sehr stark von Ihren Bedingungen abhängig.

Ein Flag ist einfach eine Variable, in der die Bedingung gespeichert wird. Grob gesagt, kann sie angehoben oder abgesenkt werden. Bauen Sie darauf auf und setzen Sie Ihre Logik um.


Nun, habe ich das richtig verstanden?

Ich verstehe das richtig:

1. Wenn Bedingung 1 erfüllt ist, wird Flag_SSSR1 ein wahrer Wert zugewiesen, und wir beginnen sofort mit der Überprüfung von Bedingung 2.

2. wenn die Bedingung2 erfüllt ist, wird der Flagge Flag_CCP2 der Wert "wahr" zugewiesen; wenn nicht, handelt es sich um eine falsche Flagge, und beim nächsten Tick

wir prüfen die Bedingung 1 nicht mehr und gehen direkt zu Bedingung 2 über usw., bis Bedingung 2 erfüllt ist und einen wahren Wert annimmt

3. dann prüfen wir condition3 und Flag_USSR2 (und was genau in USSR2 wird geprüft, ob es wahr oder falsch ist, oder was?)

Ist dies richtig? Es gibt nicht eine einzige Transaktion im Testgerät... Obwohl es so sein sollte, wenn es richtig ist. Was ist los...?

static bool Val_max, Cl_dn, Val_min; //static or global
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int
   i, j, total,
   cnt,
   OrderBuy,
   OrderSell,
   Magic,
   Ticket,                                      // Номер ордера
   Total=0,                                     // Количество ордеров в окне
   Tip=-1;                                      // Тип выбран. ордера (B=0,S=1)      
   double
   Open_0,
   ask,
   bid,
   Price,                                       // Цена выбранного ордера
   SL,                                          // SL выбранного ордера
   TP,                                          // TP выбранного ордера
   Lot;                                         // Колич. лотов в выбран.ордере
   Open_0=Open[0];                             // Цена откр. формирующегося бара
   ask=Ask;                                    // Текущая цена покупки
   bid=Bid;                                    // Текущая цена продажи
   string
   Symb;                                        // Название финанс. инструмента
   Symb=Symbol();                               // Название фин.инстр.
double Value_max=1.0000;
double Value_min=0.9980;
double Open_1= Open[1];
double Close_1= Close[1];
//----

//--------------------------------------------------------------- 4 --

double Val=iCustom(NULL, 0, "HMR MULTI Indicator",0,0);   
if (Val >= Value_max) Val_max=true;                  // 
if (Open_1 > Close_1) Cl_dn=true;
if (Val <= Value_min && Cl_dn==true) Val_min=true;
if (Val_max==true && Cl_dn==true && Val_min==true)
  {
   for (j = 0; j < OrdersTotal(); j++)
    {
     OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol() == Symbol())
      {
      if (OrderType() == OP_SELL) return(0);
      }
    }

   OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble(Bid,Digits),2,Bid+400*Point,Bid-400*Point,"",3,Red);  // Открытие SELL
   Val_max=false; Cl_dn=false; Val_min=false;
  }

//----
   return(0);
  }
 

Hallo!

Ich habe mir zum Ziel gesetzt, die Zahl der gleichzeitig offenen Positionen auf 1 zu begrenzen.

Mit der Variable Open/Close level = 3/2 multipliziert mit Point, platziert in den Open/Close-Positionsbedingungen habe ich versucht, diese Aufgabe zu lösen, was mir aber nicht gelungen ist.

Bitte helfen Sie mir, es herauszufinden :)

 
kolyango:


Ist das die richtige Entscheidung? Es gibt nicht eine einzige Transaktion im Testgerät... Obwohl es so sein sollte, wenn es richtig ist. Was ist denn los...?

Schreiben Sie nun die Bedingungen noch einmal vollständig in normaler Sprache auf und Sie können den Code korrigieren... Das Gute an Signalen ist, dass sie ein Verfallsdatum und eine Kündigung haben sollten.
 
skyjet:

Hallo!

Ich habe mir zum Ziel gesetzt, gleichzeitig offene Positionen auf 1 zu beschränken.

if(Auftragssumme()>0) return;

Oder eine Variante mit dem Symbol und dem Ausschluss schwebender Aufträge.

 

d.h. in meiner Version

if(AufträgeSumme()>1)return;

?

 
splxgf:
Schreiben Sie nun die Bedingungen noch einmal vollständig in normaler Sprache auf und Sie können den Code korrigieren... Das Gute an Signalen ist, dass sie eine Verfalls- und Kündigungsfrist haben sollten.

Alle diese Bedingungen können nicht auf einmal folgen (vielleicht nach einer Stunde oder zwei oder drei), so müssen wir es so machen, sobald der Indikator 1,0000 erreicht, diese Bedingung nicht bei jedem Tick überprüft wird, und warten, bis eine Bar schließt mit fallen, und nach, dass diese 2 Bedingungen nicht bei jedem Tick überprüft werden, und warten, bis der Indikator erreicht 0,9980 oder weniger. Sobald alle Bedingungen erfüllt sind, eröffnen wir einen Marktauftrag zum Verkauf von 0,1 Lot mit einem Stop Loss von 400p und einem Take Profit von 400p.
 
skyjet:

d.h. in meiner Version

if(AufträgeSumme()>1)return;

?

Besser noch die erste Option, vor dem Versuch, eine Bestellung zu öffnen, aufgeben(OrderSend)