초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1267

 
Vladimir Karputov :

이에 대한 표시기에는 색상 입력 매개변수가 있어야 합니다. 즉, 사용자 지정 지표 여야 합니다.

감사하다! 하지만 소스에 대한 액세스 권한이 없으면 실현 가능하지 않습니까?

 
Tango_X :

감사하다! 하지만 소스에 대한 액세스 권한이 없으면 실현 가능하지 않습니까?

예, 오픈 소스 또는 기성품 구현이 필요합니다.

 
Vladimir Karputov :

예, 오픈 소스 또는 기성품 구현이 필요합니다.

테스터에서 색상을 clrNONE으로 설정하면 색상이 계속 표시됩니다! 테스터에서 clrNONE이 작동하지 않는 것으로 나타났습니까? 실생활에서 확인할 방법이 없습니다-주말이 지금 ...  

clrNONE 대신 색상을 설정하면 이 색상이 표시되지만 빈 값 = 작동하지 않습니다 .. 이상합니다 ..
 
Aleksey Mavrin :

답변: 매크로를 반복적으로 다시 로드)

그러나 문자열에 + 연산자를 사용하고 모든 것을 문자열로 변환하는 것이 더 낫습니다. 그러면 많은 매개변수가 있는 함수(및 매크로) 버전이 필요하지 않습니다.

고맙습니다. 매크로를 다시 로드할 수 있는지 몰랐습니다.

 
pivomoe :

고맙습니다. 매크로를 다시 로드할 수 있는지 몰랐습니다.

오타 - 다시 로드하지 않고 다시 로드)

 

이 도움말 섹션 https://www.mql5.com/ru/docs/constants/structures/mqltraderequest 끝에 있는 예제를 분석했습니다.

Metaquot 서버에서는 모든 것이 정상입니다.

다른 서버에서 거래 요청 오류 코드를 분석한 후 문제가 MqlTradeResult 필드를 채우고 있음을 발견했습니다.

request.type_filling = ORDER_FILLING_IOC ;

포럼을 검색해도 명확한 솔루션을 찾지 못했습니다 . 프로그래밍 방식으로 MqlTradeResult 필드에 대한 서버 설정을 결정하는 방법

 ENUM_ORDER_TYPE_FILLING        type_filling;     // Тип ордера по исполнению 


UPD: 작동하는 솔루션을 찾았습니다. https://www.mql5.com/ru/forum/168912/page2#comment_4062864

@fxsaber 감사합니다!

 
자동 빌드 중에 fibo 수준이 어떻게 구성되는지 알려주세요
 
VVT :
자동 빌드 중에 fibo 수준이 어떻게 구성되는지 알려주세요

피보나치 RR 코드의 예 -

 //+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   long chart_id= ChartID ();
   datetime time1= ChartTimeOnDropped ();
   double price1= ChartPriceOnDropped ();
   if ( ObjectFind (chart_id,InpFiboName)< 0 )
      FiboLevelsCreate(chart_id,InpFiboName, 0 ,time1,price1,time1+InpAddSecond,price1-InpStopLoss* Point (),InpColor);
   else
     {
       ObjectDelete (chart_id,InpFiboName);
       ChartRedraw (chart_id);
      FiboLevelsCreate(chart_id,InpFiboName, 0 ,time1,price1,time1+InpAddSecond,price1-InpStopLoss* Point (),InpLevelsColor);
     }
//---
   int                levels   = 6 ;                                                                     // number of level lines
   double             values[ 6 ]= { 1.0 , 0.0 , 2.0 , 3.0 , 4.0 , 5.0 };                                             // values of level lines
   color              colors[ 6 ];                                                                       // color of level lines
   for ( int i= 0 ; i< 6 ; i++)
      colors[i]=InpLevelsColor;
   ENUM_LINE_STYLE    styles[ 6 ];                                                                       // style of level lines
   for ( int i= 0 ; i< 6 ; i++)
      styles[i]=InpLevelsStyles;
   int                widths[ 6 ]= { 2.0 , 2.0 , 2.0 , 2.0 , 2.0 , 2.0 };                                             // width of level lines
   string             texts[ 6 ] = { "BREAK EVEN" , "STOP LOSS" , "TP1 1.1" , "TP2 2.1" , "TP3 3.1" , "TP4 4.1" };   // text of level lines
//---
   FiboLevelsSet(levels,values,colors,styles,widths,texts,chart_id,InpFiboName);
  }


레벨에 대해 설정할 수 있습니다: 라인 수, 라인 값, 라인 색상, 라인 스타일, 라인 너비, 라인 텍스트.

 
int OnInit ()
  {
//---
   ChartSetInteger ( ChartID (), CHART_EVENT_OBJECT_CREATE , true );
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
  }
//+------------------------------------------------------------------+

/***********************OnChartEvent function************************/
void OnChartEvent ( const int id,         // идентификатор события
                   const long & lparam,   // параметр события типа long
                   const double & dparam, // параметр события типа double
                   const string & sparam   // параметр события типа string
                 )
  {
   if (id == CHARTEVENT_OBJECT_CREATE )
     {
      I++;
       string result[];       //  массив для получения строк
       StringSplit (sparam, ' ' , result); //  получим из имени созданного объекта подстроки
       ulong timeCreate = ObjectGetInteger ( 0 , sparam, OBJPROP_CREATETIME ); //  получим время создания объекта
       string newName = result[ 0 ]+ " " +result[ 1 ]+ " " + string (I); //  сформируем новое имя объекта
       ObjectSetString ( 0 , sparam, OBJPROP_NAME , newName);   //  переименуем объект

       //----------------------------------------------------------------------------------------
       double    Level_0= ObjectGetDouble (
                                 0 ,           // идентификатор графика
                                newName,               // имя объекта
                                 OBJPROP_PRICE ,           // идентификатор свойства
                                 0      // модификатор свойства
                             );


       double    Level_1= ObjectGetDouble (
                                 0 ,           // идентификатор графика
                                newName,               // имя объекта
                                 OBJPROP_PRICE ,           // идентификатор свойства
                                 1      // модификатор свойства
                             );
       //------------------------------------------------------------------------------------------------------
       if (Level_0 > Level_1)
        {
         ObjectSetInteger ( 0 ,newName, OBJPROP_COLOR , clrDeepSkyBlue );
        }
       else
        {
         ObjectSetInteger ( 0 ,newName, OBJPROP_COLOR , clrYellow );
        }
     } /******************************************************************/
  }

여기요! 디버깅할 때 코드를 단계별로 전달할 때 좌표 값에 따라 선이 두 색상으로 다시 칠해지는 이유를 말하지 마십시오. 그리고 차트에 전문가를 던질 때 if(Level_0 > Level_1) 라인은 절대 사실이 아닙니다.
 
Kira27 :

여기요! 디버깅할 때 코드를 단계별로 전달할 때 좌표 값에 따라 선이 두 색상으로 다시 칠해지는 이유를 말하지 마십시오. 그리고 차트에 Expert Advisor를 던질 때 if(Level_0 > Level_1) 조건은 절대 참이 되지 않습니까?

개체의 이름을 바꾼 후 아직 액세스할 수 없을 가능성이 매우 높습니다. 이름을 바꾼 후에 ChartRedraw 를 넣어 볼 수 있습니다. 도움이되지 않으면 어떻게 든 시퀀스를 다르게 빌드해야합니다.

추신; 또 다른 옵션: 먼저 이름을 sparam으로 다시 칠한 다음 이름을 바꿉니다.
사유: