robot oluşturmak - sayfa 2

 
Renat Akhtyamov :
Kod tabanına bir göz atın, orada birçok uzman var. Bunlardan birinin kodunu iyice inceleyin ve anlayacaksınız. Görevinizin en fazla 30 dakika programlanmış olması

göreve bağlı olarak... şablonlar var ama çok ilkel :(

 
VVT :

göreve bağlı olarak... şablonlar var ama çok ilkel :(

Ve ayak bezlerini sindirmem 😂
 
VVT :

göreve bağlı olarak... şablonlar var ama çok ilkel :(

Bir şey biliyorum, program ne kadar ilkel olursa, başarısızlık riski o kadar az olur. Aslında, bir tamircide olduğu gibi, ne kadar az parça olursa, mekanizma o kadar güvenilir olur. Bu nedenle, asıl şey işlevsellik ve güvenilirlik arasındaki dengedir.

 
Роман Жилин :

Bir şey biliyorum, program ne kadar ilkel olursa, başarısızlık riski o kadar az olur. Aslında, bir tamircide olduğu gibi, ne kadar az parça olursa, mekanizma o kadar güvenilir olur. Bu nedenle, asıl şey işlevsellik ve güvenilirlik arasındaki dengedir.

Katılıyorum, burada bir yerde benzer bir görüş belirtmiştim, danışman görevin uygulanması için en gerekli şeylere sahip olmalı ve diğer her şey bir kabuktur ve yalnızca bilgisayarın kaynaklarını alır.

 

burada düğmelerden hızlı bir şekilde açmak için kör

 //+------------------------------------------------------------------+
//|                                                         0001.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#define   InpMagic   182979245
//---
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
//---
CPositionInfo  m_position; // trade position object
CTrade         m_trade;     // trading object
CSymbolInfo    m_symbol;   // symbol info object
//---
input double InpLots          = 0.01 ; // Lots
//---
double m_adjusted_point;   // point value adjusted for 3 or 5 points
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   if (!m_symbol.Name( Symbol ())) // sets symbol name
       return ( INIT_FAILED );;
//---
   m_trade.SetExpertMagicNumber(InpMagic);
   m_trade.SetMarginMode();
   m_trade.SetTypeFillingBySymbol(m_symbol.Name());
//--- tuning for 3 or 5 digits
   int digits_adjust= 1 ;
   if (m_symbol. Digits ()== 3 || m_symbol. Digits ()== 5 )
      digits_adjust= 10 ;
   m_adjusted_point=m_symbol. Point ()*digits_adjust;
//---
   m_trade.SetDeviationInPoints( 3 *digits_adjust);
   if (!m_position.Select( Symbol ()))
     {
      CheckObject();
     }
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   if ( ObjectFind ( 0 , "BUY" )== 0 )
     {
       ObjectDelete ( 0 , "BUY" );
     }
   if ( ObjectFind ( 0 , "SELL" )== 0 )
     {
       ObjectDelete ( 0 , "SELL" );
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   CheckButon();
  }
//+------------------------------------------------------------------+
//| Check for long position closing                                  |
//+------------------------------------------------------------------+
bool CheckButon( void )
  {
//---
   bool res= false ;
     {
       if ( ObjectGetInteger ( 0 , "BUY" , OBJPROP_STATE )!= 0 )
        {
         ObjectSetInteger ( 0 , "BUY" , OBJPROP_STATE , 0 );
         double price=m_symbol.Ask();
           {
             //--- open position
             if (m_trade.PositionOpen(m_symbol.Name(), ORDER_TYPE_BUY ,InpLots,price, 0.0 , 0.0 ))
               printf ( "Position by %s to be opened" ,m_symbol.Name());
             else
              {
               printf ( "Error opening BUY position by %s : '%s'" ,m_symbol.Name(),m_trade.ResultComment());
               printf ( "Open parameters : price=%f,TP=%f" ,price, 0.0 );
              }
             PlaySound ( "ok.wav" );
           }
        }
       if ( ObjectGetInteger ( 0 , "SELL" , OBJPROP_STATE )!= 0 )
        {
         ObjectSetInteger ( 0 , "SELL" , OBJPROP_STATE , 0 );
         double price0=m_symbol.Bid();
           {
             if (m_trade.PositionOpen(m_symbol.Name(), ORDER_TYPE_SELL ,InpLots,price0, 0.0 , 0.0 ))
               printf ( "Position by %s to be opened" ,m_symbol.Name());
             else
              {
               printf ( "Error opening SELL position by %s : '%s'" ,m_symbol.Name(),m_trade.ResultComment());
               printf ( "Open parameters : price=%f,TP=%f" ,price0, 0.0 );
              }
             PlaySound ( "ok.wav" );
           }
        }
      res= true ;
     }
//--- result
   return (res);
  }
//+------------------------------------------------------------------+
//| Check for long position closing                                  |
//+------------------------------------------------------------------+
bool CheckObject( void )
  {
//---
   bool res= false ;
     {
       ObjectCreate ( 0 , "BUY" , OBJ_BUTTON , 0 , 0 , 0 );
       ObjectSetInteger ( 0 , "BUY" , OBJPROP_XDISTANCE , ChartGetInteger ( 0 , CHART_WIDTH_IN_PIXELS )- 102 );
       ObjectSetInteger ( 0 , "BUY" , OBJPROP_YDISTANCE , 37 );
       ObjectSetString ( 0 , "BUY" , OBJPROP_TEXT , "BUY" );
       ObjectSetInteger ( 0 , "BUY" , OBJPROP_BGCOLOR , clrMediumSeaGreen );
       ObjectCreate ( 0 , "SELL" , OBJ_BUTTON , 0 , 0 , 0 );
       ObjectSetInteger ( 0 , "SELL" , OBJPROP_XDISTANCE , ChartGetInteger ( 0 , CHART_WIDTH_IN_PIXELS )- 50 );
       ObjectSetInteger ( 0 , "SELL" , OBJPROP_YDISTANCE , 37 );
       ObjectSetString ( 0 , "SELL" , OBJPROP_TEXT , "SELL" );
       ObjectSetInteger ( 0 , "SELL" , OBJPROP_BGCOLOR , clrDarkOrange );
      res= true ;
     }
//--- result
   return (res);
  }
//+------------------------------------------------------------------+
Dosyalar:
0001.mq5  5 kb
 
SanAlex :

burada düğmelerden hızlı bir şekilde açmak için kör

Teşekkürler, bir başlangıç için düşünüyorum ve araştırıyorum

 
Роман Жилин :

Teşekkürler, bir başlangıç için düşünüyorum ve araştırıyorum

Stratejiyi danışmana göre ayarlamanızı önermiyorum, tam tersi daha iyi. Alternatif olarak, stratejinizi uygulamak için diğer danışmanların gerekli kısımlarını bir araya getirebilirsiniz.

 
Роман Жилин :

Yeni başlayanlar için doğru yöne ihtiyacım var, daireler çiziyormuşum gibi geliyor


Dizin-Forum-Makaleler-Derleyici-Hatalar (ve her seferinde bir daire içinde böyle devam eder)

Görünüşe göre yeni bir şey öğreniyorum ama çok battığımı hissediyorum, danışmanın başlangıcında en basit ticareti bile açamıyorum. En azından birinin geceleri patikasız derin çalılıklarda bir fener tutması gerekir. Nasıl yoldan çıktıysam öyle dolaşırım.


Tam program, bir anlaşmayı başlatmak için başlatıldığında ve neyin ne olduğunu açıklamanızı rica ediyorum. Çok yardım edin.

Merhaba Roman!

Yeni başlayanlar için bana çok yardımcı olan iki harika makale var:

https://www.mql5.com/en/articles/481

https://www.mql5.com/ru/articles/496

Saygılarımla, Vladimir.

Торговые операции на MQL5 - это просто
Торговые операции на MQL5 - это просто
  • www.mql5.com
Почти все трейдеры приходят на рынок для того, чтобы заработать денег, хотя есть и доля тех, кому важен не сам торговый результат, а участие в процессе, драйв. Впрочем, получить удовольствие от процесса можно не только торгуя вручную, но и занимаясь разработкой автоматических торговых систем. Ведь создание торгового робота может быть таким же...
 
MrBrooklin :

Merhaba Roman!

Yeni başlayanlar için bana çok yardımcı olan iki harika makale var:

https://www.mql5.com/en/articles/481

https://www.mql5.com/ru/articles/496

Saygılarımla, Vladimir.

Vladimir, teşekkür ederim. İlk makaleye rastladım, ancak ikincisi tam olarak şimdi ihtiyacım olan şey.


Saygılarımla, Roman.

 
Роман Жилин :

Vladimir, teşekkür ederim. İlk makaleye rastladım, ancak ikincisi tam olarak şimdi ihtiyacım olan şey.


Saygılarımla, Roman.

Ayrıca, şimdi MQL5 referansındaki bilgileri aktif olarak kullanıyorum (MQL5 web sitesindeki sekme - Documentation ). İçinde hemen hemen her şeyi bulabilirsiniz. Bu kılavuzun büyük bir dezavantajı, diğer programlama dillerinde zaten temel eğitim almış kişiler için yazılmış olmasıdır, ancak açıkçası yeni başlayanlar için değil. Örneğin, " Geri Dönüyor " kelimesiyle başlayan ve sürekli olarak ortaya çıkan ifadenin anlamını hala anlamıyorum:

HesapBilgiÇift

Karşılık gelen hesap özelliğinin çift değerini döndürür


Kim dönüyor, kime dönüyor, nereye dönüyor, neden dönüyor ? Bu güne kadar, hala çözemedim.

Saygılarımla, Vladimir.

Документация по MQL5: Информация о счете / AccountInfoDouble
Документация по MQL5: Информация о счете / AccountInfoDouble
  • www.mql5.com
AccountInfoDouble - Информация о счете - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5