MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1358

 

MakarFX, 하지만 이 번들: 어떤 기능을 수행합니까?


입력 int BarTrade = 5; // 나는 이것이 모니터링되는 기간의 수라는 것을 알고 있으며 그 중 5개가 있습니다.

int TimeBarTrade=BarTrade*Period()*60; // 이해하는 방법은 무엇입니까? 왜 60을 곱합니까?

 
Alexey Belyakov :

MakarFX, 하지만 이 번들: 어떤 기능을 수행합니까?


입력 int BarTrade = 5; // 나는 이것이 모니터링되는 기간의 수라는 것을 알고 있으며 그 중 5개가 있습니다.

int TimeBarTrade=BarTrade*Period()*60; // 이해하는 방법은 무엇입니까? 왜 60을 곱합니까?

BarTrade*Period()*60

막대 수 * 현재 시간 프레임 * 60초

저것들. 막대 수를 초로 변환

 
MakarFX :

BarTrade*기간()*60

막대 수 * 현재 시간 프레임 * 60초

저것들. 막대 수가 초로 변환됩니다.

그렇게 될 수 있습니다.

 int TimeBarTrade = PeriodSeconds ()*BarTrade;
 
MakarFX :

관련된 오류를 제외하고

MODE_STOPLEVEL, MODE_TRADEALLOWED, MODE_MINLOT , MODE_LOTSTEP , MODE_MAXLOT

그러면 올빼미가 서버를 망치지 않을 것입니다.

Makar - 서버를 괴롭히고 고문 J 를 금지하지 않기 위해 수행해야 할 점검 사항을 제안해 주셔서 감사합니다.

나는 이렇게 검사를 했다

중지에 대한 패션 중지 수준

         //ПРОВЕРКА НА МОДЕ СТОП ЛЕВЕЛ- МИНИМАЛЬНЫЙ УРОВЕНЬ СТОПА 
         if (sl<MarketInfo( Symbol (),MODE_STOPLEVEL)) // ЕСЛИ СТОПОЛС МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО 
         {
          sl= MarketInfo( Symbol (),MODE_STOPLEVEL); //СТОП  ЛОССУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
         }

이익을 위한 패션 스톱 레벨

       // ПРОВЕРКА ТЕЙК ПРОФИТА НА МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ УСТАНОВКИ
      
   if (tp<MarketInfo( Symbol (),MODE_STOPLEVEL)) // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО 
         {
          tp= MarketInfo( Symbol (),MODE_STOPLEVEL); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
         }
         


거래 허가 확인

 //---- ПРОВЕРКА НА РАЗРЕШЕНИЕ ТОРГОВ ПЕРЕД ОТКРЫТИЕМ ОРДЕРОВ
   if (MarketInfo( Symbol (),MODE_TRADEALLOWED)== true )
   { // начало есл торговля разрешена
   /*
куча проверок на условия открытия и само открытие ордеров
*/
} // КОЕНЦ ПРОВЕРКИ НА РАЗРЕШЕНИЕ ТОРГОВЛИ
          
           else //ИНАЧЕ ЕСЛИ ТОРГОВЛЯ НЕ РАЗРЕШЕНА 
          
          { // НАЧАЛО ЭЛС ЕСЛИ ТОРГИ НЕ РАЗРЕШЕНЫ 
          
           Print ( "ТОРГИ НЕ РАЗРЕШЕНЫ- ПЫТАТЬСЯ ОТКРЫТЬ ОРДЕРА НЕ БУДЕМ" );
          }   // КОЕНЦ ЭЛС ЕСЛИ ТОРГИ НЕ РАЗРЕШЕНЫ

최대 및 최소 로트 확인

먼저 다음과 같은 변수에서 최대 로트 및 최소 로트 값을 얻었습니다.

   double Min_Lot =MarketInfo( Symbol (),MODE_MINLOT);   // МИНИМАЛЬНЫЙ ЛОТ РАЗРЕШЁННЫЙ БРОКЕРОМ
double Max_Lot =MarketInfo( Symbol (),MODE_MAXLOT);     // МАКСИМАЛЬНЫЙ ЛОТ РАЗРЕШЁННЫЙ БРОКЕРОМ

그리고 Grail을 작성하는 과정에서 다운스트림 어딘가에 체크를 하고

   if (lot<Min_Lot) lot=Min_Lot; //ЕСЛИ ЛОТ ПОЛУЧИЛСЯ МЕНЬШЕ ЧЕМ МИНИМАЛЬНЫЙ ЛОТ У БРОКЕРА ТО ЛОТ ПРИСВАЕМАЕМ МИНИМАЛЬНЫЙ ЛОТ У БРОКЕРА
if (lot>Max_Lot) lot=Max_Lot;   //ЕСЛИ ЛОТ ПОЛУЧИЛСЯ БОЛЬШЕ ЧЕМ МАКСИМАЛЬНЫЙ ЛОТ У БРОКЕРА ТО ОЛТ ПРИСВАЕВАЕМ МАКС ЛОТ У БРОКЕРА

이 수표를 등록했거나 어딘가에서 실수를 한 것이 사실입니까?

로트를 변경하는 단계는 확인하지 않았습니다. 로트가 보증금의 백분율로 계산되고 이 값에 포인트를 곱하고 정규화하기 때문입니다. 따라서 이 확인은 생략할 수 있습니다. 확인해야합니까? 여전히 확인해야 하는 경우 이 수표를 작성하는 방법은 무엇입니까?

그리고 이러한 모든 확인의 핵심은 항상 정확한 값을 정가, 이익, 로트 크기로 유지하여 원칙적으로 주문을 시작할 수 있도록 하는 것입니다. 이 모든 매개변수가 좋으면 고문은 서버를 강간하지 않을 것입니다. 이 모든 주방을 이해하고 있습니까?

 
DanilaMactep :

Makar - 서버를 괴롭히고 고문 J 를 금지하지 않기 위해 수행해야 할 점검 사항을 제안해 주셔서 감사합니다.


 //ПРОВЕРКА НА МОДЕ СТОП ЛЕВЕЛ- МИНИМАЛЬНЫЙ УРОВЕНЬ СТОПА
 // ПРОВЕРКА ТЕЙК ПРОФИТА НА МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ УСТАНОВКИ

여기에서 미끄러짐으로 인해 오류 130 이 발생할 수 있습니다 .

나는 그렇게 할 것이다

         //ПРОВЕРКА НА МОДЕ СТОП ЛЕВЕЛ- МИНИМАЛЬНЫЙ УРОВЕНЬ СТОПА 
         if (sl<MarketInfo( Symbol (),MODE_STOPLEVEL) *1.5 ) // ЕСЛИ СТОПОЛС МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО 
         {
          sl= MarketInfo( Symbol (),MODE_STOPLEVEL) *1.5 ; //СТОП  ЛОССУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
         }
       // ПРОВЕРКА ТЕЙК ПРОФИТА НА МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ УСТАНОВКИ
      
   if (tp<MarketInfo( Symbol (),MODE_STOPLEVEL) *1.5 ) // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО 
         {
          tp= MarketInfo( Symbol (),MODE_STOPLEVEL) *1.5 ; // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
         }
         
 

모두들 안녕! iHighest/iLowest 를 통해 찾은 차트의 댕글링 포인트에 문제가 있는 사람이 있습니까?

배경: 프로그래밍 경험이 미미합니다. mql4에 표시기를 작성 중입니다. 이 표시기는 if의 조건에서 찾은 차트에 점을 표시하고 선으로 연결해야 합니다. 논리적으로 그는 점을 올바르게 찾지만 오프셋을 사용하여 점을 그린 다음 2개 막대, 3개 막대로 그립니다. 그것을 처리하는 방법? 코드 파일도 첨부했습니다.


 int start()
  {
   int counted_bars=IndicatorCounted(); //хранит количество посчитанных индикатором баров. Функция IndicatorCounted() возвращает количество неизмененных баров после прошлого вызова функции start().
   int n,limit;
   int val_index;
   
   if (counted_bars> 0 )
      counted_bars--;
   limit= Bars -counted_bars; //количество последних баров, которые нужно пересчитать.
   if (limit>barsToProcess)
      limit=barsToProcess;

   for (n= 0 ; n<=limit; n++)
     {
       if ((Close[n+ 1 ]>Open[n+ 1 ] && Open[n+ 2 ]>=Close[n+ 2 ]) || (Close[n+ 1 ]>Open[n+ 1 ] && Open[n+ 3 ]>Close[n+ 3 ]))
        {
         val_index= iLowest ( NULL , 0 , MODE_LOW , 3 ,n+ 1 );
         myAZBuffer[n]=Low[val_index];
         ExtLowBuffer[n]=Low[val_index];
        }
       else
         if ((Open[n+ 1 ]>Close[n+ 1 ] && Close[n+ 2 ]>=Open[n+ 2 ]) || (Close[n+ 1 ]<Open[n+ 1 ] && Close[n+ 3 ]>Open[n+ 3 ]))
          {
            val_index= iHighest ( NULL , 0 , MODE_HIGH , 3 ,n+ 1 );
            myAZBuffer[n]=High[val_index];
            ExtHighBuffer[n]=High[val_index];
           }
     }
   return ( 0 );
  }
파일:
AZforum.mq4  8 kb
 
azolotta :

모두들 안녕! iHighest/iLowest를 통해 찾은 차트의 댕글링 포인트에 문제가 있는 사람이 있습니까?

배경: 프로그래밍 경험이 미미합니다. mql4에 표시기를 작성 중입니다. 이 표시기는 if의 조건에서 찾은 차트에 점을 표시하고 선으로 연결해야 합니다. 논리적으로 그는 점을 올바르게 찾지만 오프셋을 사용하여 점을 그린 다음 2개 막대, 3개 막대로 그립니다. 그것을 처리하는 방법? 코드 파일도 첨부했습니다.


오프셋 없이 포인트가 올바르게 그려집니다.

조건이 충족되고 iHighest/iLowest 가 현재 High/Low보다 크거나 작은 경우

그런 다음 그립니다


 
MakarFX :

오프셋 없이 포인트가 올바르게 그려집니다.

조건이 충족되고 iHighest/iLowest가 현재 High/Low보다 크거나 작은 경우

그런 다음 그립니다


그래서, 내 실수를 깨닫기 시작한 것 같습니다.) 이러한 점을 올바른 위치에 시각적으로 표시하려면 myAZBuffer[n], ExtLowBuffer[n]에 대해 n 대신 일종의 별도 카운터를 입력해야 합니다. , ExtHighBuffer[n] ? 그러나 그것을하는 방법
 
azolotta :
그래서, 내 실수를 깨닫기 시작한 것 같습니다.) 이러한 점을 올바른 위치에 시각적으로 표시하려면 myAZBuffer[n], ExtLowBuffer[n]에 대해 n 대신 일종의 별도 카운터를 입력해야 합니다. , ExtHighBuffer[n] ? 그러나 그것을하는 방법

아니, 당신은 올바르게 이해하고 있습니다.

조건은 기록에서 2개 또는 3개의 막대를 사용합니다.

따라서 조건이 충족되면 2-3개의 막대 후에 그립니다.

 
MakarFX :

아니, 당신은 올바르게 이해하고 있습니다.

조건은 기록에서 2개 또는 3개의 막대를 사용합니다.

따라서 조건이 충족되면 2-3개의 막대 후에 그립니다.

좋아, 하지만 코드를 다시 작업하는 방법, 예를 들어 마지막 3개 막대(if의 조건을 충족함)에서 가장 높은 최고점을 선택하고 그 위에 포인트를 두어야 한다면(바로 이 최고점에!) 낮은 점을 찾으십시오.