나는 각 틱에 대해 iVolume을 계산하는 훈련 표시기를 만들었습니다. iVolume은 트위칭된 항목에 대해 양수이고 twitched된 항목에 대해 iVolume이 음수입니다. 곡선을 얻으려면 막대에서 막대로의 누계에서 모든 iVolume(양수 및 음수)을 더합니다. 곡선이 나옵니다. 그러나 2가지 문제가 발생했습니다.
1) 선이 강하게 끊어진 것으로 판명되었습니다.
2) 결과 iVolume 차트는 실생활에서만 살기 때문에 어드바이저를 테스트하는 것은 불가능합니다.
문제:
1) 내가 버퍼에 쓴 평균 데이터를 기반으로 그래프를 작성할 수 있는 코드를 설명하는 방법은 무엇입니까?
2) 이 지표(실제 모드에서 획득)의 데이터를 특정 파일에 기록할 수 있으므로 나중에 이 파일을 참조하여 이미 수집된 틱을 적용하여 과거 데이터에 지표를 구축할 수 있습니다. 그들에게 볼륨? 그렇다면 프로그래밍 방식으로 어떻게 설명할 수 있습니까? 아니면 현재 iVolume 정보를 파일에 기록할 필요가 없는 다른 솔루션이 있습니까?
#property version"1.00"#property strict#property indicator_separate_window#property indicator_buffers2#property indicator_label1"Вверх"#property indicator_type1DRAW_LINE#property indicator_color1 Salmon
#property indicator_style1STYLE_SOLID#property indicator_width12#property indicator_label2"Вниз"#property indicator_type2DRAW_LINE#property indicator_color2clrDarkTurquoise#property indicator_style2STYLE_SOLID#property indicator_width22datetime Время= 0 ; // Время прошлого бараdouble Bid1;
double Buf_1[];
long V1; // объем для текущего тика вверхlong V2; // накопленный объем для всех тиков вверх текущего бараlong V3; // объем текущего тика внизlong V4; // накопленный объем для всех тиков вниз для текущего бараlong V5; // отрицательные и положительные iVolume нарастающим итогомvoidOnInit ()
{
IndicatorDigits ( 0 );
SetIndexBuffer ( 0 ,Buf_1);
//SetIndexBuffer(1,Buf_2);
Bid1= Bid ;
V5 = 0 ;
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate ( constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
datetime Вр= Time [ 0 ]; // Время текущего бараif (Вр>Время) // Если новый бар
{
Время=Вр; // Запомнить// Buf_1[0]=0; // и обнулить последний элемент буфера
}
if ( Bid >= Bid1)
{
if ( Bid > Bid1)
{
V1 = iVolume ( NULL , 0 , 0 ); // если повышающий цену тик
V2 = V1 + V2;
}
else
{
V1 = 0 ; // если Bid1 = Bid2, т.е. изменение цены = 0, то iVolume этого тика присваиваем 0;
V2 = V1 + V2;
}
}
else
{
V3 = iVolume ( NULL , 0 , 0 ); // если понижающий цену тик
V4 = V3 + V4;
}
V5 = V2-V4;
Bid1= Bid ;
Buf_1[ 0 ]= V5; // в буфер сгружаем return (rates_total);
}
YarTrade : 이 지표(실제 모드에서 획득)에 대한 데이터를 특정 파일에 기록하여 나중에 이 파일을 참조하여 이미 수집된 데이터를 적용하여 과거 데이터를 기반으로 지표를 구축할 수 있습니까? 그들에게 틱 볼륨? 그렇다면 프로그래밍 방식으로 어떻게 설명할 수 있습니까? 아니면 현재 iVolume 정보를 파일에 기록할 필요가 없는 다른 솔루션이 있습니까?
어떤 친절한 사람들은 나에게 다음을 쓰는 방법을 알려줍니다.
나는 각 틱에 대해 iVolume을 계산하는 훈련 표시기를 만들었습니다. iVolume은 트위칭된 항목에 대해 양수이고 twitched된 항목에 대해 iVolume이 음수입니다. 곡선을 얻으려면 막대에서 막대로의 누계에서 모든 iVolume(양수 및 음수)을 더합니다. 곡선이 나옵니다. 그러나 2가지 문제가 발생했습니다.
1) 선이 강하게 끊어진 것으로 판명되었습니다.
2) 결과 iVolume 차트는 실생활에서만 살기 때문에 어드바이저를 테스트하는 것은 불가능합니다.
문제:
1) 내가 버퍼에 쓴 평균 데이터를 기반으로 그래프를 작성할 수 있는 코드를 설명하는 방법은 무엇입니까?
2) 이 지표(실제 모드에서 획득)의 데이터를 특정 파일에 기록할 수 있으므로 나중에 이 파일을 참조하여 이미 수집된 틱을 적용하여 과거 데이터에 지표를 구축할 수 있습니다. 그들에게 볼륨? 그렇다면 프로그래밍 방식으로 어떻게 설명할 수 있습니까? 아니면 현재 iVolume 정보를 파일에 기록할 필요가 없는 다른 솔루션이 있습니까?
코드 끝에 다음을 추가할 수 있습니다.
이중 macurrent= iMAOnArray (Buf_1[0],0,5,0, MODE_LWMA ,0);
응 안돼! 컴파일러는 배열이 없다는 오류를 작성합니다.
누구든지...도와줄 수 있습니까? 나를 위한 막 다른 작업은 여기에 명시되어 있습니다. https://www.mql5.com/en/forum/160683/page378#comment_6053255
파일의 데이터 기반 표시기 - 검색에 이 줄을 입력하고 찾았 습니다.
일종의 악몽, 나는 그것이 왜 다음과 같이 나오는지 이해하지 못합니다.
코드 섹션:
line[0]=MathFloor(낮음[1]*MathPow(10,D-1));
Print("변수",DoubleToStr(라인[0],D));
Print("코드",DoubleToStr( MathFloor (Low[1]*MathPow(10,D-1)),D));
출력:
EURUSD,M15: 변동 0.00000
EURUSD,M15: 코드 11754.00000
할당 후 값은 어떻게 됩니까?
line[0]=MathFloor(낮음[1]*MathPow(10,D-1));
Print("변수",DoubleToStr(라인[0],D));
Print("코드",DoubleToStr(MathFloor(Low[1]*MathPow(10,D-1)),D));
출력:
EURUSD,M15: 변동 0.00000
EURUSD,M15: 코드 11754.00000
할당 후 값은 어떻게 됩니까?
할당 후 변수의 값과 변수 D의 값을 출력 합니다. 계산기로 계산해 봅시다...
안녕하세요. 여러분, 조금만 도와주세요. 누군가 가 표시기 설정 에 표시되도록 사운드 파일의 이름을 지정할 수 있는 표시기에서 행을 설정할 수 있습니까?
할당 후 변수의 값과 변수 D의 값을 출력합니다. 계산기로 계산해 봅시다...
그래서 모든 할당된 값 후에 나도 한 번에 추론합니다. 따라서 기본적으로 코드는 다음과 같습니다.
ㄱ=ㄴ;
인쇄 (a);
인쇄(b);
그러나 출력은 0이고 b는 올바르게 출력합니다.
그래서 모든 할당된 값 후에 나도 한 번에 추론합니다. 따라서 기본적으로 코드는 다음과 같습니다.
ㄱ=ㄴ;
인쇄(a);
인쇄(b);
그러나 출력은 0이고 b는 올바르게 출력합니다.
I don't see zero 어디선가 실수했어