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

 
Igor Makanu:

Ich schrieb oben, über das Niveau der Fragen ;)

und du hast angefangen, nach der Optimierung der Initialisierung in OnTick/OnInit zu suchen - dort ist alles einfacher, du brauchst einen Schutz für gefundenen Code , um ihn mit denselben Freunden zu teilen ))))

Aha, dann ein Toast: auf die gefundenen "Freunde"!

 
Igor Makanu:

Brauche Schutz für gefundenen Code, um ihn mit ähnlichen Freunden zu teilen )))

Sehr schön gesagt. Wir sehen wahrscheinlich wie Nerds aus, aber wir haben Spaß!

 
Vitaly Muzichenko:

Nun, das ist die Grenze von allem :(


Vitaly, was soll diese Negativität? Der Mann bittet nur darum, ihn zu trollen, es ist notwendig, ihn zu respektieren)

Igor Makanu:

Ich schrieb oben, über das Niveau der Fragen ;)

und Sie begannen, nach der Optimierung der Initialisierung in OnTick/OnInit zu suchen - dort ist alles einfacher, Sie brauchen Schutz für den gefundenen Code, um ihn mit denselben Freunden zu teilen )))

))))

 
Aleksey Mavrin:

Vitaly, was soll diese Negativität? Der Mann bittet geradezu darum, getrollt zu werden, du solltest ihn respektieren)

))))

Also gut, ein bisschen Positives.

 
Hallo, könnten Sie mich bitte beraten? Im Handbuch heißt es, dass das Ereignis Init von der Funktion OnInit() verarbeitet wird. Dieses Ereignis wird auch nach einem Wechsel des Finanzinstrumentsund/oder der Chartperiode erzeugt.

Hier habe ich einen einfachen Code. Wenn ich den Zeitrahmen ändere, funktioniert die Funktion, aber nicht, wenn ich das Instrument ändere. Oder habe ich vielleicht den Begriff "Wechsel des Finanzinstruments" falsch verstanden?

int OnInit()
  {
    Print("HALLO");
    return(INIT_SUCCEEDED);
  }
Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 
WinProject:
Gute Zeit, könnten Sie uns bitte beraten. Im Handbuch steht, dass das Ereignis Init von der Funktion OnInit() behandelt wird. Dieses Ereignis wird auch nach einem Wechsel des Finanzinstrumentsund/oder der Chartperiode erzeugt.

Hier habe ich einen einfachen Code. Wenn ich den Zeitrahmen ändere, funktioniert die Funktion, aber nicht, wenn ich das Instrument ändere. Oder habe ich vielleicht den Begriff "Wechsel des Finanzinstruments" falsch verstanden?

int OnInit()
  {
    Print("HALLO Period()= ",Period(),"Symbol()=",Symbol());
    return(INIT_SUCCEEDED);
  }

Für eine korrekte Wahrnehmung ist es besser, wie folgt vorzugehen. Wenn Sie ein neues Symbol in den Chart einfügen, sollte OnDynit funktionieren und mit OnInit beginnen

 
Valeriy Yastremskiy:

Um der Treue willen ist es besser so. Wenn Sie ein neues Symbol in das Diagramm einfügen, sollte OnDeinit funktionieren und mit OnInit beginnen

Danke, ich habe so viele Jahre mit dem Terminal gearbeitet und wusste nicht, dass man von einer Marktübersicht zu einem Chart wechseln kann. Ich dachte, wenn man ein Finanzinstrument ändert, wechselt man zu einem Chartfenster mit einem anderen Instrument.

 

Hallo, können Sie mir sagen, ob dies ein Fehler ist oder ob ich mich irre?

Ich habe einige Berechnungen durchgeführt, die man auch über vorgefertigte Funktionen durchführen kann, und dabei einen Unterschied festgestellt.

Ich habe die Marge berechnet, und in der Testversion liefern Margenberechnung und AccountInfoDouble(ACCOUNT_MARGIN) unterschiedliche Ergebnisse, während es in der Demo keinen Unterschied gibt.

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
 

input double lot=0.1;
input int plecho=100;
input double lot_increment=1; //увеличение лота
input int level_size=50;
input int Magic = 0;
input int deviation = 10; //допустимое проскальзывание

double margin, margin_free, uroven, sredstva_pri_s_o, margin_call, stop_out;
int N;



