mql için bir ide olarak Vim - sayfa 6

 
Vladimir Simakov :

Merhaba yeşil, seni yıllardır görmedim))) Kortejin nerede?)))

Herşey yolunda. Her şey yerinde.

 
Dmitry Fedoseev :

Herşey yolunda. Her şey yerinde.

Seni öğren. Şimdiye kadar böyle bir dilin varlığından bile haberim yoktu. Yaşa ve öğren!
 

Moderatör, peki, neden zorla çevirmek gerekliydi? Sadece iki eski dost arasında geçen bir selamlaşma, evet, evet, Rusça değil, ama ilgilenenler için kendim çevirebilirim.

Bilmeyenler için: Sıkıcı İngilizce yazdım, ama Dmitry beni gerçekten etkiledi, en saf Telugu'da cevap verdi, bundan şüphelenmedim bile. Ancak, ne yazık ki, moderatör geçti)))

Şaka.

 
Vladimir Simakov :

Moderatör, peki, neden zorla çevirmek gerekliydi? Sadece iki eski dost arasında geçen bir selamlaşma, evet, evet, Rusça değil, ama ilgilenenler için kendim çevirebilirim.

Bilmeyenler için: Sıkıcı İngilizce yazdım, ama Dmitry beni gerçekten etkiledi, en saf Telugu'da cevap verdi, bundan şüphelenmedim bile. Ancak, ne yazık ki, moderatör geçti)))

Şaka.

En azından bir madalya yazmalısın. Muhtemelen onu ofise çağırıp herkesin önünde ona bir sertifika verene kadar bekliyorlar!


 
Vitaly Muzichenko :

Yani, yeni bir şey olamaz, her şey bir daire içinde: "Açıldı -\u003e Trol -\u003e Kapalı"

Bir zamanlar bir şantiyede bir monolit üzerinde çalışıyordum, tıpkı birkaç yıl önce olduğu gibi: "Kalıbı monte ettik -> Donatıları bağladık -> Betonla doldurduk -> Kalıbı söktük" vb. bir daire içinde, çünkü başka yok :)

Peki neden olmasın:

cPos= new CRealPosition(cParam);

pozisyon bu şekilde etkinleştirilir,

 //----------------------------------------------------
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);}}

ve bu şekilde eşlik edilir. Ve bu mql5, mql4'te kod aynı olacaktır. CRealPosition:

 #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);}

Ancak CPosition, başlangıçtan kapanışa kadar alım satım işlemine (netleştirme henüz tam olarak uygulanmamış olsa da mql4 veya mql5 fark etmez) eşlik eden kitaplığın bir parçasıdır.

Ve evet, bir dakika daha, ızgaradaki tüm konumların sayımı ve bu ızgaradır ve dallı mantıkla aşağıdaki gibi yapılır:

 #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
 

Sonraki sürüm.

1. Korumaları std'ye dahil etmek için MK'den beklemek işe yaramaz, sanırım. Ben kendim yaptım. Fikir şudur - ilk derleme sırasında (wim'de F7 aracılığıyla), Include dizini utf-8'e dönüştürülecek ve içerme korumaları tüm dosyalara eklenecektir (tüm bunlar sonraki başlatmalarda yapılmayacaktır). compile_mql'de (bu bir bash betiğidir), en üstte, Include içindeki betiğin hiçbir şeyi düzenlemediği alt dizinleri gösteren bir satır vardır. İyi fikir öyle ki kullanıcı verileri dokunmasın.

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

user_include_subdir= ""
...

Olası değerler:

* boş (varsayılan) - işlev devre dışıdır (korumalar eklenmez, kodlama değişmez)

* bir dizin user_include_subdir="any_dir"

* birden çok dizin user_include_subdir="{dir1,dir2}"

Eh, yani başlık dosyalarımızın içinde bulunduğu dizinleri bu değişkende yapıyoruz. mesela bende var

user_include_subdir= "myincl"

ve korumalar ~/.wine/MQL5/Include/myincl ve alt dizinlerindeki tüm mqh'lere eklenmez. Artık std başlıklarını her zamanki gibi ekleyebilirsiniz + clang, oradan tür ipuçları verecektir.

Not: profildeki en son sürüme bağlantı


#vim_as_mql_ide_2

Dosyalar:
 
Vict :

Sonraki sürüm.

1. Korumaları std'ye dahil etmek için MK'den beklemek işe yaramaz, sanırım. Ben kendim yaptım. Fikir şudur - ilk derleme sırasında (wim'de F7 aracılığıyla), Include dizini utf-8'e dönüştürülecek ve içerme korumaları tüm dosyalara eklenecektir (tüm bunlar sonraki başlatmalarda yapılmayacaktır). compile_mql'de (bu bir bash betiğidir), en üstte, Include içindeki betiğin hiçbir şeyi düzenlemediği alt dizinleri gösteren bir satır vardır. İyi fikir öyle ki kullanıcı verileri dokunmasın.

Olası değerler:

* boş (varsayılan) - işlev devre dışıdır (korumalar eklenmez, kodlama değişmez)

* bir dizin user_include_subdir="any_dir"

* birden çok dizin user_include_subdir="{dir1,dir2}"

Eh, yani. başlık dosyalarımızın içinde bulunduğu dizinleri bu değişkende yapıyoruz. mesela bende var

ve korumalar ~/.wine/MQL5/Include/myincl ve alt dizinlerindeki tüm mqh'lere eklenmez. Artık std başlıklarını her zamanki gibi ekleyebilirsiniz + clang, oradan tür ipuçları verecektir.

Not: profildeki en son sürüme bağlantı


#vim_as_mql_ide_2

Başlıklar ve tür ipuçlarıyla wim std'ye korumaları dahil edin. Akıllıca sustum ve anladım.))) Bir fikrim var - belki MK ne hakkında olduğunu bilmiyor?))) Kullanıcılar bir şey istiyor, ama ne olduğu belli değil ... Yani bilmiyorlar.))) Popüler Rusça'da neye sahip olduğunuzu açıklıyorsunuz ve bunu yapabilirsiniz.))
 
Vict :

Sonraki sürüm.


m4'ü bir önişlemci ile vidalamak ve benzersiz bir salata sosundan ex4 / 5 elde etmek için kalır :-)

çözüm, bir çift linux+wine+metatrader paketi arasında bile (en azından küfür etmeden) taşınabilir değildir. Ortaya çıkan kaynaklar IDE'ye vim/clang olarak çivilenecektir.

 
Maxim Kuznetsov :

çözüm, bir çift linux+wine+metatrader paketi arasında bile (en azından küfür etmeden) taşınabilir değildir. Ortaya çıkan kaynaklar IDE'ye vim/clang olarak çivilenecektir.

Hayır, gereksinimler yalnızca "~/.wine/drive_c/Program Files/MetaTrader 5" ve MQL5 bağlantısıdır. çivi mi? Ve sonra acelem vardı, doğru yerde sadece MQL5 bağlantısını talep etmek mümkün oldu (belki bitiririm).

Ve compile_mql normal bir bash betiğidir, onu izleyebilir/düzenleyebilirsiniz. En azından kaynakta 68-70 satır numaralı (sürüm 2'de) sed komutlarını yürütün ve meta düzenleyiciye uygun kodu geri alın.

Genel olarak, yanlış sorularınız var, diğerleri daha ilginç - birkaç gün içinde dizlerimin üzerinde tüm güzelliklerle ve meta düzenleyiciden çok daha yüksek kalitede bir fikir yaptım (peki, aynı şablon otomatik tamamlama, ME hala yapmıyor ' Nasıl yapılacağını bilmiyorum ve Renat'a göre bu zor , bir çocuk ön işlemcisi ve wim'in işlevselliği genellikle bir büyüklük sırasına göre daha yüksektir) tüm bir kodlayıcı ekibinin bir yıldan fazla ve bir süredir üzerinde çalıştığı terbiyeli ödül. Hatta tüm derleyiciyi clang olarak değiştirebilirsiniz. Evet, verimli bir özel iş, herkes önemli faaliyetleri canlandırıyor, ama aslında tekerlek yeniden icat edildi.

Pekala, size bir sır vereceğim - birkaç inek kullanırsa, bir milyonuncu izleyiciye güvenmiyorum, o zaman fena değil. Geri kalanlar MK'ye dua etmeye devam edecekler, görev gereği ve işaretleri dizilerin önüne koyacak ve bir nokta ile referansı kaldıracaklar.

 
Vict :

Hayır, gereksinimler yalnızca "~/.wine/drive_c/Program Files/MetaTrader 5" ve MQL5 bağlantısıdır. çivi mi? Ve sonra acelem vardı, doğru yerde sadece MQL5 bağlantısını talep etmek mümkün oldu (belki bitiririm).

Ve compile_mql normal bir bash betiğidir, onu izleyebilir/düzenleyebilirsiniz. En azından kaynakta 68-70 satır numaralı (sürüm 2'de) sed komutlarını yürütün ve meta düzenleyiciye uygun kodu geri alın.

Genel olarak, yanlış sorularınız var, diğerleri daha ilginç - birkaç gün içinde dizlerimin üzerinde tüm güzelliklerle ve meta düzenleyiciden çok daha yüksek kalitede bir fikir yaptım (peki, aynı şablon otomatik tamamlama, ME hala yapmıyor ' Nasıl yapılacağını bilmiyorum ve Renat'a göre bu zor , bir çocuk ön işlemcisi ve wim'in işlevselliği genellikle bir büyüklük sırasına göre daha yüksektir) tüm bir kodlayıcı ekibinin bir yıldan fazla ve bir süredir üzerinde çalıştığı terbiyeli ödül. Hatta tüm derleyiciyi clang olarak değiştirebilirsiniz. Evet, verimli bir özel iş, herkes önemli faaliyetleri canlandırıyor, ama aslında tekerlek yeniden icat edildi.

Pekala, size bir sır vereceğim - birkaç inek kullanırsa, bir milyonuncu izleyiciye güvenmiyorum, o zaman fena değil. Geri kalanlar MK'ye dua etmeye devam edecekler, görev gereği ve işaretleri dizilerin önüne koyacak ve bir nokta ile referansı kaldıracaklar.

Doğru anlıyorsanız, koruma koymak hala isteniyor ve kod için hala özel gereksinimler var mı?

Bir yandan, bu iyi bir şey - neden olmasın. Ben kendim make :-) yoluyla 2'den fazla dosya projesi topluyorum

gücenmeyin - bu onun iyiliği için eleştiri değil, bu bir tartışma

PS/ burada 10 kişiden 9'u, gücü kapatmak dışında kendi özgür iradeleriyle "VIM'den çıkamayacak" :-)