Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 710

 
sponger:
Sie können Folgendes tun: Km=MathMax(i/r,Point); // mit Division, und es wird nicht Null sein!
 
borilunad:
Sie können Folgendes tun: Km=MathMax(i/r,Point); // mit Division, und es wird nicht Null sein!

wow!!! Kopf! Ich danke Ihnen vielmals!!! Nach der extrem mühsamen vierstündigen Arbeit habe ich endlich herausgefunden, wie man diese Funktion so einkleben kann, dass der Tester nicht flucht) kam etwa folgendes heraus.

double a=iLowest(Symbol(),PERIOD_M1,MODE_LOW,m1,0); //Rückgabe des Bar-Index für n-Perioden mit Mindestpreis

double b=iHighest(Symbol(),PERIOD_M1,MODE_HIGH,m1,0); //Rückgabe des Bar-Index für n-Perioden mit Höchstpreis

double MinLOWPeriod=iLow(Symbol(),PERIOD_M1,a); //Rückgabe des Barpreiswertes mit dem niedrigsten Preis

double MaxHIGHPeriod=iHigh(Symbol(),PERIOD_M1,b); //liefert den Preis des Balkens mit dem höchsten Preis

double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0); //gibt den Schlusskurs des letzten Balkens zurück

double xm1=(PriceCloseBar-MinLOWPeriod)/(MathMax((MaxHIGHPeriod-MinLOWPeriod)/100,Point));

Drucken(xm1);

und machte auch die Formel glatter;)

Ich danke Ihnen!

 
Жалко, кнопочки "Спасибо" нету(
 

sponger:

Es istschade, dass es keine Schaltfläche "Danke" gibt.

Aber es gibt noch eine weitere magische Schaltfläche: SRC. Wenn Sie sie verwenden, wird der Code (oder seine Fragmente) im Beitrag des Fragestellers übersichtlicher und lesbarer, was dem Karma des Fragestellers ein Plus verleiht und die Zahl derer erhöht, die sich diesen Code ansehen und sich entschließen zu helfen.

Einfach pst. . So in das geheime Wissen der Magie der SRC-Taste gewidmet sind, in der Regel nur diejenigen, die die heiligen Texte der Handbücher auf der Website zu lesen. Zum Beispiel, wie diese.

Und viel Erfolg bei der Beherrschung des Geheimwissens zur Lösung weiterer Fragen!
 
sponger:

wow!!! Kopf! Ich danke Ihnen vielmals!!! Nach extrem mühsamer vierstündiger Arbeit habe ich endlich herausgefunden, wie ich diese Funktion so einkleben kann, dass der Tester nicht flucht) kam ungefähr folgendes heraus.

double xm1=(PriceCloseBar-MinLOWPeriod)/(MathMax((MaxHIGHPeriod-MinLOWPeriod)/100,Point));

Drucken(xm1);

und machte auch die Formel glatter;)

Danke!

Bitte sehr! Und ich stimmeDiPach zu 100 % zu! Viel Glück!
 
void ChagingLots(int Magic,double percent,double lot)
{ 
  double t=2,             //коэффициент при делении,для того чтобы узнать цену закрытия
         PriceCl,         //цена закрытия части ордера
         takeprofit;      //нужна для вычислений
  int count = 0,order;
  for(int i=OrdersTotal()-1;i>=0;i--)    //пробегаемся по массиву ордеров
     {
        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
          {
            if(OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
              {
                 if(OrderType()== OP_BUY)        //если ордер на покупку
                 {
                 takeprofit = OrderTakeProfit();   //вычисляем тейк ордера
                 PriceCl    = NormalizeDouble((takeprofit + OrderOpenPrice())/t,Digits);  //примерную цену закрытия
                 order = OrderTicket();    //получили ордер
                 if(Bid>PriceCl) //если текущая цена оказалась выше нашей цены ,то закрываем часть ордера
                 {OrderClose(order,NormalizeDouble(lot*percent/100,2),PriceCl,3);} 
                 }
                 if( OrderType()== OP_SELL )// для продажи аналогично
                 {
                   takeprofit = OrderTakeProfit();
                   PriceCl    = NormalizeDouble((takeprofit + OrderOpenPrice())/t,Digits);
                   order = OrderTicket();
                   if(Bid<PriceCl)
                   {OrderClose(order,NormalizeDouble(lot*percent/100,2),Bid,3);}
                 }
              }
          }
     }
     
}

Hallo zusammen)

Ich habe versucht, eine Funktion zu schreiben, um einen Teil der Position zu schließen, aber wenn ich den Tester ausführe, erscheint 138 ein Fehler, ich verstehe nicht, was das Problem ist, bitte helfen Sie mir.

Hier ist ein Expert Advisor, in dem diese Funktion funktionieren sollte)

Dateien:
zigzagx.mq4  16 kb
 
LBatters:

Hallo zusammen)

Ich habe versucht, eine Funktion zu schreiben, um einen Teil der Position zu schließen, aber wenn ich den Tester ausführe, erscheint 138 ein Fehler, ich verstehe nicht, was das Problem ist, bitte helfen Sie mir.

Ich habe einen EA, in dem diese Funktion funktionieren sollte).

Haben Sie im Dock nachgesehen, was dieser Fehler bedeutet! Dort werden Sie die Antwort finden!

Zu welchem Preis wird der Kauf abgeschlossen? Und der Verkauf?

 

Grüße an alle
Meine Frage bezieht sich eher auf die Entwickler von methaquotes, aber trotzdem...


Сколько баров храниться история? Т.е. с каким максимальным по сдвигу баром можно работать?

Code:

Print(iMA(Symbol(),0,14,0,MODE_SMA,PRICE_CLOSE,1200));

Print(iClose(Symbol(),0,1200));

Bei der Prüfung dieser Verschiebung gibt das Terminal in 2 Fällen 0,0 aus

Aber

Print(iMA(Symbol(),0,14,0,MODE_SMA,PRICE_CLOSE,120));

Print(iClose(Symbol(),0,120)); 

Im Test funktioniert alles

Ist es möglich, die Größe des verfügbaren Verlaufs irgendwie anzupassen? Vielleicht ist jemand mit einem solchen Problem konfrontiert und hat bereits eine Lösung gefunden?
Vielen Dank im Voraus!

 

Hallo zusammen.

Ich versuche, ein einfaches Schleppnetz EA von Kim zu aktualisieren, um ausstehende Aufträge nach dem Schließen aller Marktaufträge zu löschen, es schlägt fehl(

Ich habe eine Funktion zum Löschen ausstehender Aufträge hinzugefügt:

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.11.2006                                                     |
//|  Описание : Удаление ордеров                                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  bool fd;
  int  err, i, it, k=OrdersTotal(), ot;

  if (sy=="0") sy=Symbol();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            for (it=1; it<=NumberOfTry; it++) {
              if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
              while (!IsTradeAllowed()) Sleep(5000);
              fd=OrderDelete(OrderTicket(), clDelete);
              if (fd) {
                if (UseSound) PlaySound(SoundSuccess); break;
              } else {
                err=GetLastError();
                if (UseSound) PlaySound(SoundError);
                Print("Error(",err,") delete order ",GetNameOP(ot),": ",ErrorDescription(err),", try ",it);
                Sleep(1000*5);
              }
            }
          }
        }
      }
    }
  }
}

Ich stand vor einem weiteren Problem, das ich eigentlich nicht lösen kann, weil ich nicht allzu gut im Programmieren bin.

Ich schätze, ich sollte eine Bedingung wie die folgende schreiben:

Dies ist nur ein Beispiel für einen anderen EA.

   if(AccountProfit()<-TargetLoss || AccountProfit()>TargetProfit) 
     {
      ClosePosFirstProfit();
      if(DeleteOrders) DeleteOrders();
     }


Bitte helfen Sie mir weiter.

Dateien:
tral.mq4  19 kb
 
Meine Herren MQL-4-Kenner, wie kann MQ4-Code einen Indikator entladen und wieder laden?