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

 
neverness:

Die einfachste Aufgabe habe ich bereits beschrieben.

Öffnen Sie MetaEditor.

Klicken Sie auf Datei->Erstellen.

Wählen Sie im Pop-up-Feld Indikator.

...

Aber dieser Code wird vom MQL-Übersetzer nicht akzeptiert.

Ich werde in etwa 20 Minuten antworten

 
neverness:

Was macht ihr Kinder eigentlich, wenn ihr das Wasser aufwirbelt?

Niemand macht einen Aufstand. Die Situation beginnt sich endlich ein wenig zu klären. Es stellt sich heraus, dass Sie ein Skript eine Funktion nennen, die nicht in den Hauptteil des Codes eingefügt werden kann.

Vergessen Sie auch nicht, dass MT dazu gedacht ist, mit Geld zu arbeiten, das vor den Angriffen Dritter geschützt werden muss. Daraus ergeben sich die meisten Einschränkungen der Sprache.

Niemals:

Ich habe bereits eine einfache Aufgabe beschrieben.

Öffnen Sie MetaEditor.

Klicken Sie auf Datei->Erstellen.

Wählen Sie im Pop-up-Feld Indikator.

In das Feld Indikator OnCalculate() betten Sie ein beliebiges Skriptobjekt mit dem Ereignis OnStart() ein.

Ich persönlich weiß nicht, wie man das macht. Nun, zum Beispiel so:

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 &Volumen[],
const int &spread[])
{
//---
for(int i = 1; i < 100;i++)

{

if(offen[i] > Max)

{

OnStart()

Und hier schreiben wir ein Skript für die Erstellung des Objekts, das uns interessiert. Zum Beispiel eine Ellipse oder ein Buchstabe in einer Tabelle oder etwas anderes

} //if(offen)

} //for(int i)
//--- Rückgabewert von prev_calculated für den nächsten Aufruf
return(raten_gesamtsumme)
} // OnCalculate

Das sollte in etwa so aussehen.

Aber der MQL-Übersetzer nimmt einen solchen Code nicht wahr.

Sie sollte in etwa so aussehen

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[])
  {
//---
for(int i = 1; i < 100;i++)
      {
      if(open[i] > Max)
            {
            
           if(int  ObjectFind(chart_id, /* идентификатор графика*/ object_name/* имя объекта*/) < 0)
            ObjectCreate(Здесь параметры функции согласно документации.
                         Например, эллипса, или буквы на графике, или еще чего-нибудь);
               
            }  //if(open)
      }  //for(int i)  
//--- return value of prev_calculated for next call
   return(rates_total);
  } // OnCalculate
 
Vitaly Muzichenko:

In etwa 20 Minuten werde ich antworten.

Es hat lange gedauert, das Video hochzuladen - über 40 Minuten.


//+------------------------------------------------------------------+
//|                                                          Set.mq5 |
//|                                                   Copyright 2018 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018"
#property version   "1.00"
#property indicator_chart_window
#property indicator_plots 0

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
 {
  EllipseCreate(0, "Ellipse", 0, 0, 0, 0, 0, 0, 0, clrRed, STYLE_SOLID, 1, true, true);
//--- indicator buffers mapping
   return(INIT_SUCCEEDED);

 }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
 ArraySetAsSeries(time,true);
 ArraySetAsSeries(open,true);
 // ....
  ObjectMove(0, "Ellipse",0,time[1],open[5]);
  ObjectMove(0, "Ellipse",1,time[10],open[15]);
  ObjectMove(0, "Ellipse",2,time[20],open[25]);
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

bool EllipseCreate(const long            chart_ID=0,        // ID графика 
                   const string          name="Ellipse",    // имя эллипса 
                   const int             sub_window=0,      // номер подокна  
                   datetime              time1=0,           // время первой точки 
                   double                price1=0,          // цена первой точки 
                   datetime              time2=0,           // время второй точки 
                   double                price2=0,          // цена второй точки 
                   datetime              time3=0,           // время третьей точки 
                   double                price3=0,          // цена третьей точки 
                   const color           clr=clrRed,        // цвет эллипса 
                   const ENUM_LINE_STYLE style=STYLE_SOLID, // стиль линий эллипса 
                   const int             width=1,           // толщина линий эллипса 
                   const bool            fill=false,        // заливка эллипса цветом 
                   const bool            back=false,        // на заднем плане 
                   const bool            selection=true,    // выделить для перемещений 
                   const bool            hidden=true,       // скрыт в списке объектов 
                   const long            z_order=0)         // приоритет на нажатие мышью 
  { 
//--- установим координаты точек привязки, если они не заданы 
  // ChangeEllipseEmptyPoints(time1,price1,time2,price2,time3,price3); 
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- создадим эллипс по заданным координатам 
   if(!ObjectCreate(chart_ID,name,OBJ_ELLIPSE,sub_window,time1,price1,time2,price2,time3,price3)) 
     { 
      Print(__FUNCTION__, 
            ": не удалось создать эллипс! Код ошибки = ",GetLastError()); 
      return(false); 
     } 
//--- установим цвет эллипса 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 
//--- установим стиль линий эллипса 
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style); 
//--- установим толщину линий эллипса 
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width); 
//--- включим (true) или отключим (false) режим заливки эллипса 
   ObjectSetInteger(chart_ID,name,OBJPROP_FILL,fill); 
//--- отобразим на переднем (false) или заднем (true) плане 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 
//--- включим (true) или отключим (false) режим выделения эллипса для перемещений 
//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект 
//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection 
//--- по умолчанию равен true, что позволяет выделять и перемещать этот объект 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); 
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); 
//--- установим приоритет на получение события нажатия мыши на графике 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 
//--- успешное выполнение 
   return(true); 
  } 
Dateien:
Set.mq5  10 kb
 
Vitaly Muzichenko:

Es dauerte lange, bis das Video geladen war - mehr als 40 Minuten.

Manchmal vermische ich auch die Forenbereiche und schreibe eine Antwort auf eine Frage zu mql4 in mql5.

Im Prinzip ändert sich in diesem Fall nichts außer der Dateierweiterung, aber in mql4 wird sie überflüssig

 ArraySetAsSeries(time,true);
 ArraySetAsSeries(open,true);

und sogar völlig unnötig und nutzlos.

 
neverness:

Was macht ihr Kinder eigentlich, wenn ihr das Wasser aufwirbelt?

Gehen Sie einfach in den MetaEditor, und geben Sie den Befehl ein: Datei->Erstellen...

Daraufhin wird ein Formular mit verschiedenen Dummy-Dateien angezeigt.

Dabei handelt es sich vor allem um die Dongles:

- Expert Advisor

- Benutzerdefinierter Indikator

- Skript

- Bibliothek, etc.

Wir sind an den ersten drei Punkten interessiert: Expert Advisor, Custom Indicator und Script.

Vergleichen wir diese Dummies:

In Expert Advisor haben wir Ereignisse:

-OnInit(), OnDeinit(), OnTick(), OnTimer, OnChartEvent() ... alles, nicht mehr.

Im Skript gibt es die Ereignisse:

- OnStart() ... das war's, mehr nicht.

im Indikator haben wir Ereignisse:

- OnInit(), OnCalculate(), OnTimer, OnChartEvent() ... alles, nicht mehr.

Hier stellt sich natürlich die Frage, wie die Verbindung zwischen diesen Objekten hergestellt werden kann.

Es stellt sich heraus, dass es in MQL keine Verbindung zwischen ihnen gibt und geben kann, da die Datenströme zwischen diesen Objekten vollständig getrennt sind und es keine Verbindung zwischen ihnen gibt.

Außerdem bin ich überrascht, dass die Macher von MQL uns diese Tatsache als "gut" verkaufen.

Und wenn ich zum Beispiel in C++ den BASIC-Übersetzer oder Javascript oder irgendeinen anderen Übersetzer aufrufe und z. B. zur Android-Programmierumgebung wechsle,

im Rahmen von MQL kann ich nicht einmal ein sogenanntes "Skript" in der "Indikator"-Umgebung erstellen, da die Indikator-Umgebung den Befehl OnStart() nicht akzeptiert.

Was ist das für ein Freak?

Und von solchen hässlichen Dingen gibt es in MQL mehr als genug.

Sie sind bei jedem Schritt dabei.

Ich habe die Beschreibung von MQL gelesen - und ich bin überrascht, denn es gibt nichts anderes zu tun.

Die ganze Zeit über verkünden die Macher von MQL lautstark, dass MQL ein Nachkomme von C++ ist.

Es tut mir natürlich leid, aber ich möchte die MMS-Ersteller fragen: - Erbe wovon? - In seiner Hässlichkeit?


Ich vergleiche MQL ungewollt mit der berühmten 1C-Programmierumgebung. Sie behaupten auch, die Erben von C++ zu sein.

Aber dort wird alles auf eine viel anständigere Weise gemacht.

Und die grafischen Objekte, die Kommunikation zwischen Modulen und vieles mehr.

Und was gibt es in MQL?

Keine eingebauten Klassen, keine threadbezogenen Objekte... und überhaupt nichts.

Und ich habe nichts über die mathematische Hülle des Terminals gesagt!!!

Das ist ein ganz anderes Thema für Überraschungen!!!

Warum liest du nicht einfach ein bisschen Hilfe und findest all die Dinge, von denen du sagst, dass es sie nicht gibt, liest über eingebaute Klassen in SB, lernst, wie man höflich um Hilfe bittet (du hast um Hilfe gebeten) und lernst, wie man nicht unhöflich zu Leuten ist, die versuchen, dir zu helfen (beachte dies desinteressiert)...

In der Regel - verbieten Sie für 24 Stunden für Trolling, Unhöflichkeit und Betteln (Sie haben nicht eine Zeile Ihres Codes gezeigt, um alle Ihre Aussagen zu beweisen, aber unverschämt verlangen, dass Menschen, die auf Ihre Frage und Aussagen geantwortet haben, werden sie Ihnen mit Arbeits-Code für Ihre Bedürfnisse - es ist nicht üblich, hier - sie helfen, nicht für Sie tun, beachten Sie - die einfachste Code)

Nichts für ungut - wer mit nichts zu uns kommt, wird durch etwas Unverständliches getötet.

Außerdem habe ich Sie gewarnt, die Heizung herunterzudrehen:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Alle Fragen von Anfängern zu MQL4, Hilfe und Diskussion über Algorithmen und Codes

Artyom Trishkin, 2018.09.12 14:02

Versuchen Sie es jetzt ohne Beleidigungen und Arroganz.
Ich werde in diesem Forum keine Unhöflichkeit dulden.

 

Wie installiert man mt4 auf macOS? Hilfe bitte!

 

Ausschließlich in einer virtuellen Maschine. Ich habe Parallel's teuer, aber bequem und zuverlässig.

https://www.parallels.com/ru/products/desktop/

Запуск Windows на Mac — виртуальная машина Parallels Desktop 14 для Mac
  • www.parallels.com
Можно запустить Windows параллельно с macOS® (перезагрузка не требуется) на компьютерах MacBook®, MacBook Pro®, iMac®, iMac Pro®, Mac mini® или Mac Pro®. Предоставляйте общий доступ к файлам и папкам, копируйте и вставляйте текст и изображения, перетаскивайте файлы между приложениями Mac и Windows. Удобная настройка Parallels Desktop...
 

Ich bitte um Hilfe. Die Fragen lauten:

1. Das Programm setzt im Testmodus keine Stop Losses für Kauf und Verkauf. Aber die Änderung anstehender Aufträge geht gut.

2. Es wird nicht in Echtzeit auf Rechnung gestartet.

Bitte, helfen Sie.

Ich möchte auch darum bitten, auf eventuelle Fehler hinzuweisen, die beim Schreiben des Programms aufgetreten sind.

Vielen Dank im Voraus.

Programm-Code:

.input int Percent=50;

Eingabe int MAGICNUMBER=413;

//Einführung von Indikatorkonstanten und Oszillatoren für die langfristigen Charts

input int Signal_Period_long_term=6;

Eingabe int Fast_EMA_Period_long_term=12;

Eingabe int Slow_EMA_Period_long_term=24;

//Wirkungsparameter von Indikatoren und Oszillator-Konstanten für kurzfristige Charts

input int Stochastic_Kperiod_short_term=5;

input int Stochastic_Dperiod_short_term=3;

input int Stochastic_slowing_short_term=3;

input ENUM_TIMEFRAMES PERIODs_short_term=PERIOD_M5;

input ENUM_TIMEFRAMES PERIODs_long_term=PERIOD_H1;

//-----------------------------------------------------------------------------------------

//Gemeinsame Variablen und ihre Typen

static datetime New_Time;//Zeit des aktuellen Taktes

statisch datetime Time_Local;

double Margin_Percent; //Eröffnungsmittel für die Eröffnung von Aufträgen

double Lots;//Bestimmung der Gesamtzahl der Lose

double Lots_Volumen;

//Variablen und Typen für das Langzeitdiagramm

double MacdCurrent_long_term;//MACD-Parameter der Hauptlinie des aktuellen Balkens

double MacdPrevious_long_term;//MACD-Parameter der Hauptlinie des vorherigen Balkens

double SignalCurrent_long_term;

//Variablen und Typen für den kurzfristigen Chart

double Stochastic_Current_short_term_main;//Stochastische Parameter des aktuellen Balkens im 5-Minuten-Chart

double Stochastic_Previous_short_term_main;//Stochastische Parameter des vorherigen Balkens im 5-Minuten-Chart

double Stochastic_Current_short_term_signal;//Stochastische Parameter des aktuellen Balkens im 5-Minuten-Chart

double Stochastic_Previous_short_term_signal;//Stochastische Parameter des vorherigen Balkens im 5-Minuten-Chart

double StopLoss_BUY;

double StopLoss_SELL;

double Price_BUY;

double Price_SELL;

//+------------------------------------------------------------------+

Experteninitialisierungsfunktion //|

//+------------------------------------------------------------------+

int OnInit()

{

//---


//---

return(INIT_SUCCEEDED);

}

//+------------------------------------------------------------------+

//| Experten-Deinitialisierungsfunktion |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

{

//---


}

//+------------------------------------------------------------------+

//| Experten-Tick-Funktion |

//+------------------------------------------------------------------+

void OnTick()

{

int ticket,cnt;

int total=OrdersTotal();// Ermittlung der Anzahl der Bestellungen

bool New_Bar=false; // Neuen Balken markieren


//Definieren der Variablenwerte für das Langzeitdiagramm

MacdCurrent_long_term=iMACD(NULL,PERIODs_long_term,Fast_EMA_Period_long_term,Slow_EMA_Period_long_term,Signal_Period_long_term,PRICE_TYPICAL,MODE_MAIN,1);

MacdPrevious_long_term=iMACD(NULL,PERIODs_long_term,Fast_EMA_Period_long_term,Slow_EMA_Period_long_term,Signal_Period_long_term,PRICE_TYPICAL,MODE_MAIN,2);

SignalCurrent_long_term=iMACD(NULL,PERIODs_long_term,Fast_EMA_Period_long_term,Slow_EMA_Period_long_term,Signal_Period_long_term,PRICE_TYPICAL,MODE_SIGNAL,1);

//Bestimmung der Variablenwerte für das Kurzzeitdiagramm

Stochastic_Current_short_term_main=iStochastic(NULL,PERIODs_short_term,Stochastic_Kperiod_short_term,Stochastic_Dperiod_short_term,Stochastic_slowing_short_term,MODE_SMA,0,MODE_MAIN,1);

Stochastic_Previous_short_term_main=iStochastic(NULL,PERIODs_short_term,Stochastic_Kperiod_short_term,Stochastic_Dperiod_short_term,Stochastic_slowing_short_term,MODE_SMA,0,MODE_MAIN,2);

Stochastic_Current_short_term_signal=iStochastic(NULL,PERIODs_short_term,Stochastic_Kperiod_short_term,Stochastic_Dperiod_short_term,Stochastic_slowing_short_term,MODE_SMA,0,MODE_SIGNAL,1);

Stochastic_Previous_short_term_signal=iStochastic(NULL,PERIODs_short_term,Stochastic_Kperiod_short_term,Stochastic_Dperiod_short_term,Stochastic_slowing_short_term,MODE_SMA,0,MODE_SIGNAL,2);

//Definition der gemeinsamen Variablen

Price_BUY=iHigh(NULL,PERIODs_short_term,1)+MarketInfo(NULL,MODE_STOPLEVEL)*MarketInfo(NULL,MODE_POINT);

Price_SELL=iLow(NULL,PERIODs_short_term,1)-MarketInfo(NULL,MODE_STOPLEVEL)*MarketInfo(NULL,MODE_POINT);

StopLoss_BUY=iLow(NULL,PERIODs_short_term,1)-MarketInfo(NULL,MODE_STOPLEVEL)*MarketInfo(NULL,MODE_POINT);

StopLoss_SELL=iHigh(NULL,PERIODs_short_term,1)+MarketInfo(NULL,MODE_STOPLEVEL)*MarketInfo(NULL,MODE_POINT);

Margin_Percent=AccountFreeMargin()*Percent/100;

Lots=NormalizeDouble(Margin_Percent/MarketInfo(Symbol(),MODE_MARGINREQUIRED),2);

Lots_Volume=NormalizeDouble(MathFloor(Lots)+MarketInfo(Symbol(),MODE_LOTSTEP),2);

//-----------------------------------------------------------------------------------------------------------------------

//----- Определение нового бара------------------------------------------------------------------------------------------

New_Time=TimeCurrent();

Print("Time=",TimeCurrent();

Print("Bar open time =",iTime(NULL,PERIODs_short_term,0));

if(iTime(NULL,PERIODs_short_term,0)==New_Time) // Zeiten vergleichen

{

if(iVolume(NULL,PERIODs_short_term,0)<=2) //Volumen vergleichen

Print("Bar Volumen =",Volumen[0]);

if(iBarShift(NULL,PERIODs_short_term,TimeCurrent())==0)//Prüfen des Balkenindex

Print("Balkenindex =",iBarShift(NULL,PERIODs_short_term,TimeCurrent());

New_Bar=true; // Ein neuer Balken wird erfasst

Print("Neuer_Balken");

}

else if(Neuer_Balken==false) // Wenn der Balken nicht neu ist...

{

Print("Bar ist nicht neu");

Rückkehr;

}

//---Prüfung der Verfügbarkeit von Mitteln für die Eröffnung der Mindestpartie

if(Margin_Percent<MarketInfo(Symbol(),MODE_MARGINREQUIRED)*(MarketInfo(Symbol(),MODE_MINLOT))

{

Print("Nicht genügend Mittel. Freie Mittel = ",AccountFreeMargin());

Rückkehr;

}

//---Bestimmung der Losnummer

if(Lose>Lose_Volumen)

{

Lots=NormalizeDouble(Lots_Volume,2);

Print("Anzahl der Lose : ",Lose);

}

sonst if(Lose<Lose_Volumen)

{

Lots=NormalizeDouble(MathFloor(Lots),2);

Print("Anzahl der Lose : ",Lose);

}

//+------------------------------------------------------------------+

//| Bedingungen für die Eröffnung von Aufträgen, wenn die Anzahl der Aufträge gleich Null ist |

//+------------------------------------------------------------------+

if(gesamt<1)

{


if(MacdCurrent_long_term<0 && MacdCurrent_long_term>SignalCurrent_long_term)

Print("Bedingung ist wahr für KAUFEN");

{

//+---------------------------------------------------------------------------+

//| Bedingung für die Eröffnung einer langen BUY-Position |

//+---------------------------------------------------------------------------+

if(Stochastic_Current_short_term_main<Stochastic_Current_short_term_signal && Stochastic_Previous_short_term_main>=Stochastic_Previous_short_term_signal)

{

ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Price_BUY,3,0,0,NULL,MAGICNUMBER,0,Blue);

if(ticket>0)///geöffnete Position prüfen

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{

Print("BUY order open : ",OrderOpenPrice());

Rückkehr;

}

else Print("BUY order open error : ",GetLastError());

Rückkehr;

}

}

}

if(MacdCurrent_long_term>0 && MacdCurrent_long_term<SignalCurrent_long_term)

Print("Bedingung ist wahr für SELL");

{

//+---------------------------------------------------------------------------+

//| Bedingung für die Eröffnung von Short-SELL-Positionen |

//+---------------------------------------------------------------------------+

if(Stochastic_Current_short_term_main>Stochastic_Current_short_term_signal && Stochastic_Previous_short_term_main<=Stochastic_Previous_short_term_signal)

{

ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Price_SELL,3,0,0,NULL,MAGICNUMBER,0,Green);

if(ticket>0)///geöffnete Position prüfen

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{

Print("SELL order open : ",OrderOpenPrice());

Rückkehr;

}

else Print("Fehler bei der Eröffnung einer SELL-Order: ",GetLastError());

Rückkehr;

}

}

}

}


//+---------------------------------------------------------------------------+

//| Änderungsbedingungen für die Bestellung |

//+---------------------------------------------------------------------------+


for(cnt=0;cnt<Gesamt;cnt++)

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

{

if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))

weiter;

if(OrderMagicNumber()==MAGICNUMBER && // Überprüfung der magischen Nummer der Bestellung

OrderSymbol()==Symbol()) // Prüfung auf das Order-Symbol

{

//--- Long-Position eröffnet

if(Auftragsart()==OP_BUYSTOP)

{

if(OrderOpenPrice()<Preis_BUY && Ask<Preis_BUY)

{

if(OrderModify(OrderTicket(),Price_BUY,0,0,0,Blue))

Print("Die Preis_BUY-Bestellung wurde erfolgreich geändert.");

else Print("Fehler beim Ändern der BUYStop-Order. Fehlercode=",GetLastError());

Rückkehr;

}

else Print("Der Änderungspreis ist höher als der Auftragspreis");

Rückkehr;

}

if(OrderType()==OP_SELLSTOP)

{

if(OrderOpenPrice()<Price_SELL && Bid>Price_SELL)

{

if(OrderModify(OrderTicket(),Price_SELL,0,0,0,Green))

Print("Preis_Verkaufsauftrag wurde erfolgreich geändert.");

else Print("Fehler beim Ändern der Order SELLStop. Fehlercode=",GetLastError();

Rückkehr;

}

}

if(Auftragsart()==OP_BUY)

{

if(OrderStopLoss()<StopLoss_BUY && StopLoss_BUY<Ask)

{

if(OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss_BUY,0,0,Blue))

Print("Preis_BUY Bestellpreis erfolgreich geändert.");

else Print("Fehler beim Ändern der BUY-Bestellung. Fehlercode=",GetLastError());

Rückkehr;

}

}

if(OrderType()==OP_SELL)

{

if(OrderStopLoss()>StopLoss_SELL && StopLoss_SELL>Bid)

{

if(OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss_SELL,0,0,Green))

Print("Preis_Verkaufsauftragspreis erfolgreich geändert.");

else Print("Fehler beim Ändern des SELL-Auftrags. Fehlercode=",GetLastError();

Rückkehr;

}

}

}

}


}

//+------------------------------------------------------------------+

 

Hilfe bei der Behebung eines Fehlers im Indikator, er zeichnet nicht das Tageshoch und -tief, wenn er sich auf der letzten Kerze der Stunde befindet.

https://prnt.sc/kut6xo

https://prnt.sc/kut79b

Скриншот
Скриншот
  • prnt.sc
Снято с помощью Lightshot
Dateien:
 
Michail_David:

Ich bitte um Hilfe. Die Fragen lauten:

1. Das Programm setzt im Testmodus keine Stop Losses für Kauf und Verkauf. Aber die Änderung anhängiger Aufträge geht gut.

2. Es wird nicht in Echtzeit auf Rechnung gestartet.


Dies ist der Weg

 if(OrderType()==OP_SELL)

           {

            if(OrderStopLoss()!= StopLoss_SELL && StopLoss_SELL>Bid)

ändert den AND-Code und fügt ihn korrekt ein (Alt+S).

Grund der Beschwerde: