[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 165

 
FelixFX:

danke

Bei der Kompilierung wurden viele Fehler gefunden
 
RoniIron:

Entschuldigen Sie...... den Martingal-Berater, ist es möglich, einen Stoploss darin vorzuschreiben oder ist es nicht möglich. Ich danke Ihnen.

Die Funktion OrderSend() hat den Stop Loss als einen ihrer Parameter. Und sie ist es, die die Reihenfolge festlegt. Daher berechnen wir das Stop-Level für den gewünschten Auftrag und geben es in die Funktion ein.
 
FelixFX:

Kompilation hat viele Fehler aufgedeckt

Nun, so wird es sein - ich habe Sie gewarnt, dass MEINE Subroutinen beteiligt sind! Entfernen Sie sie und ersetzen Sie sie durch Ihre Drucker mit GetLastError()
 
drknn:

Nun, das wird es sein - ich habe Ihnen gesagt, dass MEINE Unterprogramme beteiligt sind! Entfernen Sie sie und ersetzen Sie sie durch Ihre Drucker mit der GetLastError()-Abfrage.

Das ist leicht zu bewerkstelligen, wenn man sich mit mql gut auskennt. ) Ich lerne gerade erst, deshalb ist es für mich ein bisschen schwierig, alles Unnötige zu entfernen und nur das Nötige übrig zu lassen.
 
// =================================================================================================
// ************************* Трейлинг рыночных ордеров *********************************************
// =================================================================================================


// =================  TrailingRyn() =============================================================
// функция осуществляет трейлинг рыночных ордеров 
// ----------------------------------------------
void TrailingRyn_b(int ryn_TrStop, int ryn_TrStep, int Proskalz, int MAGIC, bool WaitProfit,  bool UseTrailingSound) {
  string SMB=Symbol(); 
  int i;
  int MinLevel=MarketInfo(SMB,MODE_STOPLEVEL);//Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах   
  int SchBuy=SchBuy(MAGIC);
  int SchSell=SchSell(MAGIC);
  if(ryn_TrStop>=MinLevel && ryn_TrStep>0 && (SchBuy>0 || SchSell>0)){    
    for (i=OrdersTotal()-1;i>=0;i--){
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {Print("Ошибка № ",GetLastError()," при выборе ордер № ",i);}
      else {
        if (OrderSymbol()==SMB && OrderMagicNumber()==MAGIC){
          TrailingPositions_b(ryn_TrStop,ryn_TrStep,Proskalz,WaitProfit,UseTrailingSound);
        }
      }
    }
  }
 if(ryn_TrStop>=MinLevel && ryn_TrStep==0)
 Print("Трейлинг невозможен - ryn_TrStep==0");
} 
// =================================================================================================

//+------------------------------------------------------------------+
//| Сопровождение позиции простым тралом                             |
//+------------------------------------------------------------------+
void TrailingPositions_b(int ryn_TrStop, int ryn_TrStep, int Proskalz, bool WaitProfit, bool UseTrailingSound){
  if(OrderType()==OP_BUY){
    if(!WaitProfit || (Bid-OrderOpenPrice())>ryn_TrStop*Point){
      if (OrderStopLoss()<Bid-(ryn_TrStop+ryn_TrStep-1)*Point){
        ModifyStopLoss_b(Bid-ryn_TrStop*Point,UseTrailingSound);
      }
    }
  }
  if(OrderType()==OP_SELL){
    if(!WaitProfit || OrderOpenPrice()-Ask>ryn_TrStop*Point) {
      if(OrderStopLoss()>Ask+(ryn_TrStop+ryn_TrStep-1)*Point || OrderStopLoss()==0){
        ModifyStopLoss_b(Ask+ryn_TrStop*Point,UseTrailingSound);
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Перенос уровня StopLoss                                          |
//| Параметры:                                                       |
//|   ldStopLoss - уровень StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss_b(double ldStopLoss, bool UseTrailingSound){
  bool fm=false;
  string NameTrallingSound  = "ok.wav";// Наименование звукового файла для трейлинга
  fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
  if(fm!=0 && fm!=-1){
    if(UseTrailingSound) { PlaySound(NameTrallingSound);}
  }   
  if(fm==0 || fm==-1) { Print("Ошибка № ",GetLastError()," при модификации ордера № ",OrderTicket());}
}
//+------------------------------------------------------------------+
 
VOLDEMAR:
Danke Jungs.....
Wie iCustom mit iCustom und einem Indikator verwendet wird, der einen Pfeil an einem bestimmten Punkt zeichnet, um dem EA zu sagen, dass er ..... öffnen soll
Wenn iBands ein Ask > BBUP ist, ist es verständlich, aber was ist mit dem Objekt, das auftauchen kann oder auch nicht (wie ein Pfeil) ??????


Trotzdem müssen Sie sich den Code des Indikators ansehen, um zu verstehen, welcher der Puffer den Wert welcher Zeile enthält.

Wenn Sie Indikator-Parameter in die iCustom-Funktion eingeben möchten, sollten Sie die Indikator-Parameter zu den benutzerdefinierten Variablen des Expert Advisors hinzufügen. Andernfalls versteht der EA nicht, welche Werte in den aufgeführten Variablen enthalten sind.

 
Hallo! Bitte treten Sie mich nicht, wenn ich die falsche Frage stelle, aber ich habe das ganze Forum und das Internet durchforstet und habe nicht gefunden, was ich suche. Die Frage ist folgende! Ist es möglich, eine Bedingung zu schaffen, wenn (nach dem letzten StopLoss (in der Zeit) sollte zB 2 Gewinn zu schließen), bis sie nicht tun, sonst ... Und wenn es möglich ist, eine kleine Skizze in Code, aber es ist möglich und einfach, ein Schema in Worten zu zeichnen - danke im Voraus!
 
ruzzo:
Hallo! Bitte treten Sie mich nicht, wenn ich die falsche Frage stelle, aber ich habe das ganze Forum und das Internet durchforstet und nicht gefunden, was ich gesucht habe. Die Frage ist folgende! Ist es möglich, eine Bedingung zu schaffen, wenn (nach dem letzten StopLoss (in der Zeit) sollte zB 2 Gewinn zu schließen), bis sie nicht tun, sonst ... Wenn möglich, eine kleine Skizze in Code, aber Sie können nur zeichnen ein Schema in Worten, danke im Voraus!


Im Allgemeinen ist es nicht klar, was genau Sie brauchen.

Eine Bedingung in if() kann eingefügt werden. Sie kann nach dem Eintreten eines beliebigen Ereignisses eingefügt werden. Aber was bedeutet es, zwei Gewinne abzuschließen? Und noch etwas kann getan werden. Das ist alles...


if(условие){

// какой-то код 

}

else{

// какой-то код 

} 
 
drknn:


Eigentlich verstehe ich nicht, was Sie eigentlich brauchen.

Eine Bedingung in if() kann eingefügt werden. Sie kann nach dem Eintreten eines beliebigen Ereignisses eingefügt werden. Aber was bedeutet es, zwei Gewinne abzuschließen? Und noch etwas kann getan werden. Der Punkt ist...


Ich verstehe, dass zuerst die Bedingung und dann den Code, aber ich wollte eine Bedingung zu erstellen, habe ich StopLoss und arbeiten mit einem anderen Lot, zum Beispiel - bis ich das Geschäft mit zwei Gewinne zu schließen - ich will einfach nicht, um den Saldo zu vergleichen, wenn - alles, weil, wenn ich den Saldo zu vergleichen, und ich habe eine schwebende Bestellung mit einem Zeitlimit - die geänderte Lot überspringt - weil die Bestellung mit dem erhöhten Lot abläuft - vielleicht bin ich nicht richtig graben?
 

Helfen Sie mir bitte zu verstehen.

Ich beschloss, die MACD-Beispiel zu verwenden, und ich kann nicht verstehen, was falsch ist - egal, welche Version, auch die native in das Terminal.

alle geben Fehler aus:

2011.02.28 23:01:53 MACD Sample EURUSD,M15: Fehler beim Öffnen der BUY-Order: 130

5-stelliges Konto. 1:500, Lot 0,1 oder 1, kein Unterschied, reales Konto.

Ich habe SL und TP um das 10-fache erhöht, nichts hat sich geändert, ich habe sogar noch mehr geändert, kein Ergebnis, ich bekomme es nicht hin, dort etwas zu öffnen ((

Die Tatsache, dass es offensichtlich funktioniert, wenn ich ein Geschäft mit meinen Händen öffne, dann überträgt er es in die verlustfreie Position und fängt an zu schleppen, aber er will es nicht von selbst öffnen!

Was mache ich falsch, ich kann es seit einer Woche nicht verstehen!