int OnInit(){

Print("Bid ", Bid);

int ticket=OrderSend(NULL, OP_BUY, lot, Ask, 0, 0, 0, "", Magic, 0);
    //ticket=OrderSend(NULL, OP_SELL, lot, Bid, 0, 0, 0);


Print("  ACCOUNT_MARGIN ", AccountInfoDouble(ACCOUNT_MARGIN)
, "  ACCOUNT_MARGIN_LEVEL ", AccountInfoDouble(ACCOUNT_MARGIN_LEVEL));

margin=(OrderLot()*100000*OrderPrice())/plecho;
Print("OrderLot() ", OrderLot(), "  OrderPrice() ", OrderPrice());
margin_free=AccountInfoDouble(ACCOUNT_EQUITY)-margin;
uroven=(AccountInfoDouble(ACCOUNT_EQUITY)/margin)*100;
sredstva_pri_s_o=(margin*AccountInfoDouble(ACCOUNT_MARGIN_SO_SO))/100;
N=(int)NormalizeDouble((AccountInfoDouble(ACCOUNT_BALANCE)-sredstva_pri_s_o)
/MarketInfo(Symbol(), MODE_TICKVALUE), 0);
stop_out=OrderPrice()-(N*Point());

Print("stop_out ", stop_out, "  margin ", margin, "  uroven ", uroven
, "  ACCOUNT_MARGIN_SO_SO ", AccountInfoDouble(ACCOUNT_MARGIN_SO_SO)
, "  ACCOUNT_MARGIN_LEVEL ", AccountInfoDouble(ACCOUNT_MARGIN_LEVEL)
, "  ACCOUNT_MARGIN ", AccountInfoDouble(ACCOUNT_MARGIN));
return(INIT_SUCCEEDED);
}//+------------------------------------------------------------------+
void OnDeinit(const int reason){
}//+------------------------------------------------------------------+
void OnTick(){


Print("  ACCOUNT_MARGIN ", AccountInfoDouble(ACCOUNT_MARGIN)
, "  ACCOUNT_MARGIN_LEVEL ", AccountInfoDouble(ACCOUNT_MARGIN_LEVEL));

Comment("AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL) ", AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL)
, "  AccountInfoDouble(ACCOUNT_MARGIN_SO_SO) ", AccountInfoDouble(ACCOUNT_MARGIN_SO_SO)
, "  AccountInfoDouble(ACCOUNT_MARGIN_LEVEL) ", AccountInfoDouble(ACCOUNT_MARGIN_LEVEL)
, "  AccountInfoDouble(ACCOUNT_MARGIN) ", AccountInfoDouble(ACCOUNT_MARGIN)
, "  MarketInfo(Symbol(), MODE_MARGINREQUIRED) ", MarketInfo(Symbol(), MODE_MARGINREQUIRED) , "\n"
, "margin ", margin
, "  margin_free ", margin_free 
, "  uroven ", uroven );
}//+------------------------------------------------------------------+

double OrderPrice(){
   double count=0;
   for (int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
         if (OrderSymbol() == Symbol()  && OrderMagicNumber()==Magic )
            count=OrderOpenPrice();
      }   
   } 
   return(count);   
}
double OrderLot(){
   double count=0;
   for (int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
         if (OrderSymbol() == Symbol()  && OrderMagicNumber()==Magic )
            count=OrderLots();
      }   
   } 
   return(count);   
}


 
Bitte um Hilfe.

Ich habe alles versucht und erhalte immer noch die Fehlermeldung 130.
Dateien:
Wai_v_5.0.mq4  59 kb
 
Guten Tag an alle. Ich versuche gerade, einen eigenen Gralsratgeber zu schreiben ;-). Aber aus irgendeinem Grund will es nicht funktionieren. Ich habe ein Video aufgenommen, der Link zum Video ist in meiner Nachricht enthalten. Dies wird sowohl klarer als auch schneller sein. Die Frage selbst ist in dem Video zu sehen. Ich danke Ihnen im Voraus. https://youtu.be/tqZrXjMONrE
ВОПРОС ПО НАПИСАНИЮ СОВЕТНИКА
ВОПРОС ПО НАПИСАНИЮ СОВЕТНИКА
  • 2020.12.09
  • www.youtube.com
ПИШУ СОВЕТНИК НА MQL4, А ГДЕ-ТО ДОПУСТИЛ ОШИБКУ- ПОМОИГИТЕ ПОЖАЛУЙСТА ПОНЯТЬ ГДЕ И В ЧЁМ ЭТА ОШИБКА ПОЛУЧИЛАСЬ?
Grund der Beschwerde: