로봇 만들기 - 페이지 5

 

두 개의 버튼이 더 추가되었습니다 - 수평선 설정용.

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


파일:
ioia3x_0004.PNG  96 kb
0004.mq5  44 kb
 

수평 또는 추세선 에 대한 명령 추가

 //+------------------------------------------------------------------+
//|                                                         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 ; //
//+------------------------------------------------------------------+
파일:
0005.mq5  101 kb
 
SanAlex :

수평 또는 추세선 에 대한 명령 추가

좋은 하루와 좋은 분위기 모두!

로만은 무엇을 요구했습니까? 다음은 그의 첫 번째 게시물에서 인용한 것입니다. "전체 프로그램, 시작될 때 거래를 시작 하고 무엇인지 설명해주십시오. 많이 도와주세요."

그들이 필요로 하는 것을 설명하지 않고 코드를 추가하는 것은 쓸모가 없습니다!

로만, 이 상황에서 당신의 탈출구는 나와 똑같습니다. CodeBase의 간단한 Expert Advisor를 선택하십시오. 최소한 https://www.mql5.com/ru/code/138

MetaEditor에서 해당 코드를 열고 각 코드 줄에 있는 주석을 연구하기 시작합니다. 모든 의견이 영어로 작성된 고문이 있습니다. 언어에 대한 지식이 부족하면 Google 번역이 도움이 될 것입니다. 일부 Expert Advisor의 행에 주석이 없는 경우 프로그램 코드에서 색상으로 강조 표시된 모든 단어를 순차적으로 검색하고 해당 단어에 커서를 놓고 F1 키를 누르면 MQL5 참조의 해당 섹션이 열립니다. 이 섹션을 읽고, 이 줄에 자신의 말로 의견을 말하고, 명확하지 않은 것이 있으면 여기에서 질문하십시오. 따라서 프로그래밍 언어 학습을 빠르게 진행할 수 있습니다.

안부 인사를 전합니다. 블라디미르.

Советник "Метод Пуриа"
Советник "Метод Пуриа"
  • 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 :

좋은 하루와 좋은 분위기 모두!

로만은 무엇을 요구했습니까? 다음은 그의 첫 번째 게시물에서 인용한 것입니다. "전체 프로그램, 시작될 때 거래를 시작 하고 무엇인지 설명해주십시오. 많이 도와주세요."

설명없이 코드를 추가하는 것은 그에게 쓸모가 없습니다!

로만, 이 상황에서 당신의 탈출구는 나와 똑같습니다. CodeBase에서 간단한 Expert Advisor를 선택하십시오. 최소한 https://www.mql5.com/en/code/138

MetaEditor에서 해당 코드를 열고 각 코드 줄에 있는 주석을 연구하기 시작합니다. 모든 의견이 영어로 작성된 고문이 있습니다. 언어에 대한 지식이 부족하면 Google 번역이 도움이 될 것입니다. 일부 Expert Advisor의 행에 주석이 없는 경우 프로그램 코드에서 색상으로 강조 표시된 모든 단어를 순차적으로 검색하고 해당 단어에 커서를 놓고 F1 키를 누르면 MQL5 참조의 해당 섹션이 열립니다. 이 섹션을 읽고, 이 줄에 자신의 말로 의견을 말하고, 명확하지 않은 것이 있으면 여기에서 질문하십시오. 따라서 프로그래밍 언어 학습을 빠르게 진행할 수 있습니다.

안부 인사를 전합니다. 블라디미르.

그래서 나는 이해하지 못했습니다. 내가 속인 것을 삭제하는 것이 낫습니까? -그 자신은 무엇을, 어떻게 공부 했습니까?

 
SanAlex :

그래서 나는 이해하지 못했습니다. 내가 속인 것을 삭제하는 것이 낫습니까? -그 자신은 무엇을, 어떻게 공부 했습니까?

삭제하지 말고 코드에 쓰여진 내용과 수행한 이유를 설명하세요!

안부 인사를 전합니다. 블라디미르.

 
MrBrooklin :

삭제하지 말고 코드에 쓰여진 내용과 수행한 이유를 설명하세요!

안부 인사를 전합니다. 블라디미르.

나 스스로 독학을 하고 있다 - 그리고 나는 사용 가능한 코드에서 복사한다 - 문제는 내가 조각하는 방법을 설명할 수 없다는 것입니다!? - 안의 무언가가 눈을 멀게 하는 방법을 알려줍니다.

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

나는 내가 눈을 멀게 한 것을 알고 있습니다. 거기에는 충분하지 않습니다. 라인에 대한 또 다른 트롤입니다.

 
SanAlex :

나 스스로 독학을 하고 있다 - 그리고 나는 사용 가능한 코드에서 복사한다 - 문제는 내가 조각하는 방법을 설명할 수 없다는 것입니다!? - 안의 무언가가 눈을 멀게 하는 방법을 알려줍니다.

그것이 모든 문제입니다! MQL5 언어를 배우기 시작할 때 Expert Advisors 생성에 대한 많은 기사를 읽었지만 아직 초보자를 위해 모든 것이 배치되고, 칠해지고, 씹히는 기사를 찾지 못했습니다. 물론 Roman이 이미 제안한 별도의 기사와 링크가 있지만 이것은 적어도 나에게는 매우 작습니다.

예를 들어, 나 자신도 고문의 코드를 많이 보았지만 이것이 왜 저 줄로 작성되었는지 이해할 수 없습니다. 지금까지 한 명의 기성 고문에게서 코드를 다시 작성하는 데 마음이 충분했습니다.

안부 인사를 전합니다. 블라디미르.

 
MrBrooklin :

그것이 모든 문제입니다! MQL5 언어를 배우기 시작할 때 Expert Advisors 생성에 대한 많은 기사를 읽었지만 아직 초보자를 위해 모든 것이 배치되고, 칠해지고, 씹히는 기사를 찾지 못했습니다. 물론 Roman이 이미 제안한 별도의 기사와 링크가 있지만 이것은 적어도 나에게는 매우 작습니다.

예를 들어, 나 자신도 고문의 코드를 많이 보았지만 이것이 왜 저 줄로 작성되었는지 이해할 수 없습니다. 지금까지 한 명의 기성 고문에게서 코드를 다시 작성하는 데 마음이 충분했습니다.

안부 인사를 전합니다. 블라디미르.

나는 내 작업을 위한 기능을 찾고 있습니다. 작동 방식을 이해하기 시작하면 모든 것이 더 배우기 쉬울 때 기능을 분리합니다.

 
SanAlex :

나는 내 작업을 위한 기능을 찾고 있습니다. 작동 방식을 이해하기 시작하면 모든 것이 더 배우기 쉬울 때 기능을 분리합니다.

다음은 제가 한 시간 이상 싸워온 한 가지 문제의 실제 예입니다. EA를 시작할 때 ZigZagColor 인디케이터를 생성하여 차트에 표시해야 했습니다. int OnInit에서 제작:

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

표시기가 생성되어 표시됩니다. 이제 어드바이저를 삭제한 후 지표를 삭제해야 합니다. 쓰기:

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

표시기가 제거되지 않습니다. 선반에도 다 올려놓은 것 같습니다. 그리고 핸들이 지워지고 삭제 기능이 적용되었습니다. 제거되지 않는 이유는 무엇입니까?

안부 인사를 전합니다. 블라디미르.

 
MrBrooklin :

다음은 제가 한 시간 이상 싸워온 한 가지 문제의 실제 예입니다. EA를 시작할 때 ZigZagColor 인디케이터를 생성하여 차트에 표시해야 했습니다. int OnInit에서 제작:

표시기가 생성되어 표시됩니다. 이제 어드바이저를 삭제한 후 지표를 삭제해야 합니다. 쓰기:

표시기는 제거되지 않습니다. 선반에도 다 올려놓은 것 같습니다. 그리고 핸들이 지워지고 삭제 기능이 적용되었습니다. 제거되지 않는 이유는 무엇입니까?

안부 인사를 전합니다. 블라디미르.

삭제 - 더 복잡한 기능이 있습니다

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