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

 
Fast235 :

나를위한 것이 야,

일정에 따라 편집 중에 모든 포인트가 배치될 때까지 추가 지연이 있습니다.

필요한 경우(예: 재컴파일) OnDeinit에서 터미널 변수 expetname.deinitreason.ChartId()를 만들고 임시 플래그를 지정하고 여기에 이유 코드를 입력합니다. 수반되는 데이터와 동일(당신은 당신이 필요로 하는 것을 결코 알지 못합니다)

OnInit에서 - 변수가 존재하는지 확인한 다음 해당 값에 대해 조치를 취하십시오.

그리고 같은 장소에서 어쨌든 그런 변수를 삭제하십시오 ..

---

힌트 - 비정상 완료는 같은 방식으로 포착되지만 그 반대도 마찬가지입니다 :-) OnInit에서는 변수를 확인하고 생성하고 OnDeinit에서는 삭제합니다. 치명적인 오류가 발생 하고 EA/터미널이 방금 충돌한 경우 변수는 그대로 유지됩니다.

 
Maxim Kuznetsov :

필요한 경우(예: 재컴파일) OnDeinit에서 터미널 변수 expetname.deinitreason.ChartId()를 만들고 임시 플래그를 지정하고 여기에 이유 코드를 입력합니다. 수반되는 데이터와 동일(당신은 당신이 필요로 하는 것을 결코 알지 못합니다)

OnInit에서 - 변수가 존재하는지 확인한 다음 해당 값에 대해 조치를 취하십시오.

그리고 같은 장소에서 어쨌든 그런 변수를 삭제하십시오 ..

---

힌트 - 비정상 완료는 같은 방식으로 포착되지만 그 반대도 마찬가지입니다 :-) OnInit에서는 변수를 확인하고 생성하고 OnDeinit에서는 삭제합니다. 치명적인 오류가 발생 하고 EA/터미널이 방금 충돌한 경우 변수는 그대로 유지됩니다.

파일 및 전역 변수가 있는 경우 이를 차단하기 위해 가치가 없습니다. 개발자가 컴파일에서 제거 - 0 또는 터미널이 시작된 상태를 추가할 수도 있습니다. 예를 들어 다중 문자에 대한 히스토리 로딩을 추가할 수 있습니다. 입력 대신

 

안녕하세요! 양초의 방향(위 또는 아래)에 따라 양초, 볼륨, 다른 색상을 만드는 아이디어였습니다. 그러나 마지막 양초는 시간이 지남에 따라 양초의 방향이 변하기 때문에 다색입니다. 그리고 시간이 지남에 따라 모든 것이 다색으로 밝혀졌습니다. 문제는 마지막 촛불의 색상을 변경하고 나머지는 건드리지 않는 방법입니다. 아니면 다른 아이디어일 수도 있습니다.



 //+------------------------------------------------------------------+
//|                                      VSA_Volume_Color            |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 3

//////////////
datetime PrevTime = 0 ;
double iVolume_UP[];
double iVolume_DWN[];
double iVolume_NULL[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
   IndicatorDigits( 5 );
//--- indicator buffers mapping
   SetIndexBuffer ( 0 , iVolume_UP);
   SetIndexBuffer ( 1 , iVolume_DWN);
   SetIndexBuffer ( 2 , iVolume_NULL);
//---
   SetIndexStyle( 0 , DRAW_HISTOGRAM ,EMPTY, 2 , clrGreen );
   SetIndexStyle( 1 , DRAW_HISTOGRAM ,EMPTY, 2 , clrWhite );
   SetIndexStyle( 2 , DRAW_HISTOGRAM ,EMPTY, 2 , clrRed );
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   int i = 0 , counted_bars = IndicatorCounted();
   i = Bars - counted_bars - 1 ;
   if (counted_bars < 0 )
       return (- 1 );
//---
   if (counted_bars > 0 )
      counted_bars--;
//--- return value of prev_calculated for next call
///////////
   while (i >= 0 )
     {
       if (Close[i] > Open[i])
         iVolume_UP[i] =   iVolume ( NULL , 0 , i) * 1.0 ;
       if (Close[i] < Open[i])
         iVolume_DWN[i] =   iVolume ( NULL , 0 , i) * 1.0 ;
       if (Close[i] == Open[i])
         iVolume_NULL[i] =   iVolume ( NULL , 0 , i) * 1.0 ;
      i--;
     }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   return (rates_total);
  }
//+------------------------------------------------------------------+
고맙습니다!
 

불필요한 버퍼 제로 아웃

iVolume_UP[i]= EMPTY_VALUE ;
 

별도의 주제 링크 - SERIES_LASTBAR_DATE 를 통한 새 막대

인쇄는 신호가 사용자 정의 이벤트를 통해 표시기에서 나왔고 SERIES_LASTBAR_DATE 사용하여 새 막대가 확인되었다는 사실로 인해 신호를 건너뛴 것으로 나타났습니다.

인쇄에서 새 막대가 아닌 마지막 막대의 데이터... 총 약 50개의 트랜잭션에 대해 7개의 기호, 볼 수 있는 건너뛰기, 아이디어가 있습니까? 핑 150.

Ryzen 3700x 프로세서 16 스레드

----

유사한 다중 기호 체계를 사용하는 사람은 실시간으로 2-3개의 터미널에서 이를 측정했습니다(예: M1에서 데모)는 하루에 40-50건의 트랜잭션이 있는 이러한 패스를 위해 몇 시간에서 반나절을 기다립니다.

CPU 부하가 몇 % 로봇, 거의 자고 있습니다.

В моих ТС пропуск сигнала
В моих ТС пропуск сигнала
  • 2021.03.16
  • www.mql5.com
Не люблю создавать новые темы, Небольшие исходные данные: Советник работает в OnChatEvent, 7 символов, циклов нет, прямая передача номера за минусо...
 

30-50에서 한 거래, 좋아, 플러스와 마이너스 모두에서 닫을 수 있지만

나는 총 이익을 계산하는 시스템을 가지고 있는데, 꽤 까다롭습니다. 그리고 이 거래는 다음 신호가 아니라 지금 거기에 참여해야 합니다.

5년 전으로 더 깊이 파고들 수 있습니다.

이벤트 모델 이 곡선인 경우 개발자들에게 거절하라고 요청합니다. 스파이의 초기 게시물로 판단하여 다양한 옵션을 테스트했는데 흩어지고 누락된 부분도 있었나요?
 
Aleksei Stepanenko :

불필요한 버퍼 제로 아웃

괜찮은. 모든 것이 작동합니다). 고맙습니다!
 
얘들 아, 내가 mql5 표시기 버퍼의 인덱싱과 혼동되었다고 말해주십시오.
ArraySetAsSeries (Buffer, true ) 함수가 적용된 경우
인덱싱만 배포됩니까? 아니면 버퍼 값도 언래핑되나요?
 
Roman :
얘들 아, 내가 mql5 표시기 버퍼의 인덱싱과 혼동되었다고 말해주십시오.
ArraySetAsSeries (Buffer, true ) 함수가 적용된 경우
인덱싱만 배포됩니까? 아니면 버퍼 값도 언래핑되나요?
true인 경우 표시기 버퍼의 0 막대는 차트의 맨 오른쪽 막대입니다. 거짓인 경우 - 맨 왼쪽.
다른 건 없습니다.
 
Artyom Trishkin :
true인 경우 표시기 버퍼의 0 막대는 차트의 맨 오른쪽 막대입니다. 거짓인 경우 - 맨 왼쪽.
다른 건 없습니다.

고맙습니다.
Artyom 한 번만 더 말씀해 주십시오.
기능

 ChartSetInteger ( ChartID (), CHART_SHOW , false )
설치된 인디케이터의 메인 차트 창과 하위 창을 숨깁니다.
기본 차트 창만 숨기려면 어떻게 합니까? 동시에 표시기 하위 창이 계속 표시되도록 합니다.