Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1343

 
Forallf:
Das mittlere ist für mich ein Beispiel. Es wird eine andere, berechnete Ebene geben.

jede Stufe kann dort eingestellt werden, und zwar in beliebiger Menge

 
Andrey Sokolov:

Hallo. Können Sie mir bitte sagen, wie ich den Angebotspreis berechnen kann?

Wie berechne ich einen Geldkurs, bei dem mehrere KAUFEN-Positionen einen Gesamtnullgewinn für Währungspaare haben, bei denen die Basiswährung (erste Währung) der Dollar ist und der Pip-Wert nicht konstant ist und von den Preisen abhängt?

Für Paare, bei denen der Dollar die notierte (zweite) Währung ist und der Pip-Wert konstant ist, habe ich die folgende Funktion abgeleitet,

Dies wird Ihnen helfen)
 
DanilaMactep:
Vielen Dank, dass Sie es bemerkt und mir gesagt haben, ich habe es behoben und in 2 Jahren der Prüfung gab es 26 Fehler 130. Gleichzeitig wurden 115 Trades normal eröffnet

Wenn die anhängigen Aufträge in einem Abstand zum aktuellen Kurs platziert werden, der kleiner ist als das STOPLEVEL, tritt ein Fehler auf 130

Deshalb haben Sie diesen Code erhalten.

oder wenn Sie es auf andere Weise berücksichtigen müssen

MarketInfo(_Symbol, MODE_STOPLEVEL);
 
Hallo! Ich benötige einen Code, um Marktaufträge nach einer bestimmten Zeit nach der Eröffnung zu schließen (24 Stunden, 48 Stunden). Die Zeit sollte einstellbar sein.
 
Max330:
Hallo, ich benötige einen Code zum Schließen von Marktaufträgen eine bestimmte Zeit nach deren Öffnung (24 Stunden, 48 Stunden). Die Zeit sollte einstellbar sein.

wie diese

for(int pos=OrdersTotal()-1;pos>=0;pos--)
    if(OrderSelect(pos,SELECT_BY_POS)==true)
       if(OrderSymbol()==_Symbol)
         if(TimeCurrent()-(определенное время в секундах) >= OrderOpenTime()) 
            OrderClose(order_id,1,Ask,3,Red);
 
MakarFX:
Dies wird Ihnen helfen)

Leider hat das nicht geholfen. Dieser orientiert sich im Allgemeinen an den Eröffnungspreisen

 
Andrey Sokolov:

Leider hat das nicht geholfen. Dieser orientiert sich im Allgemeinen an den Eröffnungspreisen.

Dann verstehe ich nicht, was Sie brauchen.

Andrej Sokolow:

Wie berechnet man den Geldkurs, bei dem mehrere BUY-Positionen insgesamt einen Nullgewinn aufweisen?

d.h. Breakeven?

 
MakarFX:

Dann verstehe ich nicht, was Sie wollen.

D.h. kostendeckend?

Berechnung eines Schlusskurses für einen oder mehrere unidirektionale Aufträge (Bid for Buy), bei dem ihr Gesamtgewinn+Ersparnis+Provisionen == 0 ist.

Dieses Problem tritt bei Paaren auf, bei denen die Basiswährung Dollar ist und sich der Punktwert ändert.

 
Forallf:
Die Mitte ist für mich ein Beispiel. Es wird eine weitere, berechnete Ebene geben.

Der Indikator zeichnet die Mitte für eine beliebige Anzahl von Trendlinien:

#property version   "1.00"
#property strict
#property indicator_chart_window

string symbol;
ENUM_TIMEFRAMES frame;
int digits;

long ChartId;
int Window;

datetime time1, time2;
double price;

int OnInit()
   {
   //идентификатор графика и номер окна индикатора
   ChartId=ChartID();
   Window=0;
   symbol=Symbol();
   frame=(ENUM_TIMEFRAMES)Period();
   digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
   ChartSetInteger(ChartId,CHART_EVENT_OBJECT_CREATE,true);
   return(INIT_SUCCEEDED);
   }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
   {

   return(rates_total);
   }

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
   {
   if((id==CHARTEVENT_OBJECT_CREATE || id==CHARTEVENT_OBJECT_DRAG) && ObjectGet(sparam,OBJPROP_TYPE)==OBJ_TREND && StringFind(sparam,"Middle")==-1)
      {
      price=(ObjectGet(sparam,OBJPROP_PRICE1)+ObjectGet(sparam,OBJPROP_PRICE2))/2;
      time1=GetPointTimeOnStraight((datetime)ObjectGet(sparam,OBJPROP_TIME1),ObjectGet(sparam,OBJPROP_PRICE1),(datetime)ObjectGet(sparam,OBJPROP_TIME2),ObjectGet(sparam,OBJPROP_PRICE2),price,symbol,frame);
      time2=time1+PeriodSeconds(frame)*10;
      RedrawLine(ChartId,Window,sparam+"_Middle",time1,price,time2,price,(color)ObjectGet(sparam,OBJPROP_COLOR),(int)ObjectGet(sparam,OBJPROP_WIDTH),(string)ObjectGet(sparam,OBJPROP_TOOLTIP),digits);
      }
   }
      
//находит дату точки (координату X) на прямой, на заданную цену (координата Y)
datetime GetPointTimeOnStraight(datetime eTime1, double ePrice1, datetime eTime2, double ePrice2, double ePrice3, string eSymbol, int eTimeFrame)
   {
   if(ePrice2-ePrice1==0) return(0.0);
   //индекс бара соответствующий заданному времени, возможно задавать будующее время
   int eIndex1=(eTime1>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime1)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime1);
   int eIndex2=(eTime2>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime2)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime2);
   int eIndex3=eIndex1+(int)((eIndex2-eIndex1)*(ePrice3-ePrice1)/(ePrice2-ePrice1));
   if(eIndex3>=0)
      {
      return(iTime(eSymbol,eTimeFrame,eIndex3));
      }
   else
      {
      return(iTime(eSymbol,eTimeFrame,0)-eIndex3*PeriodSeconds(eTimeFrame));
      }
   }

//перерисовывает линию по новым координатам, если её нет, то создаёт
void RedrawLine(long eChartId, int eWindow, string eName, datetime eTime1, double ePrice1, datetime eTime2, double ePrice2, color eColor, int eWidth, string eTooltip, int eDigits)
   {
   if(ObjectFind(eChartId,eName)==-1)
      {
      if(!ObjectCreate(eChartId,eName,OBJ_TREND,eWindow,0,0)) return;
      ObjectSetInteger(eChartId,eName,OBJPROP_STYLE,STYLE_SOLID);
      ObjectSetInteger(eChartId,eName,OBJPROP_WIDTH,eWidth);
      ObjectSetInteger(eChartId,eName,OBJPROP_BACK,false);
      ObjectSetInteger(eChartId,eName,OBJPROP_SELECTABLE,false);
      ObjectSetInteger(eChartId,eName,OBJPROP_SELECTED,false);
      ObjectSetInteger(eChartId,eName,OBJPROP_RAY_RIGHT,false);
      ObjectSetInteger(eChartId,eName,OBJPROP_HIDDEN,true);
      }
   if(ObjectFind(eChartId,eName)==-1) return;   
   if(ObjectGetInteger(eChartId,eName,OBJPROP_TIME)!=eTime1) ObjectSetInteger(eChartId,eName,OBJPROP_TIME,eTime1);
   if(NormalizeDouble(ObjectGetDouble(eChartId,eName,OBJPROP_PRICE)-ePrice1,eDigits)!=0) ObjectSetDouble(eChartId,eName,OBJPROP_PRICE,ePrice1);
   if(ObjectGetInteger(eChartId,eName,OBJPROP_TIME,1)!=eTime2) ObjectSetInteger(eChartId,eName,OBJPROP_TIME,1,eTime2);
   if(NormalizeDouble(ObjectGetDouble(eChartId,eName,OBJPROP_PRICE,1)-ePrice2,eDigits)!=0) ObjectSetDouble(eChartId,eName,OBJPROP_PRICE,1,ePrice2);
   if(ObjectGetInteger(eChartId,eName,OBJPROP_COLOR)!=eColor) ObjectSetInteger(eChartId,eName,OBJPROP_COLOR,eColor);
   if(ObjectGetString(eChartId,eName,OBJPROP_TOOLTIP)!=eTooltip) ObjectSetString(eChartId,eName,OBJPROP_TOOLTIP,eTooltip);
   }
 
Hallo zusammen. Frage: Ich kann in der Liste der Broker nur Just2Trade auswählen. Bei der Suche nach anderen Brokern passiert nichts. Ich habe versucht, das Programm neu zu installieren und alle Ordner und Dateien (auch die versteckten) zu löschen. Hatte jemand ein solches Problem?
Dateien: