Vim als Ide für mql - Seite 6

 
Vladimir Simakov :

Hi green, habe dich ewig nicht mehr gesehen)))) Wo ist Ihre Autokolonne?)))

Es ist alles in Ordnung. Alles ist an seinem Platz.

 
Dmitry Fedoseev:

Es ist alles in Ordnung. Alles ist an seinem Platz.

Sie haben es verstanden. Ich wusste bis jetzt nicht einmal, dass es eine solche Sprache gibt. Lebe und lerne!
 

Herr Moderator, warum mussten Sie es zwangsweise übersetzen? Nur ein Austausch von Grüßen zwischen zwei alten Freunden, ja, nicht auf Russisch, aber wer Interesse hat, kann es selbst übersetzen.

Für diejenigen, die nicht auf dem Laufenden sind: Ich schrieb in langweiligem Englisch, aber Dmitri schlug wirklich zu, er antwortete in reinem Telugu, was ich nicht einmal vermutete. Aber, leider, lief ein Moderator))).

Nur ein Scherz.

 
Vladimir Simakov:

Herr Moderator, warum mussten Sie es zwangsweise übersetzen? Nur ein Austausch von Grüßen zwischen zwei alten Freunden, ja, nicht auf Russisch, aber wer Interesse hat, kann es selbst übersetzen.

Für diejenigen, die nicht auf dem Laufenden sind: Ich schrieb in langweiligem Englisch, aber Dmitry schlug wirklich zu, er antwortete in reinstem Telugu, ich wusste nicht einmal davon. Doch leider hatte der Moderator einen Zusammenstoß))))

Nur ein Scherz.

Er sollte mindestens eine Medaille bekommen. Wahrscheinlich wartet er darauf, ins Büro gerufen zu werden und öffentlich eine Verdiensturkunde überreicht zu bekommen!


 
Vitaly Muzichenko:

Nun, es gibt nichts Neues, alles dreht sich im Kreis: "Geöffnet -> Geschmolzen -> Geschlossen".

Ich habe einmal auf einer monolithischen Baustelle gearbeitet, so wie es vor ein paar Jahren war: "Schalung montieren -> Bewehrung anbringen -> Beton gießen -> Schalung ausschalen" und so weiter im Kreis, weil es nichts anderes gibt :)

Warum?

cPos=new CRealPosition(cParam);

Auf diese Weise wird die Position aktiviert,

//----------------------------------------------------
void CTradePos::RealControl(uint &mCount,double &mProfit){
   if (cPos.Control(mProfit)){
      if (!cFlag.Check(TRADE_POS_FLAG_ACTIVE)&&cPos.IsActivate()){
         if (!cParam.isExtraLimit) ++mCount;
         cFlag+=TRADE_POS_FLAG_ACTIVE_ON;}}
   else{
      if (!cParam.isExtraLimit&&cFlag.Check(TRADE_POS_FLAG_ACTIVE)) --mCount;
      cFlag+=TRADE_POS_FLAG_STOP_TRADE;
      if (cPos.IsTPClosed()) cFlag+=TRADE_POS_FLAG_STOP_TP;
      DELETE(cPos);}}

Und so wird sie aktiviert. Und das ist mql5, auf mql4 wäre der Code identisch. CRealPosition ist:

#include <MyMQLLib\Objects\Trade\CPosition.mqh>
#include "CTPTral.mqh"

class CRealPosition:public CPosition
  {
   CTPTral*          cTPTral;
   double            cControlSL;
public:
                     CRealPosition(SOrderParam &mParam);
                    ~CRealPosition() {DEL(cTPTral);}
   bool              Control(double &mProfit);
   bool              CheckChangeSL();
   void              SetNewStops(double mSL,double mTP);
   void              TPTralSet(double mStep,double mPrice,double mTPDelta);
   int               GetSLPoint()   {return !_sl?0:int(MathRound(MathAbs((_price-_sl)/_point)));}
  };

...

void CRealPosition::CRealPosition(SOrderParam &mParam):
   CPosition(_Symbol,
             mParam.type,
             mParam.volume,
             mParam.price,
             mParam.sl,
             mParam.tp,
             0,0,0,
             mParam.comment),
   cTPTral(NULL)
   {cControlSL=cOrderSL;}
//---------------------------------------------------------------------------------------------------------
bool CRealPosition::Control(double &mProfit){
   ulong res=CPosition::Control();
   if (!(res&TRADE_FINISH)) mProfit+=GetTotalProfit();
   if (IsOpen()){
      if (cTPTral!=NULL){
         double price=TradePrice(_symbol,-_direct),
                tp=cTPTral.GetTP(price,GetTP(),_price);
         if (tp!=_tp) NewTP(tp,price);}}
   return !(res&TRADE_FINISH);}

Und die CPosition ist bereits Teil der Bibliothek, die eine Handelsoperation (ob mql4 oder mql5, obwohl das Netting noch nicht vollständig implementiert ist) von der Einleitung bis zum Abschluss begleitet.

Und ja, noch etwas: Die Aufzählung aller Positionen, die sich im Raster befinden, also ein Rasteroperator mit verzweigter Logik, wird wie folgt durchgeführt:

#define _FIRST (mIsRevers?cTrade.End():cTrade.Begine())
#define _DELETE (mIsRevers?cTrade.Delete():cTrade.DeleteRevers())
#define _NEXT (mIsRevers?cTrade.Prev():cTrade.Next())
uint CGrid::Control(bool mIsRevers){
   double newSL=0.0;
   double trendProfit=0.0,
          oppositeProfit=0.0;
   CheckVirtualSL();
   for (CTrade* it=_FIRST;it!=NULL;){
      if (gFlag.Check(G_FLAG_CLOSE_ALL)) it=it.Close()?_DELETE:_NEXT;
      else{
         bool res=it.Control(cOpenControlCount,trendProfit,oppositeProfit);
         if (it.IsNewOppositeActivate()) ChangePrevOppositeSL(it);
         if (mIsRevers){
            if (!(cFlag&GRID_FLAG_TRAL_START)&&res) StartTral(it);
            if (it.CheckChangeTrendSL()) newSL=it.GetTrendSL();
            else if (newSL!=0.0) it.SetTrendSL(newSL);}
         else{
            if (it.IsStart()) CheckPrevTrades(it);
            if (it.IsNewTrendActivate()){
               ChangePrevTP(it);
               if (cTrade.IsLast()) 
                  cFlag|=GRID_FLAG_LAST_OPEN;}
            if (eIsXProfit&&!(cFlag&GRID_FLAG_X_START)&&res&&it.IsTrendActivate()) CheckXTrade(it);}
         it=res?_NEXT:_DELETE;}}
   if (eIsOppositOrder&&oppositeProfit>trendProfit&&oppositeProfit+trendProfit>=eVirtualTP) gFlag+=G_FLAG_CLOSE_ALL;
   if (!(cFlag&GRID_FLAG_X_START)      &&
       !(gFlag&G_FLAG_CLOSE_ALL)       &&
       bool(cFlag&GRID_FLAG_LAST_OPEN) &&
       eIsXProfit)                     StartXGrid();
   if (cXTrade!=NULL&&!cXTrade.Control()) DELETE(cXTrade);
   return cOpenControlCount.Total();}
#undef _FIRST
#undef _DELETE
#undef _NEXT
 

Eine weitere Veröffentlichung.

1. Die Erwartung, dass MK die Wachen in die Standardausrüstung aufnimmt, ist meiner Meinung nach sinnlos. Ich habe es selbst gemacht. Die Idee ist folgende - bei der ersten Co-Implementierung (über F7 in vime) wird das gesamte Include-Verzeichnis in utf-8 konvertiert und der Include-Schutz wird zu allen Dateien hinzugefügt (bei den nächsten Durchläufen wird dies nicht funktionieren). In compile_mql (einem Bash-Skript) gibt es oben eine Zeile, die die Unterverzeichnisse in Include angibt, an denen das Skript nichts ändert. Die Idee ist, die Benutzerdaten unangetastet zu lassen.

#!/bin/bash
#home  page - https://www.mql5.com/ru/users/vict

user_include_subdir=""
...

Mögliche Werte:

* leer (Standard) - Funktion deaktiviert (keine Schutzmaßnahmen hinzugefügt, keine Kodierung geändert)

* einzelnes Verzeichnis user_include_subdir="any_dir"

* mehrere Verzeichnisse user_include_subdir="{dir1,dir2}"

D.h. wir tragen in diese Variable Verzeichnisse ein, in denen unsere eigenen Header-Dateien liegen. Ich habe zum Beispiel

user_include_subdir="myincl"

und in allen mqh in ~/.wine/MQL5/Include/myincl und Unterverzeichnissen werden nicht hinzugefügt. Jetzt können Sie std-Header auf die übliche Art und Weise einfügen und Clang gibt von dort aus Typ-Hinweise.

ZS: Link zur neuesten Version im Profil


#vim_as_mql_ide_2

Dateien:
 
Vict:

Eine weitere Veröffentlichung.

1. Die Erwartung, dass MK die Wachen in die Standardausrüstung aufnimmt, ist meiner Meinung nach nutzlos. Ich habe es selbst gemacht. Die Idee ist folgende - bei der ersten Co-Implementierung (über F7 in vime) wird das gesamte Include-Verzeichnis in utf-8 konvertiert und der Include-Schutz wird zu allen Dateien hinzugefügt (bei den nächsten Durchläufen wird dies nicht funktionieren). In compile_mql (einem Bash-Skript) gibt es oben eine Zeile, die die Unterverzeichnisse in Include angibt, an denen das Skript nichts ändert. Die Idee ist, die Benutzerdaten unangetastet zu lassen.

Mögliche Werte:

* leer (Standard) - Funktion deaktiviert (keine Schutzmaßnahmen hinzugefügt, keine Kodierung geändert)

* einzelnes Verzeichnis user_include_subdir="any_dir"

* mehrere Verzeichnisse user_include_subdir="{dir1,dir2}"

D.h. wir tragen in diese Variable Verzeichnisse ein, in denen unsere eigenen Header-Dateien liegen. Ich habe zum Beispiel

und in allen mqh in ~/.wine/MQL5/Include/myincl und Unterverzeichnissen werden nicht hinzugefügt. Jetzt können Sie std-Header auf die übliche Art und Weise einfügen und Clang gibt von dort aus Typ-Hinweise.

ZS: Link zur neuesten Version im Profil


#vim_as_mql_ide_2

Garda inlude in std in vim mit Überschriften und Eingabeaufforderungen. Ich bin klugerweise still und nachdenklich.))) Eine Idee kam mir - vielleicht die MCs einfach nicht wissen, was es ist?))) Benutzer wollen etwas, aber was - nicht wissen ... Also tun sie es nicht.))). Erklären Sie in populärem Russisch, was Sie meinen, und tun Sie es vielleicht).
 
Vict:

Eine weitere Veröffentlichung.


bleibt nur noch, den m4-Präprozessor einzuschrauben und ex4/5 aus einer einzigartigen Vinaigrette zu gewinnen :-)

die Lösung ist nicht portabel (zumindest nicht ohne Matte), auch nicht zwischen einem Paar Linux+Wein+Metatrader-Kits. Der resultierende Quellcode wird in der IDE als vim/clang gespeichert.

 
Maxim Kuznetsov:

Die Lösung ist nicht portabel (zumindest ohne Matte), auch nicht zwischen zwei Linux+Wein+Metatrader-Suiten. Der resultierende Quellcode wird in der IDE als vim/clang gespeichert.

Nein, die Anforderungen sind nur "~/.wine/drive_c/Program Files/MetaTrader 5" und ein Link zu MQL5. Ist es ein Nagel? Und ich war zu voreilig, konnte ich nur verlangen, MQL5 Link an der richtigen Stelle (ich kann es zu beenden).

Das compile_mql ist ein Standard-Bash-Skript, das Sie anzeigen/bearbeiten können. Als letzten Ausweg können Sie sed-Befehle mit den Zeilen 68-70 (in Version 2) über die Quellen laufen lassen und erhalten einen für den Meta-Editor geeigneten Code zurück.

Und im Allgemeinen sind Ihre Fragen falsch, interessanter andere - ich habe ide mit allen Goodies und viel höhere Qualität als Meta-Editor (na ja, das gleiche autocomplit Vorlagen, ME kann es immer noch nicht tun und nach Renat ist es schwierig, kindisch Präprozessor und Funktionalität vim allgemein höherer Ordnung), auf dem das ganze Team von Programmierern gearbeitet und nicht das erste Jahr und für eine anständige Gebühr. Sie können sogar den gesamten µl-Compiler auf Clang umstellen. Ja, effiziente Privatwirtschaft, jeder gibt vor, wichtige Aktivitäten zu sein, aber in Wirklichkeit wird das Rad neu erfunden.

Und lassen Sie mich ein Geheimnis verraten - ich rechne nicht mit der millionsten Zielgruppe, wenn ein paar Geeks es nutzen, ist es nicht schlecht. Der Rest wird weiterhin zum MC beten, gehorsam Ampersands vor Arrays setzen und durch einen Punkt dereferieren.

 
Vict:

Nein, die Anforderungen sind nur "~/.wine/drive_c/Program Files/MetaTrader 5" und ein Link zu MQL5. Ist es ein Nagel? Und ich war zu voreilig, konnte ich nur verlangen, MQL5 Link an der richtigen Stelle (ich kann es zu beenden).

Das compile_mql ist ein Standard-Bash-Skript, das Sie anzeigen/bearbeiten können. Als letzten Ausweg können Sie sed-Befehle mit den Zeilen 68-70 (in Version 2) über die Quellen laufen lassen und erhalten einen für den Meta-Editor geeigneten Code zurück.

Und im Allgemeinen sind Ihre Fragen falsch, interessanter andere - ich habe ide mit allen Goodies und viel höhere Qualität als Meta-Editor (na ja, das gleiche autocomplit Vorlagen, ME kann es immer noch nicht tun und nach Renat ist es schwierig, kindisch Präprozessor und Funktionalität vim allgemein höherer Ordnung), auf dem das ganze Team von Programmierern gearbeitet und nicht das erste Jahr und für eine anständige Gebühr. Sie können sogar den gesamten µl-Compiler auf Clang umstellen. Ja, effiziente Privatwirtschaft, jeder gibt vor, wichtige Aktivitäten zu sein, aber in Wirklichkeit erfinden sie das Rad neu.

Nun, ich verrate Ihnen ein Geheimnis - ich rechne nicht mit einem Millionenpublikum, wenn ein paar Freaks es nutzen, ist es nicht schlecht. Der Rest wird weiterhin zu MC beten, gehorsam Ampersands vor Arrays setzen und per Point dereferenzieren.

Wenn ich es richtig verstanden habe, ist es immer noch wünschenswert, Schutzvorrichtungen anzubringen und es gibt immer noch besondere Anforderungen an den Code?

Einerseits ist es gut - warum nicht? Ich selbst erstelle Projekte mit mehr als 2 Dateien über make :-)

Nichts für ungut - es ist keine Kritik um ihrer selbst willen, sondern eine Diskussion.

PS/ hier werden 9 von 10 nicht in der Lage sein, VIM freiwillig zu verlassen, außer beim Herunterfahren :-)

Grund der Beschwerde: