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

 
DanLett:

Bitte beraten Sie mich, was zu tun ist, wenn:

In der Tester funktioniert gut, alles nach Plan, aber auf der realsk nicht öffnen Sie die Transaktion.

P.S. Brauche dringend Hilfe, Frage über Leben und Tod

Dürfen Berater handeln?
 
DanLett:

Bitte beraten Sie mich, was zu tun ist, wenn:

In der Tester funktioniert gut, alles nach Plan, aber auf der realsk nicht öffnen Sie die Transaktion.

P.S. Brauche dringend Hilfe, Frage über Leben und Tod


Ich bin kein Experte, vielleicht gibt es ein Problem?

ОrderSelect(i,SELECT_BY_POS,MODE_TRADES)
wurde durch MODE_TRADES? ersetzt.
 

Was ist mit meiner Mathematik los?

int modOrder()
{
double currentPrice = Bid;
double currentStoploss = OrderStopLoss();
double profitLine=profitLine();
if (currentPrice >= profitLine)
  {
  OrderModify(getTicket(),0,currentStoploss+1*Point,0,0,Blue);
  }
  Alert("profit line ", profitLine);
  return (0);
}

Mein currentPrice >= profitLine bedeutet, dass wenn profitLine == oder >, richtig?

Aber es funktioniert für mich, wenn > um mindestens einen Punkt.

 
Der Vergleich von reellen Zahlen (double) mit strenger Gleichheit ist nicht das Beste, was man mit ihnen tun kann. Richtiger ist es, ihre Differenz mit dem zulässigen Höchstwert zu vergleichen.
 
olis: Was ist mit meiner Mathematik los?
Haben Sie sich dieFAQ angesehen?
 
GaryKa:
Haben Sie sich die FAQ angesehen?

Ja, nun... Daran habe ich nicht gedacht. Danke. (lacht)
 
Gek34:

Liebe Experten, die Frage nach dem Indikator ist entfernt, die Lösung kam ganz unerwartet, ich habe die Berechnungen dupliziert, und oops.... Alles funktioniert.

Aber ich habe noch eine andere, und ich würde gerne verstehen, wie sie funktioniert. Der Code ist beigefügt:

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow

extern int PerMa = 5;
extern int Shift = 0;
extern int Step = 15;

double ABuf45[],ABuf[],ABuf5[],ABuf15[];//,Stark[];
double Stark;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{ Stark=0;
//---- indicators
// IndicatorBuffers(4);

SetIndexBuffer(0,ABuf);
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int i,n;

//----
i=Bars-counted_bars-1;

while(i>=0)
{ RefreshRates();
//----
double Ma15=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,i);
double Ma45=iMA(NULL,0,50,0,MODE_EMA,PRICE_CLOSE,i);
double Ma=iMA(NULL,0,PerMa,0,MODE_EMA,PRICE_CLOSE,i);
//double Ma1=iMA(NULL,0,PerMa,Shift,MODE_EMA,PRICE_CLOSE,i+1);
if(Ma>Stark+Step*Point&&Ma15>Ma45){Stark=Ma;}
if(Ma<Stark-Step*Point&&Ma15<Ma45){Stark=Ma;}//else{Stark=Stark;}
ABuf[i+Shift]=Stark;Comment(Stark);
if(Ma>Stark+Step*Point&&Ma15>Ma45){Stark=Ma;}//else{Stark=Stark;}
if(Ma<Stark-Step*Point&&Ma15<Ma45){Stark=Ma;}//else{Stark=Stark;}
ABuf[i+Shift]=Stark;//Comment(Stark);

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


Zurückgezogen. Ich habe allen möglichen Unsinn erfunden. Es stellte sich heraus, dass es viel einfacher war. Ich habe die Variable Stark aus der Startfunktion entfernt, damit sie nicht bei jedem Tick zurückgesetzt wird.
 

sig1"-Signal gegeben wird , wird der BUY-Befehl ausgelöst und die schwebende SELLSTOP-Order wird unter der BUY-Order platziert.

Wenn die BUY-Position geschlossen wird, wird auch der SELLSTOP gelöscht.

Aber was passiert, wenn dieser KAUF nicht geschlossen und der nächste KAUF usw. geöffnet wird?

Dieser SELLSTOP, der zuerst gesetzt wird, muss irgendwie herausgefunden werden, um ihn zu schließen, nachdem der erste BUY geschlossen wurde.

Und wenn der Kurs die Pending One durchbricht und dann ohne Verlust schließt, wurde die Pending One an der gleichen Stelle wie ihre Vorgängerin gesetzt.

-----------------------------------

Dieswird das Problem nicht lösen, da nach dem Schließen des Verkaufs ein neuer Verkauf mit einem anderen Mastergeöffnet wird und dieser gelöscht wird.

Nachdem ich den Kauf abgeschlossen habe, weiß ich nicht, wie.

 int i, k=OrdersTotal(),ti;
    for (i=0; i<k; i++){
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
    if(OrderType()== OP_SELLSTOP){
    ti = OrderMagicNumber();  }
    if(OrderType()== OP_BUY)
    if(OrderTicket()==ti) что дальше не пойму, как узнать о наличии ордера бай с нужным тикетом?

 
Top2n:

sig1"-Signal gegeben wird , wird der BUY-Befehl ausgelöst und die schwebende SELLSTOP-Order wird unter der BUY-Order platziert.

Wenn die BUY-Position geschlossen wird, wird auch der SELLSTOP gelöscht.

Aber was passiert, wenn dieser KAUF nicht geschlossen und der nächste KAUF usw. geöffnet wird?

Dieser SELLSTOP, der zuerst gesetzt wird, muss irgendwie herausgefunden werden, um ihn zu schließen, nachdem der erste BUY geschlossen wurde.

Und wenn der Kurs die Pending One durchbricht und dann ohne Verlust schließt, wurde die Pending One an der gleichen Stelle wie ihre Vorgängerin gesetzt.

-----------------------------------

Dieswird das Problem nicht lösen, da nach dem Schließen des Verkaufs ein neuer Verkauf mit einem anderen Mastergeöffnet wird und dieser gelöscht wird.

nachdem der Kauf abgeschlossen ist, weiß ich nicht, wie.


Nun... Sie verwenden dasselbe Select, um zu prüfen...

int i, k=OrdersTotal(), ti, tid;

for (i=0; i<k; i++){
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
       if (OrderType()== OP_SELLSTOP) {
          tid = OrderTicket(); // запомним тикет ордера селлстоп - если его придётся удалить...
          ti = OrderMagicNumber();  
          //  ищем ордер по тикету
          if (OrderSelect(ti, SELECT_BY_TICKET)==true) {
             // проверяем Закрылся ли этот ордер - это твоя Байка
             if (OrderCloseTime() > 0) {
                //  удаляем ордер Селлстоп - если связанная с ним байка Закрылась...
                OrderDelete(tid);
             }
          } 
       }
    }
}
 
du bekommst eine Menge Ideen... glauben Sie mir, Sie machen Blödsinn... verschwenden Sie nicht Ihre Zeit... Ihr Martingal funktioniert nicht so einfach...
Grund der Beschwerde: