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

 
polsvv , dafür ist dieMagie da.
 
vnn:

Hallo zusammen...

Könnten Sie mir bitte sagen, wie ich den Pfad zu den MetaTrader 4 History-Dateien erstellen kann? Wie "c:\Programmdateien\metatrader 4\historie\alpari-classic\"?

https://docs.mql4.com/ru/files/FileOpenHistory
 

Vielen Dank, Sergejew, ich glaube, ich habe es gefunden...

Print("Terminal path: ", TerminalPath() + "\\history\\" + AccountServer() + "\\");

Diese Zeile gibt den richtigen Pfad aus, obwohl der Editor in den Farben falsch ist... Sie sollten den Code wahrscheinlich in Notepad schreiben. Nur ein Scherz.

 

Guten Abend zusammen!

In Sergey Kovalevs Tutorial habe ich einen Experten gefunden - Trailing Stop. Ich habe es in MetaEditor kopiert und kompiliert, aber das Programm funktioniert nicht. Bitte teilen Sie mir mit, was der Grund dafür ist. Vielleicht mache ich etwas falsch.

 

ist sie in mql geschrieben?)

Geben Sie mir einfach den Code.

 
Leute, erklärt mir, wie man iCustom benutzt
Ich schreibe
double BBUP =iCustom(NULL, 0, "Bands", "BandsPeriod", "BandsShift", "BandsDeviations",1,0);
double BBDW =iCustom(NULL, 0, "Bands", "BandsPeriod", "BandsShift", "BandsDeviations",2,0);
Ich kriege es nicht hin ...
Ich habe eine Aufgabe, um Signale von Bands Indikator obere und untere Linie zu erhalten...... Genaue Bands.....
 
//-------------------------------------------------------------------- // modifystoploss.mq4 // Konzipiert als Beispiel für das MQL4-Tutorial //-------------------------------------------------------------------- extern int Tral_Stop=10; // Dist. verfolgen //--------------------------------------------------------------- 1 -- int start() // Spezialfunktion start { string Symb=Symbol(); // Fin. tool //--------------------------------------------------------------- 2 -- for(int i=1; i<=OrdersTotal(); i++) // Bestellschleife { if (OrderSelect(i-1,SELECT_BY_POS)==true) // Wenn es ein next gibt { // Bestellanalyse: int Tip=OrderType(); // Bestellart if(OrderSymbol()!=Symb||Tip>1)continue;// Nicht unsere Order double SL=OrderStopLoss(; // SL der ausgewählten Order //------------------------------------------------------ 3 -- while(true) // Änderungsschleife { double TS=Tral_Stop; // Anfangswert int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Minimal dist. if (TS<Min_Dist) // Wenn der erlaubte Wert unterschritten wird, dann wird die Order gelöscht.
               TS=Min_Dist; // Neuer Wert von TS //--------------------------------------------------- 4 -- bool Modify=false; // Nicht zum Modifizieren zugewiesen switch(Tip) // Nach Auftragsart { case 0 : // Kaufauftrag if (NormalizeDouble(SL,Digits)< // Wenn niedriger gewünscht.
                     NormalizeDouble(Bid-TS*Point,Digits)) { SL=Bid-TS*Point; // dann ändern string Text="Buy "; // Text für Buy Modify=true; // zum Ändern zugewiesen } break; // exit if case 1 : // Verkaufsauftrag if (NormalizeDouble(SL,Digits)> // if above requested.
                     NormalizeDouble(Ask+TS*Point,Digits)|| NormalizeDouble(SL,Digits)==0)//oder gleich Null { SL=Ask+TS*Point; // dann ändern Text="Sell "; // Modify=true; // zum Ändern zugewiesen } } // end switch if (Modify==false) // wenn nicht geändert break; // exit while //--------------------------------------------------- 5 -- double TP =OrderTakeProfit(); // TP der ausgewählten Order.
            double Price =OrderOpenPrice(); // Preis der ausgewählten Order. int Ticket=OrderTicket(); // Nummer der ausgewählten Order. Alert ("Modify ",Text,Ticket,". Waiting for reply..."); bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Modify it!
            //--------------------------------------------------- 6 -- if (Ans==true) // Es hat funktioniert :) { Alert ("Order ",Text,Ticket," modified:)"); break; // Von der Schleife modifizieren.
              } //--------------------------------------------------- 7 -- int Error=GetLastError(); // fehlgeschlagen :( switch(Error) // Fehler überwinden { case 130:Alert("Falsche Haltestellen. Versuchen Sie es erneut."); RefreshRates(); // Daten aktualisieren continue; // Nächste Iteration. Iteration case 136:Alert("Kein Preis. Warten auf einen neuen Tick..."); while(RefreshRates()==false) // Bis zum neuen Tick Sleep(1); // Verzögerung in der Schleife continue; // Nächste Iteration case 146:Alert("Das Handelssubsystem ist beschäftigt.Try again"); Sleep(500); // Einfache Lösung RefreshRates(); // Daten aktualisieren continue; // Nächste Iteration // Kritische Fehler case 2 : Alert("Allgemeiner Fehler."); break; // Beenden switch case 5 : Alert("Alte Client-Terminalversion."); break; // Beenden switch case 64 : Alert("Konto gesperrt."); break; // Beenden switch case 133:Alert("Trading prohibited"); break; // Beenden switch default: Alert("Error ",Error);//Fehler } break; // Ende der Änderungsschleife } // Ende der Änderungsschleife //------------------------------------------------------ 8 -- } // Ende der Auftragsanalyse //--------------------------------------------------------------- 9 -- return; // Beenden start() } //-------------------------------------------------------------- 10 --
 
VOLDEMAR:
Leute, erklärt mir, wie man iCustom benutzt
Ich schreibe
double BBUP =iCustom(NULL, 0, "Bands", "BandsPeriod", "BandsShift", "BandsDeviations",1,0);
double BBDW =iCustom(NULL, 0, "Bands", "BandsPeriod", "BandsShift", "BandsDeviations",2,0);
Ich kann es nicht zum Laufen bringen ...
Ich habe eine Aufgabe, um Signale von Bands Indikator obere und untere Linie zu erhalten...... Genaue Bands.....
https://docs.mql4.com/ru/indicators/iBands
 
FelixFX:

Guten Abend zusammen!

In Sergey Kovalevs Tutorial habe ich einen Experten gefunden - Trailing Stop. Ich habe es in MetaEditor kopiert und kompiliert, aber das Programm funktioniert nicht. Bitte teilen Sie mir mit, was der Grund dafür ist. Vielleicht mache ich etwas falsch.


Verwenden Sie dies:

In Benutzervariablen schreiben wir:

extern string   с9="------ Трейлингстоп ------";
extern int      TrailingStop=20; //Трейлинг-Стоп рыночного ордера. Если = 0 или то тарла нет
extern int      TrailingStep=5; //Шаг трала рыночного ордера
extern bool     WaitProfit = true; // Если true, то ждать профит = значению TrailingStop и только потом начинать тралить
                                    //Иначе, трейлинговать не дожидаясь положительного профита

extern string   с10=" -------- Прочие параметры -------------";
extern int      MAGIC=123456;//У ордеров открытых вручную MAGIC=0
extern int      Proskalz=10;//Проскальзывание

Schreiben Sie in EA Start:

// ----------------------------- Тралим ордера ------------------------------------
TrailingRyn_b(TrailingStop,TrailingStep,Proskalz,MAGIC,WaitProfit,false);

Nach dem Start in benutzerdefinierte Unterprogramme schreiben:

// =================================================================================================
// ************************* Трейлинг рыночных ордеров *********************************************
// =================================================================================================


// =================  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)) {WriteError(i);}
      else {
        if (OrderSymbol()==SMB && OrderMagicNumber()==MAGIC){
          TrailingPositions_b(ryn_TrStop,ryn_TrStep,Proskalz,WaitProfit,UseTrailingSound);
        }
      }
    }
  }
 if(ryn_TrStop>=MinLevel && ryn_TrStep==0)
 Alert("Трейлинг невозможен - 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) { ModifError();}
}
//+------------------------------------------------------------------+

Funktionen wie ModifError() sind meine eigenen Funktionen - sie zeigen lediglich eine Fehlermeldung an. Schreiben Sie stattdessen Ihre eigenen Nachrichten.

 
Vielen Dank .... Wenn es mir geholfen hätte, würde ich diese Frage nicht stellen .............
Grund der Beschwerde: