robot oluşturmak - sayfa 5

 

Yatay çizgileri ayarlamak için iki düğme daha eklendi.

-------------------------------------------------


Dosyalar:
ioia3x_0004.PNG  96 kb
0004.mq5  44 kb
 

Yatay veya Trend çizgileri için komutlar eklendi

 //+------------------------------------------------------------------+
//|                                                         0005.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
//+------------------------------------------------------------------+
//| ENUM_TRADE_COMMAND                                               |
//+------------------------------------------------------------------+
enum ENUM_TRADE_COMMAND
  {
   Turn_Off= 0 ,       // TURN  OFF
   UpName= 1 ,         // Line UpName
   DownName= 2 ,       // Line DownName
   UpName_s= 3 ,       // Line UpName + Open Sell
   UpName_b= 4 ,       // Line UpName + Open Buy
   DownName_b= 5 ,     // Line DownName + Open Buy
   DownName_s= 6 ,     // Line DownName + Open Sell
   close_buys= 7 ,     // Close All Buy's
   close_sells= 8 ,     // Close All Sell's
   close_all= 9 ,       // Close All Buy's and Sell's
   open_buy= 10 ,       // Open  Buy
   open_sell= 11 ,     // Open  Sell
   close_open_b= 12 ,   // Close Sell + Open Buy
   close_open_s= 13 ,   // Close Buy + Open Sell
   open_buy_sell= 14 , // Open  Buy and Sell
  };
//+------------------------------------------------------------------+
input string    t= "----- Lots                -----" ;               //
input double    InpLots                      = 0.01 ;               // Lots
input string    t0= "---- Line Name           -----" ;               //
input string    InpObjUpName                 = "Имя Линии Up" ;     // Obj: Up (Trailing Horizontal Line) or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommand    = UpName_s;           // Obj:  command: UP
input string    InpObjDownName               = "Имя Линии Down" ;   // Obj: Down (Trailing Horizontal Line) or Trend Line)
input ENUM_TRADE_COMMAND InTradeCommand     = DownName_b;         // Obj:  command: DOWN
input ushort    InpObjStep                   = 15 ;                 // Obj: Step (distance from price to object, in pips)
input string    t1= "---- Indicators: UP      -----" ;               //
input bool      InpIndicatorsUp              = false ;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY1  = open_buy;           // Trade command: ( Buy )
input ENUM_TRADE_COMMAND InpTradeCommandU1  = open_sell;         // Trade command: ( Sell )
input string    t2= "---- Indicators:         -----" ;               //
input bool      InpIndicators                = false ;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY   = close_sells;       // Trade command: ( Buy )
input ENUM_TRADE_COMMAND InpTradeCommandU   = close_buys;         // Trade command: ( Sell )
//---
double    m_adjusted_point;                 // point value adjusted for 3 or 5 points
int       handle_iCustomUp;                 // variable for storing the handle of the iStochastic indicator
int       handle_iCustom;                   // variable for storing the handle of the iStochastic indicator
datetime ExtPrevBarsUp           = 0 ;     // "0" -> D'1970.01.01 00:00';
datetime ExtPrevBars             = 0 ;     // "0" -> D'1970.01.01 00:00';
double    m_obj_step              = 0.0 ;   // Obj: Trailing Stop   -> double
uint      SLEEPTIME               = 1 ;     // Время паузы между повторами в секундах
ushort    InpSignalsFrequency     = 1 ;     // Search signals, in seconds (min value "1")
datetime ExtLastSignalsRx        = 0 ;     // "0" -> D'1970.01.01 00:00';
datetime ExtPrevBarsRx           = 0 ;     // "0" -> D'1970.01.01 00:00';
datetime ExtLastSignalsSx        = 0 ;     // "0" -> D'1970.01.01 00:00';
datetime ExtPrevBarsSx           = 0 ;     // "0" -> D'1970.01.01 00:00';
bool      ExtTurnOff              = false ; //
bool      ExtUpName               = false ; //
bool      ExtDownName             = false ; //
bool      ExtNeedCloseBuy         = false ; //
bool      ExtNeedCloseSell        = false ; //
bool      ExtNeedCloseAll         = false ; //
bool      ExtNeedOpenBuy          = false ; //
bool      ExtNeedOpenSell         = false ; //
bool      ExtNeedOpenBuySell      = false ; //
//+------------------------------------------------------------------+
Dosyalar:
0005.mq5  101 kb
 
SanAlex :

Yatay veya Trend çizgileri için komutlar eklendi

Herkese iyi günler ve iyi bir ruh hali!

Roman ne istedi? İşte ilk gönderisinden bir alıntı: "Tam program, başlatıldığında bir anlaşma açmak için ve lütfen neyin ne olduğunu açıklayın. Çok yardımcı olun."

NE GEREKTİĞİNİ açıklamadan kod eklemek işe yaramaz!

Roman, bu durumda senin çıkış yolun benimkiyle tamamen aynı. CodeBase'den herhangi bir basit Uzman Danışman alın, en azından bu https://www.mql5.com/en/code/138

Kodunu MetaEditor'da açın ve her kod satırına giren yorumları incelemeye başlayın. Tüm yorumların İngilizce olarak yazıldığı böyle danışmanlar var. Dil bilginiz yetersizse, Google Çeviri size yardımcı olacaktır. Bazı Expert Advisor satırlarında yorum yoksa, program kodunda renkli olarak vurgulanan tüm kelimeleri sırayla arayın, imleci üzerlerine getirin, F1 tuşuna basın ve MQL5 referansının ilgili bölümleri açılacaktır. Bu bölümleri okuyun, bu satırları kendi kelimelerinizle yorumlayın ve anlaşılmayan bir şey varsa buradan soru sorun. Böylece bir programlama dilini öğrenmede hızlı bir şekilde ilerleyeceksiniz.

Saygılarımla, Vladimir.

Советник "Метод Пуриа"
Советник "Метод Пуриа"
  • www.mql5.com
Предлагается использовать следующие валютные пары в торговой стратегии форекс "Метод Пуриа" : AUDJPY - M30 - 15 пунктов (т.е. закрываем сделку при 15 пипсов тейк-профита) NZDUSD - 1H - 25 пунктов USDCAD - H1 - 20 пунктов EURGBP - H1 - 10 пунктов USDJPY - M30 - 15 пунктов GBPUSD - М30 - 20 пунктов USDCHF - M30 - 10 пунктов EURCHF - H1 - 15...
 
MrBrooklin :

Herkese iyi günler ve iyi bir ruh hali!

Roman ne istedi? İşte ilk gönderisinden bir alıntı: "Tam program, başlatıldığında bir anlaşma açmak için ve lütfen neyin ne olduğunu açıklayın. Çok yardımcı olun."

Sadece açıklama yapmadan kodları eklemek onun için işe yaramaz!

Roman, bu durumda senin çıkış yolun benimkiyle tamamen aynı. CodeBase'den herhangi bir basit Uzman Danışman alın, en azından bu https://www.mql5.com/ru/code/138

Kodunu MetaEditor'da açın ve her kod satırına giren yorumları incelemeye başlayın. Tüm yorumların İngilizce olarak yazıldığı böyle danışmanlar var. Dil bilginiz yetersizse, Google Çeviri size yardımcı olacaktır. Bazı Expert Advisor satırlarında yorum yoksa, program kodunda renkli olarak vurgulanan tüm kelimeleri sırayla arayın, imleci üzerlerine getirin, F1 tuşuna basın ve MQL5 referansının ilgili bölümleri açılacaktır. Bu bölümleri okuyun, bu satırları kendi kelimelerinizle yorumlayın ve anlaşılmayan bir şey varsa buradan soru sorun. Böylece bir programlama dilini öğrenmede hızlı bir şekilde ilerleyeceksiniz.

Saygılarımla, Vladimir.

Yani anlamadım - aldattığımı silmek daha mı iyi? - kendisi ne yapardı, nasıl çalışırdı?

 
SanAlex :

Yani anlamadım - aldattığımı silmek daha mı iyi? - kendisi ne yapardı, nasıl çalışırdı?

Silmeyin , kodlarda ne yazdığını ve neden yapıldığını açıklayın!

Saygılarımla, Vladimir.

 
MrBrooklin :

Silmeyin , kodlarda ne yazdığını ve neden yapıldığını açıklayın!

Saygılarımla, Vladimir.

Ben kendim öğrendim - ve kendim mevcut kodlardan kopyalıyorum, - Sorun şu ki nasıl heykel yaptığımı açıklayamıyorum!? - içindeki bir şey sana nasıl kör edileceğini söyler.

----------------------------------

Neyi kör ettiğimi biliyorum, orada yeterli değil, hat için başka bir Trol.

 
SanAlex :

Ben kendim öğrendim - ve kendim mevcut kodlardan kopyalıyorum, - Sorun şu ki nasıl heykel yaptığımı açıklayamıyorum!? - içindeki bir şey sana nasıl kör olunacağını söyler.

Bütün sorun bu! MQL5 dilini öğrenmeye başladığımda , Expert Advisors'ın oluşturulmasıyla ilgili bir çok makale okudum ama BAŞLANGIÇLAR için her şeyin düzenlendiği, boyandığı ve çiğnendiği böyle bir makaleye henüz rastlamadım. Elbette, Roman'ın önerdiği ayrı makaleler, bağlantılar var, ancak bu çok küçük, en azından benim için.

Örneğin, kendim birçok danışman kodu görüyorum, ancak bunun veya bu satırın neden yazıldığını anlayamıyorum. Şimdiye kadar, zihin, hazır bir danışmandan kendiniz için kodu yeniden yazmak için yeterliydi.

Saygılarımla, Vladimir.

 
MrBrooklin :

Bütün sorun bu! MQL5 dilini öğrenmeye başladığımda , Expert Advisors'ın oluşturulmasıyla ilgili bir çok makale okudum, ancak BAŞLANGIÇLAR için her şeyin düzenlendiği, boyandığı ve çiğnendiği böyle bir makaleye henüz rastlamadım. Elbette, Roman'ın önerdiği ayrı makaleler, bağlantılar var, ancak bu çok küçük, en azından benim için.

Örneğin, kendim birçok danışman kodu görüyorum, ancak bunun veya bu satırın neden yazıldığını anlayamıyorum. Şimdiye kadar, zihin, hazır bir danışmandan kendiniz için kodu yeniden yazmak için yeterliydi.

Saygılarımla, Vladimir.

Görevlerim için işlevler arıyorum - nasıl çalıştığını anlamaya başladığımda işlevi parçalara ayırıyorum, o zaman her şeyi öğrenmek daha kolay.

 
SanAlex :

Görevlerim için işlevler arıyorum - nasıl çalıştığını anlamaya başladığımda işlevi parçalara ayırıyorum, o zaman her şeyi öğrenmek daha kolay.

İşte bir saatten fazla süredir mücadele ettiğim bir problemin canlı örneği. EA'yı başlatırken oluşturulacak ve grafikte görüntülenecek ZigZagColor göstergesine ihtiyacım vardı. int OnInit'te yapıldı:

   handle_iCustom= iCustom (m_symbol.Name(), Period (), "Examples\\ZigzagColor" ,
                          Inp_ZZ_Depth,
                          Inp_ZZ_Deviation,
                          Inp_ZZ_Backstep);
   ChartIndicatorAdd ( ChartID (), 0 ,handle_iCustom);

Gösterge oluşturuldu ve görüntülendi. Şimdi, danışmanı sildikten sonra, silinecek göstergeye ihtiyacınız var. Yazı:

 void OnDeinit ( const int reason)
  {
//---
   IndicatorRelease (handle_iCustom);
   ObjectsDeleteAll ( 0 , "Examples\\ZigzagColor" );
  }

ve gösterge kaldırılmaz. Görünüşe göre her şeyi raflara da koymuş. Ve tutamaç temizlendi ve silme işlevi uygulandı. Kaldırılmamasının sebebi nedir?

Saygılarımla, Vladimir.

 
MrBrooklin :

İşte bir saatten fazla süredir mücadele ettiğim bir problemin canlı örneği. EA'yı başlatırken oluşturulacak ve grafikte görüntülenecek ZigZagColor göstergesine ihtiyacım vardı. int OnInit'te yapıldı:

Gösterge oluşturuldu ve görüntülendi. Şimdi, danışmanı sildikten sonra, silinecek göstergeye ihtiyacınız var. Yazı:

ve gösterge kaldırılmaz. Görünüşe göre her şeyi raflara da koymuş. Ve tutamaç temizlendi ve silme işlevi uygulandı. Kaldırılmamasının sebebi nedir?

Saygılarımla, Vladimir.

silmek için - daha karmaşık bir işlev var

 input string    t12= "--- Indicator Delete    -----" ;               //
input string    Inpshort_name                = "Имя Индикатора" ;   // Delete Indicator Name
input string    Inpshort_name_1              = "Имя Индикатора" ;   // Delete Indicator Name
input bool      Inpres                       = false ;             // Delete All Indicators
//+------------------------------------------------------------------+
//| ChartIndicatorDelete                                             |
//+------------------------------------------------------------------+
bool IndicatorDelete( void )
  {
     {ActionsOnTheChart( 0 );}
//---
   return ( true );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ActionsOnTheChart( const long chart_id)
  {
   int sub_windows_total =- 1 ;
   int indicators_total  = 0 ;
//---
   if (!ChartWindowsTotal(chart_id,sub_windows_total))
     {
       return ( false );
     }
//---
   for ( int i=sub_windows_total- 1 ; i>= 0 ; i--)
     {
      indicators_total= ChartIndicatorsTotal (chart_id,i);
       //---
       if (indicators_total> 0 )
        {
         ChIndicatorsDelete(chart_id,i,indicators_total);
        }
     }
//---
   return ( true );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ChartWindowsTotal( const long chart_ID, int &sub_windows_total)
  {
   long value=- 1 ;
//---
   if (! ChartGetInteger (chart_ID, CHART_WINDOWS_TOTAL , 0 ,value))
     { Print ( __FUNCTION__ , " Error = " , GetLastError ()); return ( false );}
//---
   sub_windows_total=( int )value;
//---
   return ( true );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ChIndicatorsDelete( const long   chart_id,
                         const int    sub_window,
                         const int    indicators_total)
  {
   for ( int i=indicators_total- 1 ; i>= 0 ; i--)
     {
       string indicator_name= ChartIndicatorName (chart_id,sub_window,i);
       //---
      ChIndicatorDelete(indicator_name,chart_id,sub_window);
       ChartRedraw ();
     }
//---
   return ( true );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ChIndicatorDelete( const string shortname,
                       const long    chartid= 0 ,
                       const int     subwindow= 0 )
  {
   bool res= ChartIndicatorDelete (chartid,subwindow,Inpshort_name);
   bool res2= ChartIndicatorDelete (chartid,subwindow,Inpshort_name_1);
   if (Inpres)
       bool res0= ChartIndicatorDelete (chartid,subwindow,shortname);
//--- проанализируем результат вызова ChartIndicatorDelete()
   if (!res)
     {
       PrintFormat ( "%s" ,shortname,subwindow, GetLastError ());
     }
//---
   return ( true );
  }
//+------------------------------------------------------------------+
Neden: